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

1 分的閱讀內容
0

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

解決方法

在使用 GetFederationToken API 時,使用 ${aws:userID} 政策變數而不是 ${aws:userName} 政策變數。這是因為如果主體是聯合身分使用者,則變數 ${aws:userName} 不存在。如需詳細資訊,請參閱可以使用政策變數的位置

下列 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}/*"
         ]
      }
   ]
}

aw:userid 變數的值應該是「ACCOUNTNUMBER:caller-specified-name」。

當調用 GetFederationToken API 時,Name 參數值必須遵循 GetFederationToken 中建立的準則。例如,如果您指定易記名稱 Bob,則正確的格式為「123456789102:Bob」。這會命名您的工作階段,並允許存取具有相符字首的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。

**注意:**此範例假設 aw:userid 變數的呼叫者指定名稱 (易記名稱) 部分是唯一的。唯一易記名稱可防止其他具有相同易記名稱的使用者無法存取 JSON 政策中指定資源的情況。如需詳細資訊,請參閱唯一識別碼


相關資訊

GetFederationToken 的權限

用於身份登記的權杖自動售貨機 - Java Web 應用程序示例

IAM 政策元素:變數和標籤

IAM 識別碼

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