Kas*_*sen 4 amazon-web-services amazon-iam aws-sts
我有一个 AWS 多账户设置,我使用 IAM Identity Center 来管理用户和控制访问。我正在使用托管 AWS 角色来授予仅查看访问权限。当我登录到其中一个帐户(我们称之为prod)时,我希望能够使用 STS 来承担另一个帐户中的角色(我们称之为shared)。
为此,我需要设置一个 IAM 角色来shared授予适当的访问权限,并拥有允许我这样做的信任策略。最初我是从这个开始的(有效):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<prodAccountID>:root"
},
"Action": "sts:AssumeRole",
}
]
}
Run Code Online (Sandbox Code Playgroud)
如何将该主体从任何来源更改prod为仅通过 SSO 登录并具有特定角色的主体?
举个例子:
$ aws sts get-caller-identity
{
"UserId": "<some-id>:<username>",
"Account": "<prodAccountID>",
"Arn": "arn:aws:sts::<prodAccountID>:assumed-role/AWSReservedSSO_view-only_9ec0318096f8cdd9/<username>"
}
Run Code Online (Sandbox Code Playgroud)
我希望任何有这个AWSReservedSSO_view-only_9ec0318096f8cdd9角色的人都能够担任这个角色。
经过大量的试验和错误,事实证明 是aws:PrincialARN所承担角色的 ARN。我不清楚这是否是防弹的。
但它确实允许像这样的信任策略来完成我正在寻找的事情:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<prodAccountID>:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"ArnLike": {
"aws:PrincipalARN": "arn:aws:iam::<prodAccountID>:role/aws-reserved/sso.amazonaws.com/*/AWSReservedSSO_view-only_*"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
编辑:经过进一步的实验还发现可以这样做:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<prodAccountID>:role/aws-reserved/sso.amazonaws.com/<SSO-region>/AWSReservedSSO_view-only_9ec0318096f8cdd9"
},
"Action": "sts:AssumeRole",
}
]
}
Run Code Online (Sandbox Code Playgroud)
这带来了 SSO 托管角色必须事先存在的限制,并且您需要知道全名 - 而不仅仅是它的名称view-only。
| 归档时间: |
|
| 查看次数: |
2571 次 |
| 最近记录: |