步骤 4:为 Systems Manager 创建 IAM 实例配置文件 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

步骤 4:为 Systems Manager 创建 IAM 实例配置文件

默认情况下,Amazon Systems Manager 没有在您的实例上执行操作的权限。使用 Amazon Identity and Access Management (IAM)实例配置文件来授予访问权限。实例配置文件是一个容器,可在启动时将 IAM 角色信息传递给 Amazon Elastic Compute Cloud (Amazon EC2) 实例。您可以把一个或多个定义所需权限的 IAM 策略附加到新角色或已创建的角色上,以便为 Systems Manager 创建实例配置文件。

注意

您可以使用 Quick Setup (Amazon Systems Manager的一项功能),在您的 Amazon Web Services 账户 中的所有实例上快速配置实例配置文件。Quick Setup 还可创建 IAM 服务角色(或假定角色),该角色允许 Systems Manager 代表您在您的实例上安全地运行命令。在使用 Quick Setup 时,您可以跳过该步骤(步骤 4)和步骤 5。有关更多信息,请参阅Amazon Systems Manager Quick Setup

请注意以下有关创建 IAM 实例配置文件的详细信息:

  • 如果要在混合环境中为 Systems Manager 配置服务器或虚拟机(VM),则无需为它们创建实例配置文件。相反,您必须将服务器和虚拟机配置为使用 IAM 服务角色。有关更多信息,请参阅 为混合环境创建 IAM 服务角色

  • 如果更改 IAM 实例配置文件,实例凭证可能需要一些时间才能刷新。刷新后,SSM Agent 才会处理请求。要加快刷新过程,您可以重新启动 SSM Agent或重新启动实例。

关于 Systems Manager 实例配置文件的策略

本节介绍可添加到 Amazon Systems Manager 的 EC2 实例配置文件的策略。要为实例和 Systems Manager API 之间的通信提供权限,我们建议您创建反映系统需求和安全要求的自定义策略。但作为起点,您可以使用以下一个或多个策略为 Systems Manager 授予与实例交互的权限:第一个策略 AmazonSSMManagedInstanceCore 允许实例能够使用 Systems Manager 服务的核心功能。根据您的运行计划,您可能需要具有在其他三个策略中的一个或多个策略中表示的权限。

策略:AmazonSSMManagedInstanceCore

必需的权限。

此 Amazon 托管策略允许实例能够使用 Systems Manager 服务的核心功能。

策略:用于 S3 存储桶访问的自定义策略

