LoginSignup
5
1

More than 1 year has passed since last update.

別アカウントからS3にアップロードされたファイルの所有者を変更する

Last updated at Posted at 2021-06-03

はじめに

複数アカウントを運用していると別アカウントからS3にファイルをアップロードされることがあると思います。
その場合、デフォルトでは元のアカウントを所有者としてファイルがアップロードされてしまいます。

S3バケットとアップロードされたファイルの所有者が異なる場合はコマンドによる復元操作ができないなどの問題が発生するため、今回はその対応方法について試してみました。

実施手順

ファイルのアップロード

別アカウントからS3バケットにファイルをアップロードします。
※アップロードはEC2にアタッチしたIAMロールを使用して行いました
※アップロード先のS3バケットのポリシーでIAMロールを許可しています。
image.png

アップロード方法は以下のブログで書いているので、そちらをご参照ください。
https://www.capybara-engineer.com/entry/2021/05/20/120604

所有者はアップロード元のAWSアカウントになっていました。(諸事情でモザイクかけてます)
image.png

その状態だとS3バケット所有者のアカウントからオブジェクトにアクセスする権限が足りていないので、このようにエラーが発生します。
image.png
image.png

アップロード時にオブジェクトの所有者を変更する

2020年10月にAWSから以下のUpdateがありました。
簡単に言うとS3バケット側の設定で「Object Ownership」を設定し、アップロード時に[bucket-owner-full-control]を指定することで所有者をS3バケットのアカウントに変更できるようになりました。
https://aws.amazon.com/jp/blogs/aws/amazon-s3-update-three-new-security-access-control-features/

設定内容は↑のリンクに書いてますが、順番に実施していきます。

対象のS3バケットのアクセス許可タブを押下します。
image.png

オブジェクト所有者の設定の部分で編集ボタンを押下します。
image.png

デフォルトはオブジェクトライターになっているので、これをバケット所有者に変更します。
image.png

更新が完了すると画面に表示されます。
image.png

変更できたので、再度別アカウントからファイルをアップロードしてみます。
まずは[bucket-owner-full-control]を指定しないアップロードです。
image.png

オブジェクトを見ると所有者は特に変わってません。
image.png

次は[bucket-owner-full-control]を指定してアップロードしてみます。

$ aws s3 cp .\test3.txt s3://test-tmp-20210603/test/ --acl bucket-owner-full-control

所有者がS3バケットを所有しているAWSアカウントになっています。
image.png

設定前ではエラーが出ていたアクセス許可とサーバサイド暗号化の設定もエラーなく確認することができました。
image.png
image.png

ちなみに

今回のS3バケットでの設定をせずに[bucket-owner-full-control]を指定してアップロードしてもエラーは発生しないようにできます。

ただ、所有者は元のアカウントのままなので、もし指定をせずにアップロードされた場合は思いがけず操作できないということが発生する可能性があります。

その時はバケットポリシーに"s3:x-amz-acl": "bucket-owner-full-control"を指定するなどして、アップロード時に制限するのをオススメします。

おわりに

簡単ではありますが今まで知らなかったのでやってみました。
複数アカウントからファイルをS3にアップロードするときは気を付けましょう。

5
1
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
5
1