本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为公有子网部署基于属性的预防性访问控制
由乔尔·阿尔弗雷多·努内斯·冈萨雷斯 () 和塞缪尔·奥尔特加·桑乔 (AWS) 创作 AWS
摘要
在集中式网络架构中,检查和边缘虚拟私有云 (VPCs) 集中所有入站和出站流量,例如进出互联网的流量。但是,这可能会造成瓶颈或导致达到AWS服务配额的限制。与更常见的集中式方法相比,将网络边缘安全与其中的工作负载一起部署可VPCs提供前所未有的可扩展性。这称为分布式边缘架构。
尽管在工作负载账户中部署公有子网可以带来好处,但它也会带来新的安全风险,因为它增加了攻击面。我们建议您仅在这些资源的公有子网中部署 Elastic Load Balancing (ELB) 资源,例如应用程序负载均衡器或网NAT关。VPCs在专用的公有子NAT网中使用负载均衡器和网关可以帮助您对入站和出站流量实施精细控制。
基于属性的访问控制 (ABAC) 是根据用户属性(例如部门、工作角色和团队名称)创建细粒度权限的做法。有关更多信息,请参ABAC阅AWS
此模式描述了如何ABAC通过AWS组织中的服务控制策略 (SCP) 和 Identity and Access Managem AWS ent () 中的策略来实施来帮助保护公有子网。IAM您可以将SCP应用于组织的成员帐户或组织单位 (OU)。这些ABAC策略允许用户在目标子NAT网中部署网关,并防止他们部署其他亚马逊弹性计算云 (AmazonEC2) 资源,例如EC2实例和弹性网络接口。
先决条件和限制
先决条件
Organiations 中的AWS组织
对 Organization AWS s 根账户的管理权限
在组织中,用于测试的活跃成员账户或 OU SCP
限制
此解决方案SCP中的不会阻止使用AWS服务相关角色的服务在目标子网中部署资源。这些服务的示例有 Elastic Load Balancing (ELB)、亚马逊弹性容器服务 (亚马逊ECS) 和亚马逊关系数据库服务 (亚马逊RDS)。有关更多信息,请参阅 Org SCPanizations 文档AWS中的权限影响。实施安全控制来检测这些异常。
架构
目标技术堆栈
SCP应用于 Organi AWS zations 中的AWS账户或 OU
以下IAM角色:
AutomationAdminRole
— 用于在实施后修改子网标签和创建VPC资源 SCPTestAdminRole
— 用于测试SCP是否阻止其他IAM委托人(包括具有管理权限的主体)执行保留给的操作AutomationAdminRole
目标架构

您在目标账户中创建
AutomationAdminRole
IAM角色。此角色有权管理网络资源。请注意此角色独有的以下权限:此角色可以创建VPCs和公有子网。
此角色可以修改目标子网的标签分配。
此角色可以管理自己的权限。
在 AWS Organizations 中SCP,您可以将应用于目标AWS账户或 OU。有关示例策略,请参阅此模式中的其他信息。
CI/CD 管道中的用户或工具可以承担
AutomationAdminRole
角色,将SubnetType
标签应用到目标子网。通过担任其他IAM角色,组织中的IAM授权委托人可以管理目标子NAT网中的网关以及AWS账户中其他允许的网络资源,例如路由表。使用IAM策略来授予这些权限。有关更多信息,请参阅 Amazon 的身份和访问管理VPC。
自动化和扩缩
为了帮助保护公有子网,必须应用相应的AWS标签。应用后SCP,NAT网关是授权用户可以在带有SubnetType:IFA
标签的子网中创建的唯一一种 Amazon EC2 资源。 (IFA
指面向互联网的资产。) SCP阻止创建其他 Amazon EC2 资源,例如实例和弹性网络接口。 我们建议您使用AutomationAdminRole
扮演角色的 CI/CD 管道来创建VPC资源,以便将这些标签正确应用于公有子网。
工具
AWS 服务
AWSIdentity and Access Management (IAM) 通过控制谁经过身份验证并有权使用AWS资源,从而帮助您安全地管理对资源的访问权限。
AWSO rganizations 是一项账户管理服务,可帮助您将多个AWS账户整合到一个由您创建和集中管理的组织中。在 AWS Organizations 中,您可以实施服务控制策略 (SCPs),这是一种可用于管理组织中权限的策略。
Amazon Virtual Private Cloud(亚马逊VPC)可帮助您将AWS资源启动到您定义的虚拟网络中。该虚拟网络类似于您在数据中心中运行的传统网络,并具有使用 AWS 的可扩展基础设施的优势。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
创建测试管理员角色。 | 在目标AWS账户 | AWS 管理员 |
创建自动化管理员角色。 |
以下是您可用于测试
| AWS 管理员 |
创建并附上SCP. |
| AWS 管理员 |
任务 | 描述 | 所需技能 |
---|---|---|
创建VPC或子网。 |
| AWS 管理员 |
管理标签。 |
| AWS 管理员 |
在目标子网中部署资源。 | AWS 管理员 | |
管理 AutomationAdminRole 角色。 |
| AWS 管理员 |
任务 | 描述 | 所需技能 |
---|---|---|
清理已部署的资源。 |
| AWS 管理员 |
相关资源
AWS 文档
其他AWS参考文献
其他信息
以下服务控制策略是一个示例,您可以用来在您的组织中测试这种方法。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyVPCActions", "Effect": "Deny", "Action": [ "ec2:CreateVPC", "ec2:CreateRoute", "ec2:CreateSubnet", "ec2:CreateInternetGateway", "ec2:DeleteVPC", "ec2:DeleteRoute", "ec2:DeleteSubnet", "ec2:DeleteInternetGateway" ], "Resource": [ "arn:aws:ec2:*:*:*" ], "Condition": { "StringNotLike": { "aws:PrincipalARN": ["arn:aws:iam::*:role/AutomationAdminRole"] } } }, { "Sid": "AllowNATGWOnIFASubnet", "Effect": "Deny", "NotAction": [ "ec2:CreateNatGateway", "ec2:DeleteNatGateway" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*" ], "Condition": { "ForAnyValue:StringEqualsIfExists": { "aws:ResourceTag/SubnetType": "IFA" }, "StringNotLike": { "aws:PrincipalARN": ["arn:aws:iam::*:role/AutomationAdminRole"] } } }, { "Sid": "DenyChangesToAdminRole", "Effect": "Deny", "NotAction": [ "iam:GetContextKeysForPrincipalPolicy", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies", "iam:ListInstanceProfilesForRole", "iam:ListRolePolicies", "iam:ListRoleTags" ], "Resource": [ "arn:aws:iam::*:role/AutomationAdminRole" ], "Condition": { "StringNotLike": { "aws:PrincipalARN": ["arn:aws:iam::*:role/AutomationAdminRole"] } } }, { "Sid": "allowbydefault", "Effect": "Allow", "Action": "*", "Resource": "*" } ] }