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

在 Parameter Store 中分配参数策略

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

注意

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

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

注意

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

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

Policy 详细信息 示例

过期

此策略将删除参数。您可以使用 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 EventBridge (EventBridge) 中启动一个事件,以通知您到期信息。使用此策略,您可以在到达到期时间之前收到通知(以天或小时为单位)。

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

NoChangeNotification

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

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

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

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

以下示例展示了一个 PutParameter API 请求的请求语法,该请求将四个策略分配到名为 ProdDB3 的新 SecureString 参数。

{ "Name": "ProdDB3", "Description": "Parameter with policies", "Value": "P@ssW*rd21", "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" } } ] }

将策略添加到现有参数

本部分包括有关如何使用 Amazon Systems Manager 控制台、Amazon Command Line Interface (Amazon CLI) 和 Amazon Tools for Windows PowerShell 将策略添加到现有参数的信息。有关如何创建包含策略的新参数的信息,请参阅 在 Systems Manager 中创建 Parameter Store 参数

使用控制台将策略添加到现有参数

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

将策略添加到现有参数
  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

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

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

  4. 选择 Advanced (高级)

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

  6. 选择 Save changes(保存更改)

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

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

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

使用 Amazon CLI 将策略添加到现有参数

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

将策略添加到现有参数
  1. 安装并配置 Amazon Command Line Interface(Amazon CLI)(如果尚未执行该操作)。

    有关信息,请参阅安装或更新 Amazon CLI 的最新版本

  2. 运行以下命令将策略添加到现有参数。将每个示例资源占位符替换为您自己的信息。

    Linux & macOS
    aws ssm put-parameter --name "parameter name" \ --value 'parameter value' \ --type parameter type \ --overwrite \ --policies "[{policies-enclosed-in-brackets-and-curly-braces}]"
    Windows
    aws ssm put-parameter --name "parameter name" ^ --value 'parameter value' ^ --type parameter type ^ --overwrite ^ --policies "[{policies-enclosed-in-brackets-and-curly-braces}]"

    下面是一个包含在 15 天后删除参数的到期策略的示例。此示例还包含在参数被删除前五 (5) 天生成 Eventbridge 事件的通知策略。最后,它还在 60 天后未对此参数进行更改时包含了 NoChangeNotification 策略。此示例对密码和 Amazon Key Management Service Amazon KMS key使用模糊名称 (3l3vat3131)。有关 Amazon KMS keys 的更多信息,请参阅 Amazon Key Management Service Developer Guide 中的 Amazon Key Management Service 概念

    Linux & macOS
    aws ssm put-parameter \ --name "/Finance/Payroll/3l3vat3131" \ --value "P@sSwW)rd" \ --type "SecureString" \ --overwrite \ --policies "[{\"Type\":\"Expiration\",\"Version\":\"1.0\",\"Attributes\":{\"Timestamp\":\"2020-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\"}}]"
    Windows
    aws ssm put-parameter ^ --name "/Finance/Payroll/3l3vat3131" ^ --value "P@sSwW)rd" ^ --type "SecureString" ^ --overwrite ^ --policies "[{\"Type\":\"Expiration\",\"Version\":\"1.0\",\"Attributes\":{\"Timestamp\":\"2020-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\"}}]"
  3. 运行以下命令验证参数的详细信息。将参数名称替换为您自己的信息。

    Linux & macOS
    aws ssm describe-parameters \ --parameter-filters "Key=Name,Values=parameter name"
    Windows
    aws ssm describe-parameters ^ --parameter-filters "Key=Name,Values=parameter name"
重要
  • Parameter Store 会为参数保留策略,直至您使用新策略覆盖这些策略或删除这些策略。

  • 要从现有参数中删除所有策略,请编辑参数并使用括号和大括号应用空策略。将每个示例资源占位符替换为您自己的信息。例如:

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

将策略添加到现有参数 (Tools for Windows PowerShell)

按照以下过程,使用 Tools for Windows PowerShell 将策略添加到现有参数。将每个示例资源占位符替换为您自己的信息。

将策略添加到现有参数
  1. 打开 Tools for Windows PowerShell 并运行以下命令以指定您的凭证。您必须在 Amazon Elastic Compute Cloud (Amazon EC2) 中具有管理员权限,或者 Amazon Identity and Access Management (IAM) 中必须为您授予了相应的权限。

    Set-AWSCredentials ` –AccessKey access-key-name ` –SecretKey secret-key-name
  2. 运行以下命令,以便为 PowerShell 会话设置区域。此示例使用美国东部(俄亥俄)区域 (us-east-2)。

    Set-DefaultAWSRegion ` -Region us-east-2
  3. 运行以下命令将策略添加到现有参数。将每个示例资源占位符替换为您自己的信息。

    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 策略。此示例对密码和 Amazon 托管式密钥使用模糊名称 (3l3vat3131)。

    Write-SSMParameter ` -Name "/Finance/Payroll/3l3vat3131" ` -Value "P@sSwW)rd" ` -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
  4. 运行以下命令验证参数的详细信息。将参数名称替换为您自己的信息。

    (Get-SSMParameterValue -Name "parameter name").Parameters
重要
  • Parameter Store 会在参数上保留策略,直至您使用新策略覆盖这些策略或删除这些策略。

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

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