S3バケットのアカウント間共有
バケットを共有する方法はいくつかあるが、バケットポリシーを使って、特定のAWSアカウントに対してバケットを共有する方法についてのまとめ。
S3バケットのアカウント間共有とオーナーアクセスの注意点
Amazon S3を使ってデータを管理していると、他のAWSアカウントとバケットを共有したい場面が出てきます。その際、よく使われるのがバケットポリシーです。他のアカウントにアクセス権を与えることで、複数のアカウントでデータを扱うことができます。
ただ、「バケットのオーナーである自分のアカウントは、何もしなくてもアクセスできるよね?」と考えるかもしれません。実際のところ、S3では少し違った注意が必要です。バケットポリシーを設定すると、アクセスの管理がそのポリシーによって制御されるので、自分のアカウントが誤ってアクセスできなくなることもあります。
オーナーアカウントのアクセスは自動ではない?
S3バケットのオーナーである自分のアカウントは、基本的にそのバケットへのフルアクセス権を持っています。ただ、バケットポリシーを追加すると、そのポリシーが優先されるため、オーナーアカウントが意図せずアクセスできなくなる可能性があります。ポリシーは、オーナーだから自動的にアクセスを許可するわけではないので、しっかり設定しておくことが大事です。
オーナーアカウントにも明示的にアクセス許可を!
他のアカウントにバケットへのアクセスを許可する際は、オーナーアカウント(自分のアカウント)にも明示的にアクセス権を与えることが推奨されます。以下のようにバケットポリシーに自分のアカウントIDを追加することで、アクセス権を確保しましょう。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:root"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
]
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::987654321098:root"
},
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
123456789012
はオーナーアカウント、987654321098
は共有したいアカウト。
上記のように、Principal
に自分のAWSアカウントIDを指定し、適切なアクション(例:s3:*
)を許可することで、オーナーアカウントからのアクセスを維持します。
まとめ
S3のバケットを他のアカウントと共有する際、オーナーアカウントはデフォルトでアクセスできると思いがちですが、バケットポリシーを設定した場合は注意が必要です。他のアカウントにアクセスを許可する際は、自分のアカウントにも明示的に権限を設定しておくと、後々のトラブルを避けることができます。
バケットの共有設定は少し複雑に感じるかもしれませんが、一度理解すれば非常に柔軟で便利です。ぜひ、今回のポイントを参考に、安心してS3バケットを使いこなしてみてください!
Discussion