0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IAMデータベース認証

Posted at

IAMデータベース認証(IAM Database Authentication) は、Amazon RDSAmazon 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 の例)

  1. RDSインスタンスでIAM認証を有効にする

    • RDS設定 → IAM DB Authentication有効化
  2. IAMユーザー/ロールにポリシーを割り当てる

    {
      "Effect": "Allow",
      "Action": "rds-db:connect",
      "Resource": "arn:aws:rds-db:region:account-id:dbuser:dbi-resource-id/db-username"
    }
    
  3. データベースユーザーを作成する(RDS内)

    CREATE USER 'db-username'@'%' IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS';
    GRANT SELECT ON my_table TO 'db-username'@'%';
    
  4. 認証トークンを生成(AWS CLI or SDK)

    aws rds generate-db-auth-token \
      --hostname your-db-endpoint \
      --port 3306 \
      --username db-username \
      --region your-region
    
  5. クライアントからトークンで接続

    • パスワード欄に「生成したトークン」を使用
    • 例: MySQLクライアント
    mysql -h your-db-endpoint \
          -u db-username \
          --password=generated-token \
          --ssl-ca=...  # SSL証明書も必要
    

📌 注意点

  • SSL接続が必須
  • トークンの有効期限は15分
  • Lambdaなどで使う場合は「起動時にトークンを生成→使い終わったら破棄」がベスト
  • IAMポリシーにミスがあると接続できません(CloudTrailで診断可能)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?