IAMユーザーのパスワード変更の設定手順

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、「どうやって直すのか?」 という具体的な修復手順(コンソール、AWS CLI、Terraformなど)まで、分かりやすく解説します。

この記事では、長期間変更されていないIAMユーザーのパスワードをリセットする手順について解説します。

ポリシーの説明

[IAM.7] IAM ユーザーのパスワードポリシーには強力な設定が必要です

https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/iam-controls.html#iam-7

このコントロールは、IAM ユーザーのアカウントパスワードポリシーが強力な設定を使用しているかどうかをチェックします。パスワードポリシーが強力な設定を使用していない場合、コントロールは失敗します。カスタムパラメータ値を指定しない限り、Security Hub は前の表に記載されているデフォルト値を使用します。PasswordReusePrevention パラメータおよび MaxPasswordAge パラメータにはデフォルト値がないため、これらのパラメータを除外した場合、Security Hub はこのコントロールを評価する際にパスワードローテーションの回数とパスワードの有効期間を無視します。

IAMユーザーのパスワードを定期的に変更することは、セキュリティのベストプラクティスとされています。特に、Center for Internet Security (CIS) ベンチマークでは、90日以内にパスワードをローテーション(変更または期限切れ)させることが推奨されています ([例: CIS AWS Foundations Benchmark 1.3])。 長期間同じパスワードを使用し続けることは、パスワードが漏洩した場合のリスクを高め、不正アクセスにつながる可能性を増大させます。 AWS Security Hubなどのツールでも、90日以上変更されていないパスワードを持つIAMユーザーが検出されることがあります。この記事では、そのようなユーザーのパスワードをリセットする具体的な手順を紹介します。

修復手順

AWSコンソールでの修正手順

  1. https://console.aws.amazon.com/iamv2/home#/users から IAM ユーザー一覧ページにアクセスします。
  2. 対象の IAM ユーザーを選択し、「セキュリティ認証情報」タブを開きます。
  3. 「コンソールサインイン」セクションにある「コンソールアクセスを管理」ボタン(または「パスワードを管理」など類似のボタン)をクリックします。
  4. パスワード管理オプションで、「パスワードをリセット」を選択します。
  5. コンソールパスワードのオプションで、「自動生成されたパスワード」を選択するか、または自身で管理するユーザーの場合は「カスタムパスワード」を選択して任意のパスワードを設定します。
  6. 「ユーザーは次回のサインイン時に新しいパスワードを作成する必要があります (推奨)」にチェックを入れます。(これにより、ユーザー自身が初回ログイン時に新しいパスワードを設定するよう強制できます。管理者側でパスワードを管理し、すぐに伝達・変更しない特殊なケースを除き、チェックを入れることを強く推奨します。)
  7. 「パスワードをリセット」をクリックします。
  8. パスワードを変更したユーザーアカウントで、問題なくAWSマネジメントコンソールにログインできることを確認します。(自動生成パスワードの場合は、生成されたパスワードを安全な方法でユーザーに伝達する必要があります)

AWS CLIでの修正コード

注意: 以下のスクリプトはコマンドライン引数で新しいパスワードを受け取ります。実行するとシェルの履歴にパスワードが残る可能性があるため、取り扱いには注意してください。

#!/bin/bash

# 必要な引数のチェック
if [ $# -ne 2 ]; then
    echo "使用方法: $0 <ユーザー名> <新しいパスワード>"
    exit 1
fi

user_name="$1"
new_password="$2"

echo "ユーザー '$user_name' のパスワードをリセットしています..."

# AWS CLI の設定確認
if ! aws sts get-caller-identity &> /dev/null; then
    echo "エラー: AWS CLIが正しく設定されていません。"
    exit 1
fi

# ユーザーの存在確認
if ! aws iam get-user --user-name "$user_name" &> /dev/null; then
    echo "エラー: ユーザー '$user_name' が見つかりません。"
    exit 1
fi

# IAM ユーザーのパスワードをリセットし、次回ログイン時に変更を要求
if aws iam update-login-profile --user-name "$user_name" --password "$new_password" --password-reset-required; then
    echo "成功: ユーザー '$user_name' のパスワードをリセットしました。次回ログイン時に変更が必要です。"
else
    echo "エラー: パスワードのリセットに失敗しました。"
    exit 1 # エラーで終了
fi

exit 0

実行してみます!

$ sh resolve.sh "ユーザー名" "パスワード"
"成功: ユーザー 'XXXX' のパスワードをリセットしました。次回ログイン時に変更が必要です。"

対象ユーザのパスワードがリセットされました。

最後に

今回は、IAMユーザーにて90日以上利用されている(またはリセットが必要な)パスワードのリセット手順についてご紹介しました。 Center for Internet Security (CIS) において、90日以内にパスワードをローテーションさせることが推奨されており、これはAWSを利用する上での重要なベストプラクティスです。

90日以上変更されていないパスワードを使用し続けることは、漏洩リスクや不正アクセスを受ける可能性を高めます。本記事を参考に対応していただき、セキュリティを高めることをお勧めします。

なお、90日以上パスワードが変更されていないIAMユーザーの検出は、弊社が提供するSecurifyのCSPM機能で簡単に行うことが可能です。

運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。

最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。

画像に alt 属性が指定されていません。ファイル名: 6d69971c2102e61210162ed9c7318e04-1.webp

この記事をシェアする

クラウドセキュリティ対策実践集一覧へ戻る

貴社の利用状況に合わせた見積もりを作成します。

料金プランを詳しく見る