什么是 Amazon Secrets Manager? - Amazon Secrets Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

什么是 Amazon Secrets Manager?

过去,在创建自定义应用程序以从数据库中检索信息时,您通常会嵌入凭证(密钥)以直接在应用程序中访问数据库。在需要轮换凭证时,除了创建新的凭证以外,您还必须执行一些其他操作。您必须花一些时间更新应用程序以使用新凭证。然后,您分发更新的应用程序。如果您有多个应用程序具有共享凭证,而您错过更新其中一个,则该应用程序会失败。由于存在这种风险,很多客户选择不定期轮换凭证,这实际上带来了新的风险。

Secrets Manager 允许您将代码中的硬编码凭证(包括密码)替换为对 Secrets Manager 的 API 调用,以便以编程方式检索密钥。这有助于确保密钥不会被检查代码的人员泄露,因为密钥不再位于代码中。此外,您还可以配置 Secrets Manager 以根据指定的计划自动轮换密钥。这样,您就可以将长期密钥替换为短期密钥,从而显著降低泄露风险。

有关充分利用 Secrets Manager 所需了解的术语和概念的列表,请参阅 开始使用 Amazon Secrets Manager

基本 Amazon Secrets Manager 场景

下图阐明了最基本的场景。该图显示您可以在 Secrets Manager 中存储数据库的凭证,然后在应用程序中使用这些凭证以访问数据库。

  1. 数据库管理员在 Personnel 数据库上创建一组凭证,以供名为 MyCustomApp 的应用程序使用。管理员还使用应用程序访问 Personnel 数据库时所需的权限来配置这些凭证。

  2. 数据库管理员将这些凭证作为名为 MyCustomAppCreds 的密钥存储在 Secrets Manager 中。然后,Secrets Manager 对凭证进行加密并将凭证作为受保护的密钥文本存储在密钥中。

  3. 在 MyCustomApp 访问数据库时,该应用程序在 Secrets Manager 中查询名为 MyCustomAppCreds 的密钥。

  4. Secrets Manager 检索密钥,解密受保护密钥文本,然后通过受保护通道(具有 TLS 的 HTTPS)将密钥返回给客户端应用程序。

  5. 客户端应用程序解析响应中的凭证、连接字符串以及所需的任何其他信息,然后使用这些信息访问数据库服务器。

注意

Secrets Manager 支持很多类型的密钥。不过, Secrets Manager 可以在本地支持 Amazon 数据库轮换数据库的凭证,而无需进行任何其他编程。不过,要为其他数据库或服务轮换密钥,需要创建自定义 Lambda 函数以定义 Secrets Manager 如何与数据库或服务进行交互。您需要具有一些编程技巧才能创建该函数。有关更多信息,请参阅轮换 Amazon Secrets Manager 密钥

Amazon Secrets Manager 的功能

在运行时以编程的方式检索加密的密钥值

Secrets Manager 从应用程序源代码中删除硬编码的凭证,且不在应用程序中存储凭证,从而帮助您改善安保状况。如果在应用程序中存储凭证或与其存储在一起,检查您的应用程序或组件的任何人都可能会泄露这些凭证。由于您必须更新应用程序并将更改部署到每个客户端,然后才能弃用旧凭证,因此,该过程使凭证轮换变得非常困难。

Secrets Manager 允许您将存储的凭证替换为对 Secrets Manager Web 服务的运行时调用,因此您可以在需要时动态检索凭证。

在大多数情况下,您的客户端需要访问最新版本的加密密钥值。在查询加密的密钥值时,您可以选择仅提供密钥名称或 Amazon Resource Name (ARN),而根本不指定任何版本信息。如果这样做,Secrets Manager 会自动返回最新版本的密钥值。

不过,可能会同时存在其他版本。大多数系统支持比简单密码更复杂的密钥,例如,一套包含连接详细信息、用户 ID 和密码的完整凭证。Secrets Manager 使您可以同时拥有多套此类凭证。Secrets Manager 在不同的版本中都存储了一套凭证。在密钥轮换过程中,Secrets Manager 跟踪旧凭证以及要开始使用的新凭证,直到轮换完成为止。

存储不同类型的密钥

借助 Secrets Manager,您可以存储密钥的加密密钥数据部分的文本。这通常包括数据库或服务的连接详细信息。这些详细信息可以包括服务器名称、IP 地址和端口号,以及用于登录服务的用户名和密码。有关密钥的详细信息,请参阅最大值和最小值。受保护的文本不包含:

  • 密钥名称和描述

  • 轮换或过期设置

  • 与密钥关联的 KMS 密钥 ARN

  • 任何附加的 Amazon 标签

对密钥数据进行加密

通过使用 Amazon Key Management Service (Amazon KMS),Secrets Manager 可以加密密钥的受保护文本。许多 Amazon 服务都将 Amazon KMS 用于密钥存储和加密。Amazon KMS 确保安全地对密钥静态加密。Secrets Manager 将每个密钥与 KMS 密钥关联。它可以是 Amazon 托管式密钥 为帐户的 Secrets Manager (aws/secretsmanager),或者在 Amazon KMS 中创建客户管理的密钥。

