使用默认主机管理配置设置 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用默认主机管理配置设置

默认主机管理配置设置 Amazon Systems Manager 允许将您的 Amazon EC2 实例作为托管实例自动进行管理。托管实例是一个配置为与 Systems Manager 一起使用的 EC2 实例。

使用 Systems Manager 管理实例的好处包括以下几点:

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

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

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

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

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

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

默认主机管理配置使您无需手动创建 Amazon Identity and Access Management (IAM) 实例配置文件即可管理 EC2 实例。相反,默认主机管理配置会创建并应用默认 IAM 角色,以确保 Systems Manager 有权管理其激活的所有实例。 Amazon Web Services 账户 Amazon Web Services 区域

如果提供的权限不足以满足您的应用场景要求,您还可以向“默认主机管理配置”创建的默认 IAM 角色添加策略。或者,如果您不需要默认 IAM 角色提供的所有功能的权限,可以创建自己的自定义角色和策略。对您为“默认主机管理配置”选择的 IAM 角色所做的任何更改,都适用于相应区域和账户中的所有托管 Amazon EC2 实例。

有关“默认主机管理配置”所用策略的更多信息,请参阅 Amazon 托管策略:Amazonsmanagedec2 InstanceDefaultPolicy

实施最低权限访问

本主题中的过程仅由管理员执行。因此,我们建议实施最低权限访问权限,以防止非管理员用户配置或修改“默认主机管理配置”。要查看限制访问“默认主机管理配置”时的策略示例,请参阅本主题后面的 “默认主机管理配置”的最低权限策略示例

重要

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

先决条件

要在 Amazon Web Services 区域 和激活该设置 Amazon Web Services 账户 的地方使用默认主机管理配置,必须满足以下要求。

  • 要管理的实例必须使用实例元数据服务版本 2(imdsv2)。

    “默认主机管理配置”不支持实例元数据服务版本 1。有关过渡到 IMDSv2 的信息,请参阅《Amazon EC2 用户指南(适用于 Linux 实例)》中的转换为使用实例元数据服务版本 2

  • 3.2.582.0 版本或更高版本的 SSM Agent 必须安装在实例上。

    有关检查您的实例上安装的 SSM Agent 版本的信息,请参阅 正在检查 SSM Agent 版本号

    有关更新 SSM Agent 的信息,请参阅 自动更新 SSM Agent

  • 作为执行本主题中任务的管理员,您必须具有GetServiceSettingResetServiceSetting、和 UpdateServiceSettingAPI 操作的权限。此外,您还必须有权获得 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" ] } } } ] }
  • 如果已经使用 Systems Manager 将 IAM 实例配置文件附加到要管理的 EC2 实例,则必须从中移除任何允许 ssm:UpdateInstanceInformation 操作的权限。SSM Agent 会首先尝试使用实例配置文件权限,然后才会使用“默认主机管理配置”权限。如果您在自己的 IAM 实例配置文件中允许该 ssm:UpdateInstanceInformation 操作,则该实例将不使用“默认主机管理配置”权限。

激活 “默认主机管理配置” 设置

您可以从Fleet Manager控制台激活默认主机管理配置,也可以使用或激活 Amazon Tools for Windows PowerShell。 Amazon Command Line Interface

您必须在您希望通过此设置管理 Amazon EC2 实例的每个区域逐一打开默认主机管理配置。

开启默认主机管理配置后,您的实例最多可能需要 30 分钟才能使用您在以下过程的步骤 5 中选择的角色的凭证。

激活“默认主机管理配置”(控制台)
  1. 打开 Amazon Systems Manager 控制台,网址为 https://console.aws.amazon.com/systems-manager/

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

    -或者-

    如果首先打开 Amazon Systems Manager 主页,请选择菜单图标 ( 
    The menu icon
  ) 以打开导航窗格,然后在导航窗格Fleet Manager中进行选择。

  3. 选择账户管理,配置默认主机管理配置

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

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

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

