我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
如何选择正确的亚马逊云科技服务来管理机密和配置
在亚马逊云科技上构建应用程序时,您经常需要管理各种类型的配置数据,包括 API 令牌或数据库凭证等敏感值。从环境变量和 API 密钥到密码和端点,这些配置数据有助于确定应用程序行为。亚马逊云科技提供托管服务,可用于管理机密和配置数据的不同方面,此外还提供功能标志,无需部署完整代码即可调整应用程序行为。这篇文章探讨了 Amazon Secrets Manager、Amazon Systems Manager 参数存储和 Amazon AppConfig,并就选择正确的服务来帮助满足您的要求提供了指导。总而言之:亚马逊云科技建议您使用 Amazon Secrets Manager 存储密钥,使用参数存储来简单存储键值对,使用 Amazon AppConfig 来存储功能标志和高级动态配置。
相关亚马逊云科技服务概述
首先,让我们研究管理客户机密和配置的核心服务:密钥管理器、系统管理器参数存储和 Amazon AppConfig。
机密经理
Secrets Manager 专门通过管理机密的生命周期来保护对应用程序、服务和 IT 资源的访问。Secrets Manager 可帮助您轮换、管理和检索数据库、API 密钥、OAuth 令牌、JSON Web 令牌 (JWT) 和其他密钥的证书,从而保护亚马逊云科技云、本地或多云环境中的资源。Secrets Manager 专为数据库密码等敏感凭证而设计,可用于将密钥复制到其他亚马逊云科技区域,并根据可配置的时间表自动轮换密码。Secrets Manager 与 Amazon Key Management Service (Amazon KMS) 集成,使用您拥有和控制的 KMS 密钥对您创建的密钥进行加密——这种密钥加密无法禁用。此外,Secrets Manager 默认支持 PostQuantum TLS (PQ TLS) 进行 API 通信,部分客户端 SDK 还提供 PQ TLS 保护。
参数存储
参数存储是 Systems Manager 中的一项功能,可为配置数据和安全字符串提供安全的分层存储。您可以将各种类型的数据(从密码和数据库字符串到 AMI ID 和许可证代码)存储为参数值。这些值可以存储为纯文本或加密数据,并使用唯一名称进行引用。参数存储还使用 Amazon KMS 提供加密,但仅适用于特定的参数类型,即安全字符串参数。SecureString 参数必须使用 Amazon KMS 进行加密,但其他参数类型可以不加密存储。
亚马逊云科技应用程序配置
Amazon AppConfig 促进功能标志和应用程序配置数据的创建、管理和部署。它旨在通过受控部署支持不同规模的应用程序,并包括强大的验证机制和监控功能。Amazon AppConfig 可与各种部署目标无缝协作,包括 Amazon Elastic Compute Cloud(Amazon EC2)实例、Amazon Lambda 函数、容器、移动应用程序和物联网 (IoT) 设备。虽然 Amazon AppConfig 可以使用参数存储或使用 Secrets Manager 将配置数据存储在自己的数据存储库中,但它主要旨在使用功能标记和动态配置作为强大的 DevOps 工具,帮助您加快软件发布频率、提高应用程序弹性并更快地解决紧急问题。
服务相似之处
这些服务共享几种共同功能,同时保持不同的专业化。这三者都支持通过 Amazon CloudTrail 进行全面日志记录和通过 Amazon CloudWatch 进行监控,可通过精细的 Amazon Identity and Access Management (IAM) 权限和服务控制策略 (SCP) 进行管理,并且适用于商业区域。它们可以存储配置数据,尽管它们在不同的场景中都表现出色。参数存储应用于存储和管理不需要频繁轮换或跨区域复制的非敏感配置数据。Secrets Manager 专注于存储和自动轮换敏感凭证,提供诸如用于密钥缓存和检索的密钥管理代理等功能,以及与 Amazon Relational Database Service(Amazon RDS)等服务的集成以减少管理数据库管理员密码的运营开销。Amazon AppConfig 专门通过部署安全控制来管理应用程序配置和功能标志,可与参数存储或密钥管理器配合使用来存储和管理敏感证书。Amazon AppConfig 还使用缓存代理来提高性能和灵活性。
这三项服务均可用于使用 Amazon KMS 加密您的配置数据。您可以将 IAM 权限与 Amazon KMS 结合使用来控制对加密值的访问。参数存储和密钥管理器还支持密钥和参数的资源策略,除了 IAM 策略外,这些密钥和参数可用于授予跨账户访问权限并提供另一层访问控制。
这些服务还与 Amazon CloudFormation 共享集成,允许在模板中引用配置数据,而无需对敏感信息进行硬编码。这种集成有助于防止敏感数据泄露,从而帮助维护基础设施即代码实践的安全性。此外,所有三种服务都支持版本控制,尽管它们的实现方式有所不同:Secrets Manager 在轮换或值更改期间创建新版本,参数存储在编辑参数时维护版本,Amazon AppConfig 通过配置文件及其托管配置存储跟踪版本。
服务差异
这三种服务的主要区别在于它们的访问控制和权限管理方法。Secrets Manager 通过多层提供最全面的安全控制:基于资源的策略 (RBP)、资源控制策略 (RCP)、服务控制策略 (SCP)、基于属性的访问控制 (ABAC) 和 Amazon KMS 密钥策略。通过使用这种多层方法,组织可以实施深度防御策略,并可以满足严格的合规要求。此外,Secrets Manager 与 Amazon GuardDuty 的集成可以自动检测特定机密的威胁,包括针对潜在的恶意 API 调用或未经授权的访问尝试发出警报。Secrets Manager 与 Amazon Config 和 Amazon Security Hub 直接集成,可通过内置控制和持续评估功能,跨多个合规框架(例如 PCI DSS、HIPAA 和 SOC)进行自动合规监控和报告。这些全面的安全和合规性功能使得 Secrets Manager 特别适合需要详细审计跟踪和合规报告的受监管行业。
另一个关键区别是能够跨区域复制密钥和参数,并自动轮换密钥以缩小受损凭据的影响半径。Secrets Manager 的内置自动轮换功能(使用 Lambda 函数以可自定义的间隔处理轮换逻辑)使其与其他服务区别开来。该服务在轮换期间会保留以前的版本,以帮助提高系统的稳定性。虽然参数存储和 Amazon AppConfig 不提供原生轮换功能,但您可以引用存储在密钥管理器中的密钥作为配置源,从而实现密钥管理的互补方法。
这些服务的日志记录和可观察性能力也有所不同。虽然所有三项服务都与 CloudTrail 集成以进行 API 活动记录,但密钥管理器通过 CloudWatch Logs 为轮换事件和秘密访问模式提供了额外的详细日志记录。它还通过 CloudWatch 指标提供增强的监控,以跟踪机密版本、轮换状态和 API 使用模式,与参数存储和 Amazon AppConfig 相比,提供了更深入的运营见解。
在弹性方面,所有三种服务在一个区域内都具有高可用性,但只有 Secrets Manager 支持跨区域自动复制密钥值的功能。例如,如果您需要将数据库密码复制到多个区域以实现全局应用程序(或灾难恢复),则即使密钥的主版本自动轮换,也可以使用机密副本来保持密钥值彼此同步。参数存储缺乏多区域支持,仅通过基于资源的策略提供跨账户访问,仅限于单区域部署。这使得参数存储适用于区域配置管理。
Amazon AppConfig 通过全面的部署安全机制脱颖而出。它使用验证器来帮助确保配置更新在语法和语义上都正确,同时支持 JSON 架构和自定义 Lambda 函数验证器。该服务实施渐进部署策略以控制配置更改率,并包括由 CloudWatch(和其他 APM 提供商)警报触发的自动回滚功能。这些功能有助于限制配置更改的潜在影响,而参数存储和密钥管理器主要侧重于证书的安全存储和检索。
从定价的角度来看,这些服务具有与其能力一致的不同成本模型。参数商店免费提供标准参数,而高级参数的费用为每个参数每月 0.05 美元,外加 API 交互费用。高级参数支持更大的参数值(最多 8 KB)和参数策略,使用信封加密和适用于 SecureString 参数的亚马逊云科技加密软件开发工具包参数。Secrets Manager 对存储的每个密钥加上 API 调用收费 0.40 美元,这反映了其额外功能,例如密钥复制、自动轮换以及与 Amazon RDS 等亚马逊云科技服务的原生集成。其定价模型专为存储需要这些高级功能的敏感凭证而设计。它会在密钥的整个生命周期中维护其版本,尤其是在轮换期间,您可以根据需要检索特定版本。Amazon AppConfig 根据收到的配置(每个配置 0.0008 美元)和配置请求(每个请求 0.0000002 美元)定价,可以灵活地直接存储配置或从参数存储或密钥管理器引用配置。这种定价结构使 Parameter Store 成为非敏感配置数据的优秀选择,Secrets Manager 最适合需要轮换的敏感凭证,Amazon AppConfig 最适合使用部署控制来管理应用程序配置。
用例示例
让我们探讨一些常见用例,以说明每项服务何时被证明是最有价值的。
不需要高级功能的非敏感键/值对
对于不需要定期轮换、合规性监控或跨多个区域灵活性的应用程序中的非敏感键/值对,Parameter Store 可能是大多数客户的优秀选择。假设应用程序需要存储数据库的许可证密钥或 AMI ID。参数存储是一个不错的选择,因为该用例不需要轮换或多区域复制,数据结构简单,成本效益对于高容量检索至关重要。如果需要的参数可能仅供内部使用,但不包含用于认证的个人身份信息 (PII) 或证书,则支持使用 Amazon KMS 进行加密。使用 Parameter Store,您可以高效地管理大量参数,同时维护安全控制和组织结构。对于开发人员而言,从参数存储中检索值非常简单,如以下示例 (Python) 所示:
具有轮换和多区域要求的数据库凭证
对于需要轮换和多区域功能的数据库凭证,Secrets Manager 是明智的选择。它的自动轮换功能、多区域复制支持以及与 Amazon RDS 和其他亚马逊云科技服务的本地集成使其非常适合管理复杂的数据库凭证方案。同样,对于敏感项目,如用于身份验证的 API 密钥和其他类型的凭证,您应该选择 Secrets Manager。在下图中,您可以看到使用 Lambda 从 Secrets Manager 检索数据库凭证的示例应用程序架构,该证书将用于对 RDS 实例进行身份验证和查询信息。由于 RDS 实例具有跨区域只读副本,您可以将密钥复制到辅助区域 (us-west-2),从而允许 us-west-2 中的 Lambda 函数获取密钥值并查询只读副本,即使无法访问主区域 (us-east-1) 中的密钥也是如此。
Secrets Manager 还使开发人员可以直接在应用程序中检索密钥,如以下代码示例所示:
虽然您可以直接调用 Secrets Manager API 来检索密钥(如前面的示例所示),但 Secrets Manager 还有许多功能和集成可以进一步改善开发者体验,包括 Amazon Secrets Manager 代理、与 Amazon Elastic Container Service (Amazon ECS) 的原生集成,以及补充 Kubernetes 中 CSI 驱动程序实用程序的亚马逊云科技密钥和配置提供商 (ASCP)。
在 CI/CD 管道中安全生成密码
构建应用程序时,您可能需要在持续集成和交付 (CI/CD) 管道中安全地生成密码或其他类型的密钥,而不会将该密钥值暴露给开发人员或其他人类用户。Secrets Manager 无需人工干预即可生成和管理安全密码的能力,再加上其自动轮换功能和 CI/CD 工具集成,使其成为优秀解决方案。在以下示例中,Secrets Manager API getRandomPassword 用于安全地生成具有特定可配置长度的密码,而不会将该值暴露给人或写入应用程序日志或管道工件。
可配置的部署控制
Amazon AppConfig 在需要复杂的部署控制和配置更改验证的场景中大放异彩。其验证机制、渐进部署功能和自动回滚功能使其成为管理受控部署至关重要的功能标记和应用程序配置的理想之选。例如,你可能有一个配置文件,其中包含应该能够访问和使用你的应用程序的网络环境的许可名单;或者你可能有功能标志,允许使用人工智能进行推荐或与支持人员进行实时聊天。
这些示例不一定是敏感值,需要强大的访问控制、加密和自动轮换来减少凭据丢失的影响半径。这意味着 Secrets Manager 并不是存储这些参数的最具成本效益的选择:此用例不需要自动旋转等功能提供的额外价值。此外,Amazon AppConfig 旨在帮助您验证配置更改并以受控方式部署它们。有关更具体的示例,请参阅以下配置文件,其中概述了示例应用程序的网络许可清单和 AI 配置数据。
结论
选择适当的服务取决于您的特定要求。在管理基本配置数据、安全字符串或大量不需要轮换或多区域复制的密钥时,尤其是在成本优化很重要的情况下,请选择参数存储。在处理需要轮换、跨账户或多区域弹性的敏感凭证时,选择 Secrets Manager。如果需要复杂的部署控制和配置更改验证,请选择 Amazon AppConfig;请记住,您可以使用参数存储或密钥管理器来存储实际配置数据,而不是 Amazon AppConfig 提供的默认配置数据存储库,也可以作为其中的补充。
这些服务并不相互排斥;它们可以作为全面配置管理策略的一部分协同工作。许多组织成功地将用于常规配置数据的参数存储、用于敏感证书的 Secrets Manager 和用于功能标记和应用程序配置部署的 Amazon AppConfig 结合起来。通过使用这种集成方法,您可以利用每项服务的优势,同时保持安全性和运营效率。
要开始使用,请访问亚马逊云科技管理控制台。本文中讨论的每项服务都提供了详细的文档和入门指南,以帮助针对您的特定用例实施正确的解决方案。
入门指南
- Amazon Secrets Manager
- Amazon Systems Manager
- Amazon AppConfig
如果你对这篇文章有反馈,请在下面的评论部分提交评论。如果您对这篇文章有疑问,请联系 Amazon Support。
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。