8
1

More than 1 year has passed since last update.

【やってみた】アカウント内のすべての EC2 インスタンスでデフォルトで AWS Systems Manager を有効にする機能が発表されました(デフォルトのホスト管理設定、DHMC)

Last updated at Posted at 2023-02-18

2022/2/17 に、アカウント内のすべての EC2 インスタンスでデフォルトで AWS Systems Manager を有効にするという機能が発表されました。
この機能は 「デフォルトのホスト管理設定(Default Host Management Configuration、DHMC)」 と呼ぶそうです。

デフォルトのホスト管理設定(DHMC)の概要

  • Systems Manager で DHMC(デフォルトのホスト管理設定)という機能を特定のリージョンで有効にすると、有効にしたリージョン内のすべての EC2 インスタンスを Systems Manager のマネージドノードとして管理できる
  • DHMC(デフォルトのホスト管理設定)はアカウント単位でアクセス許可を付与する
  • Systems Manager を有効にするためにインスタンスプロファイル(IAM ロール)を設定する必要がなくなった
  • 中国 (北京) リージョン・中国 (寧夏) リージョン以外の商用および AWS GovCloud (米国) リージョンで利用可能

有効にすると何ができるようになるか

EC2 インスタンスを Systems Manager マネージドノードとして管理するときと同じことができるようです。

  • セッションマネージャーが使用できる
  • パッチマネージャーを使用して、自動化された毎日のパッチスキャンを実行できる
  • インベントリを使用して、インスタンスのビューを取得できる
  • Fleet Manager を使用してインスタンスを追跡できる
  • SSM エージェントを自動的に更新できる

ドキュメント

まだ日本語が出ていないので英語で閲覧してください。

これまで Systems Manager で EC2 インスタンスを管理するために必要だったこと

これまで Systems Manager で EC2 インスタンスを管理するために以下の事前準備が必要でした。

1. EC2 インスタンスに SSM エージェントがインストールされていること
2. IAM インスタンスプロファイル(IAM ロール)を EC2 インスタンスにアタッチする
3. EC2 インスタンスから Systems Manager への通信経路確保

今回のアップデートで発表された機能を有効化すると、、「2. IAM インスタンスプロファイル(IAM ロール)を EC2 インスタンスにアタッチする」が不要になったそうです。

やってみる

0. 前提条件

  • EC2 インスタンスにインストールされる SSM エージェントはバージョン 3.2.582.0 以降であること
  • Instance Metadata Service バージョン 2 (IMDSv2) を使用していること

上記を満たした EC2 インスタンスすべてが自動的にマネージド インスタンスになります。
デフォルトのホスト管理設定は、Instance Metadata Service バージョン 1 をサポートしていません。

1. デフォルトで EC2 インスタンスを立ち上げておく(オプション)

DHMC(デフォルトのホスト管理設定)を有効化したあと既存の EC2 インスタンスがどうなるのか確かめたいので、DHMC(デフォルトのホスト管理設定)を有効化する前に EC2 インスタンスを立ち上げておきます。
image.png

以下のように EC2 インスタンスを作成しました。

設定項目 パラメータ 備考
名前とタグ before-dhmc-ec2 任意の名前
AMI ID ami-0ffac3e16de16665e Amazon Linux 2 Kernel 5.10 AMI 2.0.20230207.0 x86_64 HVM gp2(20230219 時点のデフォルト AMI)
インスタンスタイプ t2.micro
キーペア 任意のキーペア
VPC デフォルト VPC
セキュリティグループ default デフォルトのセキュリティグループに、自分がアクセスするグローバル IP アドレスからのインバウンド SSH を許可するルールを追加(SSM エージェントをアップデートするのにログインするため)
IAM インスタンスプロフィール なし IAM ロールは付与しない

Systems Manager セッションマネージャーでアクセスできるか見てみます。
デフォルト VPC のパブリックサブネットに作成しましたが、IAM ロールを付与していないので、想定通り接続はできません。
image.png

Systems Manager フリートマネージャーからマネージドノードに登録されているかも確認しますが、想定通り表示されません。
image.png

今回使用した AMI から起動した EC2 インスタンスでは SSM エージェントのバージョンが以下のように 3.1.1732.0 でした。

[ec2-user@ip-172-31-33-131 ~]$ yum info amazon-ssm-agent
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Installed Packages
Name        : amazon-ssm-agent
Arch        : x86_64
Version     : 3.1.1732.0
Release     : 1.amzn2
Size        : 90 M
Repo        : installed
Summary     : Manage EC2 Instances using SSM APIs
URL         : http://docs.aws.amazon.com/ssm/latest/APIReference/Welcome.html
License     : ASL 2.0
Description : This package provides Amazon SSM Agent for managing EC2 Instances
            : using SSM APIs

[ec2-user@ip-172-31-33-131 ~]$

Amazon Linux 2 インスタンスに SSM Agent を手動でインストールする の手順を参考に、SSM エージェントをバージョン3.2.582.0 以降にアップデートします。

  • SSM エージェントバージョンアップするコマンド
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
  • コマンド実行結果
