Default Host Management Configuration を禁止してみた

SSM は明示的に行いたい方向けの記事です。Default Host Management Configuration を禁止してみました。
2023.02.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!AWS事業本部コンサルティング部のたかくに(@takakuni_)です。

先日、 EC2 インスタンスに対しデフォルトで SSM を利用可能にする Default Host Management Configuration (以後、DHMC)が登場しました。

とっても便利で、今後の利用機会が大変楽しみな機能です。詳しくはこちらをご覧ください。

明示的にやりたい

DHMC は対象 EC2 インスタンスのインスタンスプロファイルに、明示的に SSM の権限を付与しなくても、 SSM が利用可能になる機能です。

言い換えると「暗黙的」に SSM が利用になりました。新しいアップデートが出ると、機能の禁止もしてみたくなるのが人の性です。そこで、今回は Default Host Management Configuration を禁止してみようと思います。

先にまとめ

  • Default Host Management Configuration の設定を禁止したポリシーであること
  • Systems Manager の StartSession アクションの条件キーでは禁止できない(2023年2月時点)
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "ssm:UpdateServiceSetting",
            "Resource": "arn:aws:ssm:*:*:servicesetting/ssm/managed-instance/default-ec2-instance-management-role"
        }
    ]
}

やってみた

DHMC の設定を確認

DHMC は Fleet Manager コンソールまたは AWS CLI から「デフォルトのホスト管理設定の構成」をオンにすることで利用可能になります。

Default Host Management Configuration allows Systems Manager to manage your Amazon EC2 instances automatically. After you've turned on this setting, all instances using Instance Metadata Service Version 2 (IMDSv2) in your account with SSM Agent version 3.2.582.0 or later installed automatically become managed instances.

ということは、この設定を更新を制御すれば利用できないため、 IAM ポリシーを考えてみます。

私の検証環境では「デフォルトのホスト管理設定の構成」はオフになっていました。
そのため、現時点ではどのアカウントもオフであることを前提として執筆しています。
今後のアップデートによって「デフォルトのホスト管理設定の構成」が必ずオフであることは保証できないため、ご自身で適宜ご確認ください。

AWS CLI で設定する場合を確認すると DHMC の設定は、 UpdateServiceSetting アクションで更新されていることがわかります。

また、アカウントおよびリージョンごとに--setting-idが異なることもわかります。今回はシンプルにすべてのアカウント、リージョンを拒否するよう設定してみます。

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/AmazonSSMManagedEC2InstanceDefaultRole

作成されたポリシーが以下の通りです。では早速検証してみます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "ssm:UpdateServiceSetting",
            "Resource": "arn:aws:ssm:*:*:servicesetting/ssm/managed-instance/default-ec2-instance-management-role"
        }
    ]
}

検証

今回は以下の IAM ポリシーを持ったユーザーが DHMC を更新できるかどうかを検証してみます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Deny",
            "Action": "ssm:UpdateServiceSetting",
            "Resource": "arn:aws:ssm:*:*:servicesetting/ssm/managed-instance/default-ec2-instance-management-role"
        }
    ]
}

DHMC の更新を行うと、想定通り設定できない挙動が確認できました。

セッション API では管理できなかった

当初、 Systems Manager のStartSessionなどのセッション管理用 API で制御しようと思っていましたが、条件キーを確認するとインスタンスプロファイル、DHMC での制御はできませんでした。(2023年2月)

詳しくはこちらも併せてご覧ください。

まとめ

以上、「Default Host Management Configuration を禁止してみた」でした。

今後の Systems Manager アクションについても条件キーのアップデートなど追っていきたいですね。

AWS事業本部コンサルティング部のたかくに(@takakuni_)でした!