はじめに
AWSで多数のIAMユーザーを作成する場合、マネジメントコンソールで一人ずつ登録するのは非常に手間です。本記事では、CSVファイルとBashスクリプトを活用して、AWS CLIで複数のIAMユーザーを一括作成する方法を丁寧に解説します。
さらに、MFA(多要素認証)を有効にした環境にも対応しており、セキュリティを保ちつつ効率的にユーザーを作成できます。実際に使えるスクリプト付きなので、すぐに業務に導入可能です。
🔹この記事の流れ(目次)
1. AWS CLIとMFAセッションの準備
✔︎AWS CLI をインストール
まだインストールしていない場合は、公式ドキュメントを参照してください:
👉https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html
✔︎MFAプロファイルの設定とセッション取得
aws configure --profile mfa-session
次に、MFA デバイスのシリアル番号とトークンコードを使って一時的な認証情報を取得:
aws sts get-session-token \
--serial-number arn:aws:iam::<アカウントID>:mfa/<MFAデバイス名> \
--token-code 123456 \
--profile default
この出力を ~/.aws/credentials に mfa-session プロファイルとして保存します:
[mfa-session]
aws_access_key_id = ASIA...
aws_secret_access_key = ...
aws_session_token = ...
2. IAMユーザー情報をCSVファイルで準備
✔︎サンプルCSVの構成
UserName,GroupName
takahashi,Sales
miyamoto,Sales
takayama,Sales
ファイル名例:users.csv
✔︎改行・フォーマットの整形(Mac用sedコマンド)
sed -i '' 's/\r//' users.csv
sed -i '' 's/,,*$//' users.csv
3. IAMグループの作成とポリシー設定
✔︎グループ作成コマンド
ユーザーをグループにまとめて管理することで、ポリシーの適用やアクセス権限の制御が一括で行えるようになります。
aws iam create-group --group-name <グループ名> --profile mfa-session
例えば、Sales グループを作成する場合:
aws iam create-group --group-name Sales --profile mfa-session
✔︎ ポリシーのアタッチ(任意)
必要に応じて、グループにポリシーをアタッチしましょう。たとえば、AmazonS3ReadOnlyAccess ポリシーをアタッチするには:
aws iam attach-group-policy \
--group-name Sales \
--policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess \
--profile mfa-session
4. BashスクリプトでIAMユーザーを一括作成
CSVファイルを読み込み、ユーザー作成・グループ追加・初期パスワードの設定を一括で行うスクリプトを作成します。
✔︎ スクリプトの内容(create_iam_users.sh)
#!/bin/bash
# Set the input CSV file
INPUT_FILE="users.csv"
# Skip the header and loop through the file
tail -n +2 "$INPUT_FILE" | while IFS=',' read -r USERNAME GROUP
do
USERNAME=$(echo "$USERNAME" | tr -d '\r' | xargs)
GROUP=$(echo "$GROUP" | tr -d '\r' | xargs)
echo "Creating IAM user: $USERNAME"
# Create the user
aws iam create-user --user-name "$USERNAME"
# (Optional) Add the user to a group
if [ -n "$GROUP" ]; then
aws iam add-user-to-group --user-name "$USERNAME" --group-name "$GROUP"
fi
# (Optional) Create a login profile with a random password
PASSWORD=$(openssl rand -base64 16 | tr -d '=+/[:space:]' | head -c 10)$(openssl rand -hex 2 | tr -d '[:space:]')'!'
aws iam create-login-profile \
--user-name "$USERNAME" \
--password "$PASSWORD" \
--password-reset-required
echo "User $USERNAME created with password: $PASSWORD"
echo "---"
done
✔︎ スクリプトに実行権限を付与
chmod +x create_iam_users.sh
5. スクリプトの実行と出力確認
✔︎ 必要なファイルを準備
以下のファイルが同じディレクトリに存在していることを確認してください:
users.csv(ユーザー名とグループ名を含むCSVファイル)
create_iam_users.sh(スクリプトファイル)
✔︎ スクリプトを実行
AWS_PROFILE=mfa-session ./create_iam_users.sh
✔︎ 実行結果のサンプル出力
Creating IAM user: takahashi
{
"User": {
"Path": "/",
"UserName": "takahashi",
"UserId": "AIDATCKAMO66SOCGFASKS",
"Arn": "arn:aws:iam::211125303229:user/kai_tran",
"CreateDate": "2025-04-23T10:02:31+00:00"
}
}
{
"LoginProfile": {
"UserName": "takahashi",
"CreateDate": "2025-04-23T10:02:38+00:00",
"PasswordResetRequired": true
}
}
User takahashi created with password: CSE1Joo3mKed0f!
6. まとめ:CSVとCLIでIAMユーザー管理を自動化しよう
本記事では、AWS CLIとBashスクリプトを活用して、CSVファイルから複数のIAMユーザーを一括作成する方法を解説しました。
🔑 本記事のポイント
-
AWS CLIのセットアップからMFAセッションの構成までを解説
-
CSVファイルによるユーザー情報の管理で作業の再利用性を向上
-
IAMグループへの追加や、初期パスワードの自動設定もスクリプトで対応
これにより、IAMユーザーの一括管理が手作業に比べて圧倒的に効率化され、セキュリティも担保された運用が実現できます。
おわりに
IAMユーザーの管理は、AWS環境における運用とセキュリティの基盤です。
GUI操作では煩雑になりがちな作業も、CLIとスクリプトを活用すれば再現性と効率性が大幅に向上します。
この記事が皆さんの業務の助けになれば幸いです!