RDS Proxy를 통해 데이터베이스에 연결 - Amazon Aurora

RDS Proxy를 통해 데이터베이스에 연결

일반적으로 데이터베이스에 직접 연결하는 것과 동일한 방식으로 프록시를 통해 Aurora DB 또는 Aurora Serverless v2를 사용하는 클러스터에 연결합니다. 가장 큰 차이점은 클러스터 엔드포인트 대신 프록시 엔드포인트를 지정한다는 것입니다. 기본적으로 모든 프록시 연결은 읽기/쓰기 기능이 있으며 라이터 인스턴스를 사용합니다. 읽기 전용 연결에 리더 엔드포인트를 일반적으로 사용하는 경우, 프록시를 위한 추가 읽기 전용 엔드포인트를 생성할 수 있습니다. 이 엔드포인트도 같은 방식으로 사용할 수 있습니다. 자세한 내용은 프록시 엔드포인트 개요 단원을 참조하십시오.

기본 인증을 사용하여 프록시에 연결

기본 인증을 사용하여 프록시에 연결하려면 다음 단계를 사용합니다.

  1. 프록시 엔드포인트를 찾습니다. AWS Management Console에서는 해당 프록시의 세부 정보 페이지에서 엔드포인트를 찾을 수 있습니다. AWS CLI에서는 describe-db-proxies 명령을 사용할 수 있습니다. 다음 예에서는 이 작업을 수행하는 방법을 보여줍니다.

    # Add --output text to get output as a simple tab-separated list. $ aws rds describe-db-proxies --query '*[*].{DBProxyName:DBProxyName,Endpoint:Endpoint}' [ [ { "Endpoint": "the-proxy.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy" }, { "Endpoint": "the-proxy-other-secret.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-other-secret" }, { "Endpoint": "the-proxy-rds-secret.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-rds-secret" }, { "Endpoint": "the-proxy-t3.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-t3" } ] ]
  2. 클라이언트 애플리케이션의 연결 문자열에서 해당 엔드포인트를 호스트 파라미터로 지정합니다. 예를 들어 프록시 엔드포인트를 mysql -h 옵션 또는 psql -h 옵션의 값으로 지정합니다.

  3. 평소와 동일한 데이터베이스 사용자 이름과 암호를 제공합니다.

IAM 인증을 사용하여 프록시에 연결

RDS Proxy에서 IAM 인증을 사용하는 경우 일반 사용자 이름 및 암호로 인증하도록 데이터베이스 사용자를 설정합니다. IAM 인증은 Secrets Manager에서 사용자 이름 및 암호 자격 증명을 검색하는 RDS Proxy에 적용됩니다. RDS 프록시에서 기본 데이터베이스로의 연결은 IAM을 거치지 않습니다.

IAM 인증을 사용하여 RDS 프록시에 연결하려면 IAM 인증을 통해 Aurora DB 클러스터에 연결하는 것과 동일한 일반 연결 프로시저를 따르면 됩니다. IAM 사용에 대한 일반적인 정보는 Amazon Aurora의 보안 섹션을 참조하세요.

RDS Proxy에 대한 IAM 사용의 주요 차이점은 다음과 같습니다.

  • 권한 부여 플러그인으로 각 개별 데이터베이스 사용자를 구성하지 않습니다. 데이터베이스 사용자는 여전히 데이터베이스 내에서 일반 사용자 이름과 암호를 가지고 있습니다. 이러한 사용자 이름과 암호를 포함하는 Secrets Manager 비밀을 설정하고 RDS Proxy가 Secrets Manager에서 자격 증명을 검색할 수 있는 권한을 부여합니다.

    IAM 인증은 클라이언트 프로그램과 프록시 간의 연결에 적용됩니다. 그런 다음 프록시는 Secrets Manager에서 검색된 사용자 이름 및 암호 자격 증명을 사용하여 데이터베이스에 대해 인증합니다.

  • 인스턴스, 클러스터 또는 리더 엔드포인트 대신 프록시 엔드포인트를 지정합니다. 프록시 엔드포인트에 대한 자세한 내용은 IAM 인증을 사용하여 DB 클러스터에 연결 단원을 참조하십시오.

  • 직접 데이이터베이스 IAM 인증의 경우 데이터베이스 사용자를 선택적으로 선택하고 특수 인증 플러그인으로 식별되도록 구성합니다. 그런 다음 IAM 인증을 사용하여 해당 사용자에게 연결할 수 있습니다.

    프록시 사용 사례에서는 일부 사용자의 사용자 이름과 암호(기본 인증)가 포함된 암호를 프록시에 제공해야 합니다. 그런 다음 IAM 인증을 사용하여 프록시에 연결합니다. 여기서는 데이터베이스 엔드포인트가 아닌 프록시 엔드포인트로 인증 토큰을 생성하여 이를 수행합니다. 또한 제공한 암호의 사용자 이름 중 하나와 일치하는 사용자 이름을 사용합니다.

  • IAM 인증을 사용하여 프록시에 연결할 때는 전송 계층 보안(TLS)/보안 소켓 계층(SSL)을 사용해야 합니다.

IAM 정책을 수정하여 특정 사용자에게 프록시에 대한 액세스 권한을 부여할 수 있습니다. 예를 들면 다음과 같습니다.

"Resource": "arn:aws:rds-db:us-east-2:1234567890:dbuser:prx-ABCDEFGHIJKL01234/db_user"

PostgreSQL을 사용하여 프록시에 연결할 때 고려할 사항

PostgreSQL의 경우 클라이언트가 PostgreSQL 데이터베이스에 대한 연결을 시작하면 시작 메시지를 전송합니다. 이 메시지에는 파라미터 이름과 값 문자열의 쌍이 포함됩니다. 자세한 내용은 PostgreSQL 설명서에서 PostgreSQL 메시지 형식StartupMessage를 참조하십시오.

RDS 프록시를 통해 연결할 때 시작 메시지에는 현재 인식되는 다음과 같은 파라미터가 포함될 수 있습니다.

  • user

  • database

시작 메시지에는 다음과 같은 추가 런타임 파라미터가 포함될 수도 있습니다.

PostgreSQL 메시징에 대한 자세한 내용은 PostgreSQL 설명서의 프런트 엔드/백엔드 프로토콜을 참조하십시오.

PostgreSQL의 경우 JDBC를 사용한다면 고정을 피하기 위해 다음을 사용하는 것이 좋습니다.

  • 고정을 방지하려면 JDBC 연결 파라미터 assumeMinServerVersion9.0 이상으로 설정합니다. 이렇게 하면 SET extra_float_digits = 3을 실행할 때 JDBC 드라이버가 연결 시작 중에 추가 왕복을 수행하지 못합니다.

  • 고정을 방지하려면 JDBC 연결 파라미터 ApplicationNameany/your-application-name으로 설정합니다. 이렇게 하면 SET application_name = "PostgreSQL JDBC Driver"을 실행할 때 JDBC 드라이버가 연결 시작 중에 추가 왕복을 수행하지 못합니다. JDBC 파라미터는 ApplicationName이지만 PostgreSQL StartupMessage 파라미터는 application_name입니다.

자세한 내용은 고정 방지 단원을 참조하십시오. JDBC를 사용한 연결에 대한 자세한 내용은 PostgreSQL 설명서의 데이터베이스에 연결을 참조하십시오.