配置 Systems Manager 所需的实例权限 - AWS Systems Manager

配置 Systems Manager 所需的实例权限

默认情况下,AWS Systems Manager 没有在您的实例上执行操作的权限。您可以使用 AWS Identity and Access Management(IAM)角色在账户级别提供实例权限,也可以使用实例配置文件在实例级别提供实例权限。如果您的应用场景允许,我们建议使用“默认主机管理配置”在账户级别授予访问权限。

EC2 实例权限的建议配置

“默认主机管理配置”允许 Systems Manager 自动管理您的 Amazon EC2 实例。在您打开此设置后,在 AWS 区域 和已安装 SSM Agent 版本 3.2.582.0 或更高版本的 AWS 账户 中,使用实例元数据服务版本 2(IMDSv2)的所有实例都将自动变为托管实例。“默认主机管理配置”不支持实例元数据服务版本 1。有关过渡到 IMDSv2 的信息,请参阅《Amazon EC2 用户指南》中的过渡到使用实例元数据服务版本 2。有关检查您的实例上安装的 SSM Agent 版本的信息,请参阅 正在检查 SSM Agent 版本号。有关更新 SSM Agent 的信息,请参阅 自动更新 SSM Agent。托管实例具有以下好处:

  • 可以使用 Session Manager 安全地连接到您的实例。

  • 可以使用 Patch Manager 执行自动补丁扫描。

  • 可以使用 Systems Manager 清单查看有关您的实例的详细信息。

  • 可以使用 Fleet Manager 追踪和管理实例。

  • 可以自动保持 SSM Agent 处于最新状态。

Fleet Manager、清单、Patch Manager 和 Session Manager 是 AWS Systems Manager 的功能。

“默认主机管理配置”允许在不使用实例配置文件的情况下进行实例管理,并可确保 Systems Manager 有权管理相应区域和账户中的所有实例。如果提供的权限不足以满足您的应用场景要求,您还可以向“默认主机管理配置”创建的默认 IAM 角色添加策略。或者,如果您不需要默认 IAM 角色提供的所有功能的权限,可以创建自己的自定义角色和策略。对您为“默认主机管理配置”选择的 IAM 角色所做的任何更改,都适用于相应区域和账户中的所有托管 Amazon EC2 实例。有关“默认主机管理配置”所用策略的更多信息,请参阅 AWS 托管式策略:AmazonSSMManagedEC2InstanceDefaultPolicy。有关“默认主机管理配置”的更多信息,请参阅使用默认主机管理配置自动管理 EC2 实例

重要

使用默认主机管理配置注册的实例将在 /lib/amazon/ssmC:\ProgramData\Amazon 目录中本地存储注册信息。如果移除这些目录或其中的文件,将导致实例无法使用默认主机管理配置获取连接到 Systems Manager 所需的凭证。在这些情况下,您必须使用实例配置文件为您的实例提供所需的权限,或者重新创建实例。

注意

此过程仅由管理员执行。在允许个人配置或修改“默认主机管理配置”时,实施最低权限访问。您必须在要自动管理 Amazon EC2 实例的每个 AWS 区域 中打开“默认主机管理配置”。

打开“默认主机管理配置”设置

您可以从 Fleet Manager 控制台打开“默认主机管理配置”。要使用 AWS Management Console 或您的首选命令行工具成功完成此过程,您必须拥有 GetServiceSettingResetServiceSettingUpdateServiceSetting API 操作的权限。此外,您还必须有权获得 AWSSystemsManagerDefaultEC2InstanceManagementRole IAM 角色的 iam:PassRole 权限。以下是示例策略。将每个示例资源占位符替换为您自己的信息。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetServiceSetting", "ssm:ResetServiceSetting", "ssm:UpdateServiceSetting" ], "Resource": "arn:aws:ssm:region:account-id:servicesetting/ssm/managed-instance/default-ec2-instance-management-role" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/service-role/AWSSystemsManagerDefaultEC2InstanceManagementRole", "Condition": { "StringEquals": { "iam:PassedToService": [ "ssm.amazonaws.com" ] } } } ] }

在开始之前,如果您已将实例配置文件附加到您的 Amazon EC2 实例,请移除允许该 ssm:UpdateInstanceInformation 操作的任何权限。在使用“默认主机管理配置”权限之前,SSM Agent 将尝试使用实例配置文件权限。如果您在实例配置文件中允许该 ssm:UpdateInstanceInformation 操作,则该实例将不使用“默认主机管理配置”权限。

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 AWS Systems Manager 控制台。

  2. 在导航窗格中,选择 Fleet Manager

  3. 账户管理下拉列表中选择配置默认主机管理配置

  4. 打开启用默认主机管理配置

  5. 选择用于为您的实例启用 Systems Manager 功能的 IAM 角色。我们建议使用“默认主机管理配置”提供的默认角色。它包含使用 Systems Manager 管理您的 Amazon EC2 实例所需的最低权限集合。如果您更喜欢使用自定义角色,则该角色的信任策略必须允许 Systems Manager 作为可信实体。

  6. 选择配置以完成设置。

