こんにちは!イーゴリです。
今日はとても便利な機能をご紹介したいと思います。
背景
以前の記事では、プライベートな環境でSSMを使える方法を紹介しました。
しかし、上記の方法だと、下記のデメリットがあります。
- すべての対象EC2インスタンスに対して、IAMロールを作る必要があります
結構大変ですよね。
今回の方法はSystems Manager の DHMC (Default Host Management Configuration)を使うことでIAMロール作成/EC2へのアタッチの手間がなくなります。さらに一回だけ設定すればよいです。
イメージ図
EC2前提条件
- IMDSv2が必要(メータデータオプションの設定が「V1及びV2 (トークンはオプション)」であってもIMDSv2が利用できるため、問題ない)
- SSM Agent (3.2.582.0バージョン以降)が必要
なお、Default Host Management Configurationの有効化によって、自動的に下記の事象が起きますので、ご承知おきください。
- SSM Agent が最新の状態に保たれる
- Session Manager、Patch Manager、Inventoryが有効になる
有効にする方法
Systems Manager > フリートマネージャー > アカウント管理 > 「デフォルトのホスト管理設定」を設定するをクリックする。
「デフォルトのホスト管理設定」画面で「デフォルトのホスト管理設定を有効にする」をクリックする。
「IAM ロール」欄でロールの一覧から「AWSSystemsManagerDefaultEC2InstanceManagementRole を作成(推奨)」を選択します。
AWSSystemsManagerDefaultEC2InstanceManagementRoleの内容:
- AmazonSSMManagedEC2InstanceDefaultPolicy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:DescribeAssociation", "ssm:GetDeployablePatchSnapshotForInstance", "ssm:GetDocument", "ssm:DescribeDocument", "ssm:GetManifest", "ssm:ListAssociations", "ssm:ListInstanceAssociations", "ssm:PutInventory", "ssm:PutComplianceItems", "ssm:PutConfigurePackageResult", "ssm:UpdateAssociationStatus", "ssm:UpdateInstanceAssociationStatus", "ssm:UpdateInstanceInformation" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2messages:AcknowledgeMessage", "ec2messages:DeleteMessage", "ec2messages:FailMessage", "ec2messages:GetEndpoint", "ec2messages:GetMessages", "ec2messages:SendReply" ], "Resource": "*" } ] }
「設定」をクリックします。
完了しましたら、「フリートマネージャー」画面で対象EC2が表示されるようになります。
以上、御一読ありがとうございました。