AlloyDB 인증 프록시 정보

이 페이지에서는 AlloyDB 데이터베이스에 대해 승인된 암호화 연결을 생성할 수 있게 해주는 커넥터인 AlloyDB 인증 프록시에 대한 개요를 제공합니다.

인증 프록시 사용에 대한 단계별 안내는 AlloyDB 인증 프록시를 사용하여 연결을 참조하세요.

AlloyDB 인증 프록시 사용의 이점

인증 프록시를 사용하면 클라이언트를 AlloyDB 데이터베이스에 직접 연결하는 것보다 다음과 같은 이점이 있습니다.

  • IAM 기반 연결 승인(AuthZ): 인증 프록시는 Identity and Access Management(IAM) 주 구성원의 사용자 인증 정보와 권한을 사용하여 AlloyDB 인스턴스에 대한 연결을 승인합니다.

  • 보안 암호화 통신: 인증 프록시는 클라이언트와 AlloyDB 인스턴스 간에 TLS 1.3과 256비트 AES 암호화를 사용하여 연결을 자동으로 생성, 사용, 유지하며 클라이언트 및 서버 ID를 확인하고 데이터 트래픽을 암호화합니다.

AlloyDB 인스턴스 연결에 대한 자세한 내용은 연결 개요를 참조하세요.

AlloyDB 인증 프록시 작동 방식

AlloyDB 인증 프록시는 로컬 환경에서 로컬 클라이언트가 실행되는 방식으로 작동합니다. 애플리케이션은 데이터베이스에서 사용하는 표준 데이터베이스 프로토콜을 통해 AlloyDB 인증 프록시와 통신합니다.

AlloyDB 인증 프록시는 서버에서 실행되는 컴패니언 프로세스와 통신하기 위해 보안 터널(TLS 1.3, 256비트 AES 암호화)을 사용합니다. AlloyDB 인증 프록시를 통해 설정되는 각 연결은 AlloyDB 인스턴스로의 단일 연결을 만듭니다.

애플리케이션이 AlloyDB 인증 프록시에 연결할 때 인증 프록시는 AlloyDB 인스턴스와의 기존 연결을 사용할 수 있는지 여부를 확인합니다. 연결이 없으면 AlloyDB Admin API를 호출하여 임시 SSL 인증서를 발급받아 AlloyDB에 연결하는 데 사용합니다. 임시 SSL 인증서는 24시간 후에 만료됩니다. AlloyDB 인증 프록시는 만료되기 전에 이 인증서를 새로고침합니다.

AlloyDB 인증 프록시는 HTTPS를 사용하여 도메인 이름 alloydb.googleapis.com를 통해 API를 호출합니다. 따라서 클라이언트 머신의 방화벽은 포트 443(HTTPS)에서 나가는 모든 이그레스 TCP 연결을 허용해야 합니다.

AlloyDB 인증 프록시는 어떤 포트에서든 리슨할 수 있지만 AlloyDB 인스턴스로 나가는 발신 또는 이그레스 연결은 항상 포트 5433을 사용합니다. 클라이언트 호스트에 아웃바운드 방화벽이 있는 경우 AlloyDB 인스턴스의 IP 주소의 포트 5433으로의 연결을 허용해야 합니다. 또한 클라이언트 호스트는 모든 IP 주소의 443번 표준 HTTPS 포트로의 연결도 허용해야 합니다.

AlloyDB 인증 프록시가 IAM 주 구성원을 승인하는 방법

클라이언트의 AlloyDB 인스턴스 연결을 승인하기 위해 인증 프록시 클라이언트는 클라이언트에 있는 IAM 주 구성원 사용자 인증 정보를 사용하여 Google Cloud 에 인증을 수행한 뒤, 해당 IAM 주 구성원이 Cloud AlloyDB 클라이언트(roles/alloydb.client)와 서비스 사용량 소비자(roles/serviceusage.serviceUsageConsumer) IAM 역할을 가지고 있는지 확인합니다.

클라이언트에서 IAM 사용자 인증 정보를 찾기 위해 인증 프록시 클라이언트는 다음 항목들을 차례로 확인하며, 발견되는 첫 번째 항목을 사용하여 Google Cloud에 인증을 시도합니다.

  1. --credentials-file 플래그로 제공된 사용자 인증 정보

    서비스 계정을 사용하여 연결된 JSON 키 파일을 만들어 다운로드하고 인증 프록시 클라이언트를 시작할 때 --credentials-file 플래그를 해당 파일 경로로 설정합니다. 이 서비스 계정은 AlloyDB 인스턴스에 대해 Cloud AlloyDB 클라이언트(roles/alloydb.client)와 서비스 사용량 소비자(roles/serviceusage.serviceUsageConsumer) IAM 역할을 갖고 있어야 합니다.

    명령줄에서 이 옵션을 사용하려면 --credentials-file 플래그가 JSON 사용자 인증 정보 파일의 경로와 파일 이름으로 설정된 alloydb-auth-proxy 명령어를 호출합니다. 경로는 절대적이거나 현재 작업 디렉터리를 기준으로 할 수 있습니다.

  2. --token 플래그로 제공되는 사용자 인증 정보

    액세스 토큰을 만들고 --token 플래그와 함께 alloydb-auth-proxy 명령어를 호출하여 OAuth 2.0 액세스 토큰으로 설정합니다.

  3. 환경 변수로 제공되는 사용자 인증 정보

    이 옵션은 --credentials-file 플래그를 사용하는 것과 유사하지만, --credentials-file 플래그를 사용하는 대신 GOOGLE_APPLICATION_CREDENTIALS 환경 변수에 설정한 JSON 사용자 인증 정보 파일을 지정합니다.

  4. 인증된 Google Cloud CLI 클라이언트의 사용자 인증 정보

    gcloud CLI를 설치하고 개인 계정으로 인증한 경우 --gcloud-auth 플래그를 사용 설정하면 인증 프록시 클라이언트에서 동일한 계정 사용자 인증 정보를 사용할 수 있습니다. 이 방법은 특히 개발 환경을 준비하고 실행하는 데 유용합니다.

    gcloud auth login에 대해 선택된 계정이 없으면 인증 프록시 클라이언트는 gcloud auth application-default login으로 선택된 계정을 확인합니다. --gcloud-auth 플래그를 사용 설정하지 않은 경우 이것이 기본 동작입니다.

  5. Compute Engine 인스턴스에 연결된 사용자 인증 정보

    Compute Engine 인스턴스에서 AlloyDB에 연결하는 경우 인증 프록시 클라이언트는 Compute Engine 인스턴스와 연결된 서비스 계정을 사용할 수 있습니다. 이 서비스 계정이 AlloyDB 인스턴스에 대해 Cloud AlloyDB 클라이언트(roles/alloydb.client) 및 서비스 사용량 소비자(roles/serviceusage.serviceUsageConsumer) Identity and Access Management(IAM) 역할을 가지고 있으면, 인증 프록시 클라이언트가 정상적으로 인증됩니다.

    Compute Engine 인스턴스가 AlloyDB 인스턴스와 동일한 프로젝트에 있으면, Compute Engine 인스턴스의 기본 서비스 계정에는 프록시를 인증하는 데 필요한 권한이 기본적으로 부여되어 있습니다. 두 인스턴스가 서로 다른 프로젝트에 있는 경우 Compute Engine 인스턴스의 서비스 계정을 AlloyDB 인스턴스가 포함된 프로젝트에 추가해야 합니다.

  6. 환경의 기본 서비스 계정

    인증 프록시 클라이언트가 위의 위치 어디에서도 사용자 인증 정보를 찾지 못하면, 서비스 계정으로 인증에 설명된 로직을 따릅니다. 일부 환경(예: Compute Engine, App Engine 등)은 애플리케이션이 기본적으로 인증하는 데 사용할 수 있는 기본 서비스 계정을 제공합니다. 기본 서비스 계정을 사용하는 경우 Cloud AlloyDB 클라이언트(roles/alloydb.client) 및 서비스 사용량 소비자(roles/serviceusage.serviceUsageConsumer) IAM 역할을 가지고 있어야 합니다.

    Google Cloud의 인증 방식에 대한 자세한 내용은 인증 개요를 참조하세요.

다음 단계