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 インスタンスを立ち上げておきます。
以下のように 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 ロールを付与していないので、想定通り接続はできません。
Systems Manager フリートマネージャーからマネージドノードに登録されているかも確認しますが、想定通り表示されません。
今回使用した 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(デフォルトのホスト管理設定) に関する情報が出ています。今回は [アカウント管理]-[デフォルトのホスト管理設定の構成] から設定します。
[デフォルトのホスト管理設定の構成] 画面に遷移します。
マネジメントコンソールから設定すると、現在のリージョンのアカウントレベルで DHMC(デフォルトのホスト管理設定) が有効になるそうです。
「デフォルトのホスト管理設定を有効にする」にチェックを入れると、IAM ロールを選択する画面が出てきます。
DHMC(デフォルトのホスト管理設定) を有効にするには AmazonSSMManagedEC2InstanceDefaultPolicy
が付与された IAM ロールが必要だそうです。
IAM ロールの選択画面のリストをクリックすると、「作成 AWSSystemsManagerDefaultEC2InstanceManagementRole(レコメンデーション)」という選択肢がありました。
AmazonSSMManagedEC2InstanceDefaultPolicy
が付与された IAM ロール AWSSystemsManagerDefaultEC2InstanceManagementRole
を自動作成してくれそうな雰囲気なので、これをクリックします。
緑のバーで「デフォルトのホスト管理設定を正常に有効化」と表示されました。
補足:AWS マネージドポリシー AmazonSSMManagedEC2InstanceDefaultPolicy
について
このポリシーは EC2 インスタンスで以下の操作を許可する権限を付与します。
- SSM Agent がドキュメントを取得すること
- Run Command を使用してコマンドを実行すること
- Session Manager を使用してセッションを確立すること
- インスタンスのインベントリを収集すること
- Patch Manager を使用してパッチとパッチコンプライアンスをスキャンすること
3. 既存の EC2 インスタンス(before-dhmc-ec2)の確認(オプション)
1 分くらい待っていると、以下のようにマネージドノードに準備しておいた既存の EC2 インスタンス(before-dhmc-ec2)が表示されました。やったー!
EC2 コンソールから既存の EC2 インスタンス(before-dhmc-ec2)を確認すると、IAM ロールは空っぽでした。
EC2 インスタンスに自動付与されるわけではないようです。
Systems Manager のデフォルトのホスト管理設定(DHMC)側で、権限をうまいこと調整してくれているのでしょう。
4.EC2 インスタンスを新規作成(オプション)
Systems Manager の DHMC(デフォルトのホスト管理設定)を有効にした状態で、新しく EC2 インスタンスを起動します。
設定項目 | パラメータ | 備考 |
---|---|---|
名前とタグ | 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 ロールを付与していないので、想定通り接続はできません。
Systems Manager フリートマネージャーからマネージドノードに登録されているかも確認しますが、想定通り表示されません。
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)が表示されました。やったー!
EC2 コンソールから新規作成した EC2 インスタンス(after-dhmc-ec2)を確認すると、先ほどと同様 IAM ロールは空っぽでした。
5. IAM ロールの確認
IAM コンソールから確認すると、AmazonSSMManagedEC2InstanceDefaultPolicy
が付与された IAM ロール AWSSystemsManagerDefaultEC2InstanceManagementRole
が自動作成されていました。
6. デフォルトのホスト管理設定(DHMC)をオフにする
デフォルトのホスト管理設定(DHMC)をオフにしてみます。
Systems Manager コンソールにアクセスし、フリートマネージャーを開きます。
[アカウント管理]-[デフォルトのホスト管理設定の構成] から設定します。
[デフォルトのホスト管理設定の構成] 画面に遷移します。
「デフォルトのホスト管理設定を有効にする」のチェックを外し、「設定」をクリックします。
緑のバーで「デフォルトのホスト管理を正常に無効にしました」と表示されました。
5 分くらい待ってみましたが、先ほど登録された EC2 インスタンス 2 台はそのままマネージドノードに表示され続けています。EC2 インスタンスを再起動しても同様です。
EC2 インスタンスを停止してみます。
ノードの状態が「停止中」になり、「接続が失われました」となりました。
EC2 インスタンスを開始してみると、ノードの状態が「実行中」になり、「オンライン」となりました。
[ノードアクション]-[このマネージドノードの登録を解除する] は選択できませんでした。
EC2 インスタンスを停止しても同様です。
デフォルトのホスト管理設定(DHMC)をオフにしても、マネージドノードには残り続ける模様です。
24 時間後に再度確認しましたが、変わらずマネージドノードに表示されていました。
おまけ:IAM ポリシー AmazonSSMManagedEC2InstanceDefaultPolicy
と AmazonSSMManagedInstanceCore
の差:
IAM ポリシー AmazonSSMManagedEC2InstanceDefaultPolicy
と AmazonSSMManagedInstanceCore
の差分として、AmazonSSMManagedEC2InstanceDefaultPolicy
には以下のアクションが含まれていませんでした。
"ssm:GetParameter"
"ssm:GetParameters"
終わりに
セッションマネージャーで EC2 インスタンスにアクセスしたいことは多いので、利用する機会がありそうなアップデートだなと感じました。個人で検証する際はデフォルトのホスト管理設定(DHMC)はオンにしておくと便利そうです。
SSM エージェントのバージョンの確認と、EC2 インスタンスから Sysytems Manager への通信経路の確保は必要なので、変わらず注意が必要です。
参考