AMI からインスタンスをリストアする際に、自動作成されるデフォルトユーザー "ec2-user" の生成を抑制してみた (Amazon Linux 2023 Ver)
はじめに
テクニカルサポートの 片方 です。
社内セキュリティポリシーの遵守や、カスタムユーザー管理の一元化などの理由で、デフォルトユーザー "ec2-user" の生成を抑制したいケースがあります。
その様な場合を想定して、AMI からインスタンスをリストアする際に、デフォルトユーザー "ec2-user" の生成を抑制してみました。
各 Linux インスタンスは、デフォルトの Linux システムユーザーで起動されます。インスタンスには、ユーザーを追加することも、削除することもできます。
やってみた
cloud-init によるデフォルト OS ユーザー (ec2-user) の作成を無効とするように、cloud-init の設定ファイルを編集する方法で実現可能です。
今回は検証用として Amazon Linux 2023 で自動作成される "ec2-user" の生成を抑制してみます。
1. ec2-user を削除します。
$ sudo userdel -r ec2-user
2. /etc/sudoers.d/90-cloud-init-users ファイル内を修正します
$ sudo visudo -f /etc/sudoers.d/90-cloud-init-users
※ /etc/sudoers.d/90-cloud-init-users ファイル内記述例
# Created by cloud-init v. 22.2.2 on Fri, 23 May 2025 02:35:10 +0000
# User rules for ec2-user
# ec2-user ALL=(ALL) NOPASSWD:ALL
3. /etc/cloud/cloud.cfg ファイルの以下 2 箇所の記述をコメントアウト(#)します。
$ sudo nano /etc/cloud/cloud.cfg
※ 1 箇所目
users:
- default
※ 2 箇所目
default_user:
name: cloud-user
lock_passwd: True
gecos: Cloud User
groups: [adm, systemd-journal]
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
shell: /bin/bash
4. 検証用 Amazon Linux 2023 (i-02f44f32e16b8809c) よりカスタム AMI (ami-0ec58058cfcf3c27a) を作成します。
5. 作成したカスタム AMI より EC2 インスタンスを起動 (i-09b8cc772764c85b8) します。
6. i-09b8cc772764c85b8 に対して SSH 接続を行い、ec2-user が作成されているか "id ec2-user" コマンドで確認します。
結果、自動作成を抑制できました。成功です!
別の方法ついて
/etc/cloud/cloud.cfg ファイルを編集できない要件が存在する場合、以下の方法でも抑制可能です。
1. /etc/cloud/cloud.cfg.d/ ディレクトリ内に新たに 99-no-default-user.cfg といったファイルを作成します
2. 99-no-default-user.cfg に以下の内容を記述し、Cloud-Init にユーザーを作成させないように設定します
users: []
まとめ
本ブログが誰かの参考になれば幸いです。
参考資料
- Amazon EC2 Linux インスタンスのシステムユーザーを管理する - Amazon Elastic Compute Cloud
- カスタマイズされた cloud-init - Amazon Linux 2023
- cloud-init Documentation — cloud-init 22.2.2 documentation
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。