AWS Systems Manager Parameter Store - AWS Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

AWS Systems Manager Parameter Store

AWS Systems Manager Parameter Store 可提供安全的分层存储,用于配置数据管理和密钥管理。您可以将密码、数据库字符串、Amazon 系统映像 (AMI) IDs和许可证代码等数据存储为参数值。可以将值存储为纯文本或加密数据。可以使用创建 Systems Manager 参数时指定的唯一名称,在脚本、命令、SSM 文档以及配置和自动化工作流中引用该参数。

注意

要实现密码轮换生命周期,请使用 AWS Secrets Manager。通过 Secrets Manager,您可以在数据库凭证、API 密钥和其他密钥的整个生命周期内轻松地对其进行轮换、管理和检索。有关更多信息,请参阅 AWS Secrets Manager 用户指南中的什么是 AWS Secrets Manager?

我的组织如何从 Parameter Store 获益?

Parameter Store 具备下列优势:

  • 您可以使用安全的、可扩展的托管密钥管理服务,而无需管理服务器。

  • 通过将数据与代码分离来提高安全性。

  • 分层存储配置数据和加密的字符串,而且可跟踪版本。

  • 实现以细粒度控制和审核访问。

谁应该使用 Parameter Store?

  • 任何希望以集中方式管理配置数据的 AWS 客户。

  • 希望轻松存储不同的登录和引用流的软件开发人员。

  • 希望在对密钥和密码进行更改或未进行更改时收到通知的管理员。

具有哪些功能?Parameter Store?

  • 更改通知

    您可以为参数和参数策略配置更改通知并触发自动操作。有关更多信息,请参阅基于 Parameter Store 事件设置通知或触发操作.

  • 组织和控制访问

    您可以单独标记参数,以帮助您根据分配给一个或多个参数的标签快速识别这些参数。例如,您可以标记特定环境、部门、用户、组或时间段的参数。此外,您还可以通过创建一个指定用户或组可访问的标签的 IAM 策略来限制对参数的访问。有关更多信息,请参阅标记 Systems Manager 参数.

  • 标签版本

    您可以通过创建标签来关联参数版本的别名。当有多个版本时,标签可以帮助您记住参数版本的用途。

  • 数据验证

    您可以创建指向 Amazon EC2 实例的参数Parameter Store, 将验证这些参数,以确保其引用预期的资源类型、资源存在以及客户有权使用该资源。例如,您可以创建一个具有 Amazon 系统映像 (AMI) ID 的 参数作为具有 ec2 数据类型的值,并Parameter Store执行异步验证操作以确保该参数值满足 AMI ID 的格式要求,并且指定的 AMI 在AWS您的账户中可用。

  • 引用密钥

    Parameter Store 与 集成AWS Secrets Manager,以便您可以在使用其他已支持对 AWS 参数的引用Parameter Store的服务时检索 Secrets Manager 密钥。

  • 可从其他 AWS 服务访问

    您可以将 Parameter Store 参数与其他 Systems Manager 功能AWS和服务结合使用,以从中央存储检索密钥和配置数据。参数与 Systems Manager 功能(如 Run Command、状态管理器 和 Automation)结合使用。您还可以在许多其他 AWS 服务中引用参数,其中包括:

    • Amazon Elastic Compute Cloud (Amazon EC2)

    • Amazon Elastic Container Service (Amazon ECS)

    • AWS Secrets Manager

    • AWS Lambda

    • AWS CloudFormation

    • AWS CodeBuild

    • AWS CodePipeline

    • AWS CodeDeploy

  • 将 与其他 AWS 服务集成

    配置与以下 AWS 服务的集成以实现加密、通知、监控和审计:

什么是参数?

Parameter Store 参数是保存在 Parameter Store 中的任何数据片段,例如文本块、名称列表、密码、Amazon 系统映像 (AMI) ID、许可密钥等。可以在脚本、命令和 SSM 文档中集中安全地引用此数据。

在引用参数时,使用以下惯例指定参数名称。

{{ssm:parameter-name}}

注意

参数不能被引用或嵌套在其他参数的值中。不能在参数值中包含 {{}}{{ssm:parameter-name}}

Parameter Store 支持三种类型的参数:StringStringListSecureString.

