AWS 服务委托人是否在政策文件中隐含地界定了账户范围?
Are AWS service principals implicitly account scoped in policy documents?
考虑为帐户 A 中的 IAM 角色配置的以下信任关系:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "cloudformation.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
这是否隐含地将访问范围缩小到帐户 A 中的 cloudformation 运行,或者任何其他帐户(B、C、D 等)中的 cloudformation 堆栈是否可以承担此角色?
我之前使用 sourceArn 条件来避免代理攻击,如下所示:
"Condition": {
"ArnLike": {
"aws:SourceArn": [
"xxxx"
]
}
}
这是否必要,或者初始策略是否足以将信任关系范围缩小到帐户 A?
此策略允许 CloudFormation 服务承担您帐户中的角色。
默认情况下,这也适用于您的帐户,即只有您帐户中的 CloudFormation 可以承担该角色,而其他帐户中的 CloudFormation 则不能。您必须 显式 添加具有另一个帐户 ID 的委托人,以允许从另一个帐户中的 CloudFormation 进行跨帐户访问 - 看起来像这样:
"Principal": {
"AWS": "123456789012"
"Service": "cloudformation.amazonaws.com"
},
需要明确的是,用户需要具有以下权限才能将角色传递给服务。
- “iam:GetRole”
- “iam:PassRole”
如果您的 IAM 角色 Arn 没有这些权限,他们就无法将其传递给 CloudFormation 服务以允许其被代入。
所以简而言之,除了能够承担角色的服务之外,user/role 还需要传递 IAM 角色 arn 的权限。
Granting a user permissions to pass a role to an AWS service 文档中提供了更多信息。
考虑为帐户 A 中的 IAM 角色配置的以下信任关系:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "cloudformation.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
这是否隐含地将访问范围缩小到帐户 A 中的 cloudformation 运行,或者任何其他帐户(B、C、D 等)中的 cloudformation 堆栈是否可以承担此角色?
我之前使用 sourceArn 条件来避免代理攻击,如下所示:
"Condition": {
"ArnLike": {
"aws:SourceArn": [
"xxxx"
]
}
}
这是否必要,或者初始策略是否足以将信任关系范围缩小到帐户 A?
此策略允许 CloudFormation 服务承担您帐户中的角色。
默认情况下,这也适用于您的帐户,即只有您帐户中的 CloudFormation 可以承担该角色,而其他帐户中的 CloudFormation 则不能。您必须 显式 添加具有另一个帐户 ID 的委托人,以允许从另一个帐户中的 CloudFormation 进行跨帐户访问 - 看起来像这样:
"Principal": {
"AWS": "123456789012"
"Service": "cloudformation.amazonaws.com"
},
需要明确的是,用户需要具有以下权限才能将角色传递给服务。
- “iam:GetRole”
- “iam:PassRole”
如果您的 IAM 角色 Arn 没有这些权限,他们就无法将其传递给 CloudFormation 服务以允许其被代入。
所以简而言之,除了能够承担角色的服务之外,user/role 还需要传递 IAM 角色 arn 的权限。
Granting a user permissions to pass a role to an AWS service 文档中提供了更多信息。