使用預設主機管理組態來自動管理 EC2 執行個體 - AWS Systems Manager

使用預設主機管理組態來自動管理 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 的功能。

預設主機管理組態可讓您對 EC2 執行個體進行管理,而無需手動建立 AWS Identity and Access Management (IAM) 執行個體設定檔。預設主機管理組態可建立並套用預設 IAM 角色,以確保 Systems Manager 擁有管理啟用此功能的 AWS 帳戶 和 AWS 區域 中所有執行個體的許可。

如果提供的許可不足以滿足使用案例,您也可以將政策新增至預設主機管理組態建立的預設 IAM 角色。如果您不需要預設 IAM 角色提供的所有功能的許可,則可以建立自己的自訂角色和政策。對為預設主機管理組態選擇的 IAM 角色所做的任何變更都會套用到該區域和帳戶中的所有受管 Amazon EC2 執行個體。

如需有關預設主機管理組態所使用之政策的詳細資訊,請參閱 AWS 管理的政策:AmazonSSMManagedEC2InstanceDefaultPolicy

實作最低權限存取

此主題所描述的程序僅供管理員執行。因此,建議您實作最低權限存取原則,以防止非管理使用者設定或修改預設主機管理組態。若要檢視限制存取預設主機管理組態的範例政策,請參閱本主題稍後的 預設主機管理組態的最低權限政策範例 一節。

重要

使用預設主機管理組態註冊的執行個體,會將註冊資訊存放在本機 var/lib/amazon/ssmC:\ProgramData\Amazon 目錄中。移除這些目錄或其檔案可防止執行個體取得使用預設主機管理組態連線至 Systems Manager 的必要憑證。在這些情況下,您必須使用 IAM 執行個體設定檔來提供執行個體所需的許可,或重新建立執行個體。

必要條件

若要在啟用此設定的 AWS 區域 及 AWS 帳戶 中使用預設主機管理組態,必須滿足下列要求。

  • 要管理的執行個體必須使用 Instance Metadata Service Version 2 (IMDSv2)。

    預設主機管理組態不支援執行個體中繼資料服務第 1 版。如需有關轉換至 IMDSv2 的資訊,請參閱《Amazon EC2 使用者指南》中的 Transition to using Instance Metadata Service Version 2

  • 要管理的執行個體上必須安裝 SSM Agent 3.2.582.0 版或更新版本。

    如需有關檢查執行個體上已安裝之 SSM Agent 版本的詳細資訊,請參閱 檢查 SSM Agent 版本編號

    如需有關更新 SSM Agent 的資訊,請參閱 自動更新 SSM Agent

  • 作為管理員,在執行本主題所述任務時,您必須擁有執行 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" ] } } } ] }
  • 如果 IAM 執行個體設定檔已連接至要使用 Systems Manager 管理的 EC2 執行個體,則必須從中移除允許 ssm:UpdateInstanceInformation 操作的任何許可。SSM Agent 在使用預設主機管理組態許可之前,會嘗試使用執行個體設定檔許可。如果您允許自己的 IAM 執行個體設定檔中的 ssm:UpdateInstanceInformation 操作,執行個體將不會使用預設主機管理組態許可。

啟用預設主機管理組態設定

您可以從 Fleet Manager 主控台啟用預設主機管理組態,或透過使用 AWS Command Line Interface 或 AWS Tools for Windows PowerShell 來啟用。

您必須在希望透過此設定管理 Amazon EC2 執行個體的每個區域中逐一開啟預設主機管理組態。

開啟預設主機管理組態後,執行個體可能需要 30 分鐘的時間才能使用您在下列程序的步驟 5 中所選角色的憑證。

啟用預設主機管理組態 (主控台)
  1. 開啟位於 https://console.aws.amazon.com/systems-manager/ 的 AWS Systems Manager 主控台。

  2. 在導覽窗格中,選擇 Fleet Manager

  3. 依次選擇帳戶管理、設定預設主機管理組態

  4. 開啟開啟預設主機管理組態

  5. 選擇用於為執行個體啟用 Systems Manager 功能的 AWS 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. 開啟 AWS CLI 或 Tools for 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. 開啟 AWS CLI 或 Tools for 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. 執行以下命令,以檢視目前 AWS 帳戶 和 AWS 區域 中預設主機管理組態的目前服務設定。

    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 主控台停用預設主機管理組態,或透過使用 AWS Command Line Interface 或 AWS Tools for Windows PowerShell 來停用。

您必須在不再需要 Amazon EC2 執行個體由此組態管理的每個區域中逐一關閉預設主機管理組態設定。在一個區域中停用並不會導致在所有區域中停用。

如果停用預設主機管理組態,且尚未將執行個體設定檔連接到允許存取 Systems Manager 的 Amazon EC2 執行個體,則 Systems Manager 將不再管理這些執行個體。

停用預設主機管理組態 (主控台)
  1. 開啟位於 https://console.aws.amazon.com/systems-manager/ 的 AWS Systems Manager 主控台。

  2. 在導覽窗格中,選擇 Fleet Manager

  3. 依次選擇帳戶管理、預設主機管理組態

  4. 關閉啟用預設主機管理組態

  5. 選擇設定以停用預設主機管理組態。

停用預設主機管理組態 (命令列)
  • 開啟 AWS CLI 或 Tools for 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"

預設主機管理組態的最低權限政策範例

下列範例政策示範如何防止您的組織成員變更您帳戶中的[預設主機管理組態設定。

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" } ] }