在打开“默认主机管理配置”后,您的实例可能需要最长 30 分钟才能使用所选角色的凭证。您必须在要自动管理 Amazon EC2 实例的每个区域中打开“默认主机管理配置”。

EC2 实例权限的替代配置

您可以使用 AWS Identity and Access Management(IAM)实例配置文件来授予单个实例级别的访问权限。实例配置文件是一个容器,可在启动时将 IAM 角色信息传递给 Amazon Elastic Compute Cloud (Amazon EC2) 实例。您可以把一个或多个定义所需权限的 IAM policy 附加到新角色或已创建的角色上,以便为 Systems Manager 创建实例配置文件。

注意

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

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

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

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

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

为 Systems Manager 托管实例创建实例配置文件(控制台)
  1. 访问:https://console.aws.amazon.com/iam/,打开 IAM 控制台。

  2. 在导航窗格中,选择角色,然后选择创建角色

  3. 对于 Trusted entity type(可信实体类型),选择 AWS 服务

  4. Use case(应用场景)下,选择 EC2,然后选择 Next(下一步)。

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

    • 使用搜索字段查找 AmazonSSMManagedInstanceCore 策略。选中其名称旁边的复选框,如下图所示。

      该复选框在 AmazonSSMManagedInstanceCore 行中处于选中状态。

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

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

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

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

  6. 选择下一步

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

    注意

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

  8. (可选)对于 Description(描述),更新此实例配置文件的描述。

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

将 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 存储桶策略的信息,请参阅 (可选)为 S3 存储桶访问创建自定义策略

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

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

  5. 选择附加策略

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

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

只有在 Systems Manager 操作中使用 VPC 终端节点或使用您自己的 S3 存储桶时,才需要为 Amazon S3 访问创建自定义策略。您可以将此策略附加到由“默认主机管理配置”创建的默认 IAM 角色,或您在之前的过程中创建的实例配置文件。

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

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

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

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

    { "Version": "2012-10-17", "Statement": [ Footnote callout 1 to explain a line in a JSON policy{ "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/*" ] }, Footnote callout 2 to explain a line in a JSON policy{ "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl", Footnote callout 3 to explain a line in a JSON policy "s3:GetEncryptionConfiguration" Footnote callout 4 to explain a line in a JSON policy ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::amzn-s3-demo-bucket" Footnote callout 5 to explain a line in a JSON policy ] } ] }

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

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

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

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

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

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

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

    重要

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

    -或者-

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

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

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

    注意

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

    "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*", "arn:aws:s3:::amzn-s3-demo-bucket2/*" ]

    - 或者 -

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

  6. 选择下一步:标签

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

  8. 选择 下一步: 审核

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

  10. 选择创建策略

托管实例的其他策略注意事项

本部分介绍了一些策略,您可以将这些策略添加到由“默认主机管理配置”或您的 AWS Systems Manager 实例配置文件创建的默认 IAM 角色中。要为实例和 Systems Manager API 之间的通信提供权限,我们建议您创建反映系统需求和安全要求的自定义策略。根据您的操作计划,您可能需要具有在其他策略的一个或多个策略中表示的权限。

策略:AmazonSSMDirectoryServiceAccess

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

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

策略:CloudWatchAgentServerPolicy

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

仅当您将使用 Amazon EventBridge 或 Amazon CloudWatch Logs 等功能时,由“默认主机管理配置”或实例配置文件创建的默认 IAM 角色才需要此策略。(您还可以创建限制性更强的策略,例如,限制对特定 CloudWatch Logs 日志流的写入访问。)

注意

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

要创建拥有其他 Systems Manager 功能权限的 IAM policy,请参阅以下资源:

将 Systems Manager 实例配置文件附加到实例(控制台)

以下步骤介绍了如何使用 Amazon EC2 控制台将 IAM 实例配置文件附加到 Amazon EC2 实例。

  1. 登录 AWS Management Console,打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中的 Instances 下,选择 Instances

  3. 导航至并从列表中选择您的 EC2 实例。

  4. 操作 菜单中,选择安全修改 IAM 角色

  5. 对于 IAM role (IAM 角色),选择您使用 EC2 实例权限的替代配置 中的过程创建的实例配置文件。

  6. 选择 Update IAM role(更新 IAM 角色)。

有关将 IAM 角色附加到实例的更多信息,请选择以下操作之一,具体取决于您选择的操作系统类型:

继续使用适用于 Systems Manager 的 VPC 端点提高 EC2 实例的安全性