激活“默认主机管理配置”(命令行)
  1. 在您的本地计算机上创建包含以下信任关系策略的 JSON 文件。

    { "Version":"2012-10-17", "Statement":[ { "Sid":"", "Effect":"Allow", "Principal":{ "Service":"ssm.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
  2. 打开 Amazon CLI 或 Windows 工具 PowerShell ,根据本地计算机的操作系统类型,运行以下命令之一,在您的帐户中创建服务角色。将每个示例资源占位符替换为您自己的信息。

    Linux & macOS
    aws iam create-role \ --role-name AWSSystemsManagerDefaultEC2InstanceManagementRole \ --path /service-role/ \ --assume-role-policy-document file://trust-policy.json
    Windows
    aws iam create-role ^ --role-name AWSSystemsManagerDefaultEC2InstanceManagementRole ^ --path /service-role/ ^ --assume-role-policy-document file://trust-policy.json
    PowerShell
    New-IAMRole ` -RoleName "AWSSystemsManagerDefaultEC2InstanceManagementRole" ` -Path "/service-role/" ` -AssumeRolePolicyDocument "file://trust-policy.json"
  3. 运行以下命令,将 AmazonSSMManagedEC2InstanceDefaultPolicy 托管策略附加到您新建的角色。将每个示例资源占位符替换为您自己的信息。

    Linux & macOS
    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedEC2InstanceDefaultPolicy \ --role-name AWSSystemsManagerDefaultEC2InstanceManagementRole
    Windows
    aws iam attach-role-policy ^ --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedEC2InstanceDefaultPolicy ^ --role-name AWSSystemsManagerDefaultEC2InstanceManagementRole
    PowerShell
    Register-IAMRolePolicy ` -PolicyArn "arn:aws:iam::aws:policy/AmazonSSMManagedEC2InstanceDefaultPolicy" ` -RoleName "AWSSystemsManagerDefaultEC2InstanceManagementRole"
  4. 打开 Amazon CLI 或适用于 Windows 的工具, PowerShell 然后运行以下命令。将每个示例资源占位符替换为您自己的信息。

    Linux & macOS
    aws ssm update-service-setting \ --setting-id arn:aws:ssm:region:account-id:servicesetting/ssm/managed-instance/default-ec2-instance-management-role \ --setting-value service-role/AWSSystemsManagerDefaultEC2InstanceManagementRole
    Windows
    aws ssm update-service-setting ^ --setting-id arn:aws:ssm:region:account-id:servicesetting/ssm/managed-instance/default-ec2-instance-management-role ^ --setting-value service-role/AWSSystemsManagerDefaultEC2InstanceManagementRole
    PowerShell
    Update-SSMServiceSetting ` -SettingId "arn:aws:ssm:region:account-id:servicesetting/ssm/managed-instance/default-ec2-instance-management-role" ` -SettingValue "service-role/AWSSystemsManagerDefaultEC2InstanceManagementRole"

    如果此命令成功,则无任何输出。

  5. 运行以下命令以查看当前 Amazon Web Services 账户 和中默认主机管理配置的当前服务设置 Amazon Web Services 区域。

    Linux & macOS
    aws ssm get-service-setting \ --setting-id arn:aws:ssm:region:account-id:servicesetting/ssm/managed-instance/default-ec2-instance-management-role
    Windows
    aws ssm get-service-setting ^ --setting-id arn:aws:ssm:region:account-id:servicesetting/ssm/managed-instance/default-ec2-instance-management-role
    PowerShell
    Get-SSMServiceSetting ` -SettingId "arn:aws:ssm:region:account-id:servicesetting/ssm/managed-instance/default-ec2-instance-management-role"

    此命令会返回如下信息。

    {
        "ServiceSetting": {
            "SettingId": "/ssm/managed-instance/default-ec2-instance-management-role",
            "SettingValue": "service-role/AWSSystemsManagerDefaultEC2InstanceManagementRole",
            "LastModifiedDate": "2022-11-28T08:21:03.576000-08:00",
            "LastModifiedUser": "System",
            "ARN": "arn:aws:ssm:us-east-2:-123456789012:servicesetting/ssm/managed-instance/default-ec2-instance-management-role",
            "Status": "Custom"
        }
    }

停用 “默认主机管理配置” 设置

您可以从Fleet Manager控制台停用默认主机管理配置,也可以使用或停用。 Amazon Command Line Interface Amazon Tools for Windows PowerShell

在您不再希望您的 Amazon EC2 实例由此配置管理的每个区域,您必须逐一关闭默认主机管理配置设置。在一个区域将其停用,不会在所有区域将其停用。

如果您停用“默认主机管理配置”,并且未将实例配置文件附加到允许访问 Systems Manager 的 Amazon EC2 实例,则这些实例将不再由 Systems Manager 管理。

停用“默认主机管理配置”(控制台)
  1. 打开 Amazon Systems Manager 控制台,网址为 https://console.aws.amazon.com/systems-manager/

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

    -或者-

    如果首先打开 Amazon Systems Manager 主页,请选择菜单图标 ( 
    The menu icon
  ) 以打开导航窗格,然后在导航窗格Fleet Manager中进行选择。

  3. 选择账户管理,默认主机管理配置

  4. 关闭启用默认主机管理配置

  5. 选择配置以禁用“默认主机管理配置”。

停用“默认主机管理配置”(命令行)
  • 打开 Amazon CLI 或适用于 Windows 的工具, PowerShell 然后运行以下命令。将每个示例资源占位符替换为您自己的信息。

    Linux & macOS
    aws ssm reset-service-setting \ --setting-id arn:aws:ssm:region:account-id:servicesetting/ssm/managed-instance/default-ec2-instance-management-role
    Windows
    aws ssm reset-service-setting ^ --setting-id arn:aws:ssm:region:account-id:servicesetting/ssm/managed-instance/default-ec2-instance-management-role
    PowerShell
    Reset-SSMServiceSetting ` -SettingId "arn:aws:ssm:region:account-id:servicesetting/ssm/managed-instance/default-ec2-instance-management-role"

“默认主机管理配置”的最低权限策略示例

以下示例策略演示如何防止组织成员更改您账户中的“默认主机管理配置”设置。

适用于 Amazon Organizations的服务控制策略

以下策略演示如何防止您的非管理员成员更新您的 Amazon Organizations 默认主机管理配置设置。将每个示例资源占位符替换为您自己的信息。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Deny", "Action":[ "ssm:UpdateServiceSetting", "ssm:ResetServiceSetting" ], "Resource":"arn:aws:ssm:*:*:servicesetting/ssm/managed-instance/default-ec2-instance-management-role", "Condition":{ "StringNotEqualsIgnoreCase":{ "aws:PrincipalTag/job-function":[ "administrator" ] } } }, { "Effect":"Deny", "Action":[ "iam:PassRole" ], "Resource":"arn:aws:iam::*:role/service-role/AWSSystemsManagerDefaultEC2InstanceManagementRole", "Condition":{ "StringEquals":{ "iam:PassedToService":"ssm.amazonaws.com" }, "StringNotEqualsIgnoreCase":{ "aws:PrincipalTag/job-function":[ "administrator" ] } } }, { "Effect":"Deny", "Resource":"arn:aws:iam::*:role/service-role/AWSSystemsManagerDefaultEC2InstanceManagementRole", "Action":[ "iam:AttachRolePolicy", "iam:DeleteRole" ], "Condition":{ "StringNotEqualsIgnoreCase":{ "aws:PrincipalTag/job-function":[ "administrator" ] } } } ] }

适用于 IAM 主体的策略

以下策略演示如何防止您 Amazon Organizations 中的 IAM 群组、角色或用户更新您的默认主机管理配置设置。将每个示例资源占位符替换为您自己的信息。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ssm:UpdateServiceSetting", "ssm:ResetServiceSetting" ], "Resource": "arn:aws:ssm:region:account-id:servicesetting/ssm/managed-instance/default-ec2-instance-management-role" }, { "Effect": "Deny", "Action": [ "iam:AttachRolePolicy", "iam:DeleteRole", "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/service-role/AWSSystemsManagerDefaultEC2InstanceManagementRole" } ] }