在 Parameter Store 中分配参数策略
参数策略让您可以将特定条件分配到参数(如到期日期或存活时间),通过这种方式来帮助您管理一组不断增加的参数。参数策略在强制您更新或删除存储在 Parameter Store(AWS Systems Manager 中的一项工具)中的配置数据时尤其实用。Parameter Store 提供以下策略类型:Expiration、ExpirationNotification 和 NoChangeNotification。
如果您管理需要自动轮换、跨账户访问或精细审核日志记录的凭证,则建议使用 AWS Secrets Manager。Secrets Manager 专为管理数据库凭证、API 密钥和受支持的第三方软件提供的密钥等密钥而设计。有关更多信息,请参阅 AWS Secrets Manager 用户指南中的什么是AWS Secrets Manager?。
Parameter Store 通过使用异步的定期扫描强制实施参数策略。创建策略后,您无需执行其他操作来强制实施策略。Parameter Store 会根据您指定的条件独立执行策略定义的操作。
注意
参数策略可用于使用高级参数层的参数。有关更多信息,请参阅 在 Parameter Store 中选择参数层级。
参数策略是一个 JSON 数组,如下表所示。您可以在创建新的高级参数时分配策略,也可以通过更新参数应用策略。Parameter Store 支持以下类型的参数策略。
| 策略 | 说明 | 示例 |
|---|---|---|
|
过期 |
此策略将删除参数。您可以使用 注意此示例使用 |
|
|
ExpirationNotification |
该策略在 Amazon EventBridge (EventBridge) 中启动一个事件,以通知您到期信息。使用此策略,您可以在到达到期时间之前收到通知(以天或小时为单位)。 |
|
|
NoChangeNotification |
如果参数在指定时间段内未被修改,该策略将在 EventBridge 中启动一个事件。例如,需要在一段时间内审查或更新某个已批准的 AMI ID,此策略类型将非常实用。 此策略通过读取参数的 |
|
您可向参数分配多个策略。例如,您可以分配 Expiration 和 ExpirationNotification 策略,让系统启动 EventBridge 事件以通知您即将删除参数。您最多可向参数分配是十 (10) 个策略。
以下示例展示了一个 PutParameter API 请求的请求语法,该请求将四个策略分配到名为 /myapp/prod/vendor/merchant-id 的新 SecureString 参数。
{ "Name": "/myapp/prod/vendor/merchant-id", "Description": "Parameter with policies", "Value": "merchant-739482", "Type": "SecureString", "Overwrite": "True", "Policies": [ { "Type": "Expiration", "Version": "1.0", "Attributes": { "Timestamp": "2018-12-02T21:34:33.000Z" } }, { "Type": "ExpirationNotification", "Version": "1.0", "Attributes": { "Before": "30", "Unit": "Days" } }, { "Type": "ExpirationNotification", "Version": "1.0", "Attributes": { "Before": "15", "Unit": "Days" } }, { "Type": "NoChangeNotification", "Version": "1.0", "Attributes": { "After": "20", "Unit": "Days" } } ] }
将策略添加到现有参数
本部分包括有关如何使用 AWS Systems Manager 控制台、AWS Command Line Interface (AWS CLI) 和 AWS Tools for Windows PowerShell 将策略添加到现有参数的信息。有关如何创建包含策略的新参数的信息,请参阅 在 Systems Manager 中创建 Parameter Store 参数。
使用控制台将策略添加到现有参数
按照以下过程,使用 Systems Manager 控制台将策略添加到现有参数。
将策略添加到现有参数
访问 https://console.aws.amazon.com/systems-manager/
,打开 AWS Systems Manager 控制台。 在导航窗格中,请选择 Parameter Store。
-
选择要更新以包含策略的参数旁边的选项,然后选择编辑。
-
选择 Advanced(高级)。
-
(可选)在 Parameter policies (参数策略) 部分中,选择 Enabled (已启用)。您可以为此参数指定到期日期以及一个或多个通知策略。
-
选择保存更改。
重要
-
Parameter Store 会在参数上保留策略,直至您使用新策略覆盖这些策略或删除这些策略。
-
要从现有参数中删除所有策略,请编辑参数并使用括号和大括号应用空策略,如下所示:
[{}] -
如果您向已有策略的参数添加新策略,Systems Manager 将覆盖附加到该参数的策略。现有策略将被删除。如果您希望向已有一个或多个策略的参数添加新策略,请复制并粘贴原始策略,键入新策略,然后保存所做的更改。
使用 AWS CLI 将策略添加到现有参数
使用以下过程,使用 AWS CLI 将策略添加到现有参数。
将策略添加到现有参数
安装并配置 AWS Command Line Interface(AWS CLI)(如果尚未执行该操作)。
有关更多信息,请参阅安装或更新 AWS CLI 的最新版本。
-
运行以下命令将策略添加到现有参数。将每个
示例资源占位符替换为您自己的信息。以下示例包含一个将在 15 天后删除参数的过期策略。此示例还包含在参数被删除前五 (5) 天生成 Eventbridge 事件的通知策略。最后,它还在 60 天后未对此参数进行更改时包含了
NoChangeNotification策略。此示例使用一个名为/myapp/prod/vendor/merchant-id的参数,该参数的加密值为商家 ID,此外还具有一个 AWS Key Management Service(AWS KMS key)。有关 AWS KMS keys 的更多信息,请参阅 AWS Key Management Service Developer Guide 中的 AWS Key Management Service 概念。 -
运行以下命令验证参数的详细信息。将
参数名称替换为您自己的信息。
重要
-
Parameter Store 会为参数保留策略,直至您使用新策略覆盖这些策略或删除这些策略。
-
要从现有参数中删除所有策略,请编辑参数并使用括号和大括号应用空策略。将每个
示例资源占位符替换为您自己的信息。例如: -
如果您向已有策略的参数添加新策略,Systems Manager 将覆盖附加到该参数的策略。现有策略将被删除。如果您希望向已有一个或多个策略的参数添加新策略,请复制并粘贴原始策略,键入新策略,然后保存所做的更改。
将策略添加到现有参数 (Tools for Windows PowerShell)
按照以下过程,使用 Tools for Windows PowerShell 将策略添加到现有参数。将每个示例资源占位符替换为您自己的信息。
将策略添加到现有参数
-
打开 Tools for Windows PowerShell 并运行以下命令以指定您的凭证。您必须在 Amazon Elastic Compute Cloud (Amazon EC2) 中具有管理员权限,或者 AWS Identity and Access Management (IAM) 中必须为您授予了相应的权限。
Set-AWSCredentials ` –AccessKeyaccess-key-name` –SecretKeysecret-key-name -
运行以下命令,以便为 PowerShell 会话设置区域。此示例使用美国东部(俄亥俄州)区域 (us-east-2)。
Set-DefaultAWSRegion ` -Region us-east-2 -
运行以下命令将策略添加到现有参数。将每个
示例资源占位符替换为您自己的信息。Write-SSMParameter ` -Name "parameter name" ` -Value "parameter value" ` -Type "parameter type" ` -Policies "[{policies-enclosed-in-brackets-and-curly-braces}]" ` -Overwrite以下示例包含一个将在 2020 年 5 月 13 日午夜 12 点(GMT)删除参数的过期策略。此示例还包含在参数被删除前五 (5) 天生成 Eventbridge 事件的通知策略。最后,它还在 60 天后未对此参数进行更改时包含了
NoChangeNotification策略。此示例使用一个名为/myapp/prod/vendor/merchant-id的参数,该参数的加密值为商家 ID,此外还具有一个 AWS 托管式密钥。Write-SSMParameter ` -Name "/myapp/prod/vendor/merchant-id" ` -Value "merchant-739482" ` -Type "SecureString" ` -Policies "[{\"Type\":\"Expiration\",\"Version\":\"1.0\",\"Attributes\":{\"Timestamp\":\"2018-05-13T00:00:00.000Z\"}},{\"Type\":\"ExpirationNotification\",\"Version\":\"1.0\",\"Attributes\":{\"Before\":\"5\",\"Unit\":\"Days\"}},{\"Type\":\"NoChangeNotification\",\"Version\":\"1.0\",\"Attributes\":{\"After\":\"60\",\"Unit\":\"Days\"}}]" ` -Overwrite -
运行以下命令验证参数的详细信息。将
参数名称替换为您自己的信息。(Get-SSMParameterValue -Name "parameter name").Parameters
重要
-
Parameter Store 会在参数上保留策略,直至您使用新策略覆盖这些策略或删除这些策略。
-
要从现有参数中删除所有策略,请编辑参数并使用括号和大括号应用空策略。例如:
Write-SSMParameter ` -Name "parameter name" ` -Value "parameter value" ` -Type "parameter type" ` -Policies "[{}]" -
如果您向已有策略的参数添加新策略,Systems Manager 将覆盖附加到该参数的策略。现有策略将被删除。如果您希望向已有一个或多个策略的参数添加新策略,请复制并粘贴原始策略,键入新策略,然后保存所做的更改。