0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS CLI + MFA対応】CSVファイルで複数のIAMユーザーを一括作成する方法【Bashスクリプト付き】

Last updated at Posted at 2025-04-24

はじめに

AWSで多数のIAMユーザーを作成する場合、マネジメントコンソールで一人ずつ登録するのは非常に手間です。本記事では、CSVファイルとBashスクリプトを活用して、AWS CLIで複数のIAMユーザーを一括作成する方法を丁寧に解説します。

さらに、MFA(多要素認証)を有効にした環境にも対応しており、セキュリティを保ちつつ効率的にユーザーを作成できます。実際に使えるスクリプト付きなので、すぐに業務に導入可能です。

🔹この記事の流れ(目次)

  1. 環境の準備(AWS CLI + MFA)
  2. CSVファイルの作成と整形
  3. IAMグループの作成
  4. BashスクリプトでIAMユーザーを一括作成
  5. スクリプトの実行方法
  6. まとめ

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とスクリプトを活用すれば再現性と効率性が大幅に向上します。

この記事が皆さんの業務の助けになれば幸いです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?