AWS IAMパスワードポリシーでパスワードの有効期間を設定した際のログイン動作を確認してみた
はじめに
AWSのIAMパスワードポリシーを使用することで、全IAMユーザーに対して一律でパスワードの定期変更を義務付けることができます。
パスワードの有効期間を設定し、期限切れ時にユーザー自身でパスワードを変更する際のログイン動作について、意外にも記事が見当たらなかったため、実際の動作を検証しました。
ユーザーの権限設定
IAMユーザーには、「IAMUserChangePassword」マネージドポリシーの適用が必要です。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:ChangePassword"
],
"Resource": [
"arn:aws:iam::*:user/${aws:username}",
"arn:aws:iam::*:user/*/${aws:username}"
]
},
{
"Effect": "Allow",
"Action": [
"iam:GetAccountPasswordPolicy"
],
"Resource": "*"
}
]
}
IAMパスワードポリシーの設定
IAMページの[アカウント設定]に遷移します。
IAMパスワードポリシーで以下の設定を行います。
- 「ユーザーにパスワードの変更を許可」 → 有効
- 「パスワードの有効期限には管理者のリセットが必要です」 → 無効
- 「パスワードの有効期間をオンにする」 → 有効(例:110日)
これにより、ユーザーは次回サインイン時に自身で新しいパスワードを設定できるようになります。
期限切れユーザーでのログイン検証
パスワードを設定して110日以上経過したユーザーでログインを試してみます。
ユーザー名とパスワードを入力し、[Sign in]をクリックします。
すると、パスワードをリセットするように画面が表示されました。古いパスワードと新規パスワードを入力します。
Confirm Password Change
Your account (アカウントID) password has expired or requires a reset.
To continue, please verify your old and set a new password for test2 (not you?).
パスワードリセットに成功したと表示されました。[Continue to sign in]をクリックします。
ログインが成功し、マネージドコンソールのトップページに遷移できました。
なお、「パスワードの再利用を禁止する」を無効化している場合でも、同じパスワードは使用できません。異なるパスワードを設定することで、ログインが可能になります。
CloudTrailでのイベント確認
CloudTrailを確認すると、イベント名は「ChangePassword」であり、IAMUserChangePasswordのマネージドポリシーが必要であったことが分かります。
{
"eventVersion": "1.11",
"userIdentity": {
"type": "IAMUser",
"principalId": "XXXXX",
"arn": "arn:aws:iam::アカウントID:user/test2",
"accountId": "アカウントID",
"accessKeyId": "XXXXX",
"userName": "test2",
"sessionContext": {
"attributes": {
"creationDate": "2025-07-03T07:14:43Z",
"mfaAuthenticated": "false"
}
},
"invokedBy": "AWS Internal"
},
"eventTime": "2025-07-03T07:22:06Z",
"eventSource": "iam.amazonaws.com",
"eventName": "ChangePassword",
"awsRegion": "us-east-1",
"sourceIPAddress": "AWS Internal",
"userAgent": "AWS Internal",
"requestParameters": null,
"responseElements": null,
"requestID": "d3868beb-ee5a-4fc9-9bbe-24906318f645",
"eventID": "3555cf9b-a570-4be9-9e5e-a290ba0cc201",
"readOnly": false,
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "アカウントID",
"eventCategory": "Management"
}
認証情報レポートでの変更内容確認
パスワード変更前後でIAM ユーザーの認証情報レポートの各項目がどのように変更されるか確認しました。
- password_last_used:最後にAWSウェブサイトにサインインした日時
- ユーザー名とパスワード入力後の日付(パスワード更新前)に更新される
- password_last_changed:ユーザーのパスワードが最後に設定された日時
- パスワード更新後の日付に更新される
- password_next_rotation:パスワードポリシーに基づき、新しいパスワードの設定をユーザーに求める日時
- password_last_changedから設定した有効期間(110日)後の日付が設定される
password_last_used,password_last_changed,password_next_rotation
2025-07-03T07:14:43Z,2025-10-25T07:23:02Z,2025-07-04T07:23:02Z
重要な点として、password_last_usedはログイン時点(パスワード更新前)で更新されるため、password_last_changedよりも前の日時となります。
管理者によるパスワードリセットが必要な場合
ユーザー自身ではなく、管理者側でパスワード変更を必須にしたい場合は、以下のパスワードポリシーに設定します。
- 「パスワードの有効期限には管理者のリセットが必要です」 → 有効
- 「パスワードの有効期間をオンにする」 → 有効(例:110日)
この設定で、期限切れのIAMユーザーがログインしようとすると、以下のエラーが表示されます。
Authentication failed
Your password has expired. Contact your administrator to reset the password.
この場合、適切な権限を持つ管理者が、対象のIAMユーザーのパスワードをリセットしてあげる必要があります。
最後に
IAMパスワードポリシーでパスワードの有効期間を設定した際の、実際のログイン動作を検証しました。
ユーザー自身でのパスワード変更と管理者によるリセットの2つのパターンを理解することで、組織のセキュリティポリシーに応じた適切な設定が可能になります。