Amazon EC2 Systems Manager
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

控制对 Systems Manager 参数的访问权限

您将使用 AWS Identity and Access Management (IAM) 控制对 Systems Manager 参数的访问权限。更具体地说,您将创建 IAM 策略来限制对以下 API 操作的访问权限:

我们建议您通过创建限制性 IAM 策略来控制对 Systems Manager 参数的访问权限。例如,以下策略允许您为特定资源调用 DescribeParametersGetParameters API 操作。这意味着,您可以获取有关以 prod-* 开头的所有参数的信息并使用这些参数。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": "arn:aws:ssm:us-east-1:123456123:parameter/prod-*" } ] }

对于受信任的管理员,您可以通过使用类似以下示例的策略提供对所有 Systems Manager 参数 API 操作的完全访问权限。此策略将授予用户对所有以“dbserver-prod-*”开头的生产参数的完全访问权限。

Copy
{ "Version":"2012-10-17", "Effect":"Allow", "Action":[ "ssm:DescribeParameters", "ssm:PutParameter", "ssm:GetParameters", "ssm:DeleteParameter" ], "Resource":[ "arn:aws:ssm:region:account id:parameter/dbserver-prod-*" ] }

仅允许特定参数在实例上运行

您还可以控制访问权限,以使实例只能运行特定参数。以下示例支持实例获取仅用于以“prod-”开头的参数的参数值。如果参数是安全字符串,则实例会使用 AWS KMS 解密该字符串。

注意

如果您在创建参数时选择安全字符串数据类型,则 AWS KMS 会加密参数值。有关 AWS KMS 的更多信息,请参阅 AWS Key Management Service Developer Guide

每个 AWS 账户都分配有默认 AWS KMS 密钥。您可以通过 AWS CLI 执行以下命令,以查看您的密钥:

Copy
aws kms describe-key --key-id alias/aws/ssm
Copy
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:GetParameters" ], "Resource":[ "arn:aws:ssm:region:account-id:parameter/prod-*" ] }, { "Effect":"Allow", "Action":[ "kms:Decrypt" ], "Resource":[ "arn:aws:kms:region:account-id:key/CMK" ] } ] }

注意

如上述实例所示,实例策略会分配到 IAM 中的实例角色中。要详细了解如何配置对 Systems Manager 功能的访问权限,包括如何将策略分配给用户和实例,请参阅配置对 Systems Manager 的访问权限

使用标签控制对参数的访问权限

在标记参数之后,可以通过创建一个指定用户可访问的标签的 IAM 策略来限制对该参数的访问权限。当用户尝试使用参数时,系统会检查 IAM 策略和为该参数指定的标签。如果用户对分配给该参数的标签没有访问权限,用户会收到访问被拒绝错误。使用以下过程创建一个 IAM 策略来通过使用标签限制对参数的访问权限。

开始前的准备工作

创建并标记参数。有关更多信息,请参阅 设置 Systems Manager 参数

使用标签限制用户对参数的访问权限

  1. Open the IAM console at https://console.amazonaws.cn/iam/.

  2. 在导航窗格中选择 Policies,然后选择 Create policy

  3. Create Your Own Policy 部分,选择 Select

  4. Policy Name 字段中,指定一个将它标识为目标参数的用户策略的名称。

  5. 输入描述。

  6. Policy Document 字段中,复制并粘贴以下示例策略。将 tag_keytag_value 替换为您的标签的键值对。

    Copy
    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:GetParameters" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag_key":[ "tag_value" ] } } } ] }

    您可以使用以下 Condition 格式在策略中指定多个键。指定多个键会为这些键创建 AND 关系。

    Copy
    "Condition":{ "StringLike":{ "ssm:resourceTag/tag_key1":[ "tag_value1" ], "ssm:resourceTag/tag_key2":[ "tag_value2" ] } }

    您可以使用以下 Condition 格式在策略中指定多个值。ForAnyValue 为这些值建立 OR 关系。还可以指定ForAllValues 来建立 AND 关系。

    Copy
    "Condition":{ "ForAnyValue:StringLike":{ "ssm:resourceTag/tag_key1":[ "tag_value1", "tag_value2" ] } }
  7. 选择 Create Policy

  8. 将策略分配给 IAM 用户或组。有关更多信息,请参阅更改 IAM 用户的权限将策略附加到 IAM 组

将策略附加到 IAM 用户或组账户之后,如果用户尝试使用参数,并且用户的策略不允许用户访问该参数的标签 (调用 GetParameters API),系统会返回错误。错误类似于以下内容:

User: user_name is not authorized to perform: ssm:GetParameters on resource: parameter ARN with the following command.

当参数具有多个标签时,如果用户无权访问这些标签中的任何一个,则用户仍会收到访问被拒绝错误。