这是我第一次使用 AWS SCP。大家好!
我正在设计一个 AWS 测试 SCP 策略,我很想知道为什么这不起作用。目标是拒绝除此 ARN arn:aws:sts::1111111:assumed-role/myawsrole/[email protected] 之外的所有网络修改。我目前正在测试此 SCP,暂时仅评估此 ARN。但当 arn:aws:sts::1111111:assumed-role/myawsrole/[email protected] 尝试创建 VPC 或 SCP 中列出的任何其他操作时,我仍然收到隐式拒绝错误消息。我检查了 cloudtrail 日志,我在 ArnNotLike 运算符中使用的 ARN 应该可以工作。任何指导都会有帮助!
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "MyCompanyNetworkPolicy",
"Effect": "Deny",
"Action": [
"ec2:CreateInternetGateway",
"ec2:AttachInternetGateway",
"ec2:CreateTransitGateway",
"ec2:CreateTransitGatewayPeeringAttachment",
"ec2:CreateTransitGatewayRoute",
"ec2:CreateTransitGatewayRouteTable",
"ec2:CreateTransitGatewayVpcAttachment",
"ec2:CreateVpc",
"ec2:CreateVpcPeeringConnection",
"ec2:CreateVpnConnection",
"ec2:CreateVpnConnectionRoute",
"ec2:CreateVpnGateway",
"ec2:DeleteDhcpOptions",
"ec2:DeleteRoute",
"ec2:DeleteRouteTable",
"ec2:DeleteSubnet",
"ec2:DeleteTransitGateway",
"ec2:DeleteTransitGatewayRoute",
"ec2:DeleteTransitGatewayRouteTable",
"ec2:DeleteVpc",
"ec2:ModifyTransitGateway",
"ec2:ModifyTransitGatewayVpcAttachment",
"ec2:ModifyVpcPeeringConnectionOptions",
"ec2:ModifyVpcTenancy",
"ec2:ModifyVpnConnection",
"ec2:RejectTransitGatewayPeeringAttachment",
"ec2:RejectTransitGatewayVpcAttachment"
],
"Resource": "*",
"Condition": {
"ArnNotLike": {
"aws:PrincipalArn": [
"arn:aws:sts::1111111:assumed-role/myawsrole/[email protected]"
]
}
}
}
]
}
我尝试将全局运算符从 ArnNotLike 更改为 StringNotLike。我阅读了文档,看起来我的做法是正确的,除非我的政策存在疏忽。我期望 ARN arn:aws:sts::1111111:assumed-role/myawsrole/[email protected],这是登录到 AWS 账户以在该 AWS 账户中创建 VPC 的用户。
查看 Amazon EC2 的操作、资源和条件键 - 服务授权参考。
它提供了所有与 EC2 相关的 API 调用的列表以及它们接受的条件:
操作表的一些 API 调用需要很少的条件。例如,Condition 键列包含您可以在策略语句的
Condition
元素中指定的键。有关与服务资源关联的条件键的更多信息,请参阅资源类型表的条件键列。
CreateTransitGateway
仅允许标签和区域的条件。不可能编写通过不使用的条件来限制 API 调用的策略。您列出的大多数 API 调用都不接受 ARN。
相反,您可以在指定
资源时使用 ARN:
操作表的因此,您可能会更幸运地指定资源类型列指示每个操作是否支持资源级权限。如果此列没有值,您必须在策略声明的
*
元素中指定策略应用的所有资源 (Resource
)。如果该列包含资源类型,则您可以在具有该操作的语句中指定该类型的 ARN。
NotResource
。