通过 AWS Secrets Manager 实现集中式机密管理
关键点概述
在数字化时代,管理密码、API 密钥、令牌和其他凭证变得至关重要。对于某些 AWS 客户,集中式机密管理是解决此问题的有效方案。本文探讨了如何使用 AWS 数据保护服务如 AWS Secrets Manager 和 AWS KMS来更轻松地管理机密,并确保安全。
引言
在当今数字化环境中,管理包括密码、API 密钥、令牌和其他凭证在内的机密信息对组织来说是一项重要任务。对于某些 Amazon Web Services (AWS) 客户,使用集中式机密管理可以有效应对这一挑战。本文将探讨如何利用 AWS 数据保护服务,包括 AWS Secrets Manager 和 AWS Key Management Service (AWS KMS),帮助您从指定的 AWS 账户集中管理机密。
集中式机密管理的概念是将敏感信息整合到一个安全的存储库中。这个存储库作为一个集中式的保险箱,所有机密都在这里被存储、访问和管理,并且有严格的安全控制。这种集中化可以帮助组织执行统一的安全政策、简化访问控制,并降低未授权访问或泄露的风险。
这种方法提供了几个关键利益。首先,它可以增强安全性,通过减少威胁面和提供一个单一的控制点来管理对敏感信息的访问。此外,集中式机密管理能够通过执行严格的访问控制和审计跟踪,从而促进合规性。
此外,集中化还促进了效率和可扩展性,使机密轮换、配置和撤销的自动化工作流程成为可能。这种自动化减少了行政任务,降低了人为错误的风险,从而提升整体运营效率。
概述
本文将带您通过使用 AWS Lambda 轮换功能设立一个集中式账户来管理机密及其生命周期。为了在多个成员账户之间有效访问和管理机密,我们还将讨论如何通过 VPC 对等连接建立隧道,从而实现中央安全账户与相关成员账户之间的无缝通信。
值得注意的是,成员账户中的应用程序将通过使用资源策略直接访问存储在中央安全账户中的机密,从而简化获取过程。使用 AWS 提供的 DNS 还可以在中央安全账户的虚拟私有云VPC中自动解析数据库主机地址,将其映射到相应的控制面板 IP 地址。这一功能使得 AWS Lambda 函数流量可以高效地穿越对等连接,从而增强整体系统性能和可靠性。
下图展示了解决方案架构。该架构包括四个账户,通过 AWS Organizations 进行管理。其中三个工作账户被指定为账户 A、账户 B 和账户 C,分别托管为用户请求服务的应用程序和数据库,集中安全账户则用于维护和管理机密。每个工作账户的 VPC 1账户 A、B、C与集中安全账户的 VPC 1 建立对等连接,从而允许工作账户和机密管理账户之间的通信。为确保高可用性,机密还在不同的 AWS 区域中进行复制。
部署解决方案
请按照以下步骤部署解决方案。
步骤 1:在中央安全账户中创建机密,包括数据库机密
首先,创建您希望在此示例中使用的机密。例如,数据库机密将具有以下参数:
json{ engine sql username admin password EXAMPLEPASSWORD host lt跨账户 DB 主机 URLgt dbInstanceIdentifier lt跨账户 DB 实例标识符gt port 3306}

