5
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

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

目的

大規模環境における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の場合は、任意の名称を指定することが可能。

{
    "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-****"
}
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
Sign upLogin
5
Help us understand the problem. What are the problem?