Amazon EC2 Systems Manager
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

控制对 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.

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