説明
IAM データベース認証に対応するクラスターでは、固定パスワードの代わりに IAM 認証トークンで接続できます。アプリケーションにパスワードを直接保存する負担を減らし、IAM ポリシーで接続権限を管理する場合に役立ちます。
IAM 認証が無効なだけで、データベースが認証なしに公開されているとは限りません。通常の DB 認証は利用でき、IAM 認証の導入は対応するエンジン・バージョンと運用要件に合わせて判断する必要があります。
想定される影響
- 長期パスワードが複数のアプリケーションに残ると、漏えいやローテーション漏れのリスクが高まる可能性があります。
- IAM による接続権限の管理が必要な環境で、アカウントと認証情報を別途管理する負担が生じます。
対処方法
- エンジン・バージョン・リージョンとインスタンスクラスの対応状況を確認し、
iam_database_authentication_enabled = trueを設定してください。 - IAM 認証用の DB ユーザー、必要な
rds-db:connect権限、TLS によるトークン接続を構成してください。各ユーザーのデータ操作権限は別途制限してください。 - アプリケーションの接続を検証してから既存の認証方法を整理してください。IAM 認証用に構成したユーザーは、エンジンによってパスワードログインができなくなるため、先にアカウントごとの影響を確認してください。
例
同じ Aurora MySQL クラスターの認証設定を比較します。例のバージョンとアベイラビリティーゾーンが環境に合うことを確認し、DB インスタンス、ネットワーク、ユーザー権限は別途構成してください。db_password は安全に渡し、Terraform 状態に保存される値も保護する必要があります。
変更前
hcl
resource "aws_rds_cluster" "example" {
cluster_identifier = "example-cluster"
engine = "aurora-mysql"
engine_version = "8.0.mysql_aurora.3.05.2"
master_username = "username"
master_password = var.db_password
iam_database_authentication_enabled = false
availability_zones = ["us-east-1a", "us-east-1b", "us-east-1c"]
skip_final_snapshot = true
}
クラスターの IAM データベース認証は無効です。別途 DB 認証とパスワード管理が必要です。
変更後
hcl
resource "aws_rds_cluster" "example" {
cluster_identifier = "example-cluster"
engine = "aurora-mysql"
engine_version = "8.0.mysql_aurora.3.05.2"
master_username = "username"
master_password = var.db_password
iam_database_authentication_enabled = true
availability_zones = ["us-east-1a", "us-east-1b", "us-east-1c"]
skip_final_snapshot = true
}
IAM 認証を有効にしても、DB ユーザーやクライアントは自動的に移行されません。必要な権限と接続設定も適用してください。