當我嘗試擔任跨帳戶 IAM 角色時,如何解決「存取遭拒」或「無效資訊」錯誤?

2 分的閱讀內容
0

我嘗試擔任跨帳戶 AWS 身分和存取管理 (IAM) 角色。但我收到類似以下內容的錯誤: 「呼叫 AssumeRole 作業時發生錯誤 (AccessDenied):」或「一個或多個欄位中的資訊無效。請查看您的資訊或聯絡您的管理員。」

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請參閱AWS CLI 錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

若要擔任跨帳戶中的 IAM 角色,請先為擔任該 IAM 角色的帳戶編輯權限。然後,在允許假設 IAM 角色的另一個 AWS 帳戶中編輯信任政策。

在以下範例中,您有兩個帳戶,一個名為 Account_Bob,另一個名為 Account _Alice。您在 Account_Bob 中也有名為 Bob 的 IAM 使用者或角色,在 Account_Alice 中則有名為 Alice 的 IAM 角色。在這個案例中,Bob 會擔任名為 Alice 的 IAM 角色。

若要跨多個 AWS 帳戶或跨帳戶使用 AssumeRole API 呼叫,您必須具有信任政策,才能授與擔任角色的權限。

Bob 所需的權限範例:

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

Alice 所需的信任策略範例:

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

執行 AWS CLI 命令以擔任跨帳戶 IAM 角色的範例:

aws sts assume-role --role-arn "arn:aws:iam::123456789012:role/example-role" --role-session-name assume-cross-account

如需詳細資訊,請參閱 How do I assume an IAM role using the AWS CLI?

為了避免在您承擔跨帳戶 IAM 角色時發生錯誤,請務必針對使用案例遵循下列最佳實務:

  • 擔任角色的 Bob 必須具有適用於 API 動作 AssumeRole 的權限。
  • 您必須以 Bob 的身分登入 AWS 帳戶。如需詳細資訊,請參閱 Using an alias for your AWS account ID
  • 所擔任的角色 Alice 必須存在。請確認未刪除該角色,且 Amazon Resource Name (ARN) 已正確設定
  • 如果您使用角色鏈結,請確定您未使用先前工作階段中的 IAM 憑證。For more information, see the role chaining section in roles terms and concepts.
  • 如果 Account_Bob 是 AWS Organizations 的一部分,則可能會有服務控制政策 (SCP),藉以限制使用 Account_BobAccount_Alice 存取 AssumeRole。請務必編輯或移除 SCP,其會限制使用 Account_BobAccount_Alice 的存取權。如需詳細資訊,請參閱 SCP

相關資訊

如何取得用以協助疑難排解 IAM 許可遭拒或未經授權錯誤的資料?

從使用者切換到 IAM 角色 (主控台)

切換到 IAM 角色 (AWS CLI)