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

2 分的閱讀內容
0

我嘗試使用 AWS 管理主控台切換 AWS Identity and Access Management (IAM) 角色,並收到類似下列內容的錯誤: 「一個或多個欄位中的資訊無效。請查看您的資訊或聯絡您的管理員。」

簡短描述

發生此錯誤的原因如下:

  • AssumeRole 動作許可不正確
  • IAM 信任政策不正確
  • 來自政策的明確拒絕
  • 帳戶 ID 或角色名稱不正確
  • 需要外部 ID 才能切換角色
  • 信任政策條件不正確

解決方法

請遵循下列指示來驗證 IAM 政策組態,為您的案例切換 IAM 角色。

AssumeRole 動作許可缺少或不正確

若要切換至 IAM 角色,IAM 實體必須具有 AssumeRole 動作許可。IAM 實體必須具有類似以下的政策以及 AssumeRole 動作許可:

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

確定資源符合您要切換到的 IAM 角色的 Amazon Resource Name (ARN)。如需詳細資訊,請參閱向使用者授予切換角色的許可

IAM 角色信任政策不信任 IAM 使用者的帳戶 ID

IAM 角色信任政策可定義主體,這些主體可以擔任驗證信任政策是否將 IAM 使用者的帳戶 ID 列為受信任主體實體的角色。例如,名為 Bob 且帳戶 ID 為 111222333444 的 IAM 使用者想要切換到名為 Alice 且帳戶 ID 為 444555666777 的 IAM 角色。帳戶 ID 111222333444 是受信任的帳戶,帳戶 ID 444555666777 是信任帳戶。IAM 角色 Alice 具有信任 Bob 的信任政策,與以下類似:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Principal": {
        "AWS": "<111222333444>"
      },
      "Condition": {}
    }
  ]
}

注意: 最佳實務是遵循最低權限原則,並僅為使用者需要的角色指定完整的 ARN。

如需詳細資訊,請參閱修改角色信任政策 (主控台)

來自服務控制政策 (SCP) 或 IAM 政策的明確拒絕

如果您的 AWS 帳戶是 AWS Organizations 的一部分,則您的管理帳戶可能具有 SCP。確定對於 AssumeRole 動作,沒有來自 SCP 的明確拒絕。檢查是否有依據 AWS 區域拒絕 API 動作的 SCP。AWS Security Token Service (AWS STS) 為全域服務,必須包含在全域服務排除清單中。確定沒有來自 IAM 政策的任何明確拒絕,因為 "deny" 陳述式優先於 "allow" 陳述式。

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

驗證 AWS 帳戶 ID 和 IAM 角色名稱

在切換角色頁面上驗證帳戶 ID 和 IAM 角色名稱是否正確。帳戶 ID 為 12 位的識別符,IAM 角色名稱是您想要擔任的角色的名稱。

如需詳細資訊,請參閱在主控台中切換角色的注意事項

需要外部 ID 才能切換至 IAM 角色

管理員可以使用外部 ID 授予第三方存取 AWS 資源。您無法在 AWS 管理主控台中將 IAM 角色切換到需要 ExternalId 條件索引鍵值的角色。您只能藉由呼叫支援 ExternalId 索引鍵的 AssumeRole 動作來切換到 IAM 角色。

如需詳細資訊,請參閱將 AWS 資源的存取權授予第三方時如何使用外部 ID

IAM 角色信任政策中的有效條件

驗證您是否滿足 IAM 角色的信任政策中指定的所有條件。條件可以指定過期日期、外部 ID 或請求必須僅來自特定 IP 地址。在以下範例政策中,如果目前日期為指定日期之後的任何時間,則條件為 false。政策無法授予擔任 IAM 角色的許可。

"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 使用者並使用 IAM 憑證登入 AWS 管理主控台?

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

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

AWS 官方
AWS 官方已更新 8 個月前