选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

通过使用 Cloud Custodian 来阻止对 Amazon RDS 的公有访问 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

通过使用 Cloud Custodian 来阻止对 Amazon RDS 的公有访问

创建者:abhay kumar (AWS) 和 Dwarika Patra (AWS)

摘要

许多组织在多个云供应商上运行其工作负载和服务。在这些混合云环境中,除了各个云提供商提供的安全性外,云基础设施还需要严格的云治理。Amazon Relational Database Service (Amazon RDS) 等云数据库是一项重要的服务,必须对其进行监控以防存在任何访问和权限漏洞。尽管您可通过配置安全组来限制对 Amazon RDS 数据库的访问,但您可添加第二层保护来禁止诸如公有访问之类的操作。确保阻止公有访问将有助于您遵守一般数据保护条例 (GDPR)、健康保险流通与责任法案 (HIPAA)、美国国家标准与技术研究所 (NIST) 和支付卡行业数据安全标准 (PCI DSS)。

Cloud Custodian 是开源规则引擎,您可以使用它来强制执行对 Amazon Web Services (AWS) 资源(例如 Amazon RDS)的访问限制。借助 Cloud Custodian,您可设置规则,根据定义的安全和合规标准对环境进行验证。您可使用 Cloud Custodian 来管理您的云环境,帮助确保遵守安全政策、标签政策、未使用资源的垃圾回收和成本管理。借助 Cloud Custodian,您可使用单一界面在混合云环境中实施治理。例如,您可使用 Cloud Custodian 界面与 AWS 和 Microsoft Azure 进行交互,从而减少使用 AWS Config、AWS 安全组和 Azure 策略等机制的工作量。

此模式提供了在 AWS 上使用 Cloud Custodian 强制限制对 Amazon RDS 实例的公有访问权限的说明。

先决条件和限制

先决条件

  • 一个有效的 Amazon Web Services account

  • 密钥对

  • 已安装 AWS Lambda

架构

目标技术堆栈

  • Amazon RDS

  • AWS CloudTrail

  • AWS Lambda

  • Cloud Custodian

目标架构

下图显示了云托管人将策略部署到 Lambda、AWS 启动事件以及在 Amazon CreateDBInstance RD CloudTrail S 上将 Lambda 函数PubliclyAccessible设置为 false。

在 AWS 上使用云托管来限制公众对 Amazon RDS 实例的访问。

工具

Amazon Web Services

其他工具

  • Cloud Custodian 将大多数组织用于管理其公共云账户的多种工具和脚本统一到一个开源工具中。它使用无状态规则引擎来定义和实施策略,为云基础设施提供指标、结构化输出和详细报告。它与无服务器运行时系统紧密集成,以低运营开销提供实时修复和响应。

操作说明

Task描述所需技能

安装 AWS CLI。

要安装 AWS CLI,请按照 AWS 文档中的说明进行操作。

AWS 管理员

设置 AWS 凭证。

配置 AWS CLI 用于与 AWS 交互的设置,包括 AWS 区域和您要使用的输出格式。

$>aws configure AWS Access Key ID [None]: <your_access_key_id> AWS Secret Access Key [None]: <your_secret_access_key> Default region name [None]: Default output format [None]:

有关更多信息,请参阅 AWS 文档

AWS 管理员

创建一个 IAM 角色。

要创建具有 Lambda 执行角色的 IAM 角色,请运行以下命令。

aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}
AWS DevOps

设置 AWS CLI

Task描述所需技能

安装 AWS CLI。

要安装 AWS CLI,请按照 AWS 文档中的说明进行操作。

AWS 管理员

设置 AWS 凭证。

配置 AWS CLI 用于与 AWS 交互的设置,包括 AWS 区域和您要使用的输出格式。

$>aws configure AWS Access Key ID [None]: <your_access_key_id> AWS Secret Access Key [None]: <your_secret_access_key> Default region name [None]: Default output format [None]:

有关更多信息,请参阅 AWS 文档

AWS 管理员

创建一个 IAM 角色。

要创建具有 Lambda 执行角色的 IAM 角色,请运行以下命令。

aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}
AWS DevOps
Task描述所需技能

安装 Cloud Custodian。

要为您的操作系统和环境安装 Cloud Custodian,请按照 Cloud Custodian 文档中的说明进行操作。

DevOps 工程师

检查 Cloud Custodian 架构。

要查看您可针对其运行策略的 Amazon RDS 资源的完整列表,请使用以下命令。

