説明
コンソールを利用するIAMユーザーに初期パスワードの変更を要求しないと、管理者から渡された値を使い続けられます。共有・漏えいした初期値が残ると、アカウントの不正利用リスクが高まる可能性があります。
コンソールアクセスが不要なユーザーにLoginProfileを追加する必要はありません。パスワード変更はAPIアクセスキーの交換やMFA、最小権限の代わりにはなりません。
想定される影響
- 初期パスワードを知る人がアカウントにアクセスする機会が残る可能性があります。
- パスワードの共有や再利用で、ユーザーごとの認証情報管理が弱くなるおそれがあります。
対処方法
コンソールを使うIAMユーザーにはLoginProfile.PasswordResetRequiredをtrueにし、自分のパスワードを変更する権限を確認してください。初期値を安全に渡し、変更の完了を確認してください。MFAとパスワードポリシーを適用し、適切な場合はフェデレーションを使ってください。
例
InitialPasswordはアカウントのパスワードポリシーを満たすユーザーごとの初期値です。デフォルト値のないNoEchoパラメーターなど承認済みの方法で渡し、MetadataやOutputsに公開しないでください。ユーザーの権限は別途構成してください。
変更前
yaml
Resources:
MyUser:
Type: AWS::IAM::User
Properties:
LoginProfile:
Password: !Ref InitialPassword
PasswordResetRequired: false
初期パスワードの変更を強制しません。値をテンプレートの外に置いても、初回サインイン時の変更方針は別途必要です。
変更後
yaml
Resources:
MyUser:
Type: AWS::IAM::User
Properties:
LoginProfile:
Password: !Ref InitialPassword
PasswordResetRequired: true
サインイン時にパスワード変更を要求します。ユーザーが変更する権限を持ち、正常にサインインを完了できることを確認してください。