IAM DB 認証は「長期パスワードを持たない」運用を実現する一方、失敗要因の切り分けや監査のしやすさが可視化のカギになります。
今年の2月に、IAM DB認証に関する「Amazon RDS は IAM DB 認証のメトリクスとログの可視化を提供開始」が発表されました。
今回の記事では、Aurora PostgreSQLを前提に、「iam-db-auth-error」のログエクスポート有効化手順、実際に出力されるログ例、そしてCloudWatch上の「IamDbAuth*」系メトリクスのアレコレを整理します。
あわせて、「設定反映で再起動は発生するのか?」という疑問も、検証結果ベースでメモしています。
設定方法
今回の設定方法は、以下の前提条件のもと設定していきます。IAMデータベース認証の設定方法は、こちら
- すでにIAMデータベース認証を有効化したデータベースが起動している
- エンジンバージョン: Aurora PostgreSQL (Compatible with PostgreSQL 16.6)
■ログのエクスポート設定
それでは、 IAM DB 認証に関するログエクスポートの設定をしていきます。
対象のAuroraクラスターを選択し、[ 変更 ]を押下します。
↓[ モニタリング ]の項目に、[ ログのエクスポート ]に関する設定があるので、[ iam-db-auth-error ログ ]にチェックを入れる。
↓
[ 続行 ]を押下し、[ すぐに適用 ]を押下します。
↓
設定は以上です。
■ログ確認
設定が完了しましたら、データベースに対し接続してみます。
ためしに誤ったトークンで、接続してみると、CloudWatchに新たなロググループが作成され、ストリームには以下のようなログが出力されていました。
/aws/rds/cluster/saitou-database/iam-db-auth-error
2025-08-11T04:00:05,804 [ERROR] Failed to authenticate the connection request for user 'testuser' because the provided token is malformed or otherwise invalid. (Status Code: 400, Error Code: InvalidToken)
ちなみに、今までのPostgreSQL ログでは、認証失敗として以下のようなログが出力されます。
/aws/rds/cluster/saitou-database/postgresql
2025-08-11 03:36:09 UTC:10.0.1.67(40050):testuser@test_db:[1271]:LOG: pam_authenticate failed: Permission denied
2025-08-11 03:36:09 UTC:10.0.1.67(40050):testuser@test_db:[1271]:FATAL: PAM authentication failed for user "testuser"
2025-08-11 03:36:09 UTC:10.0.1.67(40050):testuser@test_db:[1271]:DETAIL: Connection matched file "/rdsdbdata/config/pg_hba.conf" line 13: "hostssl all +rds_iam all pam"
気になること
■Auroraの再起動はあるか?
すでにAuroraクラスターを稼働している環境の場合、追加で設定するかと思います。
[ 変更 ]から設定可能で、他の項目と同様に、すぐに適用かメンテナンスウィンドウ時に適用かを選べます。すぐに適用した場合、再起動が発生するのか確認したところ、起きませんでした。
GUI画面上では、ステータスが設定変更を実施している状態になっていますが、ログを見ると再起動に関するログは出ていませんでした。
また、同タイミングでデータベースに対してクエリを実施していましたが、接続が切れることはありませんでした。
■メトリクスとは?
今回の「IAM DB 認証のメトリクスとログの可視化」について、ログにばかり注目してきましたが、メトリクスとは何を指しているのでしょうか。
CloudWatchアラームを見ると、IAMデータベース認証に関わりそうなメトリクスがいくつかありました。
ドキュメントを確認したところ、以下のメトリクスが追加されたようです。
メトリクス | 説明 |
---|---|
IamDbAuthConnectionRequests | IAM DB 認証で行われた接続リクエストの合計数。 |
IamDbAuthConnectionSuccess | 成功した IAM DB 認証リクエストの合計数。 |
IamDbAuthConnectionFailure | 失敗した IAM DB 認証リクエストの合計数。 |
IamDbAuthConnectionFailureInvalidToken | トークンが無効であるために失敗した IAM DB 認証リクエストの合計数。 |
IamDbAuthConnectionFailureInsufficientPermissions | ポリシーまたはアクセス許可が正しくないために失敗した IAM DB 認証リクエストの合計数。 |
IamDbAuthConnectionFailureThrottling | IAM DB 認証スロットリングにより失敗した IAM DB 認証リクエストの合計数。 |
IamDbAuthConnectionFailureServerError | IAM DB 認証機能の内部サーバーエラーにより失敗した IAM DB 認証リクエストの合計数。 |
このメトリクスを取得するための設定は不要で、IAMデータベース認証のログエクスポートを有効化していないデータベースでも、メトリクスからのデータが取得できることを確認しました。
まとめ
本検証では、ログエクスポート設定の即時適用で再起動は発生せず、クエリも切断されないことがわかりました。また、iam-db-auth-error を有効化すると、トークン不正や権限不足などの失敗理由が明確に追えるようになりそうですね。
参考リンク: AWS公式ドキュメント
↓ほかの協栄情報メンバーもIAMデータベース認証についての記事を公開しています。ぜひ参考にしてみてください。
■IAMデータベース認証を利用し、Aurora PostgreSQLに接続する手順(齊藤弘樹)
■IAMデータベース認証を無効化したユーザーはパスワード認証でログイン可能になるか検証(齊藤弘樹)
■Amazon AuroraでのIAMデータベース認証におけるワイルドカード利用の検証(齊藤弘樹)