私は一連のユーザーを持つアプリを作成しています。各ユーザーには、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 の使用に行き詰まっています。