2

バケットdemo.for.customersの下に以下のキーがあります

demo.for.customers/customer1/
demo.for.customers/customer2/

現在、customer1customer2という 2 人の顧客がいます。これは私が欲しいものです:

  1. demo.for.customersバケットのみへのアクセスを許可します。
  2. customer1 は にのみアクセスできdemo.for.customers/customer1/、customer2 は にのみアクセスできる必要がありますdemo.for.customers/customer2/

そして、以下のポリシーでこれを達成することができます (顧客ごとにポリシーを作成しています。そのため、以下の顧客 1 のみにポリシーを貼り付けています)。このポリシーは S3 ではなく IAM で定義しました。

{
 "Version":"2012-10-17",
 "Statement": [
   {
     "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::*"]
   },
   {
      "Action": ["s3:ListBucket"],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::demo.for.customers"],
      "Condition":{"StringEquals":{"s3:prefix":["","customer1/"],"s3:delimiter":["/"]}}
   },
    {
      "Effect": "Allow",
      "Action": ["s3:*"],
      "Resource": ["arn:aws:s3:::demo.for.customers/customer1/*"]
    }
]
}

問題:

  1. 顧客 1 は、バケットのいずれにもアクセスできませんが、すべてのバケットを見ることができます。私はこれをしたくありません。彼はdemo.for.customersだけを見ることができるはずです
  2. Customer1demo.for.customers/customer2もアクセスできませんが、見ることができます。このバケットの下にある他の顧客フォルダーを彼に見せたくないので、これは非常に受け入れられません。

質問:

  1. 多くのグーグルを行った後、特定のバケットをリストする方法がないことを知りました。これは本当ですか?
  2. ただし、特定のユーザーのバケット内の特定のフォルダーのみを一覧表示する方法を見つける必要があります。どうやってするか?

ありがとう。

4

1 に答える 1

1

あなたの問題について:

  1. 残念ながら、特定のバケットのみを一覧表示する方法はありません。目的が 1 つの既知のバケットへのアクセスを許可することのみである場合、最初のステートメントは値を追加しないため、完全に削除します (バケットは既に既知であり、リストする必要はありません)。
  2. バケットの内容を一覧表示するために使用しているコードを表示できますか? ここで示したことに基づいて、customer1 はプレフィックスのルートにあるバケットの内容のみを一覧表示でき、それ以外の場所には表示できないと予想されます。

ご質問について:

  1. はい、特定のバケットをリストする方法はありません。リスト バケット API は、オール オア ナッシング オペレーションです。
  2. これはプレフィックスによって行われます。どの言語を使用していますか? トークン自動販売機を使用してユーザーごとに S3 バケットへのアクセスを提供する AWS Mobile SDK のサンプルがあります。
于 2013-11-19T18:12:19.363 に答える