Amazon S3 バケット内のパブリック (匿名) 所有権を持つオブジェクトの所有権を変更する方法を教えてください。

最終更新日: 2019 年 9 月 24 日

Amazon Simple Storage Service (Amazon S3) バケットには、パブリック (匿名) 所有権を持つオブジェクトがあります。AWS アカウントがオブジェクトを所有するようにオブジェクトの所有権を変更する方法を教えてください。

簡単な説明

デフォルトでは、S3 オブジェクトの所有者はオブジェクトをアップロードした ID です。つまり、バケットへのパブリック書き込みアクセスを許可すると、パブリック (匿名) ユーザーがアップロードしたオブジェクトの所有者はパブリックです。セキュリティの問題を防ぐため、バケットへのパブリックアクセスをブロックすることをお勧めします

匿名ユーザーがすでにオブジェクトをバケットにアップロード済みで、AWS アカウントでオブジェクトを所有する場合は、オブジェクトのアクセスコントロールリスト (ACL) を変更する必要があります。オブジェクトの ACL を変更して、バケット所有者 (アカウント) にオブジェクトのフルコントロールを付与します。

解決方法

オブジェクトの所有権をバケットを所有する AWS アカウントに変更するには、次の手順に従います。

1.    オブジェクト ACL を追加するには、AWS コマンドラインインターフェイス (AWS CLI) を使用して put-object-acl コマンドを実行します。バケット所有者にオブジェクトのコントロールを付与する ACL を追加するには、-acl オプションを bucket-owner-full-control 値とともに含めます。次に、-no-sign-request オプションを含めて、リクエストに匿名の認証情報を使用します。必要なオプションを含む完全な put-object-acl コマンドは、次のようになります。  

aws s3api put-object-acl --bucket awsexamplebucket --key awsexampleobject  --acl bucket-owner-full-control   --no-sign-request

2.    所有権の変更を適用するには、オブジェクトをそれ自体にコピーする必要があります。これを行うには、次のような cp コマンドを実行します。

aws s3 cp s3://awsexamplebucket/awsexampleobject  s3://awsexamplebucket/awsexampleobject  --metadata-directive REPLACE

3.    所有権の変更を確認するには、次のように get-object-acl コマンドを実行します。

aws s3api get-object-acl --bucket awsexamplebucket --key awsexampleobject

コマンドは、次のようなオブジェクトの所有者を表示する出力を返します。

{
    "Owner": {
        "DisplayName": "jane",
        "ID": "75050348ef85628a0977bexamplebdbc3062ce76f35cb463345ae65c2608d099"
    },
    "Grants": [
        {
            "Grantee": {
                "DisplayName": "jane",
                "ID": "75050348ef85628a0977bexamplebdbc3062ce76f35cb463345ae65c2608d099",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        }]}

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合