使用默认主机管理配置自动管理 EC2 实例
通过“默认主机管理配置”设置,AWS 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 的功能。
“默认主机管理配置”使您无需手动创建 AWS Identity and Access Management(IAM)实例配置文件即可管理 EC2 实例。“默认主机管理配置”会创建并应用默认 IAM 角色,确保 Systems Manager 有权管理已激活该设置的 AWS 账户 和 AWS 区域 中的所有实例。
如果提供的权限不足以满足您的应用场景要求,您还可以向“默认主机管理配置”创建的默认 IAM 角色添加策略。或者,如果您不需要默认 IAM 角色提供的所有功能的权限,可以创建自己的自定义角色和策略。对您为“默认主机管理配置”选择的 IAM 角色所做的任何更改,都适用于相应区域和账户中的所有托管 Amazon EC2 实例。
有关“默认主机管理配置”所用策略的更多信息,请参阅 AWS 托管式策略:AmazonSSMManagedEC2InstanceDefaultPolicy。
实施最低权限访问
本主题中的过程仅由管理员执行。因此,我们建议实施最低权限访问权限,以防止非管理员用户配置或修改“默认主机管理配置”。要查看限制访问“默认主机管理配置”时的策略示例,请参阅本主题后面的 “默认主机管理配置”的最低权限策略示例。
重要
使用“默认主机管理配置”注册的实例的注册信息,存储在本地的 var/lib/amazon/ssm
或 C:\ProgramData\Amazon
目录中。如果移除这些目录或其中的文件,将导致实例无法使用默认主机管理配置获取连接到 Systems Manager 所需的凭证。在这些情况下,您必须使用 IAM 实例配置文件为实例提供所需的权限,或者重新创建实例。
先决条件
要在激活该设置的 AWS 区域 和 AWS 账户 中使用“默认主机管理配置”,就必须满足以下要求。
-
要管理的实例必须使用实例元数据服务版本 2(imdsv2)。
“默认主机管理配置”不支持实例元数据服务版本 1。有关过渡到 IMDSv2 的信息,请参阅《Amazon EC2 用户指南》中的转换为使用实例元数据服务版本 2。
-
3.2.582.0 版本或更高版本的 SSM Agent 必须安装在实例上。
有关检查您的实例上安装的 SSM Agent 版本的信息,请参阅 正在检查 SSM Agent 版本号。
有关更新 SSM Agent 的信息,请参阅 自动更新 SSM Agent。
-
作为执行本主题中任务的管理员,您必须具有 GetServiceSetting、ResetServiceSetting 和 UpdateServiceSetting 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" ] } } } ] } -
如果已经使用 Systems Manager 将 IAM 实例配置文件附加到要管理的 EC2 实例,则必须从中移除任何允许
ssm:UpdateInstanceInformation
操作的权限。SSM Agent 会首先尝试使用实例配置文件权限,然后才会使用“默认主机管理配置”权限。如果您在自己的 IAM 实例配置文件中允许该ssm:UpdateInstanceInformation
操作,则该实例将不使用“默认主机管理配置”权限。
激活“默认主机管理配置”设置
您可以从 Fleet Manager 控制台或者使用 AWS Command Line Interface 或 AWS Tools for Windows PowerShell 激活“默认主机管理配置”。
您必须在想要通过此设置管理 Amazon EC2 实例的每个区域中,逐个开启“默认主机管理配置”。
在开启“默认主机管理配置”后,实例最多可能需要 30 分钟,就能使用您在下述过程步骤 5 中所选角色的凭证。
激活“默认主机管理配置”(控制台)
访问 https://console.aws.amazon.com/systems-manager/
,打开 AWS Systems Manager 控制台。 在导航窗格中,选择 Fleet Manager。
-
选择账户管理,配置默认主机管理配置。
-
打开启用默认主机管理配置。
-
选择用于为您的实例启用 Systems Manager 功能的 AWS Identity and Access Management(IAM)角色。我们建议使用“默认主机管理配置”提供的默认角色。它包含使用 Systems Manager 管理您的 Amazon EC2 实例所需的最低权限集合。如果您更喜欢使用自定义角色,则该角色的信任策略必须允许 Systems Manager 作为可信实体。
-
选择配置以完成设置。
激活“默认主机管理配置”(命令行)
-
在您的本地计算机上创建包含以下信任关系策略的 JSON 文件。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"", "Effect":"Allow", "Principal":{ "Service":"ssm.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
-
打开 AWS CLI 或 Tools for Windows PowerShell 并运行以下命令之一,以在您的账户中创建一个服务角色,具体取决于您本地计算机的操作系统类型。将每个
示例资源占位符
替换为您自己的信息。 -
运行以下命令,将
AmazonSSMManagedEC2InstanceDefaultPolicy
托管策略附加到您新建的角色。将每个示例资源占位符
替换为您自己的信息。 -
打开 AWS CLI 或 Tools for Windows PowerShell 并运行以下命令。将每个
示例资源占位符
替换为您自己的信息。如果此命令成功,则无任何输出。
-
运行以下命令,以查看当前的 AWS 账户 和 AWS 区域 中“默认主机管理配置”的当前服务设置。
此命令会返回如下信息。
{ "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 控制台或者使用 AWS Command Line Interface 或 AWS Tools for Windows PowerShell 停用“默认主机管理配置”。
您必须在不再想要通过此配置管理 Amazon EC2 实例的每个区域中,逐个关闭“默认主机管理配置”设置。在一个区域将其停用,不会在所有区域将其停用。
如果您停用“默认主机管理配置”,并且未将实例配置文件附加到允许访问 Systems Manager 的 Amazon EC2 实例,则这些实例将不再由 Systems Manager 管理。
停用“默认主机管理配置”(控制台)
访问 https://console.aws.amazon.com/systems-manager/
,打开 AWS Systems Manager 控制台。 在导航窗格中,选择 Fleet Manager。
-
选择账户管理,默认主机管理配置。
-
关闭启用默认主机管理配置。
-
选择配置以禁用“默认主机管理配置”。
停用“默认主机管理配置”(命令行)
-
打开 AWS CLI 或 Tools for Windows PowerShell 并运行以下命令。将每个
示例资源占位符
替换为您自己的信息。
“默认主机管理配置”的最低权限策略示例
以下示例策略演示如何防止组织成员更改您账户中的“默认主机管理配置”设置。
适用于 AWS Organizations 的服务控制策略
以下策略演示如何防止您 AWS 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 主体的策略
以下策略演示如何防止您 AWS 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
" } ] }