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

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访问

    您可以将 Parameter Store 参数与其他 Systems Manager 功能和 Amazon Web Services结合使用,以从集中存储中检索密钥和配置数据。参数可与 Amazon Systems Manager Systems Manager 功能(如 Run Command、自动化和 State 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 参数由您输入的任何文本数据块组成。例如:

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

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

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 Developer Guide 中的识别对称 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