はじめに
- AWSで他アカウントのリソースにアクセスする必要があったため、方法を以下に整理しました。
前提
- アカウントAからアカウントBのリソースにアクセスする
準備
アカウントBでの作業
- アカウントBでIAMロールを作成する
- 信頼関係でアカウントAのIDを指定する
- 必要なリソースの権限が記述されたIAMポリシーをロールに付与する
- 今回は特定のS3バケットへのアクセス権限を記述する
アカウントAでの作業
- IAMポリシーの作成
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"sts:AssumeRole"
],
"Effect": "Allow",
"Resource": [ "arn:aws:iam::アカウントB:role/アカウントBで作成したIAMロール名" ]
}
]
}
- IAMユーザを作成してIAMポリシーをアタッチする
- アクセスキー、シークレットアクセスキーを作成する
ローカルPCでの作業
- アカウントAのアクセスキー、シークレットアクセスキーを登録する
$ vi .aws/credentials
[accountA]
aws_access_key_id = <アクセスキー>
aws_secret_access_key = <シークレットアクセスキー>
- AssumeRoleする先のIAMロールのARNと元になるプロファイルを指定する
$ vi .aws/config
[profile accountB]
role_arn = arn:aws:iam::<アカウントB>:role/<アカウントBで作成したIAMロール>
source_profile = accountA
検証
以下コマンド実行することで、アカウントAからアカウントBのリソースにアクセスできる
C:\>aws --profile accountB s3 ls <アカウントBのS3バケット名>
参考