跳至內容

如何解決使用 AWS 管理主控台切換 IAM 角色時遇到的問題?

2 分的閱讀內容
0

我使用 AWS 管理主控台嘗試切換 AWS Identity and Access Management (IAM) 角色。但我收到以下錯誤訊息: "Invalid information in one or more fields.Check your information or contact your administrator." (「一個或多個欄位中的資訊無效。請查看您的資訊或聯絡您的管理員。」)

簡短描述

由於政策設定不正確,您會收到 Invalid information in one or more fields (一個或多個欄位中的資訊無效) 錯誤訊息。當您的請求不符合信任政策的條件時,您也可能會收到他們的錯誤訊息。

解決方法

為您的 IAM 使用者或角色設定 AssumeRole 權限

若要授予使用者切換角色的權限,請將 AWS Security Token Service (AWS STS) AssumeRole 動作新增至您的 IAM 身分政策中。

政策範例:

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": "sts:AssumeRole",
    "Resource": "arn:aws:iam::account_id_number:role/role-name-you-want-to-assume"  
   }
}

**注意:**將 arn:aws:iam::account_id_number:role/role-name-you-want-to assume 替換為 IAM 角色的 Amazon 資源名稱 (ARN)

檢查 IAM 角色的信任政策是否包含主體

更新信任政策以包含主體。主體可以是 IAM 使用者或角色,也可以是 AWS 帳戶。

**注意:**如果您將某個帳戶新增為受信任主體,則該帳戶中的所有身分都可以承擔該角色。但是,身分必須具有 AssumeRole 權限。

例如,帳號 ID 為 111222333444 的 IAM 使用者 Carlos 想要承擔帳號 ID 為 444555666777 的 Maria 角色。

帳戶ID 111222333444 為受信任帳戶,帳戶ID 444555666777 為信任帳戶。Maria 的 IAM 角色具有信任 Carlos 的信任政策。

Maria 的 IAM 角色的信任政策範例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Principal": {
        "AWS": "arn:aws:iam::111222333444:user/Carlos"
      },
      "Condition": {}
    }
  ]
}

Carlos 還必須擁有 IAM 政策才能在另一個帳戶中承擔 Maria 的 IAM 角色。

Carlos 承擔 Maria IAM 角色的 IAM 政策範例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::444555666777:role/Maria"
    }
  ]
}

若要允許帳戶中的所有 IAM 身分承擔該角色,請使用帳戶根主體。

在 Maria IAM 角色的信任政策中,將 user/Carlos 替換為

"AWS": "arn:aws:iam::111222333444:root"

在 Maria IAM 角色的信任政策中,您也可以使用萬用字元 (*),以便使用者可以承擔任何帳戶中的任何角色:

"Resource": "arn:aws:iam::444555666777:role/\\\*"

上述變更允許帳戶 111222333444 中的任何 IAM 使用者或角色承擔帳戶 ID 444555666777 中 Maria 的 IAM 角色。為了最大限度地減少可以承擔該角色的身分數量,最佳做法是僅指定需要存取權之 IAM 使用者或角色的 ARN。

如需詳細資訊,請參閱更新角色信任政策

來自 SCP 或 IAM 政策的明確拒絕

如果您的帳戶屬於 AWS Organizations,則管理帳戶可能會套用限制角色切換的服務控制政策 (SCP)。如需詳細資訊,請參閱管理帳戶的最佳做法

檢查 SCP 或 IAM 政策中是否存在針對 AssumeRole 動作的明確拒絕。如果有明確的拒絕,則拒絕將覆寫任何允許權限,從而阻止角色承擔。在上例中,如果有明確的拒絕,Carlos 就無法承擔 Maria 的 IAM 角色。

另外,請檢查 SCP 是否根據 AWS 區域限制存取。AWS STS 是一項全球服務,因此您必須將其列在全球服務排除清單中。

如需詳細資訊,請參閱根據請求的 AWS 區域拒絕存取 AWS

此角色在切換到 IAM 角色時,需要 sts:ExternalId

如果 IAM 角色需要 sts:ExternalId 金鑰,您可以使用 AWS 管理主控台來切換角色。編輯政策以使用帶有 sts:ExternalId 參數的 AssumeRole 動作。

sts:ExternalId 金鑰允許第三方存取 AWS 資源。

如需詳細資訊,請參閱存取第三方擁有的 AWS 帳戶

檢查 IAM 角色信任政策中的條件

檢查您在信任政策中設定的條件,例如到期日或 ExternalId 要求。您的請求必須符合 IAM 角色政策的條件。

例如,如果目前日期晚於指定日期,則條件為 false,且政策無法授予承擔該角色的權限。

以下政策拒絕在 2016 年 5 月 1 日之後擔任該職位:

{
  "Effect": "Allow",
  "Action": "sts:AssumeRole",
  "Resource": "arn:aws:iam::account_id_number:role/role-name-you-want-to-assume",
  "Condition": {
    "DateLessThan": {
      "aws:CurrentTime": "2016-05-01T12:00:00Z"
    }
  }
}

請確定您的請求符合信任政策中的所有條件。

相關資訊

如何為 IAM 使用者提供擔任 IAM 角色的連結?

如何使用 IAM 存取另一個 AWS 帳戶中的資源?

AWS Organizations 服務控制政策和 IAM 政策有什麼區別?

AWS 官方已更新 1 年前