custodian schema aws.rds
DevOps 工程师

创建Cloud Custodian策略。

使用 YAML 扩展名将 Cloud Custodian 策略文件下的代码保存在其他信息部分。

DevOps 工程师

定义 Cloud Custodian 操作以更改可公开访问的标志。

  1. 找到保管人代码(例如 /Users/abcd/custodian/lib/python3.9/site-packages/c7n/resources/rds.py)。

  2. rds.py 中找到 RDSSetPublicAvailability 类,然后使用其他信息部分中的 c7n 资源 rds.py 文件下方的代码修改此类。

DevOps 工程师

执行试运行。

(可选)要在不对资源运行任何操作的情况下检查策略识别了哪些资源,请使用以下命令。

custodian run -dryrun <policy_name>.yaml -s <output_directory>
DevOps 工程师

设置 Cloud Custodian

Task描述所需技能

安装 Cloud Custodian。

要为您的操作系统和环境安装 Cloud Custodian,请按照 Cloud Custodian 文档中的说明进行操作。

DevOps 工程师

检查 Cloud Custodian 架构。

要查看您可针对其运行策略的 Amazon RDS 资源的完整列表,请使用以下命令。

custodian schema aws.rds
DevOps 工程师

创建Cloud Custodian策略。

使用 YAML 扩展名将 Cloud Custodian 策略文件下的代码保存在其他信息部分。

DevOps 工程师

定义 Cloud Custodian 操作以更改可公开访问的标志。

  1. 找到保管人代码(例如 /Users/abcd/custodian/lib/python3.9/site-packages/c7n/resources/rds.py)。

  2. rds.py 中找到 RDSSetPublicAvailability 类,然后使用其他信息部分中的 c7n 资源 rds.py 文件下方的代码修改此类。

DevOps 工程师

执行试运行。

(可选)要在不对资源运行任何操作的情况下检查策略识别了哪些资源,请使用以下命令。

custodian run -dryrun <policy_name>.yaml -s <output_directory>
DevOps 工程师
Task描述所需技能

使用 Lambda 部署策略。

要创建将运行策略的 Lambda 函数,请使用以下命令。

custodian run -s policy.yaml

然后,该政策将由 AWS CloudTrail CreateDBInstance 活动启动。

因此,对于符合标准的实例,AWS Lambda 可将可公开访问的标志设置为 false。

DevOps 工程师

部署策略

Task描述所需技能

使用 Lambda 部署策略。

要创建将运行策略的 Lambda 函数,请使用以下命令。

custodian run -s policy.yaml

然后,该政策将由 AWS CloudTrail CreateDBInstance 活动启动。

因此,对于符合标准的实例,AWS Lambda 可将可公开访问的标志设置为 false。

DevOps 工程师

相关资源

其他信息

Cloud Custodian 策略 YAML 文件

policies: - name: "block-public-access" resource: rds description: | This Enforcement blocks public access for RDS instances. mode: type: cloudtrail events: - event: CreateDBInstance # Create RDS instance cloudtrail event source: rds.amazonaws.com ids: requestParameters.dBInstanceIdentifier role: arn:aws:iam::1234567890:role/Custodian-compliance-role filters: - type: event key: 'detail.requestParameters.publiclyAccessible' value: true actions: - type: set-public-access state: false

c7n 资源 rds.py 文件

@actions.register('set-public-access') class RDSSetPublicAvailability(BaseAction): schema = type_schema( "set-public-access", state={'type': 'boolean'}) permissions = ('rds:ModifyDBInstance',) def set_accessibility(self, r): client = local_session(self.manager.session_factory).client('rds') waiter = client.get_waiter('db_instance_available') waiter.wait(DBInstanceIdentifier=r['DBInstanceIdentifier']) client.modify_db_instance( DBInstanceIdentifier=r['DBInstanceIdentifier'], PubliclyAccessible=self.data.get('state', False)) def process(self, rds): with self.executor_factory(max_workers=2) as w: futures = {w.submit(self.set_accessibility, r): r for r in rds} for f in as_completed(futures): if f.exception(): self.log.error( "Exception setting public access on %s \n %s", futures[f]['DBInstanceIdentifier'], f.exception()) return rds

Security Hub 集成

Cloud Custodian 可以与 AWS Security Hub集成,以发送安全调查发现并尝试补救措施。有关更多信息,请参阅宣布 Cloud Custodian 与 AWS Security Hub 集成

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。