IAM 데이터베이스 인증
AWS Identity and Access Management(IAM) 데이터베이스 인증을 사용하여 DB 클러스터에 인증할 수 있습니다. IAM 데이터베이스 인증은 Aurora MySQL, Aurora PostgreSQL과 함께 작동합니다. 이러한 인증 방식은 DB 클러스터에 연결할 때 암호를 사용할 필요 없습니다. 대신에 인증 토큰을 사용합니다.
인증 토큰이란 요청이 있을 때 Amazon Aurora가 생성하는 고유 문자열입니다. 인증 토큰은 AWS 서명 버전 4를 통해 생성됩니다. 각 토큰의 수명은 15분입니다. 인증을 외부에서 IAM을 사용해 관리하기 때문에 사용자 자격 증명을 데이터베이스에 저장할 필요도 없습니다. 또한 표준 데이터베이스 인증 방식도 사용 가능합니다. 토큰은 인증에만 사용되며 설정된 후에는 세션에 영향을 주지 않습니다.
IAM 데이터베이스 인증은 다음과 같은 이점이 있습니다.
-
데이터베이스를 오가는 네트워크 트래픽은 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security)를 통해 암호화됩니다. Amazon Aurora에서 SSL/TLS를 사용하는 방법에 대한 자세한 내용은 SSL/TLS를 사용하여 DB 클러스터에 대한 연결 암호화 단원을 참조하십시오.
-
데이터베이스 리소스에 대한 액세스는 DB 클러스터에서 개별적으로 관리할 필요 없이 IAM을 통해 중앙에서 관리할 수 있습니다.
-
Amazon EC2에서 실행되는 애플리케이션의 경우, 암호가 아닌 EC2 인스턴스용 프로파일 자격 증명을 사용해 데이터베이스에 액세스하기 때문에 보안을 더욱 강화하는 효과가 있습니다.
일반적으로 애플리케이션에서 초당 200개 미만의 연결을 생성하고 애플리케이션 코드에서 사용자 이름과 암호를 직접 관리하지 않으려는 경우 IAM 데이터베이스 인증을 사용하는 것이 좋습니다.
Amazon Web Services(AWS) JDBC 드라이버는 IAM 데이터베이스 인증을 지원합니다. 자세한 내용은 Amazon Web Services (AWS) JDBC Driver GitHub repository
Amazon Web Services(AWS) Python 드라이버는 IAM 데이터베이스 인증을 지원합니다. 자세한 내용은 Amazon Web Services (AWS) Python Driver GitHub repository
주제
리전 및 버전 사용 가능 여부
기능 가용성 및 해당 지원은 각 Aurora 데이터베이스 엔진의 특정 버전 및 AWS 리전에 따라 다릅니다. Aurora 및 IAM 데이터베이스 인증을 통한 버전 및 리전에서 사용 가능한 버전에 대한 자세한 내용은 IAM 데이터베이스 인증을 지원하는 리전 및 Aurora DB 엔진 섹션을 참조하세요.
Aurora MySQL의 경우 지원되는 모든 DB 인스턴스 클래스는 db.t2.small 및 db.t3.small 을 제외한 IAM 데이터베이스 인증을 지원합니다. 지원되는 DB 인스턴스 클래스에 대한 자세한 내용은 DB 인스턴스 클래스에 지원되는 DB 엔진 섹션을 참조하세요.
CLI 및 SDK 지원
AWS CLI 및 다음 언어별 AWS SDK에서 IAM 데이터베이스 인증을 사용할 수 있습니다.
IAM 데이터베이스 인증 방식의 제한 사항
IAM 데이터베이스 인증을 사용하는 경우, 다음 한도가 적용됩니다.
-
IAM 데이터베이스 인증은 다음 시나리오에서 연결을 제한합니다.
-
각각 다른 IAM ID로 서명된 인증 토큰을 사용하여 초당 20개의 연결을 초과합니다.
-
서로 다른 인증 토큰을 사용하여 초당 200개의 연결을 초과합니다.
동일한 인증 토큰을 사용하는 연결은 제한되지 않습니다. 가능하면 인증 토큰을 재사용하는 것이 좋습니다.
-
-
현재 IAM 데이터베이스 인증은 모든 전역 조건 컨텍스트 키를 지원하지 않습니다.
전역 조건 컨텍스트 키에 대한 자세한 내용은 IAM 사용 설명서의 AWS 전역 조건 컨텍스트 키를 참조하세요.
-
PostgreSQL의 경우 IAM 역할(
rds_iam
)이 사용자(마스터 사용자 RDS 포함)에 추가되면 IAM 인증이 암호 인증보다 우선하므로, 사용자는 IAM 사용자로 로그인해야 합니다. -
Aurora PostgreSQL의 경우 IAM 인증을 사용하여 복제 연결을 설정할 수 없습니다.
-
인증 토큰을 생성할 때는 DB 클러스터 엔드포인트 대신 사용자 지정 Route 53 DNS 레코드를 사용할 수 없습니다.
-
CloudWatch와 CloudTrail은 IAM 인증을 로깅하지 않습니다. 이러한 서비스는 데이터베이스 연결을 활성화하도록 IAM 역할을 승인하는
generate-db-auth-token
API 직접 호출을 추적하지 않습니다.
IAM 데이터베이스 인증에 대한 권장 사항
IAM 데이터베이스 인증을 사용할 경우 다음을 따르는 게 좋습니다.
-
애플리케이션에 초당 200개 미만의 새 IAM 데이터베이스 인증 연결이 필요한 경우에는 IAM 데이터베이스 인증 방식을 사용합니다.
Amazon Aurora에서 작동하는 데이터베이스 엔진은 초당 인증 횟수에 제한이 없습니다. 하지만 IAM 데이터베이스 인증 방식을 사용할 때는 애플리케이션이 인증 토큰을 생성해야 합니다. 이렇게 생성된 토큰은 애플리케이션이 DB 클러스터에 연결하는 데 사용됩니다. 초당 허용되는 새 연결의 최대 수를 초과하면 IAM 데이터베이스 인증에 오버헤드가 추가로 발생하여 연결 병목 현상이 발생할 수 있습니다.
지속적인 연결 생성을 줄이려면 애플리케이션에서 연결 풀링을 사용하는 것이 좋습니다. 이렇게 하면 IAM DB 인증으로 인한 오버헤드를 줄이고 애플리케이션이 기존 연결을 재사용할 수 있습니다. 또는 이러한 사용 사례에 RDS 프록시를 사용하는 것도 좋습니다. RDS 프록시에는 추가 비용이 부과됩니다. RDS 프록시 요금
을 참조하세요. IAM 데이터베이스 인증 토큰의 크기는 IAM 태그 수, IAM 서비스 정책, ARN 길이, 기타 IAM 및 데이터베이스 속성 등 여러 요소에 따라 달라집니다. 이 토큰의 최소 크기는 일반적으로 약 1KB지만 더 클 수도 있습니다. 이 토큰은 IAM 인증을 사용하는 데이터베이스에 대한 연결 문자열에서 암호로 사용되므로 데이터베이스 드라이버(예: ODBC) 및/또는 어떤 도구도 크기로 인해 이 토큰을 제한하거나 자르지 않도록 해야 합니다. 토큰이 잘리면 데이터베이스와 IAM에서 수행하는 인증 검증이 실패합니다.
-
IAM 데이터베이스 인증 토큰을 생성할 때 임시 보안 인증 정보를 사용하는 경우, IAM 데이터베이스 인증 토큰을 사용하여 연결을 요청할 때 임시 보안 인증 정보가 여전히 유효해야 합니다.
지원되지 않는 AWS 전역 조건 컨텍스트 키
IAM 데이터베이스 인증은 다음과 같은 AWS 전역 조건 컨텍스트 키의 하위 집합을 지원하지 않습니다.
-
aws:Referer
-
aws:SourceIp
-
aws:SourceVpc
-
aws:SourceVpce
-
aws:UserAgent
-
aws:VpcSourceIp
자세한 내용은 IAM 사용 설명서의 AWS 글로벌 조건 컨텍스트 키를 참조하세요.