おっさん社内SEエンジニアの勉強ブログ

勉強記録のブログとなります。

SAA学習-S3-クロスアカウントアクセスの設定

今回のテーマ:クロスアカウントアクセスの設定

主要サービスの公式資料

クロスアカウントアクセス許可: aws.amazon.com

概要

別のAWSアカウントよりS3へアクセスを実現します。

f:id:In-houseSE:20210510065339p:plain

クロスアカウントアクセス

クロスアカウントアクセスの許可設定は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.のバケットに対しファイルをアップロードする。

f:id:In-houseSE:20210510070834p:plain

実際の手順

別アカウントでのS3バケット作成/IAMユーザーアクセス許可

  • 別のAWSアカウントへログイン

  • マネイジメントコンソール-S3-バケットの順に選択し、バケットを作成をクリック

f:id:In-houseSE:20210510071531p:plain

  • バケット名はユニークで任意のものを記入し、リージョンは東京リージョンを選択

f:id:In-houseSE:20210510071703p:plain

  • その他の設定はデフォルトのままで問題ないため、バケットの作成をクリック

f:id:In-houseSE:20210510071801p:plain

  • バケットの作成後、アクセス許可タグを選択

f:id:In-houseSE:20210510072008p:plain

  • バケットポリシーを検索し、編集するをクリック

f:id:In-houseSE:20210510072050p:plain

  • ポリシーエディタにサンプルの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"
            }
         }
      }
   ]
}
  • JSONの値を更新後、変更の保存をクリック(AWSアカウントとIAMユーザーはマスクしてます。)

f:id:In-houseSE:20210510072744p:plain

ファイルのアップロード

  • ターミナルを起動し、アップロードするディレクトリのカレントへ移動する。(cd コマンドを使用しパスを移動します。)

コマンド

cd (移動したいローカルのフォルダ)

コマンド例

cd C:\local_workbench\AWS-docs
  • ファイルを作成したS3バケットへアップロードする。(実行するIAMユーザーに権限移譲も併せて実施)

コマンド

aws s3 cp (コピーしたいファイル) (作成したS3バケット) --acl bucket-owner-full-control

実行結果例

f:id:In-houseSE:20210510074100p:plain

  • ファイルアップロード後の確認

f:id:In-houseSE:20210510074302p:plain

今回のテーマは以上です。