他AWSアカウントとS3バケットを共有する状況(=「S3を提供するAWSアカウント」と「S3を利用する(提供される)AWSアカウント」が居る状況)になったとする。
そのような場合、こんな感じで設定しておくと良いのではないか。
S3バケットを提供する側
- お互いのAWSアカウントID(数字12桁のもの)を共有する
- S3バケットを用意する
- 【オプション】S3バケットにS3アクセスポイントを追加する
- 【オプション】断固拒否したいアクションをアクセスポイントのリソースポリシーにて設定しておく
- ※例:読み込み専用にしたいので「
s3:Delete*
」と「s3:Put*
」を「Deny
」する
- ※例:読み込み専用にしたいので「
- 【オプション】断固拒否したいアクションをアクセスポイントのリソースポリシーにて設定しておく
- 【オプション】リクエスト時にリクエスタが料金を支払うかどうかを指定する
- 【オプション】S3バケットにS3アクセスポイントを追加する
- S3バケット名をS3利用側に連絡する
- 【オプション】S3バケット名ではなくS3アクセスポイントエイリアス名(もしくはS3アクセスポイントARN)を連絡する
- ※注:S3利用側が利用側自身のアカウント内でアクセスポイントを作成し利用する形の管理方法も有り
- S3を利用できる権限を持ったIAMロールを用意し、S3利用側に提供する
- 許可するアクションを設定する
-
s3:GetObject
等
-
-
External IDを設定する
- S3利用側より指定してもらう
- 対象リソースとしてS3バケットを指定する
- 【オプション】S3バケットではなくS3アクセスポイントを指定する
- 許可するアクションを設定する
S3バケットを利用する(提供される)側
- お互いのAWSアカウントID(数字12桁のもの)を共有する
- External IDを決めS3提供側に連絡する
- S3提供側よりIAMロールの提供を受ける
- 提供されたIAMロールをAssumeできるのは特定のIAMだけ、というIAMポリシーを設定する
- 【オプション】CloudTrail追跡のため、STSロールセッション名にてIAMユーザー名などの識別情報の入力を必須とするように設定する
- 提供されたIAMロールをAssumeできるのは特定のIAMだけ、というIAMポリシーを設定する
- 提供されたIAMロールのAssumeRole時に
- External IDを指定する
- 【オプション】AssumeRole時にSTSロールセッション名を指定する
- S3アクセス時に
- Expected Bucket Ownerを指定する
- 【オプション】S3アクセス時にリクエスタ支払い了承の旨を指定する