这有两个部分 - ~/.aws/credentials 文件和 ~/.aws/config 文件。
假设您在账户 987654321098 中有一个 IAM 用户 my-user-id,并希望在账户 0123456789012 中担任一个名为 my-assumed-role 的角色
~/.aws/credentials 文件包含一个配置文件,其中包含来自my-user-id 的 IAM 命令行用户凭证 - 访问密钥 ID 和秘密访问密钥。例如:
[default]
aws_access_key_id=AKIAABCDEFGHIJKLMNOPQR
aws_secret_access_key=SeCrEtKeY
region=ap-southeast-2
output=json
~/.aws/config 文件包含一个配置文件,其中包含跨账户角色的 ARN 和 IAM 用户的 MFA 序列号,以及任何其他会话选项。例如:
[profile cross-account-role]
role_arn = arn:aws:iam::123456789012:role/my-assumed-role
source_profile = default
mfa_serial = arn:aws:iam::987654321098:mfa/my-user-id
region=ap-southeast-2
s3 =
signature_version = s3v4
role_session_name = my-session
为了使用 CLI 承担跨账户角色,我们从 ~/.aws/config 附加角色的配置文件,例如--profile cross-account-role 到命令。
由于source_profile 是默认值,它将使用来自账户987654321098 的具有MFA 的IAM 用户my-user-id 的凭证来承担目标账户中的my-assumed-role 角色0123456789012
例如
myuser@myost:~$ aws sts get-caller-identity --profile cross-account-role
Enter MFA code for arn:aws:iam::987654321098:mfa/my-user-id:
{
"UserId": "AROAABCDEFGHIJKLMNOPQR:my-user-id",
"Account": "0123456789012",
"Arn": "arn:aws:sts::0123456789012:assumed-role/my-assumed-role/my-session"
}
CLI 将提示您输入 MFA 代码,然后提供输出。默认情况下,会话将持续 60 分钟并被缓存。在此期间,任何进一步的 CLI 命令都不需要再次提示输入 MFA 代码。