如何將 IAM 政策變數與聯合身份使用者搭配使用?

1 分的閱讀內容
0

當我使用 GetFederationToken API 產生臨時憑證時,${aws:userName} 政策變數不起作用。

解決方法

主體元素為聯合身分使用者,則請求中部包含 ${aws:userName} AWS Identity and Access Management (IAM) 政策變數。請改為使用 ${aws:userID} 政策變數搭配 GetFederationToken API 呼叫。如需詳細資訊,請參閱可以使用政策變數的位置

在以下 JSON IAM 政策範例中,${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 政策中指定的資源。

相關資訊

GetFederationToken 的權限

IAM 政策元素:變數和標籤

IAM 識別碼

AWS 官方
AWS 官方已更新 1 年前