每当 Secrets Manager 加密受保护的密钥数据的新版本时,Secrets Manager 密钥会请求 Amazon KMS 从 KMS 密钥生成新的数据密钥。Secrets Manager 使用此数据密钥进行信封加密。Secrets Manager 将加密的数据密钥与受保护的密钥数据一起存储。每当密钥需要解密时,Secrets Manager 都会要求 Amazon KMS 解密数据密钥,然后 Secrets Manager 使用该数据密钥解密受保护的密钥数据。Secrets Manager 从不以未加密的形式存储数据密钥,总是在使用后立即处理数据密钥。

此外,默认情况下,Secrets Manager 仅接受来自使用开放标准传输层安全性 (TLS)完美前向保密的主机的请求。Secrets Manager 确保在 Amazon 和计算机之间传输时对密钥进行加密。

自动轮换您的密钥

您可以将 Secrets Manager 配置为自动轮换密钥,而无需进行用户干预和按照指定的计划进行轮换。

您可以使用 Amazon Lambda 函数定义和实施轮换。该函数定义 Secrets Manager 如何执行以下任务:

  • 创建密钥的新版本。

  • 将密钥存储在 Secrets Manager 中。

  • 将受保护服务配置为使用新版本。

  • 验证新版本。

  • 将新版本标记为生产就绪。

暂存标签可以帮助您跟踪不同版本的密钥。每个版本可以附加多个暂存标注,但每个暂存标注只能附加到一个版本。例如,AWSCURRENT 使用 Secrets Manager 标记当前处于活动状态的正在使用的密钥版本。您应该将应用程序配置为始终查询密钥的最新版本。在轮换过程创建密钥的新版本时,Secrets Manager 自动将暂存标注 AWSPENDING 添加到新版本中,直到测试和验证完成为止。仅在此后,Secrets Manager 才会将 AWSCURRENT 暂存标注添加到该新版本中。您的应用程序在下次查询标记有 AWSCURRENT 的版本时,会立即开始使用新密钥。

支持完全配置且直接可用的轮换的数据库

在选择启用轮换时,Secrets Manager 使用 Amazon 编写和测试的 Lambda 轮换函数模板支持Amazon Relational Database Service (Amazon RDS)数据库,并且可以完全配置轮换过程:

  • Amazon RDS 上的 Amazon Aurora

  • Amazon RDS 上的 MySQL

  • Amazon RDS 上的 PostgreSQL

  • Amazon RDS 上的 Oracle

  • Amazon RDS 上的 MariaDB

  • Amazon RDS 上的 Microsoft SQL Server

支持完全配置且直接可用的轮换的其他服务

您还可以选择在以下服务(使用 Amazon 编写和测试的 Lambda 轮换函数模板提供完全支持)上启用轮换,并且可以完全配置轮换过程:

  • Amazon DocumentDB

  • Amazon Redshift

您也可以存储几乎任何其他类型的数据库或服务的密钥。不过,要自动轮换密钥,您需要创建和配置自定义 Lambda 轮换函数。有关为数据库或服务编写自定义 Lambda 函数的更多信息,请参阅 轮换的工作原理

控制对密钥的访问

您可以将 Amazon Identity and Access Management (IAM) 权限策略附加到用户、组和角色,以授予或拒绝访问特定密钥的权限,以及限制对这些密钥进行管理。例如,您可能将一个策略附加到其成员需要能够完全管理和配置您的密钥的组。另一个附加到应用程序所使用角色的策略可能仅授予对应用程序运行所需的一个密钥的读取权限。

或者,您也可以将基于资源的策略直接附加到密钥,以便授予权限以指定可以读取或修改密钥和版本的用户。与自动应用于用户、组或角色的基于身份的策略不同,附加到密钥的基于资源的策略使用 Principal 元素指定策略的目标。Principal 元素可以包含同一账户中的用户和角色作为密钥,或者包含其他账户中的委托人。

符合 Amazon Secrets Manager 的标准

Amazon Secrets Manager 通过了以下标准的审核,可用于需要获取合规性认证的解决方案中。

Amazon 已扩展了其健康保险可携性与责任法 (HIPAA) 合规性计划,将 Amazon Secrets Manager 包括作为符合 HIPAA 要求的服务。如果您与 Amazon 签订了业务伙伴协议 (BAA),则可使用 Secrets Manager 帮助构建符合 HIPAA 要求的应用程序。Amazon 提供了一份以 HIPAA 为主题的白皮书,供想要了解如何利用 Amazon 处理和存储健康信息详情的客户查阅。有关更多信息,请参阅 HIPAA 合规性

Amazon Secrets Manager 已通过支付卡行业 (PCI) 数据安全标准 (DSS) 版本 3.2 一级服务提供商的合规性认证。对于使用 Amazon 产品和服务来存储、处理或传输持卡人数据的客户,在管理自己的 PCI DSS 合规性认证时,可以使用 Amazon Secrets Manager。有关 PCI DSS 的更多信息,包括如何请求 Amazon PCI Compliance Package 的副本,请参阅 PCI DSS 第 1 级

