我嘗試擔任跨帳戶 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 角色時發生錯誤,請務必針對使用案例遵循下列最佳實務:
相關資訊
如何取得用以協助疑難排解 IAM 許可遭拒或未經授權錯誤的資料?
從使用者切換到 IAM 角色 (主控台)
切換到 IAM 角色 (AWS CLI)