[ec2-user@ip-172-31-33-131 ~]$ sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amazon-ssm-agent.rpm                                     |  24 MB     00:08
Examining /var/tmp/yum-root-aG4Vh5/amazon-ssm-agent.rpm: amazon-ssm-agent-3.2.582.0-1.x86_64
Marking /var/tmp/yum-root-aG4Vh5/amazon-ssm-agent.rpm as an update to amazon-ssm-agent-3.1.1732.0-1.amzn2.x86_64
Resolving Dependencies
--> Running transaction check
---> Package amazon-ssm-agent.x86_64 0:3.1.1732.0-1.amzn2 will be updated
---> Package amazon-ssm-agent.x86_64 0:3.2.582.0-1 will be an update
--> Finished Dependency Resolution
amzn2-core/2/x86_64                                      | 3.7 kB     00:00

Dependencies Resolved

================================================================================
 Package              Arch       Version            Repository             Size
================================================================================
Updating:
 amazon-ssm-agent     x86_64     3.2.582.0-1        /amazon-ssm-agent      99 M

Transaction Summary
================================================================================
Upgrade  1 Package

Total size: 99 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : amazon-ssm-agent-3.2.582.0-1.x86_64                          1/2
  Cleanup    : amazon-ssm-agent-3.1.1732.0-1.amzn2.x86_64                   2/2
Failed to execute operation: File exists
  Verifying  : amazon-ssm-agent-3.2.582.0-1.x86_64                          1/2
  Verifying  : amazon-ssm-agent-3.1.1732.0-1.amzn2.x86_64                   2/2

Updated:
  amazon-ssm-agent.x86_64 0:3.2.582.0-1

Complete!
[ec2-user@ip-172-31-33-131 ~]$
  • SSM エージェントアップデート後のバージョン確認
[ec2-user@ip-172-31-33-131 ~]$ yum info amazon-ssm-agent
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Installed Packages
Name        : amazon-ssm-agent
Arch        : x86_64
Version     : 3.2.582.0
Release     : 1
Size        : 99 M
Repo        : installed
Summary     : Manage EC2 Instances using SSM APIs
URL         : http://docs.aws.amazon.com/ssm/latest/APIReference/Welcome.html
License     : Apache License, Version 2.0
Description : This package provides Amazon SSM Agent for managing EC2 Instances
            : using SSM APIs

[ec2-user@ip-172-31-33-131 ~]$

SSM エージェントの最新版は以下で確認できます。
2023/2/19 時点では、2023/2/5 にリリースされた 3.2.582.0 が最新版のようです。

2. [デフォルトのホスト管理構成] 設定をオンにする

Systems Manager フリートマネージャーコンソールから管理者がおこないます。

既存の Amazon EC2 インスタンスにインスタンスプロファイル(IAM ロール)がアタッチされている場合、ssm:UpdateInstanceInformation オペレーションを許可するすべての権限を削除する必要があるようです。

Systems Manager コンソールにアクセスし、フリートマネージャーを開きます。
青い枠で DHMC(デフォルトのホスト管理設定) に関する情報が出ています。今回は [アカウント管理]-[デフォルトのホスト管理設定の構成] から設定します。
image.png

[デフォルトのホスト管理設定の構成] 画面に遷移します。
マネジメントコンソールから設定すると、現在のリージョンのアカウントレベルで DHMC(デフォルトのホスト管理設定) が有効になるそうです。
「デフォルトのホスト管理設定を有効にする」にチェックを入れると、IAM ロールを選択する画面が出てきます。
image.png

DHMC(デフォルトのホスト管理設定) を有効にするには AmazonSSMManagedEC2InstanceDefaultPolicy が付与された IAM ロールが必要だそうです。
IAM ロールの選択画面のリストをクリックすると、「作成 AWSSystemsManagerDefaultEC2InstanceManagementRole(レコメンデーション)」という選択肢がありました。
AmazonSSMManagedEC2InstanceDefaultPolicy が付与された IAM ロール AWSSystemsManagerDefaultEC2InstanceManagementRole を自動作成してくれそうな雰囲気なので、これをクリックします。
image.png

最後に「設定」をクリックします。
image.png

緑のバーで「デフォルトのホスト管理設定を正常に有効化」と表示されました。
image.png
image.png

補足:AWS マネージドポリシー AmazonSSMManagedEC2InstanceDefaultPolicy について

このポリシーは EC2 インスタンスで以下の操作を許可する権限を付与します。

  • SSM Agent がドキュメントを取得すること
  • Run Command を使用してコマンドを実行すること
  • Session Manager を使用してセッションを確立すること
  • インスタンスのインベントリを収集すること
  • Patch Manager を使用してパッチとパッチコンプライアンスをスキャンすること

image.png

3. 既存の EC2 インスタンス(before-dhmc-ec2)の確認(オプション)

1 分くらい待っていると、以下のようにマネージドノードに準備しておいた既存の EC2 インスタンス(before-dhmc-ec2)が表示されました。やったー!
image.png

セッションマネージャーでも接続できました。
image.png
image.png

