能否通过SCP限制特定属性EC2实例的访问权限,仅允许指定IAM用户访问?
使用AWS服务控制策略(SCP)限制特定EC2实例的访问权限
核心结论
可以通过SCP实现对带有特定属性(标签、名称模式)的EC2实例的访问限制,仅允许选定IAM用户组访问,并禁止其他用户查看这类实例的元数据。
实现思路与配置示例
SCP通过拒绝规则结合条件判断,排除授权的IAM组,从而限制非授权用户对目标EC2实例的操作权限。以下是具体配置要点:
1. 基于标签的SCP配置
如果用标签(比如SensitiveData=true)标识敏感实例,可使用如下SCP:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ // 控制实例基本信息查看 "ec2:DescribeInstances", "ec2:DescribeInstanceAttribute", // 控制元数据相关操作 "ec2:DescribeInstanceMetadataOptions", "ec2:GetInstanceMetadata" ], "Resource": "*", "Condition": { // 匹配带有指定标签的实例 "StringEquals": { "ec2:ResourceTag/SensitiveData": "true" }, // 排除允许访问的IAM组 "NotPrincipal": { "AWS": [ "arn:aws:iam::你的账户ID:group/授权访问组名称" ] } } } ] }
2. 基于名称模式的SCP配置
如果用名称模式(比如名称包含Sensitive)标识敏感实例,将条件替换为StringLike:
"Condition": { "StringLike": { "ec2:ResourceName": "*Sensitive*" }, "NotPrincipal": { "AWS": [ "arn:aws:iam::你的账户ID:group/授权访问组名称" ] } }
元数据访问的额外控制
除了SCP的API权限限制,还需结合EC2实例的元数据配置增强安全性:
- 启用IMDSv2(实例元数据服务版本2),强制使用会话令牌访问元数据,降低未授权访问风险。
- 配置实例的元数据访问控制,限制仅允许特定IP范围或内部进程访问。
- 注意:SCP无法直接限制已登录到实例内部的用户访问元数据,这类场景需依赖实例层面的配置。
关键注意事项
- SCP仅作用于AWS组织内的OU或账户,需确保将该SCP应用于包含敏感EC2实例的目标OU/账户。
- 测试验证:使用非授权用户账号测试,确认无法查看敏感实例的信息和元数据;使用授权组内的用户验证正常访问。
- 避免权限过度收紧:确保SCP仅针对敏感实例,不要影响其他正常EC2实例的操作权限。
内容的提问来源于stack exchange,提问作者pkaramol
相关产品推荐
相关产品推荐

