目次

目次

AssumeRoleを設定して クロスアカウントで別のS3を操作する

アバター画像
野々宮聡
アバター画像
野々宮聡
最終更新日2019/01/24 投稿日2019/01/24

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

image-20180905104603203.png

設定方法

環境A(参照先)

  1. ロールの作成(今回の場合はS3の操作) コンソールからIAM>ロール>ロールの作成を選択 エンティティの種類:別のAWSアカウント アカウントID:参照元のAWSアカウントID(今回の場合はアカウントB) ※デフォルト設定しなければ、アカウントBのrootに権限が付与されます ロール名:(適宜)       ex. RoleA_CrossAccount_Allow_Access_S3
  2. ポリシーを選択または作成 ポリシー名:(適宜)       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/*"
           }
       ]
    }
    
  3. ロールのARNをメモに保存 arn:aws:iam::環境BアカウントID:role/ RoleA_CrossAccount_Allow_Access_S3

環境B(参照元)

  1. ロールの作成(今回の場合は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(写真:スペルミス?)です。
斬新なサービスやその成り立ちに興味あります。
このサイトでは色々な興味あること、気になることや自分の経験・体験を書いていきたいと思います。

目次