LoginSignup
14
15

More than 5 years have passed since last update.

他のアカウントのS3バケットを利用してみる

Posted at

s3-crossacount.png

上記のように、アカウントAからのアカウントB所持のBucketを利用してみるのを、リソースベースのポリシーを利用してやってみた。
今のところアカウントAのManagement ConsoleでアカウントBのBucketを表示して操作はできなさそう。

ACLでなんとかしてみる

  • アカウントAのemail、もしくは以下のようにアカウントAの適当なS3 Bucketからower idを調べておく
$ aws s3api get-bucket-acl --output text --query 'Owner.ID' --bucket [適当なBucket]
  • アカウントBのマネージメントコンソールで対象のS3 BucketのPropertiesからPermissionsを設定
    • Permissionを追加し、Ganteeに上で調べた[emailもしくはowner id]を指定して与えたい権限にチェックを入れてSave
  • アカウントAで対象のS3 Bucketにアップロードしてみる => 成功
    • アップロードされたオブジェクトはアカウントAに対する権限しかない
$ aws s3 cp [適当なファイル] s3://[対象のS3 Bucket]/

Bucket Policyでなんとかしてみる

  • アカウントBのマネージメントコンソールで対象のBucketのPilicyを以下のように設定する
{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::[アカウントAのアカウントID]:root"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::[対象のBucket名]/*",
                "arn:aws:s3:::[対象のBucket名]"
            ]
        }
    ]
}
  • アカウントAで対象のS3 Bucketにアップロードしてみる => 成功
    • アップロードされたオブジェクトはアカウントAに対する権限しかない
$ aws s3 cp [適当なファイル] s3://[対象のS3 Bucket]/

オブジェクトにアカウントBの権限がつかないのをなんとかしてみる

  • 上記どちらの手順でもアップロードしたオブジェクトはアカウントBの権限がなく、アカウントBから閲覧や権限変更ができない(バケットに権限はあるので削除などは可能)

  • 一応、以下のようにアップロードするとACLが設定されてアカウントBからも閲覧や権限変更が可能になる。

$ aws s3 cp --acl bucket-owner-full-control [適当なファイル] s3://[対象のS3 Bucket]/
or
$ aws s3 cp  [適当なファイル] s3://[対象のS3 Bucket]/ --grants full=emailaddress=[アカウントBのe-mail]
  • 対象のBucketに対して以下のようなBucket PolicyをStatementに追加すると、アカウントBに対してフルコントロール権限を付けることを強制できる
    • が、上記のアップロード例2つのうち後の方しか許さないような形なので柔軟性はないのかな
        {
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::[アカウントAのアカウントID]:root"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::[対象のBucket]/*",
            "Condition": {
                "StringNotEquals": {
                    "s3:x-amz-grant-full-control": "emailaddress=[アカウントBのe-mail]"
                }
            }
        }

14
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15