IAMデータベース認証(IAM Database Authentication) は、Amazon RDS や Amazon Aurora に接続する際に、IAMの認証情報(トークン)を使ってログインできる仕組みです。つまり、データベースユーザー名とパスワードの代わりに、IAMで認証された一時的な認証情報を使用します。
✅ 対応しているサービス
- ✅ Amazon Aurora(MySQL および PostgreSQL 互換)
- ✅ Amazon RDS for MySQL
- ✅ Amazon RDS for PostgreSQL
🎯 利用のメリット
特徴 | 説明 |
---|---|
パスワード管理不要 | RDS に直接パスワードを保存せず、IAM で安全に管理 |
一時的な認証トークン | 15分間だけ有効なトークンを使用(長期資格情報不要) |
IAMロールベースのアクセス制御 | アプリやユーザーごとにアクセス権を細かく制御可能 |
統一された認証基盤 | アプリも人間も、IAMベースで統一管理できる |
🔐 構成イメージ
[ IAMユーザー / IAMロール ]
↓
generate-db-auth-token
↓
[ DB接続ライブラリ ]
↓
[ RDS / Aurora (MySQL/PostgreSQL) ]
🛠 利用手順(MySQL/Aurora の例)
-
RDSインスタンスでIAM認証を有効にする
- RDS設定 →
IAM DB Authentication
を有効化
- RDS設定 →
-
IAMユーザー/ロールにポリシーを割り当てる
{ "Effect": "Allow", "Action": "rds-db:connect", "Resource": "arn:aws:rds-db:region:account-id:dbuser:dbi-resource-id/db-username" }
-
データベースユーザーを作成する(RDS内)
CREATE USER 'db-username'@'%' IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS'; GRANT SELECT ON my_table TO 'db-username'@'%';
-
認証トークンを生成(AWS CLI or SDK)
aws rds generate-db-auth-token \ --hostname your-db-endpoint \ --port 3306 \ --username db-username \ --region your-region
-
クライアントからトークンで接続
- パスワード欄に「生成したトークン」を使用
- 例: MySQLクライアント
mysql -h your-db-endpoint \ -u db-username \ --password=generated-token \ --ssl-ca=... # SSL証明書も必要
📌 注意点
- SSL接続が必須
- トークンの有効期限は15分
- Lambdaなどで使う場合は「起動時にトークンを生成→使い終わったら破棄」がベスト
- IAMポリシーにミスがあると接続できません(CloudTrailで診断可能)