설명
지원되는 RDS 또는 Aurora 클러스터에서 IAM 데이터베이스 인증을 사용하면 애플리케이션이 장기 비밀번호 대신 인증 토큰으로 접속할 수 있습니다. 이 기능을 사용하지 않고 비밀번호를 여러 서비스에 공유하면 교체와 접근 권한 관리가 어려워질 수 있습니다. IAM 인증만으로 MFA나 데이터베이스 감사 로그가 자동 활성화되지는 않습니다.
잠재적 영향
공유하거나 오래 유지한 비밀번호가 유출되면 해당 데이터베이스 사용자의 권한 범위에서 데이터에 접근할 수 있습니다.
해결 방법
클러스터 엔진·버전의 지원 여부를 확인하고 EnableIAMDatabaseAuthentication: true를 설정하세요. IAM 인증용 데이터베이스 사용자와 필요한 rds-db:connect 권한, TLS를 구성한 뒤 애플리케이션의 토큰 인증을 시험하세요. 데이터베이스 내부 권한을 최소화하고 불필요한 비밀번호 사용을 정리하세요.
예시
Aurora PostgreSQL 클러스터의 발췌입니다. 지원되는 DBEngineVersion과 그 버전에 맞는 DBClusterParameterGroupName을 입력하세요. 사용자·비밀번호 입력과 네트워크 등 나머지 정의는 생략했습니다.
변경 전
yaml
AWSTemplateFormatVersion: "2010-09-09"
Resources:
sample:
Type: "AWS::RDS::DBCluster"
Properties:
MasterUsername: !Ref DBUsername
MasterUserPassword: !Ref DBPassword
StorageEncrypted: true
DBClusterIdentifier: aurora-postgresql-cluster
Engine: aurora-postgresql
EngineVersion: !Ref DBEngineVersion
DBClusterParameterGroupName: !Ref DBClusterParameterGroupName
EnableCloudwatchLogsExports:
- postgresql
EnableIAMDatabaseAuthentication: false
클러스터의 IAM 인증을 비활성화합니다. 다른 인증 방식의 자격 증명 관리는 계속 필요합니다.
변경 후
yaml
AWSTemplateFormatVersion: "2010-09-09"
Resources:
sample:
Type: "AWS::RDS::DBCluster"
Properties:
MasterUsername: !Ref DBUsername
MasterUserPassword: !Ref DBPassword
StorageEncrypted: true
DBClusterIdentifier: aurora-postgresql-cluster
Engine: aurora-postgresql
EngineVersion: !Ref DBEngineVersion
DBClusterParameterGroupName: !Ref DBClusterParameterGroupName
EnableCloudwatchLogsExports:
- postgresql
EnableIAMDatabaseAuthentication: true
클러스터에서 IAM 인증을 사용할 수 있게 합니다. 이 설정만으로 기존 계정이나 애플리케이션의 인증 방식이 모두 전환되지는 않습니다.