MariaDB, MySQL, PostgreSQL용 IAM 데이터베이스 인증

MariaDB, MySQL, PostgreSQL용 IAM 데이터베이스 인증

AWS Identity and Access Management(IAM) 데이터베이스 인증을 사용해 DB 인스턴스에 인증할 수 있어요. IAM 데이터베이스 인증은 MariaDB, MySQL, PostgreSQL과 함께 작동해요. 이 인증 방법을 쓰면 DB 인스턴스에 연결할 때 암호를 사용할 필요 없이 인증 토큰(authentication token)으로 대신해요.

출처: 문서

본문

AWS Identity and Access Management(IAM) 데이터베이스 인증을 사용해 DB 인스턴스에 인증할 수 있어요. IAM 데이터베이스 인증은 MariaDB, MySQL, PostgreSQL과 함께 작동해요. 이 인증 방법을 사용하면 DB 인스턴스에 연결할 때 암호를 사용할 필요가 없어요. 대신 인증 토큰(authentication token)을 사용해요.

인증 토큰은 Amazon RDS가 요청 시 생성하는 고유한 문자열이에요. 인증 토큰은 AWS Signature Version 4를 사용해 생성돼요. 각 토큰의 수명은 15분이에요. 인증이 IAM을 사용해 외부에서 관리되므로 데이터베이스에 사용자 자격 증명을 저장할 필요가 없어요. 물론 표준 데이터베이스 인증도 계속 사용할 수 있어요. 토큰은 인증에만 사용되며 세션이 설정된 후에는 세션에 영향을 주지 않아요.

IAM 데이터베이스 인증은 다음과 같은 이점을 제공해요.

  • 데이터베이스로 들어오고 나가는 네트워크 트래픽이 Secure Socket Layer(SSL) 또는 Transport Layer Security(TLS)를 사용해 암호화돼요. Amazon RDS에서 SSL/TLS를 사용하는 방법에 대한 자세한 내용은 "SSL/TLS를 사용해 DB 인스턴스 또는 클러스터로의 연결 암호화" 문서를 참고하세요.
  • 각 DB 인스턴스에서 개별적으로 접근을 관리하는 대신 IAM을 사용해 데이터베이스 리소스에 대한 접근을 중앙에서 관리할 수 있어요.
  • Amazon EC2에서 실행되는 애플리케이션의 경우 암호 대신 EC2 인스턴스에 특정된 프로파일 자격 증명을 사용해 데이터베이스에 접근해 더 큰 보안을 얻을 수 있어요.
  • 일반적으로 애플리케이션 코드에서 사용자 이름과 암호를 직접 관리하고 싶지 않을 때 IAM 데이터베이스 인증을 사용하는 것을 고려해요.

Amazon Web Services(AWS) JDBC Driver는 IAM 데이터베이스 인증을 지원해요. 자세한 내용은 Amazon Web Services(AWS) JDBC Driver GitHub 저장소의 "AWS IAM Authentication Plugin"을 참고하세요.

Amazon Web Services(AWS) Python Driver도 IAM 데이터베이스 인증을 지원해요. 자세한 내용은 Amazon Web Services(AWS) Python Driver GitHub 저장소의 "AWS IAM Authentication Plugin"을 참고하세요.

다음 주제들을 따라가며 DB 인증을 위해 IAM을 설정하는 과정을 배울 수 있어요.

  • IAM 데이터베이스 인증 활성화 및 비활성화
  • IAM 데이터베이스 접근을 위한 IAM 정책 생성 및 사용
  • IAM 인증을 사용한 데이터베이스 계정 생성
  • IAM 인증을 사용해 DB 인스턴스에 연결

리전 및 버전 가용성

기능 가용성과 지원은 각 데이터베이스 엔진의 특정 버전에 따라 달라져요. Amazon RDS 및 IAM 데이터베이스 인증에서 엔진, 버전 및 리전 가용성에 대한 자세한 내용은 "Amazon RDS에서 IAM 데이터베이스 인증을 위한 지원 리전 및 DB 엔진" 문서를 참고하세요.

CLI 및 SDK 지원

IAM 데이터베이스 인증은 AWS CLI와 다음 언어별 AWS SDK에서 사용할 수 있어요.

  • AWS SDK for .NET
  • AWS SDK for C++
  • AWS SDK for Go
  • AWS SDK for Java
  • AWS SDK for JavaScript
  • AWS SDK for PHP
  • AWS SDK for Python (Boto3)
  • AWS SDK for Ruby

IAM 데이터베이스 인증의 제한 사항

IAM 데이터베이스 인증을 사용할 때 다음 제한 사항이 적용돼요.

  • 현재 IAM 데이터베이스 인증은 모든 전역 조건 컨텍스트 키를 지원하지 않아요. 전역 조건 컨텍스트 키에 대한 자세한 내용은 IAM 사용자 가이드의 "AWS 전역 조건 컨텍스트 키" 문서를 참고하세요.
  • PostgreSQL의 경우 IAM 역할(rds_iam)이 사용자(RDS 마스터 사용자 포함)에 추가되면 IAM 인증이 암호 인증보다 우선하므로 사용자는 IAM 사용자로 로그인해야 해요.
  • PostgreSQL의 경우 Amazon RDS는 IAM과 Kerberos 인증 방법을 동시에 활성화하는 것을 지원하지 않아요.
  • PostgreSQL의 경우 IAM 인증을 사용해 복제 연결을 설정할 수 없어요.
  • DB 인스턴스 엔드포인트 대신 사용자 지정 Route 53 DNS 레코드를 사용해 인증 토큰을 생성할 수 없어요.
  • CloudWatch와 CloudTrail은 IAM 인증을 로그하지 않아요. 이 서비스들은 IAM 역할에 데이터베이스 연결 자격을 부여하는 generate-db-auth-token API 호출을 추적하지 않아요.
  • IAM DB 인증은 데이터베이스 인스턴스에 컴퓨팅 리소스를 요구해요. 안정적인 연결을 위해 데이터베이스에 300~1000MiB의 추가 메모리가 있어야 해요. 워크로드에 필요한 메모리를 확인하려면 IAM DB 인증 활성화 전후에 Enhanced Monitoring 프로세스 목록의 RDS 프로세스 RES 열을 비교해보세요. RDS 콘솔에서 OS 메트릭 보기를 참고하세요.
  • 버스트 가능(burstable) 클래스 인스턴스를 사용한다면 버퍼와 캐시 같은 다른 파라미터가 사용하는 메모리를 같은 양만큼 줄여 메모리 부족을 방지해요.
  • IAM DB 인증은 모든 엔진에서 RDS on Outposts를 지원하지 않아요.

IAM 데이터베이스 인증에 대한 권장 사항

IAM 데이터베이스 인증을 사용할 때 다음을 권장해요.

  • 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 전역 조건 컨텍스트 키" 문서를 참고하세요.

더 알아보기 (Learn more)