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

使用参数策略

参数策略让您可以将特定条件分配到参数(如到期日期或生存时间),通过这种方式来帮助您管理一组不断增加的参数。参数策略在强制您更新或删除 Parameter Store 中存储的密码和配置数据时尤其有用。Parameter Store 提供以下策略类型:ExpirationExpirationNotificationNoChangeNotification。此部分更详细地说明了这些策略。

Parameter Store 通过使用异步的定期扫描强制实施参数策略。创建策略后,您无需执行其他操作来强制实施策略。Parameter Store 会根据您指定的条件独立执行策略定义的操作。

注意

参数策略可用于使用高级参数层的参数。有关更多信息,请参阅关于高级参数

参数策略是一个 JSON 数组,如下表所示。您可以在创建新的高级参数时分配策略,也可以通过更新参数应用策略。Parameter Store 支持以下类型的参数策略。

策略 详细信息 示例

过期

此策略将删除参数。您可以使用 ISO_INSTANT 格式或 ISO_OFFSET_DATE_TIME 格式指定特定日期和时间。要更改需要参数被删除的时间,您必须更新策略。更新参数不会影响附加加参数的策略的到期日期或时间。当到达到期日期和时间时,Parameter Store 将删除参数。

注意

此示例使用 ISO_INSTANT 格式。您还可以使用 ISO_OFFSET_DATE_TIME 格式指定日期和时间。以下是示例:2019-11-01T22:13:48.87+10:30:00

{ "Type":"Expiration", "Version":"1.0", "Attributes":{ "Timestamp":"2018-12-02T21:34:33.000Z" } }

ExpirationNotification

此策略将在通知您到期信息的 Amazon CloudWatch Events 中触发事件。使用此策略,您可以在到达到期时间之前收到通知(以天或小时为单位)。

{ "Type":"ExpirationNotification", "Version":"1.0", "Attributes":{ "Before":"15", "Unit":"Days" } }

NoChangeNotification

如果参数在指定时间段内修改,此策略将在 CloudWatch 中触发事件。例如,当在一段时间内需要更改密码时,此策略类型非常有用。

此策略通过读取参数的 LastModifiedTime 属性确定何时发送通知。如果您更改或编辑参数,系统会根据 LastModifiedTime 的新值重置通知时间段。

{ "Type":"NoChangeNotification", "Version":"1.0", "Attributes":{ "After":"20", "Unit":"Days" } }

您可向参数分配多个策略。例如,您可以分配 ExpirationExpirationNotification 策略,让系统触发通知您即将删除参数的 CloudWatch Events 事件。您最多可向参数分配是十 (10) 个策略。

以下示例显示了将四个策略分配到名为 ProdDB3 的新安全字符串参数的 PutParameter API 请求。

