この記事は最終更新日から1年以上が経過しています。
参照方向はアカウント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(写真:スペルミス?)です。
斬新なサービスやその成り立ちに興味あります。
このサイトでは色々な興味あること、気になることや自分の経験・体験を書いていきたいと思います。
最近書いた記事
- 2019.01.24AssumeRoleを設定して クロスアカウントで別のS3を操作する
- 2018.02.16国際電話のかけ方は知っていても知らなかったE.164 フォーマット
- 2017.11.30【re:Invent 2017】Amazon Aurora Serverlessが出る【新機能】
- 2016.12.12ローカル端末のIPアドレスの切り替え