異なるAWSアカウントのS3へアクセスする方法をご紹介します。様々な方法がありますが、今回はIAMユーザーにログインしてS3にアクセスする方法をご紹介します。アクセス制御はIAMのポリシーを使用します。
IAMユーザーにログインしてS3にアクセスするメリットとしては、IAMにログインするだけでS3にアクセス出来るのでお手軽です。デメリットとしてはIAMにログインする情報を管理する必要があることです。IAMにログインする情報が漏れると、不正アクセスされる可能性が高まります。
アーキテクチャ
まずはアーキテクチャの説明です。AWSアカウントは一つのS3を持っており、S3の中にバケットがあります。そして、バケットの中にオブジェクト(データ)があります。今回はお目当てのバケットにのみアクセスできるようにします。
必要な設定
S3側のAWSアカウントで設定が必要なものは次のとおりです。
- バケット
- IAMポリシー
- IAMグループ
- IAMユーザー
IAMにログインする側のAWSアカウントで設定が必要なものは次のとおりです。
- AWS CLI
手順
異なるAWSアカウントのS3へアクセスする手順を記載していきます。
IAMポリシーの作成
AWSのコンソールでIAMポリシーを作成します。
次の順にクリックしてIAM画面に遷移します。
すべてのサービス > セキュリティ、ID、およびコンプライアンス > IAM
次の順にクリックし、ポリシー作成画面に遷移します。
ポリシー > ポリシーの作成 ボタン
ポリシー作成画面でJSONタブを選択しポリシーを次のように記載します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": [ "バケットのARNを記載", "バケットのARNを記載/*" ] } ] }
オブジェクト、ユーザー、バケットごとにポリシーを設定することが出来ます。ポリシー設定内容はPUT許可/拒否、DELETE許可/拒否の設定ができます。
設定で要注意なのが Resource の設定です。私は最初、次のようにバケットのARNのみを Resource に記載しました。すると一覧の表示は出来るのですが「バケットにデータをアップロードすることが出来ない」という現象になりました。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "バケットのARNを記載" } ] }
IAMグループの作成
IAMグループを作成します。先ほど作成したポリシーを、IAMグループ作成時にアタッチします。
ポリシーと同様IAM画面から次の順にクリックし、グループ作成画面に遷移します。
グループ > 新しいグループの作成 ボタン
画面遷移に従って設定が促されるので、入力していきます。
IAMユーザーの作成
IAMユーザーを作成します。IAMユーザー作成時に、先ほど作成したグループに所属させます。
ポリシーと同様IAM画面から次の順にクリックし、ユーザー作成画面に遷移します。
ユーザー > ユーザーを追加
画面遷移に従って設定が促されるので、入力していきます。
IAMユーザー作成時にシークレットキー、アクセスキーが生成されます。そのシークレットキー、アクセスキーは、AWS CLIにログインする際に必要になります。
CLI で IAMユーザー にログイン
CLI で 先ほど作成した IAMユーザー にログインします。AWS CLI を使用するにはインスタンスがAmazon Linuxであるか、インストールが必要になります。
ログインに必要な情報をS3側から受領しておきます。ログイン方法の詳細は次の記事に記載しています。
S3へアクセス
IAMユーザーにログイン出来たらS3にアクセスします。アクセス方法の詳細は次の記事に記載しています。