参照方向はアカウントAのバケットに対してアカウントBがAssumeRoleを設定してアクセス・操作を行います。

設定方法
環境A(参照先)
- ロールの作成(今回の場合はS3の操作) コンソールからIAM>ロール>ロールの作成を選択 エンティティの種類:別のAWSアカウント アカウントID:参照元のAWSアカウントID(今回の場合はアカウントB) ※デフォルト設定しなければ、アカウントBのrootに権限が付与されます ロール名:(適宜) ex. RoleA_CrossAccount_Allow_Access_S3
ポリシーを選択または作成 ポリシー名:(適宜) ex. Policy_Allow_Access_S3
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::your-bucketname" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::your-bucketname/*" } ] }- ロールのARNをメモに保存 arn:aws:iam::環境BアカウントID:role/ RoleA_CrossAccount_Allow_Access_S3
環境B(参照元)
ロールの作成(今回の場合はS3の操作) コンソールからIAM>ロール>ロールの作成を選択 エンティティの種類:AWSサービス このロールを使用するサービス:S3 ロール名:(適宜) ex. ROLE_Access_EnvB_S3
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::環境AアカウントID:role/***RoleA***_CrossAccount_Allow_Access_S3" } ] }
※rootでなく個別に権限を振る場合は 環境A(参照先)の RoleA_CrossAccount_Allow_Access_S3 IAMの信頼関係から操作
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::環境BアカウントID:user/[IAMユーザ名]"
]
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
Windowsなどローカルから操作の場合
C:\Users\ユーザ名.aws\configに以下を設定
Linux EC2からの操作の場合
$HOME\confに以下を設定
[profile crossbucket]
role_arn = arn:aws:iam::環境AアカウントID:role/***RoleA***_CrossAccount_Allow_Access_S3
source_profile = default
Bのクレデンシャルの状態で接続
aws s3 ls s3://S3のバケットpath --profile crossbucket
野々宮聡
今年の半ばからレコチョクエンジニアとして働き始めた野々宮 SATEOSHI(写真:スペルミス?)です。
斬新なサービスやその成り立ちに興味あります。
このサイトでは色々な興味あること、気になることや自分の経験・体験を書いていきたいと思います。