2016-11-13 20 views
0

S3バケットの「フォルダ」にアイテムがあります。ファイルへの「パス」には、ファイルをアップロードしたユーザーのIDが含まれており、S3管理コンソールに「すべてのバケット/ [MY_BUCKET]/us-east-1:080ffd35-c00e-4e33-877f-3ec57be4b128」と表示されます「$ {cognito場合、私はわからなかったので、私は、トラブルシューティングの手順として、アイデンティティIDにハードコーディングされてきたAWS s3:ListBucketアクションの結果、s3の条件付きStringLikeステートメントを使用してアクセスが拒否されます。

"Condition": { 
      "StringLike": { 
       "s3:prefix": [ 
        "us-east-1:080ffd35-c00e-4e33-877f-3ec57be4b128/*" 
       ] 
      } 
     } 

:私はすべてのCognitoに添付IAMポリシーには、次の条件文が含まれてユーザーを認証しています-identity.amazonaws.com:sub} "には正しい文字列が含まれていました。しかし、特定のアイデンティティIDがエンコードされていても、それはまだ機能せず、バケットの内容を表示しようとするとアクセス拒否エラーが発生します。私は、StringLikeが接頭辞の中の指定された文字列を探していると考えて正しいですか?私は行方不明の何か他にありますか?

私は以下の私の完全なIAMポリシーを含めました:

{ 
"Version": "2012-10-17", 
"Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": [ 
      "s3:ListBucket" 
     ], 
     "Resource": [ 
      "arn:aws:s3:::[MY_BUCKET]" 
     ], 
     "Condition": { 
      "StringLike": { 
       "s3:prefix": [ 
        "us-east-1:080ffd35-c00e-4e33-877f-3ec57be4b128/*" 
       ] 
      } 
     } 
    }, 
    { 
     "Effect": "Allow", 
     "Action": [ 
      "s3:GetObject", 
      "s3:PutObject", 
      "s3:PutObjectAcl", 
      "s3:GetObjectAcl" 
     ], 
     "Resource": [ 
      "arn:aws:s3:::[MY_BUCKET]/${cognito-identity.amazonaws.com:sub}*", 
      "arn:aws:s3:::[MY_BUCKET]/${cognito-identity.amazonaws.com:sub}/*" 
     ] 
    } 
] 

}

S3バケット自体は正常にこの作業を行うと、アクセスを防止するためにS3管理コンソール上の任意の特定の権限設定を必要としていバケットの内容を一覧表示しようとするとエラーが拒否されましたか?

追加編集:

  1. 私は 文書から把握することができませんでした質問のカップル。バケットにポリシーを設定する必要はありますか? I ドキュメントの例で、 バケットにポリシー自体が必要であることを指定するものは表示されません。
  2. バケットの権限 は関係しますか?もう一度、私は IAMポリシーのドキュメントで指定されていることについて何も見ていませんでした。
+0

あなたは「それはまだ動作しない」とはどういう意味ですか?あなたは何をしようとしていますか(アップロード/ダウンロード/リスト)と何かエラーがありますか?あなたのポリシーは、[Amazon Cognito認証の理解第3部:ロールとポリシー](https://aws.amazon.com/blogs/mobile/understanding-amazon-cognito-authentication-part-3-roles-and)のものと似ています。 -policies /)ので、うまくいくはずです。 –

+0

バケットの内容を一覧表示しようとするとアクセス拒否エラーが発生します。 – reggie3

答えて

1

リストバケットは、そのような特定のプレフィックスに絞り込むことはできません。リストバケット操作はバケット自体に対して行われるため、条件とリソースはバケットに対して有効でなければなりません。私。接頭辞の条件は、バケット自体ではなくバケット内のオブジェクトに対してのみ有効であるため、一致しません。

同じように、特定のバケットを一覧表示するようにすべてのバケットを制限することはできません。特定のバケットがサービス上で実行されるためです。

これは悪いですが、多少のドキュメントで説明:http://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-buckets

+0

Amazonからのこれらの2つの例は、条件を使ってバケットのどの部分を表示可能かを指定することで、まったく同じことを行っています。http://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html#iam -policy-example-s3-home-directoryとhttp://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html#iam-policy-example-cognitoですので、可能であると確信しています。 – reggie3

関連する問題