Skip to main content
Background Image

AWS Well-Architected - Security

·486 words·3 mins

SEC01-BP01 使用账户分隔工作负载
#

通过采取多账户策略,在环境(如生产、开发和测试)和工作负载之间建立共同的防护机制和隔离措施。强烈建议在账户层面进行分离管理,这样可为安全性、账单和访问提供强大的隔离边界。

实施步骤:

  1. Design an organizational unit structure:
    • AWS Organizations 设计 OU。组织单位结构应与业务需求、数据敏感度和工作负载结构看齐
    • 附加 SCP 到 OU/Account
  2. Create a landing zone for your multi-account environment:
    • Landing Zone 是 AWS 提出的一个最佳实践架构,意思是:当你要在 AWS 上长期运行业务时,先搭好一个“落地环境”(landing zone),里面包含安全、合规、身份、日志、网络的基本治理能力
    • 使用 AWS Control Tower 一键完成 multi-account environment 设置
  3. Establish guardrails:
    • AWS Control Tower: Detective Guardrails, Preventive Guardrails
  4. Restrict access to newly added Regions:
    • SCP: account:EnableRegion / account:DisableRegion, aws:RequestedRegion Condition (Through AWS Organization OR AWS Control Tower Preventive Guardrail)
  5. 考虑使用 AWS CloudFormation StackSets:
    • 将资源(包括 IAM 策略、角色和组)部署到不同的 AWS 账户和区域中

AWS Organizations
#

将账户建立成由一个或多个 OU 层定义的层次结构形式。

Organizational Units(OU)
#

每个 OU 均可包含若干成员账户。

OU 结构例子:

OU Examples

Security: Service Control Policies(SCP)
#

IAM policies applied to OU or Accounts to restrict Users and Roles.
Management Account 默认有全部权限,Root SCP 对其没有影响。

Does not allow anything by default, like IAM. So must have an explicit allow from the root through each OU. SCP 是继承的,从 Root SCP 开始,下一层的 OU/Account 会继承上一层的 Deny + Access

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
#

  1. Build-in identity store in IAM Identity Center.
  2. 3rd party: Active Directory(AD), OneLogin, Okta…

登陆账号后的界面:

AWS IAM identity Center Login Flow

Permission Sets - 给予账户权限
#

AWS IAM identity Center Permission Sets

  1. IAM Identity Center 中定义一个 group, 将账户加入 group。
  2. 定义 Permission Set, 并将它和 OU/Account 联系
  3. 账户登录后,可以看到 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 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 IAM identity Center 中的多账号是不一样的。
AWS Control Tower 中指的是:为了治理和隔离,把不同用途的工作负载放在不同的 AWS account 里(而不是把所有资源都堆在一个账号里)。
AWS IAM identity Center 中的是:一个用户/身份可以用单点登录(SSO),跨多个 AWS account 登录和切换角色。

Preventive Guardrails:

  • 基于 SCPs(例如:限制所有账户可使用的 Region)

Detective Guardrails:

  • 基于 AWS Config(例如:识别未打标签的资源),其中 标签标准由 AWS Organizations 的 Tag Policies 定义