S3 バケットを公開するにはどうすればよいですか (Amazon のサンプルポリシーは機能しません)? 質問する

S3 バケットを公開するにはどうすればよいですか (Amazon のサンプルポリシーは機能しません)? 質問する

Amazonは、匿名ユーザーへの権限付与以下のように(Amazon S3 バケットポリシーの例):

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucket/*"
        }
    ]
}

私のポリシーでは、「arn:aws:s3:::bucket/」の「bucket」を「my-bucket」に変更しました。

しかし、そのバケットのフォルダ内の画像にアクセスしようとすると、次のようになります。アクセスが拒否されましたエラー:

この XML ファイルには、関連付けられたスタイル情報がないようです。ドキュメント ツリーを以下に示します。

(その画像のプロパティを明示的に公開に変更し、その URL を再読み込みすると、画像は完全に読み込まれます)

何が間違っているのでしょうか?


アップデート#1: どうやら、私がアクセスを許可したサードパーティのサイトと関係があるようです。メイン ユーザー (私) と同じ権限をすべて持っていて、そのオブジェクトが同じフォルダー内にあり、まったく同じ権限を持っているにもかかわらず、公開表示できません。理由はわかりません。

アップデート#2: バケットポリシーは、たとえバケット内にあっても、他のユーザーが所有するオブジェクトには適用されません。私の答え詳細については。

ベストアンサー1

アップデート

GoodGetsのコメントによると、本当の問題はバケットポリシーは、たとえ自分のバケット内にあっても、他の誰かが「所有」しているオブジェクトには適用されない、 見るGoodGets自身の答え詳細は(+1)をご覧ください。


これは新しいバケット/オブジェクトのセットアップですか、それとも既存のセットアップにバケット ポリシーを追加しようとしていますか?

後者の場合、3つの異なるS3アクセス制御メカニズムの相互作用により、関連する落とし穴に陥った可能性があります。これは実際にはかなり混乱を招く可能性があります。これは、たとえば次のように対処されています。ACL とバケットポリシーを併用する:

バケットに ACL とバケットポリシーが割り当てられている場合、Amazon S3 は Amazon S3 リソースへのアカウントのアクセス権限を決定する際に、既存の Amazon S3 ACL とバケットポリシーを評価します。アカウントが ACL またはポリシーで指定されたリソースにアクセスできる場合、要求されたリソースにアクセスできます。

これは十分簡単そうに聞こえますが、ACL とポリシー間の微妙に異なるデフォルトにより、意図しない干渉が発生する可能性があります。

既存のAmazon S3 ACLでは、許可は常にバケットまたはオブジェクトへのアクセスを提供します。ポリシーを使用する場合、拒否は常に許可よりも優先されます[強調は筆者による]

これは、ACL 許可を追加すると常にアクセスが保証される理由を説明していますが、ポリシー許可を追加する場合には適用されません。これは、たとえば次のようにさらに説明されているように、設定内の他の場所で明示的にポリシー拒否が提供されても、引き続き適用されるためです。IAMとバケットポリシーの併用そして評価ロジック

したがって、本番環境のシナリオに適用する前に、新しいバケット/オブジェクト設定から始めて、必要な構成をテストすることをお勧めします (もちろん、それでも干渉する可能性がありますが、その場合の違いの識別/デバッグが容易になります)。

幸運を!

おすすめ記事