亚马逊AWS官方博客

使用 Firewall Manager 轻松搞定多账户 WAF 资源管理

概述

AWS WAF 是一种用于保护 Web 应用程序免受常见漏洞攻击的工具,它可以帮助抵御常见的 Web 漏洞和机器人攻击,这些攻击可能会影响应用程序的可用性、降低安全性或消耗过多的资源。AWS WAF 允许用户创建安全规则,以控制机器人流量并阻止常见的攻击模式,如 SQL 注入或跨站脚本攻击(XSS),它还能更轻松地监控和阻止常见机器人,并限制它们的速率,通过精确控制指标的发出方式,提高对 Web 流量的可见性。

如今,AWS WAF 已然成为 Web 安全的不二之选。很多企业在不同部门会使用不同账户,因此造成大量的 Web ACL 散落在不同的 AWS 账户中,运维团队在进行安全管理时将面临如下挑战:

  1. 需要登录到不同的账户去创建 Web ACL。
  2. 需要登录到不同的账户去更新 Web ACL。包括发现新的风险 IP、增添调用服务、新增白名单、增加机器人检测,业务更新后发现原有规则对新业务造成了影响,需要对规则进行调整排查。
  3. 安全或审计团队需要相关的只读权限,但由于涉及到的账户太多,权限配置复杂。

AWS Firewall Manager 可以集中管理和维护多个 AWS 账户中的 Web ACL。使用 Firewall Manager 创建并管理 Web ACL,用户无需登录到每个账户,只需要在一个中央位置创建和更新规则,而不必在各个账户之间来回切换。AWS Firewall Manager 还提供了灵活的权限控制,以满足安全和审计团队的需求。您可以根据需要配置只读权限,而不必为涉及多个账户而担心复杂的权限配置。这使得安全和审计团队可以更轻松地访问相关信息,并进行必要的审计和监控。

Firewall Manager 经典使用场景

用户已经使用 AWS Organization 构建企业组织,实现对于组织中所有账户和资源的集中化管理。组织中的 management account 仅仅用于对账户和资源统一管理,但不涉及具体的资源创建和日常管理。

管理目标

  1. Account 1 是 organization management account,用户期望 Account 1 可以将 Firewall Manager 的管理权限委托给 Account 2。
  2. Account 2 可以指定一部分 user 拥有管理权限,一部分 user 仅拥有只读权限。

逻辑架构图

本文主要介绍针对这种使用场景,如何进行账户之间的权限配置。

配置方法

  1. 确保 account 1 和 account 2 在同一个 organization 下。
  2. 使用 account 1 下有 organization admin 权限的用户登录 Firewall Manager 控制台,创建 Firewall Manager 默认管理员帐户,这里我们假设将 account 1 配置为 Firewall Manager 的默认管理员帐户。
  3. 因为 account 1 作为组织的总管理账户,不直接进行资源管理,这里操作添加 account 2 作为 Firewall Manager 的管理账户。从控制台上添加管理员账户 account 2,可根据需要授予这个管理员账户对应于不同 account、region、policy type 等的权限。
  1. 使用 account 2下有管理员权限的用户登录,即拥有相应的 Firewall Manager 的管理权限。可以创建、管理 WAF policy,但是管理的范围仅限于 account 2 创建的 WAF policy,既不继承 account 1 创建的 WAF policy,也不会共享其他 Firewall Manager 管理员创建的 WAF policy。所以在使用时,建议创建和管理都集中在 account 2。
  2. 使用 Account 2 下拥有 admin 权限的 user 登录 IAM,可以赋予账户内其他用户或者用户组 Firewall Manager 只读权限或者管理权限。
  3. 赋予只读权限时,操作 add permission 时,需绑定两条 policy。一条是 AWS managed policy “AWSWAFReadOnlyAccess ”,然后再自建一条 policy,仅开放 Firewall Manager 的最小只读权限,内容如下:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "fms:List*",
                "fms:Get*",
                "organizations:DescribeOrganization",
                "RAM:ListResources",
                "organizations:ListDelegatedAdministrators",
                "EC2:DescribeRegions",
                "EC2:DescribeAvailabilityZones"
            ],
            "Resource": "*"
        }
    ]
}
  1. 赋予管理权限时,操作 add permission 时,需绑定两条 policy。一条是 AWS managed policy “AWSWAFFullAccess ”,然后再自建一条 policy,开放 Firewall Manager 相关的权限,内容如下:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "fms:*",
                "organizations:DescribeOrganization",
                "RAM:ListResources",
                "organizations:ListDelegatedAdministrators",
                "EC2:DescribeRegions",
                "EC2:DescribeAvailabilityZones"
            ],
            "Resource": "*"
        }
    ]
}
  1. Account 2 若需要开放更多其他权限给到相应的用户或者用户组,可按需在 IAM 中添加相应的 policy。

总结

AWS Firewall Manager 是一个功能强大的工具,能够简化跨多个 AWS 账户管理和维护 AWS WAF 的任务。它提供集中管理和维护 Web ACL 的能力,支持创建和更新规则,并提供灵活的权限控制。使用 AWS Firewall Manager,用户可以更高效地保护 Web 应用程序免受常见漏洞攻击,并简化管理过程。

其他注意事项

AWS Firewall Manager 的使用有一些先决条件,如下:

AWS Firewall Manager 先决条

参考文档

创建防火墙管理器管理员帐户

适用于 AWS Firewall Manager 的基于身份的策略示例

本篇作者

任田田

AWS 解决方案架构师,负责基于 AWS 云计算方案架构的咨询和设计,推广 AWS 云平台技术和各种解决方案。

林业

AWS 资深解决方案架构师,负责基于 AWS 的云计算方案的咨询与架构设计。拥有超过 14 年研发经验,曾打造千万级用户 APP,多项 Github 开源项目贡献者。在游戏、IoT、智慧城市、汽车、电商等多个领域都拥有丰富的实践经验。