1

AWS IAM STS (boto 経由) を使用して、S3 バケットにアクセスするための認証情報を作成しています。次のポリシーのどこが間違っているのか途方に暮れています。ポリシーを可能な限り単純化しましたが、それでも予期しない結果が得られます。

ユーザーのトークンを取得したら、次のポリシーをアタッチします。

user_policy_string = r'{"Statement":[{"Effect":"Allow","Action": "s3:*","Resource":"arn:aws:s3:::*"}]}'

これは機能しますが、明らかに少し寛容すぎます。これらの資格情報に関連付けられているアクセス許可を絞り込む際に、同じポリシーを使用しようとしますが、バケットを指定します。

user_policy_string = r'{"Statement":[{"Effect":"Allow","Action": "s3:*","Resource":"arn:aws:s3:::buck_binary_bucket_bay-earth-d5a/*"}]}'

ここでは、S3 にアクセスしようとすると 403 エラーが発生します。AWS docs に基づいて、これがポリシー内の特定のバケットに対処する方法であると確信しているため、この制限の原因が何であるかについて途方に暮れています. バケットを間違って参照していますか?

S3 コンソールでは、ポリシーは空です (完全に許可されたポリシーも追加しようとしました)。STS トークンの生成に使用される AWS アカウントのポリシーは次のとおりです。

  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:GetFederationToken",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:GetUser",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "*"
    }
  ]
}
4

1 に答える 1

6

ここでは、S3 にアクセスしようとすると 403 エラーが発生します。

実際にどのようにS3 にアクセスしようとしていますか?つまり、どのツール、サービス、API を使用してですか?

多くの場合、ユースケースには、Resourceすでにポリシーによってターゲットにされているものに加えて、さまざまなリソースタイプに対処する S3 API 呼び出しが含まれます。具体的には、サービスに対する操作( ListAllMyBuckets など)、バケットに対する操作( ListBucket など)、およびオブジェクトに対する操作( GetObjectなど)の違いを認識する必要があります。

S3 アクセス メソッドが暗黙のうちに他のリソース タイプも使用する場合 (つまり、 を介して既にアドレス指定しているオブジェクト リソース以外にbuck_binary_bucket_bay-earth-d5a/*)、これらにはそれに応じてそれぞれの追加ポリシーが必要です。たとえば、オブジェクト自体にアクセスする前に、 ListBucketを介してバケット内のオブジェクトを一覧表示できるという一般的な要件には、次のようにバケットをアドレス指定するそれぞれのポリシー フラグメントが必要になります。

   "Statement":[{
      "Effect":"Allow",
      "Action":"s3:ListBucket",
      "Resource":"arn:aws:s3:::buck_binary_bucket_bay-earth-d5a",
      }
   ]
于 2012-02-01T01:20:29.760 に答える