有一个例外,在创建或更新参数时,以明文形式输入参数值, 不对输入的文本Parameter Store执行 验证。但是,对于 String 参数,您可以将数据类型指定为 aws:ec2:image,并且 Parameter Store 会验证您输入的值是否为 Amazon EC2 AMI 的正确格式;例如:ami-12345abcdeEXAMPLE.

字符串

默认情况下,String 参数由您输入的任何文本块组成。例如:

  • abc123

  • Example Corp

  • <img src="images/bannerImage1.png"/>

StringList

StringList 参数包含以逗号分隔的值列表,如下面的示例所示。

Monday,Wednesday,Friday

CSV,TSV,CLF,ELF,JSON

SecureString

SecureString 参数是需要以安全的方式存储和引用的任何敏感数据。如果您有不希望用户更改或以明文形式引用的数据(如密码或许可证密钥),请使用 SecureString 数据类型创建这些参数。

重要

请勿将敏感数据存储在 StringStringList 参数中。对于必须保持加密状态的所有敏感数据,请仅使用 SecureString 参数类型。

有关更多信息,请参阅创建SecureString参数 (AWS CLI).

我们建议在以下场景中使用SecureString参数:

  • 您希望跨 AWS 服务使用数据/参数,而无需在命令、函数、代理日志或AWS CloudTrail日志中以明文形式公开这些值。

  • 您想要控制可以访问敏感数据的人。

  • 您希望在有人访问敏感数据时进行审核 (AWS CloudTrail).

  • 您希望加密敏感数据,并希望自带加密密钥来管理访问。

重要

仅对 SecureString 参数的 进行加密。参数的名称、描述和其他属性不会被加密。

SecureString 参数类型可用于要加密的文本数据,例如密码、应用程序密钥、机密配置数据或需要保护的任何其他类型数据。SecureString 数据使用 AWS Key Management Service (KMS) 密钥进行加密和解密。您可以使用 提供的默认 KMS 密钥AWS,也可以创建并使用您自己的客户主密钥 (CMK)。(如果您需要限制用户访问 SecureString 参数,请使用您自己的 CMK。 有关更多信息,请参阅有关使用 AWS 默认密钥和客户托管密钥的 IAM 权限。)

您也可以将 SecureString 参数用于其他 AWS 服务。在以下示例中, AWS Lambda 函数使用 SecureStringGetParameters API 检索参数。

from __future__ import print_function import json import boto3 ssm = boto3.client('ssm', 'us-east-2') def get_parameters(): response = ssm.get_parameters( Names=['LambdaSecureString'],WithDecryption=True ) for parameter in response['Parameters']: return parameter['Value'] def lambda_handler(event, context): value = get_parameters() print("value1 = " + value) return value # Echo back the first key value
注意

Parameter Store 也与 集成AWS Secrets Manager。您可以在使用已支持对 Secrets Manager 参数的引用的其他 AWS 服务时检索Parameter Store密钥。有关更多信息,请参阅本指南中的 通过 AWS Secrets Manager 参数引用 Parameter Store 密钥

AWS KMS 加密和定价

如果您在创建SecureString参数时选择 参数类型, Systems Manager 将使用 AWS Key Management Service (KMS) 加密参数值。

创建 Parameter Store 参数不收取 SecureString 任何费用,但使用 AWS Key Management Service 加密的费用确实适用。有关信息,请参阅 AWS Key Management Service 定价.

有关AWS托管 和客户托管 的更多信息CMKs,请参阅 中的 AWS Key Management Service AWS Key Management Service Developer Guide 概念。有关 Parameter Store 和 KMS 加密的更多信息,请参阅 AWS Systems Manager Parameter Store 如何使用 AWS KMS.

注意

要查看 AWS 托管 CMK,请使用 AWS KMS DescribeKey 操作。此AWS CLI示例使用 查看 DescribeKey 和 AWS托管 CMK。

aws kms describe-key --key-id alias/aws/ssm

相关主题

有关如何创建和使用 SecureString 参数的示例,请参阅创建 SecureString 参数并将实例加入域 (PowerShell). 有关将Systems Manager参数用于其他 AWS 服务的更多信息,请参阅以下博客文章: