##目的
大規模環境における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-****"
}