Help us understand the problem. What is going on with this article?

SwitchRoleした時のCloudTrailで元のIAMユーザをトレースする流れ

More than 1 year has passed since last update.

目的

大規模環境におけるAWSアカウント戦略としては、マルチアカウントが主流になってきていますが、AWSアカウントが増えると各アカウントでIAMユーザを作っていたのでは、パスワード管理が煩雑になります。そういった場合は、IAMユーザ管理用のアカウントを作成してログインしたあと、サービス提供用のアカウントにSwitchRoleしてアクセスする方式がとれます。サービス提供のアカウントは、SwitchRoleするためにIAMロールを作成します。

ここでは、CloudTrailを確認し、SwtchRoleした際のAPI実行者の表示内容を確認したいと思います。

事前準備

IAMユーザ管理用アカウント
アカウントA
IAMユーザ作成

SwitchRole先
IAMロール作成
アカウントAを信頼する

手順

Switch Role(ロールの切り替え)実施※アカウントAからアカウントB
S3バケット一覧を表示
アカウントBでCloudTrailログを確認する

SwitchFrom行を確認することで、元のAWSアカウントとIAMユーザ名がわかる

"SwitchFrom": "arn:aws:iam::<アカウントA>:user/miyamoto",
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIRGONMBKRO5AS3ZXA:miyamoto",
        "arn": "arn:aws:sts::<アカウントB>:assumed-role/SwitchRole/miyamoto",
        "accountId": "<アカウントB>"
    },
    "eventTime": "2018-11-16T15:12:19Z",
    "eventSource": "signin.amazonaws.com",
    "eventName": "SwitchRole",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "72.21.198.64",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "72.21.198.64",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
    "requestParameters": null,
    "responseElements": {
        "SwitchRole": "Success"
    },
    "additionalEventData": {
        "SwitchFrom": "arn:aws:iam::<アカウントA>:user/miyamoto",
        "RedirectTo": "https://ap-northeast-1.console.aws.amazon.com/console/home?region=ap-northeast-1#"
    },
    "eventID": "53964c04-8156-423d-b89e-cf97de594149",
    "eventType": "AwsConsoleSignIn",
    "recipientAccountId": "<アカウントB>"
}

S3バケット一覧を表示した時のCloudTrailのuserIdentity-arnを確認することでSwitchRoleする前のIAMユーザが確認できる。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_credentials_temp_request.html

    "arn": "arn:aws:sts::<アカウントB>:assumed-role/SwitchRole/miyamoto",
    "arn": "arn:aws:sts::<AWSアカウント>:assumed-role/IAMロール名/ロールセッション名(IAMユーザ名)

ロールセッション名は、管理コンソール操作だとIAMユーザ名となるが、APIの場合は、任意の名称を指定することが可能。

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_roles_use_switch-role-api.html

{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIRGONMBKRO5AS3ZXA:miyamoto",
        "arn": "arn:aws:sts::<アカウントB>:assumed-role/SwitchRole/miyamoto",
        "accountId": "<アカウントB>",
        "accessKeyId": "ASIAR2S4A2FVYII6OLNX",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIRGONMBKRO5AS3ZXA",
                "arn": "arn:aws:iam::<アカウントB>:role/SwitchRole",
                "accountId": "<アカウントB>",
                "arn": "arn:aws:iam::<アカウントB>:role/SwitchRole",
                "accountId": "<アカウントB>",
                "userName": "SwitchRole"
            },
            "attributes": {
                "creationDate": "2018-11-16T15:14:56Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2018-11-16T15:15:04Z",
    "eventSource": "s3.amazonaws.com",
    "eventName": "HeadBucket",
    "awsRegion": "ap-northeast-1",
    "sourceIPAddress": "27.0.3.145",
    "userAgent": "[S3Console/0.4, aws-internal/3 aws-sdk-java/1.11.425 Linux/4.9.124-0.1.ac.198.73.329.metal1.x86_64 OpenJDK_64-Bit_Server_VM/25.19\
2-b12 java/1.8.0_192]",
    "requestParameters": {
    "bucketName": "cloudtrail-***"
    },
    "responseElements": null,
    "additionalEventData": {
        "x-amz-id-2": "Fxy2+VKCRPULTnYCIqvY/uzCJLudQBiHENZY6sZej2xtg8zhRkIaJtqxVIsNyNR7pSrmqsDnk/Q="
    },
    "requestID": "7F70330E8B836AD7",
    "eventID": "c3297949-e0cf-4374-a350-83fe3b96c60d",
    "readOnly": true,
    "resources": [
        {
            "type": "AWS::S3::Object",
            "ARNPrefix": "arn:aws:s3:::cloudtrail-***/"
        },
        {
            "accountId": "<アカウントB>",
            "type": "AWS::S3::Bucket",
            "ARN": "arn:aws:s3:::cloudtrail-***"
        }
    ],
    "eventType": "AwsApiCall",
    ],
    "eventType": "AwsApiCall",
    "recipientAccountId": "<アカウントB>",
    "vpcEndpointId": "vpce-****"
}
atsumjp
Cloud Consultant, Google Cloud Professional Services. All views and opinions are my own. GCPサービスについて試してみた内容について書いていきたいと思います。 GCP<-AWS<-NetApp<-SES
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした