이 페이지에서는 Cloud SQL 인스턴스에 맞춤 도메인 이름 시스템(DNS) 이름을 설정하는 방법을 설명합니다.
개요
애플리케이션이 조직에서 관리하는 맞춤 DNS 이름을 사용하여 연결할 수 있도록 Cloud SQL 인스턴스를 구성할 수 있습니다. IP 주소를 사용하는 대신 커스텀 DNS 이름을 사용하여 Cloud SQL 인스턴스에 연결하려면 커스텀 주체 대체 이름 (SAN)을 구성합니다. 인스턴스를 만들거나 업데이트할 때 맞춤 SAN을 구성할 수 있습니다.
인스턴스에 커스텀 DNS 이름을 커스텀 SAN 구성으로 추가하면 Cloud SQL은 인스턴스의 서버 인증서 SAN 필드에 커스텀 DNS 이름을 삽입합니다. 이 맞춤설정을 사용하면 호스트 이름 검증을 통해 커스텀 DNS 이름을 안전하게 사용할 수 있습니다.
커스텀 SAN 구성에 쉼표로 구분된 커스텀 DNS 이름 목록을 최대 3개까지 추가할 수 있습니다. 보안상의 이유로 서버 CA 모드로 CUSTOMER_MANAGED_CAS_CA
로 구성한 인스턴스에만 커스텀 SAN 구성을 사용할 수 있습니다.
인스턴스의 맞춤 DNS 이름을 구성한 후에는 이 맞춤 DNS 이름을 사용하여 Cloud SQL 언어 커넥터 및 Cloud SQL 인증 프록시를 비롯한 데이터베이스 클라이언트 또는 애플리케이션을 연결할 수 있습니다.
워크플로
인스턴스의 맞춤 DNS 이름을 설정하려면 다음 단계를 따르세요.
- 고객 관리 CA로 구성된 인스턴스를 만듭니다.
- 인스턴스에 맞춤 SAN 값을 추가합니다. 커스텀 SAN 값이 인스턴스 서버 인증서의 SAN 필드에 삽입됩니다.
- 인스턴스의 IP 주소를 확인합니다.
- 인스턴스에 대한 맞춤 DNS 레코드를 만듭니다.
- 맞춤 DNS 이름을 사용하여 인스턴스에 연결합니다.
시작하기 전에
인스턴스에 맞춤 DNS 이름을 설정하기 전에 필요한 역할과 권한이 있는지 확인하세요.
새 Cloud SQL 인스턴스를 만드는 경우 커스텀 SAN을 사용하려면 인스턴스의 서버 CA 모드에 고객 관리 인증 기관 (CA)도 사용해야 합니다.
맞춤 SAN 값으로 인스턴스 만들기
커스텀 SAN 값으로 인스턴스를 만들려면 다음 gcloud sql instances create
명령어를 사용합니다.
gcloud
gcloud sql instances create "INSTANCE_NAME" \ --database-version=DATABASE_VERSION \ --project=PROJECT_ID \ --region=REGION \ --server-ca-mode=CUSTOMER_MANAGED_CAS_CA \ --server-ca-pool=projects/PROJECT_ID_CAS/locations/REGION/caPools/CA_POOL_ID --custom-subject-alternative-names=CUSTOM_DNS_NAME
다음을 바꿉니다.
INSTANCE_NAME
을 만들려는 Cloud SQL 인스턴스의 이름으로 바꿉니다.DATABASE_VERSION
을 만들려는 Cloud SQL 인스턴스의 버전enum
로 바꿉니다.PROJECT_ID
를 Cloud SQL 인스턴스를 만들려는 프로젝트의 ID로 바꿉니다.PROJECT_ID_CAS
를 CA_POOL_ID를 만든 프로젝트의 ID로 바꿉니다. 이 프로젝트는 Cloud SQL 인스턴스를 만들려는 프로젝트와 같거나 다를 수 있습니다.REGION
을 CA 풀을 만든 리전으로 바꿉니다. 인스턴스를 CA 풀과 동일한 리전에 만들어야 합니다.CA_POOL_ID
를 생성된 CA 풀의 ID로 바꿉니다.CUSTOM_DNS_NAME
: 최대 3개의 맞춤 DNS 이름을 쉼표로 구분하고 값 사이에 공백을 두지 않습니다. 예를 들면develop.example.com,test.example.com,production.example.com
입니다.
인스턴스의 맞춤 SAN 값 추가 또는 업데이트
기존 인스턴스의 맞춤 SAN 값을 추가하거나 업데이트하려면 다음 단계를 따르세요.
gcloud
gcloud sql instances patch INSTANCE_NAME \ --custom-subject-alternative-names=CUSTOM_DNS_NAME
다음을 바꿉니다.
INSTANCE_NAME
을 업데이트하려는 Cloud SQL 인스턴스의 이름으로 바꿉니다.- 최대 3개의 맞춤 DNS 이름이 있는
CUSTOM_DNS_NAME
. 값 사이에 공백 없이 쉼표로 구분됩니다. 예를 들면develop.example.com,new-test.example.com,production.example.com
입니다.
인스턴스에서 모든 커스텀 SAN 값 삭제
인스턴스에서 모든 커스텀 SAN 값을 삭제하려면 다음을 실행합니다.
gcloud
gcloud sql instances patch INSTANCE_NAME \ --clear-custom-subject-alternative-names
INSTANCE_NAME
을 업데이트할 Cloud SQL 인스턴스의 이름으로 바꿉니다.
맞춤 DNS 레코드 만들기
클라이언트와 애플리케이션에서 커스텀 DNS 이름을 사용하여 인스턴스에 연결하려면 먼저 DNS 이름과 IP 주소 간에 매핑을 설정합니다. 이러한 매핑을 DNS 확인이라고 합니다. 비공개로 연결하는 경우 해당 가상 프라이빗 클라우드 (VPC) 네트워크의 비공개 DNS 영역에서 DNS 레코드를 만듭니다.
인스턴스에 맞춤 DNS 레코드를 만들려면 다음 단계를 따르세요.
인스턴스의 IP 주소를 가져옵니다. 다음 명령어를 실행합니다.
gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
다음을 바꿉니다.
- INSTANCE_NAME: Cloud SQL 인스턴스의 이름
- PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
응답에서
ipAddresses:
필드를 찾습니다.예를 들면 다음과 같습니다.
ipAddresses: - ipAddress: 192.0.2.4 type: PRIVATE
비공개 서비스 액세스, Private Service Connect 또는 둘 다에 대해 구성된 인스턴스의 비공개 IP 주소를 검색할 수 있습니다.
애플리케이션에서 사용하는 DNS 영역에 DNS 레코드 2개를 추가합니다. 직접 관리하는 DNS 서버 또는 애플리케이션에서 사용하는 Cloud DNS 비공개 영역을 사용할 수 있습니다.
- 인스턴스의 IP 주소에 대한
A
레코드 만들기 - 인스턴스 연결 이름이 포함된
TXT
레코드를 만듭니다.
표준 데이터베이스 클라이언트는
A
레코드를 사용하여 연결할 IP 주소를 조회합니다. Cloud SQL 언어 커넥터와 Cloud SQL 인증 프록시는TXT
레코드를 사용하여 인스턴스 연결 이름을 조회합니다.예를 들어 인스턴스의 연결 문자열은
my-project:region:my-instance
이지만 DNS 이름prod-db.mycompany.example.com
을 사용하여 연결하려고 합니다. 회사 네트워크의 인스턴스 IP 주소가192.0.2.4
인 경우 다음 DNS 레코드를 만듭니다.Record type: A Name: prod-db.mycompany.example.com Value: 192.0.2.4 TTL: 600 Record type: TXT Name: prod-db.mycompany.example.com Value: my-project:region:my-instance TTL: 600
- 인스턴스의 IP 주소에 대한
맞춤 DNS 이름을 사용하여 인스턴스에 연결
PostgreSQL용 Cloud SQL 인스턴스에 연결할 때 맞춤 DNS 이름을 호스트 이름으로 구성하고 클라이언트에서 서버 ID 인증을 사용 설정합니다.예를 들어 psql
클라이언트를 사용하는 경우 sslmode=verify-full
외부 네트워크에서 비공개 Cloud SQL 인스턴스에 연결하는 경우 Cloud SQL 인스턴스와 Virtual Private Cloud (VPC) 네트워크를 구성하여 외부 연결을 허용하고 Cloud DNS가 온프레미스 시스템과 통신하도록 허용해야 합니다. 이 구성에 관한 자세한 내용은 외부 소스에서 연결 및 온프레미스 시스템의 DNS 구성을 참고하세요.
제한사항
- Cloud SQL 인스턴스의 서버 인증서에 DNS 이름을 커스텀 SAN 값으로 4개 이상 추가할 수 없습니다.
- 인스턴스의 커스텀 SAN 값으로 인증서에 추가할 수 있는 DNS 이름의 최대 길이는 253자(영문 기준)입니다.
- 인스턴스 인증서에 추가하는 DNS 이름에는 와일드 카드 문자 (
*
) 또는 마침표를 사용할 수 없습니다. 예를 들어test.example.com.
는 허용되지 않습니다. - DNS 이름은 RFC 1034에 명시된 대로 유효해야 합니다.
- 커스텀 SAN 값은
CUSTOMER_MANAGED_CAS_CA
인스턴스에만 지정할 수 있습니다.
다음 단계
- Cloud SQL 인스턴스에서 SSL/TLS 관리하기
- Google Cloud에서 암호화가 처리되는 방식에 대해 자세히 알아보기
- SSL/TLS 인증서를 사용하여 Cloud SQL 인스턴스에 연결하기
- PostgreSQL의 SSL/TLS 인증서 사용 방법 자세히 알아보기