フェデレーションユーザーで IAM ポリシー変数を使用するにはどうすればよいですか?

所要時間1分
0

GetFederationToken API を使用して一時的な認証情報を生成すると、ポリシー変数 ${aws:userName} が機能しません。

解決策

プリンシパル要素がフェデレーションユーザーの場合、${aws:userName} AWS Identity and Access Management (IAM) ポリシー変数はリクエストに含まれません。代わりに、GetFederationToken API コールで ${aws:userID} ポリシー変数を使用してください。詳細については、「ポリシー変数を使用する場所」を参照してください。

次の JSON ポリシーの例では、${aws:userName} ポリシー変数が ${aws:userID} ポリシー変数に置き換えられています。

{   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"AllowListingOfUserFolder",
         "Action":[
            "s3:ListBucket"
         ],

         "Effect":"Allow",

         "Resource":[
            "arn:aws:s3:::TESTBUCKET"
         ],
         "Condition":{
            "StringLike":{
               "s3:prefix":[
                  "TESTBUCKET/${aws:userid}/*"
               ]
            }
         }
      },
      {
         "Sid":"AllowAllS3ActionsInUserFolder",
         "Action":[
            "s3:PutObject",
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:DeleteObject"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::TESTBUCKET/${aws:userid}/*"
         ]
      }
   ]
}

aws:userid 変数の値は、ACCOUNTNUMBER:caller-specified-name である必要があります。

GetFederationToken API コールの Name パラメーター値は、GetFederationToken のガイドラインに従う必要があります。たとえば、Bob というフレンドリ名を指定した場合、正しい形式は 123456789102:Bob になります。この形式はセッションに名前を付け、プレフィックスが一致する Amazon Simple Storage Service (Amazon S3) バケットへのアクセスを許可します。

**注記:**前述の例では、aws:userid 変数の呼び出し元が指定したフレンドリー名一意の識別子であると仮定しています。一意のフレンドリ名を設定しても、同じフレンドリ名を持つ別のユーザーが JSON ポリシーで指定されたリソースにアクセスすることはできません。

関連情報

GetFederation トークンの取得権限

IAM ポリシー要素: 変数とタグ

IAM 識別子

コメントはありません

関連するコンテンツ