创建数据库机密控制台
在中央安全账户中打开 AWS Secrets Manager 控制台。选择 存储新机密。选择 其他数据库的凭据,并提供用户名和密码。在 加密密钥 中,按照 AWS KMS 文档中的说明进行创建,选择您希望 Secrets Manager 用于加密机密值的 AWS KMS 密钥。由于您需要从另一个 AWS 账户访问机密,确保您使用的是 AWS KMS 客户管理密钥 (CMK)。重要提醒: 请务必不要使用 aws/secretsmanager ,因为这是用于 Secrets Manager 的 AWS 管理密钥,您无法修改密钥策略。
AWS Secrets Manager 使您能够在多个 AWS 区域间复制机密,从而满足区域访问和低延迟要求。如果您为主机密开启了轮换功能,Secrets Manager 将在主区域轮换机密,并将新机密值传播到相关区域。复制的机密的轮换无需单独管理。
注意: 在 Secrets Manager 中复制机密时,您可以选择使用多区域密钥MRK或在复制机密的区域中使用独立 KMS 密钥。选择哪种方式取决于您的具体需求,例如操作偏好、合规性及管理便利性。
对于 数据库,从显示的支持数据库类型列表中选择数据库,并在服务器地址字段中提供主机 URL、数据库名称和端口号。选择 下一步。 对于 配置机密 ,提供机密名称例如 PostgresAppUser,并可选择添加描述和标签。有关跨账户获取机密所需的资源权限将在后文进行说明。可选在 复制机密 中,选择其他区域和各自区域的客户管理 KMS 密钥 复制此机密 以实现高可用性,然后选择 下一步。
下一屏将询问您配置自动轮换,但您现阶段可以跳过此步骤,因为您将在步骤 2 中创建轮换 Lambda 函数。选择 下一步,然后选择 存储 完成保存机密。注意: Secrets Manager 轮换使用 Lambda 函数来更新机密和数据库或服务。创建机密后,您必须单独创建轮换 Lambda 函数并将其附加到机密上以实现轮换。此详细过程将在后面的步骤中讨论。
步骤 2:在需要的地方部署轮换 Lambda 函数
对于需要启用自动轮换的机密,从无服务器应用程序列表中部署轮换 Lambda 函数。
一元机场登录入口部署轮换 Lambda 函数的步骤
在中央安全账户中,打开 AWS Lambda 控制台。在左侧导航菜单中,选择 应用程序,然后选择 创建应用程序。选择 无服务器应用程序,然后选择 公共应用程序 选项卡。确保勾选 显示创建自定义 IAM 角色或资源策略的应用程序。在 无服务器应用程序 的搜索框中搜索 SecretsManager,将显示可供轮换的可用功能。根据您的数据库引擎类型选择 Lambda 函数。例如,如果数据库引擎类型为 Postgres SQL,请选择列表中的 SecretsManagerRDSPostgreSQLRotationSingleUser。在下一个页面的 应用程序设置 中,提供以下设置所需的详细信息:functionName例如,PostgresDBUserRotationLambdaendpoint 对于 SecretsManagerRDSPostgreSQLRotationSingleUser 选项,在端点字段中输入 https//secretsmanageruseast1amazonawscom。 选择基于您创建轮换 Lambda 的区域的 Secrets Manager 服务端点。kmsKeyArn 用于加密机密的密钥。vpcSecurityGroupIds 提供用于轮换 Lambda 函数的安全组 ID。在与轮换 Lambda 附加的安全组的出站规则选项卡中,添加所需规则,以便 Lambda 函数可以与 Secrets Manager 服务端点和数据库进行通信。同时确保附加到数据库或服务的安全组允许来自 Lambda 轮换函数的入站连接。vpcSubnetIds 提供 vpcSubnetIDs,从中央安全账户的 VPC 提供您计划要在其中部署轮换 Lambda 函数的子网。勾选 我确认该应用程序创建自定义 IAM 角色和资源策略,然后选择 部署。这将创建所需的 Lambda 函数以轮换您的机密。转到 Secrets Manager 控制台编辑机密,以启用自动轮换有关说明,请参见 Secrets Manager 文档。根据您组织的数据安全策略设置 轮换计划。
对于 Lambda 轮换函数,选择您在前一步中创建的新的 Lambda 函数 PostgresDbUserRotationLambda 将其与机密关联。步骤 3:为 Lambda 设置网络连接,以便访问 Secrets Manager 服务端点
为了为 Lambda 函数提供连接,您可以部署带有已启用私有 DNS 的 VPC 端点或 NAT 网关。
部署带有已启用私有 DNS 的 VPC 端点创建 AWS Secrets Manager 的 Amazon VPC 端点推荐
打开 Amazon VPC 控制台,选择 端点,然后选择 创建端点。在 服务类别 中选择 AWS 服务。在 服务名称 列表中,选择名为 comamazonawslt区域gtsecretsmanager 的 Secrets Manager 端点服务。对于 VPC,指定您希望创建端点的 VPC。该 VPC 应该是您为使用 AWS Lambda 函数进行集中机密轮换所选择的 VPC。创建 VPC 端点时,您需要指定端点可访问的私有 IP 地址范围。为此,您需要选择每个 可用区 (AZ) 的 子网。这将把 VPC 端点限制到特定于每个 AZ 的私有 IP 地址范围,并创建 AZ 特定的 VPC 端点。指定多个子网AZ 组合有助于提高容错能力,并使端点在 AZ 故障时仍可从不同的 AZ 中访问。选中 VPC 端点的 启用 DNS 名称 复选框。私有 DNS 解析标准的 Secrets Manager DNS 主机名 https//secretsmanagerlt区域gtamazonawscom 为与 VPC 端点特定 DNS 主机名关联的私有 IP 地址。将安全组与此端点关联有关说明,请参见 AWS PrivateLink 文档。安全组使您能够控制来自 VPC 中资源到端点的流量。附加的安全组应接受来自轮换 Lambda 函数的 443 端口的入站连接。创建 NAT 网关您也可以 为您的函数提供互联网访问。将函数放在私有子网中,并将出站流量路由到公共子网中的 NAT 网关。NAT 网关具有公共 IP 地址,并通过 VPC 的互联网网关连接到互联网。有关创建 NAT 网关的步骤,请参见此 AWS repost 文章。
步骤 4:部署 VPC 对等连接
接下来,在中央安全账户和持有数据库的成员账户之间部署 VPC 对等连接。
部署 VPC 对等连接的步骤
在中央安全账户中,打开 Amazon VPC 控制台。在左侧导航窗格中,选择 对等连接,然后选择 创建对等连接。配置以下信息,并在完成时选择 创建对等连接:名称 可以选择性地为 VPC 对等连接命名,例如 centralsecretmanagementvpcpeer。VPC ID请求方 选择您希望与之创建 VPC 对等连接的集中式秘密管理 AWS Lambda VPC。账户 选择 另一个账户。账户 ID 输入拥有数据库的 AWS 账户 ID。VPC ID接受方 输入与之创建 VPC 对等连接的数据库 VPC 的 ID。 从数据库账户中导航到 Amazon VPC 控制台。选择 对等连接,然后选择 接受请求。![接受来自数据库
发表评论