Ver*_*ola 6 amazon-web-services amazon-iam aws-sso
我正在尝试允许用户在 AWS 上担任角色。我将代入角色策略附加到 IAM 用户所属的组,以便他们可以代入特定角色。问题是用户现在使用 SSO 登录,并且不再允许使用 IAM 用户凭证通过控制台登录,因此用户无法承担该角色。如何配置具有 SSO 登录的用户来承担现有 IAM 角色?当我创建假设角色策略时,我选择了 AssumeRole 和 AssumeRoleWithSaml。但它仍然不起作用。
这就是 AssumeRole 策略的样子
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"sts:AssumeRole",
"sts:AssumeRoleWithSAML"
],
"Resource": "arn:aws:iam::xxxxxxxxxxxx:role/service-role/KinesisFirehoseServiceRole--us-east-1-xxxxxxxxxxxxx"
}
]
Run Code Online (Sandbox Code Playgroud)
该角色的信任关系如下所示
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "firehose.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
Run Code Online (Sandbox Code Playgroud)
我设法使用以下命令让 SSO 用户在他们经过身份验证的帐户中担任角色。请注意,您需要替换${ACCOUNT_ID}、${SSO_ROLE_NAME}和${ASSUMABLE_ROLE_NAME}。当然,您可能需要重新打包这些位。
aws iam create-role --role-name ${ASSUMABLE_ROLE_NAME} --assume-role-policy-document file://policy.json --profile $PROFILE
Run Code Online (Sandbox Code Playgroud)
政策.json:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::${ACCOUNT_ID}:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"ArnLike": {
"aws:PrincipalArn": [
"arn:aws:iam::${ACCOUNT_ID}:role/aws-reserved/sso.amazonaws.com/*/AWSReservedSSO_${SSO_ROLE_NAME}_*",
"arn:aws:iam::${ACCOUNT_ID}:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_${SSO_ROLE_NAME}_*"
]
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
您需要明确允许该用户/角色能够担任该角色。目前,校长设置为仅允许“消防服务”承担该角色。
第二个问题是您需要专门允许 SSO 帐户能够访问它。您需要获取当前 SSO 用户会话的 ARN。为了得到这个你应该运行aws sts get-caller-identity
你应该得到这样的东西
{
"UserId": "BROA5DAM2TACHAA38V9J1:daryl.teo@appetiser.com.au",
"Account": "1234567890",
"Arn": "arn:aws:sts::1234567890:assumed-role/AWSReservedSSO_AWSAdministratorAccess_abe68abec87ew/something.username"
}
Run Code Online (Sandbox Code Playgroud)
或 1 内衬aws sts get-caller-identity --output text --query Arn
然后获取该值并将其作为附加策略声明添加到您的策略中。
{
"Version": "2012-10-17",
"Statement":
[
{
"Effect": "Allow",
"Principal":
{
"Service": "firehose.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
{
"Effect": "Allow",
"Principal":
{
"AWS": "arn:aws:sts::1234567890:assumed-role/AWSReservedSSO_AWSAdministratorAccess_abe68abec87ew/something.username"
},
"Action": "sts:AssumeRole"
},
]
}
Run Code Online (Sandbox Code Playgroud)
现在您可以使用:
aws sts assume-role --role-arn=arn:aws:iam::123456823432:role/NameOfYourRole --role-session-name=role-session-name
| 归档时间: |
|
| 查看次数: |
10410 次 |
| 最近记录: |