説明
IAM データベース認証を使わない場合、アプリケーションは別途管理するデータベース認証情報に依存することがあります。対応する RDS for MariaDB、MySQL、PostgreSQL では IAM 認証トークンで接続できます。トークンは新しい接続の認証に 15 分間使えますが、確立済みセッションの存続時間を制限するものではありません。
想定される影響
長期パスワードを複数のシステムに保存・共有すると、漏えいやアクセス権の取り消し漏れのリスクが高まることがあります。
対処方法
エンジン、バージョン、アプリケーションの対応を確認し、EnableIAMDatabaseAuthentication: true を設定してください。IAM 認証用のデータベースユーザー、必要な rds-db:connect 権限、TLS 接続も構成してください。データベース内の権限と監査ログは別途管理してください。Aurora ではインスタンスではなくクラスターで IAM 認証を設定してください。
例
暗号化された RDS MySQL を複製元とするリードレプリカの抜粋です。複製元の識別子とリージョン、対応するインスタンスクラスを指定し、省略した MyKey の定義で利用可能な KMS キーを用意してください。
変更前
yaml
AWSTemplateFormatVersion: 2010-09-09
Description: RDS Storage Encrypted
Parameters:
SourceDBInstanceIdentifier:
Type: String
DBInstanceType:
Type: String
SourceRegion:
Type: String
Resources:
MyDBSmall:
Type: "AWS::RDS::DBInstance"
Properties:
DBInstanceClass: !Ref DBInstanceType
SourceDBInstanceIdentifier: !Ref SourceDBInstanceIdentifier
SourceRegion: !Ref SourceRegion
DeletionProtection: false
KmsKeyId: !Ref MyKey
EnableIAMDatabaseAuthentication: false
レプリカの IAM データベース認証を有効にしていません。
変更後
yaml
AWSTemplateFormatVersion: 2010-09-09
Description: RDS Storage Encrypted
Parameters:
SourceDBInstanceIdentifier:
Type: String
DBInstanceType:
Type: String
SourceRegion:
Type: String
Resources:
MyDBSmall:
Type: "AWS::RDS::DBInstance"
Properties:
DBInstanceClass: !Ref DBInstanceType
SourceDBInstanceIdentifier: !Ref SourceDBInstanceIdentifier
SourceRegion: !Ref SourceRegion
DeletionProtection: false
KmsKeyId: !Ref MyKey
EnableIAMDatabaseAuthentication: true
レプリカの IAM 認証を有効にします。アプリケーションでのトークン生成と実際のデータベース接続も確認してください。