4

私はS3の使用についていくつかの研究を行っています。私が達成したいのは、基本的に、ファイル システムと同じ方法で S3 バケット内のオブジェクトへのアクセスを制御することですが、IAM フェデレーション ユーザーに対してです。

次のシナリオを想定しましょう

  Bucket  
     |- File 1.txt -> ACL: Read: User1; Read: User 2
     |- File 2.txt -> ACL: Read: Everyone; Read, Write: User 2
     |- File 3.txt -> ACL: Read: Group 1; Read, Write: User 2

この種の構成は、ACL と Amazon の「ネイティブ」ユーザーおよびグループを使用して実現できます。一方、フェデレーション ユーザーの場合、私が見つけた唯一のことは、割り当てられたバケット ポリシーで一時的なトークンを生成することでした。

私が正しく理解している場合、バケットポリシーは ACL とは逆の方法で機能します (ユーザーがアクセスできるオブジェクトを定義し、ACL はオブジェクトにアクセスできるユーザーを定義します)

私の質問はです。ACL でフェデレーション ユーザーを割り当てることは可能ですか (または他の方法でフェデレーション ユーザーと同じ目標を達成することはできますか)?

グループにユーザーがいるファイルシステムや、どのグループがそれらにアクセスできるかをマークしているオブジェクトのように、同じ動作を達成したいと思います

フィールド「x-amz-meta-seclevels」に、ファイルへのアクセス権を持つグループ (Group1、Group2、admin3rdfloor) が含まれ、提示されたポリシー (これは適切ではありませんが、私の考えを説明したいと思います) が添付されていると仮定します。 IAM フェデレーション ユーザー。x-amz-meta-seclevels フィールドに admin3rdfloor 値を含むすべてのファイルへのアクセスをこのユーザーに許可できます。

{
'Statement': [
    { 
        'Sid': 'PersonalBucketAccess', 
        'Action': [ 
            's3:GetObject' 
            ],
        'Effect': 'Allow', 
        'Resource': 'arn:aws:s3:::MyBucketName' 
        'Condition':{
        'StringLike':{
           's3:x-amz-meta-seclevels':'admin3rdfloor'
        }
     }

    }
]

}

これは何らかの方法で達成可能ですか?

事前に助けてくれてありがとう!

4

1 に答える 1

2

ご希望の構成を正しく理解していれば、AWS がこのシナリオを可能にする機能をリリースしたばかりかもしれません。AWS アクセス コントロール ポリシーの変数を参照してください。

AWS Identity and Access Management (IAM)を使用すると、AWS サービス API およびリソースへのアクセスを制御するポリシーを作成できます。本日、AWS アクセス ポリシー言語を拡張して、変数のサポートを含めます。ポリシー変数を使用すると、個別のアクセス制御を含む一般的なポリシーを簡単に作成および管理できます。

通常の IAM ユーザー向けに提供されているポリシーの例を次に示します。

{
   "Version": "2012-10-17",
   "Statement": [
     {
       "Action": ["s3:ListBucket"],
       "Effect": "Allow",
       "Resource": ["arn:aws:s3:::myBucket"],
       "Condition":{"StringLike":
      {"s3:prefix":["home/${aws:username}/*"]}}
     },
     {
       "Action":["s3:GetObject", "s3:PutObject", "s3:DeleteObject*"],
       "Effect":"Allow",
       "Resource": ["arn:aws:s3:::myBucket/home/${aws:username}",
       "arn:aws:s3:::myBucket/home/${aws:username}/*"]
     }
]
}

この例に${aws:username}含まれる はフェデレーション ユーザー (または想定されるロール) には使用できませんが、別の変数があり、それぞれの${aws:userid}に置き換えられます。ポリシー変数に使用できるリクエスト情報内の表を参照してください。これらの変数がプリンシパル タイプに応じてどのように置換されるかについての詳細。account:caller-specified-name${aws:principaltype} FederatedUser

于 2013-04-08T18:08:21.033 に答える