SEC01-BP01 使用账户分隔工作负载#
通过采取多账户策略,在环境(如生产、开发和测试)和工作负载之间建立共同的防护机制和隔离措施。强烈建议在账户层面进行分离管理,这样可为安全性、账单和访问提供强大的隔离边界。
实施步骤:
- Design an organizational unit structure:
- AWS Organizations 设计 OU。组织单位结构应与业务需求、数据敏感度和工作负载结构看齐
- 附加 SCP 到 OU/Account
- Create a landing zone for your multi-account environment:
- Landing Zone 是 AWS 提出的一个最佳实践架构,意思是:当你要在 AWS 上长期运行业务时,先搭好一个“落地环境”(landing zone),里面包含安全、合规、身份、日志、网络的基本治理能力
- 使用 AWS Control Tower 一键完成 multi-account environment 设置
- Establish guardrails:
- AWS Control Tower: Detective Guardrails, Preventive Guardrails
- Restrict access to newly added Regions:
- SCP: account:EnableRegion / account:DisableRegion, aws:RequestedRegion Condition (Through AWS Organization OR AWS Control Tower Preventive Guardrail)
- 考虑使用 AWS CloudFormation StackSets:
- 将资源(包括 IAM 策略、角色和组)部署到不同的 AWS 账户和区域中
AWS Organizations#
将账户建立成由一个或多个 OU 层定义的层次结构形式。
Organizational Units(OU)#
每个 OU 均可包含若干成员账户。
OU 结构例子:
Security: Service Control Policies(SCP)#
IAM policies applied to OU or Accounts to restrict Users and Roles.
Management Account 默认有全部权限,Root SCP 对其没有影响。
Tag Policies#
旨在标准化特定 AWS 组织内资源的标签。它们用于确保标记的一致性、审核标记的资源以及维护正确的资源分类。
{
"tags": {
"Environment": {
"tag_key": {
"enforced_for": ["ec2:instance", "s3:bucket"]
},
"tag_value": {
"allowed_values": ["Dev", "Staging", "Prod"]
}
},
"Owner": {
"tag_key": {
"enforced_for": ["*"]
}
}
}
}
- Environment 标签必须存在,值只能是 Dev | Staging | Prod,并且要求在 EC2 实例和 S3 存储桶上必须有。
- Owner 标签必须存在,且适用于所有资源类型。
如何检查 Tag policies 是否被遵守:
- 创建资源时 console 会弹出警告,仍可以继续
- AWS Organizations 会生成 Tag Compliance Report。
AWS IAM identity Center#
连接到 Salesforce、Box、Microsoft 365 等应用程序,或任何支持 SAML 2.0 集成的应用程序。一个账号登陆多个 AWS 账户。
单点登录(SSO):用户只需要 登录一次,就可以访问多个系统或应用,而不用每次都重新输入用户名和密码。
Identity providers#
- Build-in identity store in IAM Identity Center.
- 3rd party: Active Directory(AD), OneLogin, Okta…
登陆账号后的界面:
Permission Sets - 给予账户权限#
- IAM Identity Center 中定义一个 group, 将账户加入 group。
- 定义 Permission Set, 并将它和 OU/Account 联系
- 账户登录后,可以看到 Permission Set 中允许登录的 Account 和 OU 中的 Account。aws 会授予对应的 IAM role 让账户进行访问 aws account。
Application Assignments#
Identity Center 中的账号去访问外部/内部应用
Attribute-Based Access Control(ABAC)#
ABAC 是基于 属性(Attribute) 来控制访问,而不是固定的角色或组。
结合IAM Conditions去判断账号权限:
假设用户 Alice 有标签:Department = Dev
S3 桶有标签:Department = Dev
ABAC IAM Policy:
{
"Effect": "Allow",
"Action": "s3:_",
"Resource": "arn:aws:s3:::_",
"Condition": {
"StringEquals": {
"aws:PrincipalTag/Department": "${aws:ResourceTag/Department}"
}
}
}
Alice 可以访问 Department=Dev 的桶
Alice 无法访问 Department=Test 的桶
AWS Directory Services#
- AWS Managed Microsoft AD:
- Create your own AD in AWS, manage users locally, supports MFA
- Establish “trust” connections with your on-premise AD
- Where the user is managed: On-premise AD, AWS Managed AD
- AD Connector
- Directory Gateway (proxy) to redirect to on-premise AD, supports MFA
- Users are managed on the on-premise AD
- Where the user is managed: On-premise AD
- Simple AD
- AD-compatible managed directory on AWS
- Cannot be joined with on-premise AD
- Where the user is managed: Simple AD
AWS Control Tower#
AWS Control Tower 是一项旨在根据最佳实践简化安全且合规的multi-account AWS environment的设置和管理的服务。
The services AWS Control Tower uses include:
- AWS Organizations: create accounts, define SCP and Tags Policies
- AWS Config: monitor resources and configurations
Guardrails#
在管理多个 AWS 账户时,您可能希望对所有账户强制执行限制或统一监控合规性。Guardrail(护栏)功能可以在 Control Tower 环境中提供持续治理,以实现这一目标。
AWS Control Tower 中指的是:为了治理和隔离,把不同用途的工作负载放在不同的 AWS account 里(而不是把所有资源都堆在一个账号里)。
AWS IAM identity Center 中的是:一个用户/身份可以用单点登录(SSO),跨多个 AWS account 登录和切换角色。
Preventive Guardrails:
- 基于 SCPs(例如:限制所有账户可使用的 Region)
Detective Guardrails:
- 基于 AWS Config(例如:识别未打标签的资源),其中 标签标准由 AWS Organizations 的 Tag Policies 定义