Amazon Secrets Manager 已成功完成 ISO/IEC 27001、ISO/IEC 27017、ISO/IEC 27018 和 ISO 9001 的合规性认证。有关更多信息,请参阅 ISO 27001ISO 27017ISO 27018ISO 9001

系统和组织控制 (SOC) 报告是独立的第三方检查报告,用于说明 Secrets Manager 如何实现关键合规性控制和目标。这些报告的目的是帮助您和您的审计员理解旨在支持运营和合规性的 Amazon 控制措施。有关更多信息,请参阅 SOC 合规性

联邦风险与授权管理计划 (FedRAMP) 是一项政府层面的计划,它提供一种标准化方法来对云产品和云服务进行安全性评估、授权以及持续监控。FedRAMP 计划还为东部/西部和 GovCloud 的服务和区域提供临时授权,以便使用政府或监管数据。有关更多信息,请参阅 FedRAMP 合规性

国防部(DoD)云计算安全需求指南(SRG)为云服务提供商(CSP)提供了一个标准化的评估和授权流程,获得国防部临时授权,让他们能够为国防部客户服务。有关更多信息,请参阅 DoD SRG 资源

通过信息安全注册评估员计划(IRAP),澳大利亚政府客户能够验证适当的控制措施是否到位,并确定适当的责任模式,满足澳大利亚网络安全中心编制的《澳大利亚政府信息安全手册》(ISM)的要求(ACSC)。有关更多信息,请参阅 IRAP 资源

Amazon Web Services (Amazon) 通过了外包服务提供商的审计报告 (OSPAR) 认证。Amazon 与新加坡银行协会 (ABS) 关于外包服务供应商控制目标和程序的准则 (ABS 准则) 的一致性向客户展示 Amazon 致力于满足新加坡金融服务行业对云服务提供商的高期望。有关更多信息,请参阅 OSPAR 资源

Amazon Secrets Manager 定价

在使用 Secrets Manager 时,仅按实际使用量收费,无最低费用或设置费用。您已标记为删除的密码不收取任何费用。有关当前完整定价列表,请参阅 Amazon Secrets Manager 定价

您可以使用 Secrets Manager 创建的 Amazon 托管式密钥 (aws/secretsmanager) 免费加密您的密钥。如果您创建自己的 KMS 密钥来加密您的机密,Amazon 将按当前 Amazon KMS 费率向您收费。有关更多信息,请参阅 Amazon Key Management Service 定价

当您开启自动轮换时,Secrets Manager 会使用 Amazon Lambda 函数来轮换密钥,并且按当前 Lambda 费率向您收取轮换函数的费用。有关更多信息,请参阅 Amazon Lambda 定价

如果在您的账户上启用了 Amazon CloudTrail,则可以获取 Secrets Manager 进行的 API 调用的日志。Secrets Manager 将所有事件记录为管理事件。Amazon CloudTrail 免费存储所有管理事件的第一个副本。但是,如果启用通知,可能会对 Amazon S3 的日志存储和 Amazon SNS 产生费用。此外,如果您设置了其他跟踪,管理事件的其他副本可能会产生费用。有关更多信息,请参阅 Amazon CloudTrail 定价

对 Amazon Secrets Manager 的支持和反馈

我们欢迎您提供反馈。您可以将评论发送到 awssecretsmanager-feedback@amazon.com。您也可以在我们的 Amazon Secrets Manager 支持论坛上发布反馈和问题。有关 Amazon 支持论坛的更多信息,请参阅论坛帮助

要为 Amazon Secrets Manager 控制台或命令行工具请求新功能,我们建议您通过电子邮件将其提交到 awssecretsmanager-feedback@amazon.com

要针对我们的文档提供反馈,您可以使用每个 web 页面底部的反馈链接。请具体说明您遇到的问题,以及文档如何无法为您提供帮助。告诉我们您看到的内容以及这与您的预期有何不同。这将帮助我们了解需要做什么来改进文档。

以下是一些可供您使用的其他资源:

  • Amazon 培训目录 Amazon 基于角色的专业课程和自主进度动手实验室,可帮助您增强 技能并获得实践经验。

  • Amazon 开发人员工具——提供了文档、代码示例、发行说明和有助于您利用 Amazon 构建创新应用程序的其他信息的工具和资源。

  • Amazon Web Services Support 中心 – 用于创建和管理 Amazon Web Services Support 案例的中心。提供指向其他有用资源的链接,如论坛、技术常见问题、服务运行状况以及 Amazon Trusted Advisor。

  • Amazon Web Services Support – 一对一的快速响应支持通道,可帮助您在云中构建和运行应用程序。

  • 联系我们 - 用于查询 Amazon 账单、账户、事件和其他问题的中央联系点。

  • Amazon网站条款 – 有关我们的版权和商标、您的账户、您的许可证、网站访问以及其他主题的详细信息。