ユーザ用ツール

サイト用ツール


aws:s3:other

AWS S3 : 他のアカウントのS3にアクセスする方法(クロスアカウントかスイッチロール)

他のアカウントのS3にアクセスする方法

クロスアカウント

AWS CLI やプログラムによるアクセスが想定されたもの

  • アクセス元のIAMポリシーで、S3へのアクセスを許可
  • アクセス先のBucketポリシーで、アクセス元からのアクセス許可

スイッチロール

管理コンソールで使われることが多い

  • アクセス先で、IAMロールを作成


クロスアカウントの設定手順

Account2で、IAM ユーザ作成し、ARNをAccount1側に伝える


Account1で、アクセス先のS3バケットポリシー

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::xxxxxxxxxxxxx:user/cliuser"
            },
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::s3-crossaccount-bucket01",
                "arn:aws:s3:::s3-crossaccount-bucket01/*"
            ]
        }
    ]
}


スイッチロールの設定手順

Account2で、IAM ユーザ作成


Account1で、IAMロールを作成

Account2側の Account ID を指定する
S3 Bucketにアクセスできるポリシーを付与する


スイッチロールのアクセス手順

方法1:AWS CLIのConfigを使って、スイッチロールする方法

~/.aws/configの設定
[profile default]
region = ap-northeast-1
output = json

[profile test]
role_arn = arn:aws:iam::スイッチ先のID:role/TestSwitchRole
source_profile = default
アクセス確認
aws s3 ls --profile test


方法2:AWS CLIコマンドで、スイッチロールする方法

#aws sts assume-roleコマンドでアカウントBのAccountB_roleのアクセスキー・シークレットアクセスキーなどのクレデンシャル情報を表示し、
#変数role_credentialsに格納する
role_credentials=$(aws sts assume-role \
  --role-arn "arn:aws:iam::アカウントBのアカウントID:role/AccountB_role" \
  --role-session-name session-name)

#AccountB_roleのアクセスキーを環境変数AWS_ACCESS_KEY_IDに格納する
export AWS_ACCESS_KEY_ID=$(echo $role_credentials | jq -r '.Credentials.AccessKeyId')

#AccountB_roleのシークレットアクセスキーを環境変数AWS_SECRET_ACCESS_KEYに格納する
export AWS_SECRET_ACCESS_KEY=$(echo $role_credentials | jq -r '.Credentials.SecretAccessKey')

#セッショントークンを環境変数AWS_SESSION_TOKENに格納する
export AWS_SESSION_TOKEN=$(echo $role_credentials | jq -r '.Credentials.SessionToken')

#現在の権限(スイッチしたロールの情報)を確認する
aws sts get-caller-identity
aws s3 ls
#環境変数の削除
unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

#現在の権限(スイッチしたロールが何か)を確認する
aws sts get-caller-identity


参考

aws/s3/other.txt · 最終更新: 2023/09/11 00:31 by kurihara

ページ用ツール