以下任一情况下的必需权限:

  • 情况 1 – 您使用 virtual private cloud (VPC) 终端节点,将 VPC 以私有连接到受支持的 Amazon Web Services,以及由 Amazon PrivateLink 提供技术支持的 VPC 终端节点服务上。

    SSM Agent 是在您的实例上安装的 Amazon 软件,用于执行 Systems Manager 任务。此代理需要访问特定的亚马逊拥有的 Amazon Simple Storage Service(Amazon S3)存储桶。可以公开访问这些存储桶。

    不过,在私有 VPC 终端节点环境中,必须明确提供对以下存储桶的访问权限。

    arn:aws:s3:::patch-baseline-snapshot-region/* arn:aws:s3:::aws-ssm-region/*

    有关更多信息,请参阅 Amazon VPC 用户指南中的 步骤 6:(可选)创建 VPC 终端节点SSM Agent 与 Amazon 托管 S3 存储桶进行通信 以及 Amazon PrivateLink 和 VPC 终端节点

  • 情况 2 – 您打算将创建的 Simple Storage Service (Amazon S3) 存储桶作为 Systems Manager 操作的一部分。

    您的 Systems Manager 的 Amazon EC2 实例配置文件,必须授予对您拥有的 Amazon S3 存储桶的访问权限,以执行如下任务:

    • 访问存储在 S3 存储桶中的脚本,以在您运行的命令中使用。

    • 存储 Run Command 命令或 Session Manager 会话的完整输出。

    • 访问自定义补丁列表,以便在修补实例时使用。

注意

在 S3 存储桶中保存输出日志数据是可选的。但是,如果您决定使用该功能,我们建议您在开始执行 Systems Manager 配置过程时就设置该功能。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的创建存储桶

策略:AmazonSSMDirectoryServiceAccess

只有在您打算将 Windows Server 的 Amazon EC2 实例加入 Microsoft AD 目录时才需要。

该 Amazon 托管策略允许 SSM Agent 代表您访问 Amazon Directory Service,以处理托管实例加入域的请求。有关更多信息,请参阅 Amazon Directory Service 管理指南中的无缝加入 Windows EC2 实例

策略:CloudWatchAgentServerPolicy

只有在您打算在实例上安装并运行 CloudWatch 代理,以读取实例上的指标和日志数据并将其写入到 Amazon CloudWatch 时才需要。这些操作可以帮助您监控、分析和快速响应存在的问题或对您的 Amazon 资源的更改。

只有在使用 Amazon EventBridge 或 Amazon CloudWatch Logs 等功能时,实例配置文件才需要使用该策略。(您还可以创建限制性更强的策略,例如,限制对特定 CloudWatch Logs 日志流的写入访问。)

注意

使用 EventBridge 和 CloudWatch Logs 功能是可选的。但是,如果您决定使用这些功能,我们建议您在开始执行 Systems Manager 配置过程时就设置这些功能。有关更多信息,请参阅 Amazon EventBridge User GuideAmazon CloudWatch Logs User Guide

要创建具有其他 Systems Manager 服务的权限的实例配置文件,请参阅以下资源:

任务 1:添加对 Systems Manager 实例配置文件的权限(控制台)

根据您是为实例配置文件创建新角色还是为现有角色添加所需权限,请使用以下过程之一。

为 Systems Manager 托管实例创建实例配置文件(控制台)

  1. 访问:https://console.aws.amazon.com/iam/,打开 IAM 控制台。

  2. 在导航窗格中,选择 Roles (角色),然后选择 Create role (创建角色)

  3. Select type of trusted entity(选择受信任实体的类型)下,选择 Amazon Web Service

  4. Use case(使用案例)下,选择 EC2,然后选择 Next(下一步)。

  5. Add permissions policies(添加权限策略)页面上,请执行以下操作:

    • 使用搜索字段查找 AmazonSSMManagedInstanceCore 策略。选中其名称旁边的复选框。

      
										在 IAM 控制台中选择 EC2 服务

      即使您搜索其他策略,控制台也会保留您选择的内容。

    • 如果您在上一过程中创建了自定义 S3 存储桶策略 任务 2:(可选)为 S3 存储桶访问创建自定义策略,请搜索该策略并选中其名称旁边的复选框。

    • 如果您打算将实例加入 Amazon Directory Service 管理的 Active Directory,请搜索 AmazonSSMDirectoryServiceAccess 并选中其名称旁边的复选框。

    • 如果您打算使用 Eventbridge 或 CloudWatch Logs 来管理或监控您的实例,请搜索 CloudWatchAgentServerPolicy 并选中其名称旁边的复选框。

  6. 选择 Next (下一步)

  7. 对于Role name(角色名称),请输入新实例配置文件的名称,例如 SSMInstanceProfile

    注意

    记下角色名称。在创建希望使用 Systems Manager 进行管理的新实例时,将选择该角色。

  8. (可选)对于 Description(描述),请输入该实例配置文件的描述。

  9. (可选)添加一个或多个标签键值对,以组织、跟踪或控制此角色的访问,然后选择 Create role(创建角色)。系统将让您返回到 Roles (角色) 页面。

将 Systems Manager 的实例配置文件权限添加到现有角色(控制台)

  1. 访问:https://console.aws.amazon.com/iam/,打开 IAM 控制台

  2. 在导航窗格中,选择角色,然后选择要与 Systems Manager 操作关联的实例配置文件关联的现有角色。

  3. Permissions(权限)选项卡上,选择 Add Permissions, Attach policies(添加权限,附上策略)。

  4. Attach policy(附上策略)页面上,执行以下操作:

    • 选中所需的 AmazonSSMManagedInstanceCore 托管式策略旁边的复选框。

    • 如果已创建自定义 S3 存储桶策略,请选中其名称旁边的复选框。有关实例配置文件的自定义 S3 存储桶策略的信息,请参阅任务 2:(可选)为 S3 存储桶访问创建自定义策略

    • 如果您打算将实例加入 Amazon Directory Service 管理的 Active Directory,请选中 AmazonSSMDirectoryServiceAccess 旁边的复选框。

    • 如果您打算使用 Eventbridge 或 CloudWatch Logs 来管理或监控实例,请选中 CloudWatchAgentServerPolicy 旁边的复选框。

  5. 选择 Attach policies(附上策略)。

有关如何更新角色以包含可信实体或进一步限制访问的信息,请参阅 IAM 用户指南中的修改角色

继续浏览 步骤 5:将 IAM 实例配置文件附加到 Amazon EC2 实例

任务 2:(可选)为 S3 存储桶访问创建自定义策略

只有在 Systems Manager 操作中使用 VPC 终端节点或使用您自己的 S3 存储桶时,才需要为 Amazon S3 访问创建自定义策略。

有关您在以下策略中提供访问权限的 Amazon 托管 S3 存储桶的信息,请参阅 SSM Agent 与 Amazon 托管 S3 存储桶进行通信

  1. 访问:https://console.aws.amazon.com/iam/,打开 IAM 控制台。

  2. 在导航窗格中,选择 Policies (策略),然后选择 Create policy (创建策略)

  3. 选择 JSON 选项卡,并将原定设置文本替换为以下内容。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::aws-ssm-region/*", "arn:aws:s3:::aws-windows-downloads-region/*", "arn:aws:s3:::amazon-ssm-region/*", "arn:aws:s3:::amazon-ssm-packages-region/*", "arn:aws:s3:::region-birdwatcher-prod/*", "arn:aws:s3:::aws-ssm-distributor-file-region/*", "arn:aws:s3:::aws-ssm-document-attachments-region/*", "arn:aws:s3:::patch-baseline-snapshot-region/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl", "s3:GetEncryptionConfiguration" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] } ] }

    1 只有在使用 VPC 终端节点时,才需要使用第一个 Statement 元素。

    2 只有在 Systems Manager 操作中使用您创建的 S3 存储桶时,才需要使用第二个 Statement 元素。

    3 只有在您打算为其他账户中的 S3 存储桶提供跨账户访问支持时,才需要使用 PutObjectAcl 访问控制列表权限。

    4 如果您的 S3 存储桶配置为使用加密,则 GetEncryptionConfiguration 元素是必需的。

    5 如果您的 S3 存储桶配置为使用加密,则 S3 存储桶根(例如 arn:aws:s3:::DOC-EXAMPLE-BUCKET )必须列在资源部分。您的 IAM 用户、组或角色必须配置为有权访问根存储桶。

  4. 如果在操作中使用 VPC 终端节点,请执行以下操作:

    在第一个 Statement 元素中,将每个区域占位符替换为将使用该策略 Amazon Web Services 区域 的标识符。例如,对于美国东部 (俄亥俄) 区域,请使用 us-east-2。有关受支持的 region 值的列表,请参阅 Amazon Web Services 一般参考中的 Systems Manager 服务终端节点中的 Region(区域)列。

    重要

    我们建议您避免在该策略中使用通配符 (*) 以替代特定区域。例如,使用 arn:aws:s3:::aws-ssm-us-east-2/* 而不使用 arn:aws:s3:::aws-ssm-*/*。使用通配符可能会提供对您不打算授予访问权限的 S3 存储桶的访问。如果要将实例配置文件用于多个区域,我们建议每个区域重复使用第一个 Statement 元素。

    -或者-

    如果在操作中不使用 VPC 终端节点,您可以删除第一个 Statement 元素。

  5. 如果在 Systems Manager 操作中使用您自己的 S3 存储桶,请执行以下操作:

    在第二个 Statement 元素中,将 DOC-EXAMPLE-BUCKET 替换为您的账户中的 S3 存储桶的名称。将在 Systems Manager 操作中使用该存储桶。它将 "arn:aws:s3:::my-bucket-name/*" 作为资源,以便为存储桶中的对象提供权限。有关为存储桶或存储桶中的对象提供权限的更多信息,请参阅 Amazon Simple Storage Service 用户指南中的 Amazon S3 操作主题,以及 Amazon 博客帖子 IAM 策略、存储桶策略和 ACL!Oh, My! (Controlling Access to S3 Resources)

    注意

    如果您使用多个存储桶,请提供每个存储桶的 ARN。有关存储桶的权限,请参阅以下示例。

    "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET2/*" ]

    –或者–

    如果在 Systems Manager 操作中不使用您自己的 S3 存储桶,您可以删除第二个 Statement 元素。

  6. 请选择下一步:标签

  7. (可选)通过选择 Add tag(添加标签)并输入策略的首选标签来添加标签。

  8. 请选择下一步:审核

  9. Name(名称)中,输入用于标识此策略的名称,例如 SSMInstanceProfileS3Policy

  10. 选择 Create policy(创建策略)。