Default Host Management Configuration を使用した EC2 インスタンスの自動管理 - AWS Systems Manager

Default Host Management Configuration を使用した 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 リージョン 内のすべてのインスタンスを管理できるアクセス許可を Systems Manager に付与します。

付与されたアクセス許可がユースケースに十分でない場合は、デフォルトのホスト管理設定で作成されたデフォルトの 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 の使用への移行」を参照してください。

  • メソッドを使用するには、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" ] } } } ] }
  • Systems Manager を使用して管理される Amazon EC2 インスタンスに IAM インスタンスプロファイルがすでにアタッチされている場合は、ssm:UpdateInstanceInformation 操作を実行するためのアクセス許可をすべて削除します。SSM Agent は、デフォルトのホスト管理設定のアクセス許可を使用する前に、インスタンスプロファイルのアクセス許可の使用を試みます。独自の IAM インスタンスプロファイルで ssm:UpdateInstanceInformation オペレーションを許可すると、インスタンスはデフォルトのホスト管理設定のアクセス許可を使用しません。

デフォルトのホスト管理設定の有効化

デフォルトのホスト管理設定は、Fleet Manager コンソールから、または AWS Command Line Interface や AWS Tools for Windows PowerShell を使用して有効化できます。

Amazon EC2 インスタンスをこの設定で管理したい各リージョンに対して、デフォルトのホスト管理設定を 1 つずつオンにする必要があります。

デフォルトのホスト管理設定をオンにした後、以下の手順のステップ 5 で選択したロールの認証情報をインスタンスが使用できるようになるまでに 30 分かかる場合があります。

デフォルトのホスト管理設定を有効化するには (コンソール)
  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/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 インスタンスをこの設定で管理する必要がなくなった各リージョンに対して、デフォルトのホスト管理設定を 1 つずつオフにする必要があります。あるリージョンで無効化しても、すべてのリージョンで無効化されるわけではありません。

デフォルトのホスト管理設定を無効化し、Amazon EC2 インスタンスに Systems Manager へのアクセスを許可するためのインスタンスプロファイルを添付していない場合、それらのインスタンスは Systems Manager によって管理されなくなります。

デフォルトのホスト管理設定を無効化するには (コンソール)
  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/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" } ] }