EC2 コンソールから既存の EC2 インスタンス(before-dhmc-ec2)を確認すると、IAM ロールは空っぽでした。
EC2 インスタンスに自動付与されるわけではないようです。
Systems Manager のデフォルトのホスト管理設定(DHMC)側で、権限をうまいこと調整してくれているのでしょう。
image.png
image.png

4.EC2 インスタンスを新規作成(オプション)

Systems Manager の DHMC(デフォルトのホスト管理設定)を有効にした状態で、新しく EC2 インスタンスを起動します。
image.png

設定項目 パラメータ 備考
名前とタグ after-dhmc-ec2 任意の名前
AMI ID ami-0ffac3e16de16665e Amazon Linux 2 Kernel 5.10 AMI 2.0.20230207.0 x86_64 HVM gp2(20230219 時点のデフォルト AMI)
インスタンスタイプ t2.micro
キーペア 任意のキーペア
VPC デフォルト VPC
セキュリティグループ default デフォルトのセキュリティグループに、自分がアクセスするグローバル IP アドレスからのインバウンド SSH を許可するルールを追加(SSM エージェントをアップデートするのにログインするため)
IAM インスタンスプロフィール なし IAM ロールは付与しない

Systems Manager セッションマネージャーでアクセスできるか見てみます。
デフォルト VPC のパブリックサブネットに作成しましたが、IAM ロールを付与していないので、想定通り接続はできません。
image.png

Systems Manager フリートマネージャーからマネージドノードに登録されているかも確認しますが、想定通り表示されません。
image.png

SSM エージェントをバージョン3.2.582.0 以降にアップデートします。

[ec2-user@ip-172-31-5-114 ~]$ yum info amazon-ssm-agent
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Installed Packages
Name        : amazon-ssm-agent
Arch        : x86_64
Version     : 3.2.582.0
Release     : 1
Size        : 99 M
Repo        : installed
Summary     : Manage EC2 Instances using SSM APIs
URL         : http://docs.aws.amazon.com/ssm/latest/APIReference/Welcome.html
License     : Apache License, Version 2.0
Description : This package provides Amazon SSM Agent for managing EC2 Instances
            : using SSM APIs

[ec2-user@ip-172-31-5-114 ~]$

SSM エージェントをアップデートしてから 1 分くらい待っていると、以下のようにマネージドノードに新規作成した EC2 インスタンス(after-dhmc-ec2)が表示されました。やったー!

image.png

セッションマネージャーでも接続できました。
image.png
image.png

EC2 コンソールから新規作成した EC2 インスタンス(after-dhmc-ec2)を確認すると、先ほどと同様 IAM ロールは空っぽでした。
image.png

5. IAM ロールの確認

IAM コンソールから確認すると、AmazonSSMManagedEC2InstanceDefaultPolicy が付与された IAM ロール AWSSystemsManagerDefaultEC2InstanceManagementRole が自動作成されていました。
image.png

6. デフォルトのホスト管理設定(DHMC)をオフにする

デフォルトのホスト管理設定(DHMC)をオフにしてみます。
Systems Manager コンソールにアクセスし、フリートマネージャーを開きます。
[アカウント管理]-[デフォルトのホスト管理設定の構成] から設定します。
image.png

[デフォルトのホスト管理設定の構成] 画面に遷移します。
「デフォルトのホスト管理設定を有効にする」のチェックを外し、「設定」をクリックします。
image.png

緑のバーで「デフォルトのホスト管理を正常に無効にしました」と表示されました。
image.png

5 分くらい待ってみましたが、先ほど登録された EC2 インスタンス 2 台はそのままマネージドノードに表示され続けています。EC2 インスタンスを再起動しても同様です。
image.png

EC2 インスタンスを停止してみます。
ノードの状態が「停止中」になり、「接続が失われました」となりました。
image.png

EC2 インスタンスを開始してみると、ノードの状態が「実行中」になり、「オンライン」となりました。
image.png

[ノードアクション]-[このマネージドノードの登録を解除する] は選択できませんでした。
EC2 インスタンスを停止しても同様です。
image.png

デフォルトのホスト管理設定(DHMC)をオフにしても、マネージドノードには残り続ける模様です。
24 時間後に再度確認しましたが、変わらずマネージドノードに表示されていました。
image.png

おまけ:IAM ポリシー AmazonSSMManagedEC2InstanceDefaultPolicyAmazonSSMManagedInstanceCore の差:

IAM ポリシー AmazonSSMManagedEC2InstanceDefaultPolicyAmazonSSMManagedInstanceCore の差分として、AmazonSSMManagedEC2InstanceDefaultPolicy には以下のアクションが含まれていませんでした。

  • "ssm:GetParameter"
  • "ssm:GetParameters"

終わりに

セッションマネージャーで EC2 インスタンスにアクセスしたいことは多いので、利用する機会がありそうなアップデートだなと感じました。個人で検証する際はデフォルトのホスト管理設定(DHMC)はオンにしておくと便利そうです。
SSM エージェントのバージョンの確認と、EC2 インスタンスから Sysytems Manager への通信経路の確保は必要なので、変わらず注意が必要です。

参考

8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1