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

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

Amazon Systems Manager Parameter Store

Parameter Store,一项功能 Amazon Systems Manager,为配置数据管理和密钥管理提供安全的分层存储。您可以将密码、数据库字符串、Amazon Machine Image (AMI) ID 和许可证代码等数据存储为参数值。可以将值存储为纯文本或加密数据。您可以使用创建 Systems Manager 参数时指定的唯一名称,在脚本、命令、SSM 文档以及配置和自动化工作流中引用该参数。要开始使用 Parameter Store,请打开 Systems Manager 控制台。在导航窗格中,请选择 Parameter Store

Parameter Store 还与 Secrets Manager 进行了集成。您可以在使用其他已支持引用 Parameter Store 参数的 Amazon Web Services 时检索 Secrets Manager 密钥。有关更多信息,请参阅通过 Parameter Store 参数引用 Amazon Secrets Manager 密钥

注意

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

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

Parameter Store 具备下列优势:

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

  • 通过将数据与代码分离来改善安保状况。

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

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

  • 可靠地存储参数,因为 Parameter Store 托管在 Amazon Web Services 区域的多个可用区中。

谁应该使用 Parameter Store?

  • 任何想要以集中方式管理配置数据的 Amazon 客户。

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

  • 希望在密钥和密码发生更改或未更改时接收通知的管理员。

Parameter Store 具有哪些功能?

  • 更改通知

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

  • 组织参数

    您可以单独标记参数,以便根据为其分配的标签识别一个或多个参数。例如,可以为特定环境或部门标记参数。有关更多信息,请参阅 标记 Systems Manager 参数

  • 标签版本

    您可以通过创建标签将别名与参数版本关联。标签可帮助您在存在多个版本时记住参数版本的用途。

  • 数据验证

    您可以创建指向 Amazon Elastic Compute Cloud (Amazon EC2) 实例的参数,Parameter Store 会验证这些参数,以确保其引用预期的资源类型,此类资源存在,并且客户有权使用此类资源。例如,您可以使用 Amazon Machine Image (AMI) ID 创建一个参数,作为 aws:ec2:image 数据类型的值。Parameter Store 会执行异步验证操作,以确保参数值满足 AMI ID 的格式设置要求,并且指定的 AMI 在您的 Amazon Web Services 账户 中可用。

  • 引用密钥

    Parameter Store与集成, Amazon Secrets Manager 因此在使用其他已经支持引用Parameter Store参数的密码时 Amazon Web Services ,您可以检索 Secrets Manager 的密钥。

  • 与其他账户共享参数

    您可以选择将配置数据集中在一个单一中, Amazon Web Services 账户 并与其他需要访问参数的账户共享参数。

  • 可从其他人访问 Amazon Web Services

    您可以将 Parameter Store 参数与其他 Systems Manager 功能和 Amazon Web Services 结合使用,以从集中存储中检索密钥和配置数据。参数与 Systems Manager 的功能配合使用Run Command,例如自动化和State Manager的功能 Amazon Systems Manager。您还可以在许多其他参数中引用参数 Amazon Web Services,包括:

    • Amazon Elastic Compute Cloud (Amazon EC2)

    • Amazon Elastic Container Service (Amazon ECS)

    • Amazon Secrets Manager

    • Amazon Lambda

    • Amazon CloudFormation

    • Amazon CodeBuild

    • Amazon CodePipeline

    • Amazon CodeDeploy

  • 与其他人集成 Amazon Web Services

    配置与以下内容的集成, Amazon Web Services 用于加密、通知、监控和审计:

什么是参数?

Parameter Store 参数是保存在 Parameter Store 中的任何数据片段,例如文本数据块、名称列表、密码、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

默认情况下,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 参数 (Amazon CLI)

建议您在以下情形中使用 SecureString 参数:

  • 您希望使用数据/参数, Amazon Web Services 而不必在命令、函数、代理日志或日志中将值以纯文本形式公开。 CloudTrail

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

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

  • 您希望对您的敏感数据进行加密,并想用自己的加密密钥管理访问。

重要

只会加密 SecureString 参数的。不会加密参数名称、描述和其他属性。

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

您也可以将参数与其他SecureString参数一起使用 Amazon Web Services。在以下示例中,Lambda 函数使用 API 检索SecureString参数。GetParameters

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
Amazon KMS 加密和定价

如果您在创建参数时选择SecureString参数类型,Systems Manager Amazon KMS 将使用对参数值进行加密。

重要

Parameter Store 仅支持对称加密 KMS 密钥。不能使用非对称加密 KMS 密钥来加密您的参数。要获取确定 KMS 密钥是对称还是非对称密钥的帮助,请参阅《Amazon Key Management Service 开发人员指南》中的识别对称 KMS 密钥和非对称 KMS 密钥

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

有关客户托管密钥 Amazon 托管式密钥 的更多信息,请参阅《Amazon Key Management Service 开发者指南》中的Amazon Key Management Service 概念。有关Parameter Store和 Amazon KMS 加密的更多信息,请参阅Amazon Systems ManagerParameter Store使用方式 Amazon KMS

注意

要查看 Amazon 托管式密钥,请使用 Amazon KMS DescribeKey操作。此 Amazon Command Line Interface (Amazon CLI) 示例DescribeKey用于查看和 Amazon 托管式密钥。

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