3

私は一連のユーザーを持つアプリを作成しています。各ユーザーには、S3 バケット内の「ディレクトリ」に関連付けられた多数のファイルがあります。ユーザーは Amazon の STS を使用して認証し、所有していないリソース ( 「ホーム」ディレクトリなど)へのアクセスを許可しない一方で、所有するリソースへのアクセスを許可する一時的なセキュリティ資格情報を取得します。

ユーザーがすでにシステムに存在し (認証されている)、次の命名スキームを使用してファイル バケットが (指定されたポリシーまたは ACL なしで) 作成されていると仮定します。

<< my app's bucket>>/<< user's identifier >>/

ファイルにアクセスするユーザーのリクエスト中に、boto を使用して次のように一時的なセキュリティ資格情報を付与します。

get_federation_token(<< user's identifier >>, duration,policy=user_policy)

user_policy は次のとおりです。

user_policy =  (r'{"Statement": [{"Effect":"Allow",
    "Action":[
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:DeleteObject",
"s3:DeleteObjectVersion"],
    "Resource":"arn:aws:s3:::/%s/*"}]}' % (<< user's identifier >>))

私はポリシーを理解していると思っていましたが、どうやら何かが欠けているようです。上記のスキームを使用して、ユーザーのディレクトリの下にリソースを取得/配置できますが、他のユーザーに属するディレクトリ/リソースも取得できます。私の人生では、アクセスを適切に分離することはできません。バケット ポリシーも試してみましたが、実を結びませんでした。

任意の方向をいただければ幸いです。

注: IAM ユーザーを作成/使用するにはユーザーが多すぎる可能性があるため、STS の使用に行き詰まっています。

4

1 に答える 1

3

誰かがこのような質問をしました。バケット ポリシーを使用して、バケットにグローバルな公開読み取りが設定されていることが判明しました。アクセスを許可する他の A​​CL などがないことを再確認してください。また、「リスティング」へのアクセス権がないように見えますが、それでよろしいですか? バケットに対して get を呼び出して、バケット内のすべてのファイルのリストを取得できますか? (これはできないはずです)。

これが役立つかどうかはわかりません-ポリシーで「StringLike」を使用しています。 http://www.techtricky.com/amazon-s3-how-to-restrict-user-access-to-specific-folder-or-bucket/

https://forums.aws.amazon.com/search.jspa?objID=f76&q=stringlike&x=0&y=0

于 2011-11-10T15:03:46.437 に答える