RDS Proxy를 통해 데이터베이스에 연결
프록시를 통해 또는 데이터베이스에 연결하여 RDS DB 인스턴스에 연결하는 방법은 일반적으로 동일합니다. 자세한 내용은 프록시 엔드포인트 개요 단원을 참조하십시오.
주제
기본 인증을 사용하여 프록시에 연결
기본 인증을 사용하여 프록시에 연결하려면 다음 단계를 사용합니다.
-
프록시 엔드포인트를 찾습니다. 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" } ] ]
-
클라이언트 애플리케이션의 연결 문자열에서 해당 엔드포인트를 호스트 파라미터로 지정합니다. 예를 들어 프록시 엔드포인트를
mysql -h
옵션 또는psql -h
옵션의 값으로 지정합니다. -
평소와 동일한 데이터베이스 사용자 이름과 암호를 제공합니다.
IAM 인증을 사용하여 프록시에 연결
RDS Proxy에서 IAM 인증을 사용하는 경우 일반 사용자 이름 및 암호로 인증하도록 데이터베이스 사용자를 설정합니다. IAM 인증은 Secrets Manager에서 사용자 이름 및 암호 자격 증명을 검색하는 RDS Proxy에 적용됩니다. RDS 프록시에서 기본 데이터베이스로의 연결은 IAM을 거치지 않습니다.
IAM 인증을 사용하여 RDS 프록시에 연결하려면 IAM 인증을 통해 RDS DB 인스턴스에 연결하는 것과 동일한 일반 연결 프로시저를 따르면 됩니다. IAM 사용에 대한 일반적인 정보는 Amazon RDS의 보안 섹션을 참조하세요.
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"
Microsoft SQL Server를 사용하여 프록시에 연결할 때 고려할 사항
IAM 인증을 사용하여 프록시에 연결하는 경우에는 암호 필드를 사용하지 않습니다. 대신 토큰 필드에 각 데이터베이스 드라이버 유형에 적합한 토큰 속성을 제공합니다. 예를 들어, JDBC의 경우 accessToken
속성을 사용하고 ODBC의 경우 sql_copt_ss_access_token
속성을 사용합니다. 또는 .NET.SqlClient 드라이버의 AccessToken
속성을 사용합니다. 토큰 속성을 지원하지 않는 클라이언트에는 IAM 인증을 사용할 수 없습니다.
일부 조건에서는 프록시가 데이터베이스 연결을 공유할 수 없고 대신 클라이언트 애플리케이션의 프록시 연결을 전용 데이터베이스 연결에 고정할 수 있습니다. 이러한 조건에 대한 자세한 내용은 RDS 프록시 고정 방지를 참조하세요.
PostgreSQL을 사용하여 프록시에 연결할 때 고려할 사항
PostgreSQL의 경우 클라이언트가 PostgreSQL 데이터베이스에 대한 연결을 시작하면 시작 메시지를 전송합니다. 이 메시지에는 파라미터 이름과 값 문자열의 쌍이 포함됩니다. 자세한 내용은 PostgreSQL 설명서에서 PostgreSQL 메시지 형식StartupMessage
를 참조하십시오.
RDS 프록시를 통해 연결할 때 시작 메시지에는 현재 인식되는 다음과 같은 파라미터가 포함될 수 있습니다.
-
user
-
database
시작 메시지에는 다음과 같은 추가 런타임 파라미터가 포함될 수도 있습니다.
PostgreSQL 메시징에 대한 자세한 내용은 PostgreSQL 설명서의 프런트 엔드/백엔드 프로토콜
PostgreSQL의 경우 JDBC를 사용한다면 고정을 피하기 위해 다음을 사용하는 것이 좋습니다.
-
고정을 방지하려면 JDBC 연결 파라미터
assumeMinServerVersion
을9.0
이상으로 설정합니다. 이렇게 하면SET extra_float_digits = 3
을 실행할 때 JDBC 드라이버가 연결 시작 중에 추가 왕복을 수행하지 못합니다. -
고정을 방지하려면 JDBC 연결 파라미터
ApplicationName
을
으로 설정합니다. 이렇게 하면any/your-application-name
SET application_name = "PostgreSQL JDBC Driver"
을 실행할 때 JDBC 드라이버가 연결 시작 중에 추가 왕복을 수행하지 못합니다. JDBC 파라미터는ApplicationName
이지만 PostgreSQLStartupMessage
파라미터는application_name
입니다.
자세한 내용은 RDS 프록시 고정 방지 단원을 참조하십시오. JDBC를 사용한 연결에 대한 자세한 내용은 PostgreSQL 설명서의 데이터베이스에 연결