SAA学習-S3-クロスアカウントアクセスの設定
今回のテーマ:クロスアカウントアクセスの設定
主要サービスの公式資料
クロスアカウントアクセス許可: aws.amazon.com
概要
別のAWSアカウントよりS3へアクセスを実現します。
クロスアカウントアクセス
クロスアカウントアクセスの許可設定は3つの方式があります。
設定方式 | 詳細 |
---|---|
バケットポリシーとIAMポリシーによる許可 | ・S3バケットへのアクセス許可をするIAMポリシーを設定 ・IAMユーザーとロールにIAMポリシーを設定 ・S3バケットへのクロスアカウントを許可する場合、バケットポリシーでアカウントを指定し許可 |
ACLとIAMポリシーによる許可 | ・S3バケットへのアクセスを許可するIAMポリシーを設定 ・IAMユーザーとロールにIAMポリシーを設定 ・S3バケットの特定オブジェクトへのクロスアカウントアクセスを許可する場合、ACLでアカウントを指定し許可 |
IAMロールによる許可 | ・IAMロールの権限移譲を利用し、S3バケット/オブジェクトへのプログラムによるアクセスまたはコンソールアクセス用のクロスアカウントのIAMロールを設定 ・AssumeRoleの実行を許可したロールにより別のアカウントのユーザーに権限を委譲 |
実施概要
- 1.メインで利用してないAWSアカウントで新規にS3バケットを作成
- 2.1で作成したS3バケットに対し、メインで利用しているアカウントのIAMユーザーを許可するバケットポリシーを設定する
- 3.メインで利用しているアカウントのIAMユーザーからAWS CLIから1.のバケットに対しファイルをアップロードする。
実際の手順
別アカウントでのS3バケット作成/IAMユーザーアクセス許可
- バケット名はユニークで任意のものを記入し、リージョンは東京リージョンを選択
- その他の設定はデフォルトのままで問題ないため、バケットの作成をクリック
- バケットの作成後、アクセス許可タグを選択
- バケットポリシーを検索し、編集するをクリック
- ポリシーエディタにサンプルのJSONを活用し、arnの値を更新(S3へのファイルアップロード許可の設定となります。)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Only allow writes to my bucket with bucket owner full control", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::(アクセス元のAWSアカウントID):user/(アクセス許可したいIAMユーザー)" ] }, "Action": [ "s3:PutObject" ], "Resource": "(作成したバケットARNの値)/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
ファイルのアップロード
- ターミナルを起動し、アップロードするディレクトリのカレントへ移動する。(cd コマンドを使用しパスを移動します。)
コマンド
cd (移動したいローカルのフォルダ)
コマンド例
cd C:\local_workbench\AWS-docs
- ファイルを作成したS3バケットへアップロードする。(実行するIAMユーザーに権限移譲も併せて実施)
コマンド
aws s3 cp (コピーしたいファイル) (作成したS3バケット) --acl bucket-owner-full-control
実行結果例
- ファイルアップロード後の確認
今回のテーマは以上です。