了解参数类型
参数是存储在 Parameter Store 中的任何数据片段,例如文本块、名称列表、AMI ID、许可证密钥等。可以在脚本、命令和 SSM 文档中集中安全地引用此数据。
在引用参数时,请使用以下惯例指定参数名称。
{{ssm:}}parameter-name
注意
参数不能被引用或嵌套在其他参数的值中。参数值中不能包含 {{}} 或 {{ssm:。parameter-name}}
Parameter Store 支持三种类型的参数:String、StringList 和 SecureString。
有一个例外,当创建或更新参数时,您将以明文形式输入参数值,并且 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 数据类型创建这些参数。
建议您在以下情形中使用 SecureString 参数:
-
您想要跨 AWS 服务使用数据/参数,但又不想以明文形式在命令、函数、代理日志或 CloudTrail 日志中公开这些值。
-
您想要控制可以访问敏感数据的人。
-
您希望在有人访问敏感数据时进行审核 (CloudTrail)。
-
您希望对您的敏感数据进行加密,并想用自己的加密密钥管理访问。
您可以将 SecureString 参数类型用于要加密的文本数据,例如不需要轮换的轻量级密钥、机密配置数据或需要保护的任何其他类型的数据。SecureString 数据会使用 AWS KMS 密钥进行加密和解密。您可以使用 AWS 提供的默认 KMS 密钥,也可以创建和使用您自己的 AWS KMS key。(如果您想要限制用户对 SecureString 参数的访问,可以使用自己的 AWS KMS key。有关更多信息,请参阅 有关使用 AWS 默认密钥和客户托管密钥的 IAM 权限。)
重要
请注意以下重要信息。
如果您管理需要自动轮换、跨账户访问或精细审核日志记录的凭证,则建议使用 AWS Secrets Manager。Secrets Manager 专为管理数据库凭证、API 密钥和受支持的第三方软件提供的密钥等密钥而设计。有关更多信息,请参阅《AWS Secrets Manager 用户指南》中的什么是 AWS Secrets Manager?。
请勿将敏感数据存储在
String或StringList的参数中。对于必须保持加密状态的所有敏感数据,请仅使用SecureString参数类型。只会加密
SecureString参数的值。不会加密参数名称、描述和其他属性。
您还可以将 SecureString 参数与其他 AWS 服务结合使用。在以下示例中,Lambda 函数使用 GetParameters API 检索 SecureString 参数。
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
AWS KMS 加密和定价
如果您在创建参数时选择了 SecureString 参数类型,Systems Manager 将使用 AWS KMS 加密参数值。
重要
Parameter Store 仅支持对称加密 KMS 密钥。不能使用非对称加密 KMS 密钥来加密您的参数。要获取确定 KMS 密钥是对称还是非对称密钥的帮助,请参阅 AWS Key Management Service 开发人员指南中的识别对称 KMS 密钥和非对称 KMS 密钥。
创建 SecureString 参数不收取 Parameter Store 任何费用,但使用 AWS KMS 加密的费用确实适用。有关更多信息,请参阅 AWS Key Management Service 定价
有关 AWS 托管式密钥和客户管理型密钥的更多信息,请参阅《AWS Key Management Service 开发人员指南》中的 AWS Key Management Service 概念。有关 Parameter Store 和 AWS KMS 加密的更多信息,请参阅 AWS Systems ManagerParameter Store 如何使用 AWS KMS。
注意
要查看 AWS 托管式密钥,请使用 AWS KMS DescribeKey 操作。此 AWS Command Line Interface(AWS CLI)示例使用 DescribeKey 查看 AWS 托管式密钥。
aws kms describe-key --key-id alias/aws/ssm