PutParameterRequest { "Name":"ProdDB3", "Description":"Parameter with policies", "Value":"P@ssW*rd21", "Type":"SecureString", "Tier":"Advanced", "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 CLI 和 AWS Tools for Windows PowerShell 将策略添加到现有参数的信息。有关如何创建包含策略的新参数的信息,请参阅 创建 Systems Manager 参数

将策略添加到现有参数(控制台)

使用以下过程,使用 Systems Manager 控制台将策略添加到现有参数。

将策略添加到现有参数

  1. 通过以下网址打开 AWS Systems Manager 控制台:https://console.amazonaws.cn/systems-manager/

  2. 在导航窗格中,选择 Parameter Store

    -或者-

    如果 AWS Systems Manager 主页首先打开,请选择菜单图标 ( ) 以打开导航窗格,然后选择 Parameter Store

  3. 选择要更新以包含策略的参数旁边的选项,然后选择编辑

  4. 选择 Advanced (高级)

  5. (可选)在 Parameter policies (参数策略) 部分,选择 Enabled (已启用)。您可以为此参数指定到期日期以及一个或多个通知策略。

  6. 选择 Save changes

重要

  • Parameter Store 会在参数上保留策略,直至您使用新策略覆盖这些策略或删除这些策略。

  • 要从现有参数中删除所有策略,请编辑参数并使用括号和大括号应用空策略,如下所示:[{}]

  • 如果您向已有策略的参数添加新策略,Systems Manager 将覆盖附加到该参数的策略。现有策略将被删除。如果您向已有一个或多个策略的参数添加新策略,您必须复制并粘贴原始策略,键入新策略,然后保存所作的更改。

将策略添加到现有参数 (AWS CLI)

使用以下过程,使用 AWS CLI 将策略添加到现有参数。

将策略添加到现有参数

  1. 安装并配置 AWS CLI(如果尚未执行该操作)。

    有关信息,请参阅安装或升级 AWS CLI,然后对其进行配置

  2. 运行以下命令将策略添加到现有参数。

    aws ssm put-parameter --name "parameter_name" --value 'a value' --type parameter_type --tier Advanced --policies "[{policies enclosed in brackets and curly braces}]" --overwrite

    下面是一个包含在 15 天后删除参数的到期策略的示例。此示例还包含在参数被删除前五 (5) 天生成 CloudWatch Events 事件的通知策略。最后,它还在 60 天后未对此参数进行更改时包含了 NoChangeNotification 策略。此示例为密码和 AWS Key Management Service (KMS) 客户主密钥 (CMK) 使用了难以辨认的名称 (elixir3131)。有关 CMK 的更多信息,请参阅 AWS Key Management Service Developer Guide 中的 AWS Key Management Service 概念

    aws ssm put-parameter --name "/Finance/Payroll/elixir3131" --value "P@sSwW)rd" --type "SecureString" --tier Advanced --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
  3. 运行以下命令验证参数的详细信息。

    aws ssm describe-parameters --parameter-filters "Key=Name,Values=Name of the parameter"

重要

  • Parameter Store 会为参数保留策略,直至您使用新策略覆盖这些策略或删除这些策略。

  • 要从现有参数中删除所有策略,请编辑参数并使用括号和大括号应用空策略。例如:

    aws ssm put-parameter --name parameter_name --type type --value 'value' --policies "[{}]"
  • 如果您向已有策略的参数添加新策略,Systems Manager 将覆盖附加到该参数的策略。现有策略将被删除。如果您向已有一个或多个策略的参数添加新策略,您必须复制并粘贴原始策略,键入新策略,然后保存所作的更改。

使用 Tools for Windows PowerShell 将策略添加到现有参数

使用以下过程,使用 Tools for Windows PowerShell 将策略添加到现有参数。

将策略添加到现有参数

  1. 打开 AWS Tools for Windows PowerShell 并运行以下命令指定您的凭证。您必须在 Amazon EC2 中具有管理员权限,或者您必须在 IAM 中被授予相应权限。有关更多信息,请参阅 Systems Manager 先决条件

    Set-AWSCredentials –AccessKey key_name –SecretKey key_name
  2. 运行以下命令为 PowerShell 会话设置区域。该示例使用 US East (Ohio) Region (us-east-2)。

    Set-DefaultAWSRegion -Region us-east-2
  3. 运行以下命令将策略添加到现有参数。

    Write-SSMParameter -Name "a name" -Value "a value" -Type "parameter type" -Tier "Advanced" -Policies "[{policies enclosed in brackets and curly braces}]" -Overwrite

    下面是一个包含在 2020 年 5 月 13 日午夜 12 点 (GMT) 删除参数的到期策略的示例。此示例还包含在参数被删除前五 (5) 天生成 CloudWatch Events 事件的通知策略。最后,它还在 60 天后未对此参数进行更改时包含了 NoChangeNotification 策略。此示例为密码和 AWS 托管客户主密钥 (CMK) 使用了难以辨认的名称 (elixir3131)。

    Write-SSMParameter -Name "/Finance/Payroll/elixir3131" -Value "P@sSwW)rd" -Type "SecureString" -Tier "Advanced" -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
  4. 运行以下命令验证参数的详细信息。

    (Get-SSMParameterValue -Name "the name you specified").Parameters

重要

  • Parameter Store 会在参数上保留策略,直至您使用新策略覆盖这些策略或删除这些策略。

  • 要从现有参数中删除所有策略,请编辑参数并使用括号和大括号应用空策略。例如:

    Write-SSMParameter -Name "a name" -Value "a value" -Type "parameter type" -Tier "Advanced" -Policies "[{}]"
  • 如果您向已有策略的参数添加新策略,Systems Manager 将覆盖附加到该参数的策略。现有策略将被删除。如果您向已有一个或多个策略的参数添加新策略,您必须复制并粘贴原始策略,键入新策略,然后保存所作的更改。