이 페이지에서는 AlloyDB 인증 프록시를 설정하고 사용하여 AlloyDB 인스턴스에 승인되고 암호화된 연결을 만드는 방법을 보여줍니다. 인증 프록시의 개념 개요는 AlloyDB 인증 프록시 정보를 참고하세요.
AlloyDB 인증 프록시를 사용하려면 일회성 설정 단계를 여러 번 실행한 다음 인증 프록시 클라이언트를 시작하고 이를 사용하여 데이터베이스에 연결합니다.
- 설정 단계:
- 클라이언트 호스트에 인증 프록시 클라이언트를 다운로드합니다.
- 승인에 사용할 Identity and Access Management (IAM) 주 구성원을 선택하고, 필요한 권한이 있는지 확인하고, 사용자 인증 정보가 클라이언트 호스트에서 사용 가능한지 확인합니다.
- 연결할 AlloyDB 인스턴스의 연결 URI를 수집합니다.
- 클라이언트 호스트에서 인증 프록시 클라이언트를 시작합니다.
- 인증 프록시 클라이언트에 대한 로컬 연결을 열어 애플리케이션을 데이터베이스에 연결합니다.
시작하기 전에
-
클라이언트 호스트는 다음 요구사항을 충족해야 합니다.
연결하려는 인스턴스가 있는 가상 프라이빗 클라우드 (VPC) 네트워크에 대한 네트워크 가시성이 있어야 합니다. 이 Virtual Private Cloud(VPC) 네트워크의 클라이언트 호스트 (예: Compute Engine 인스턴스)는 기본적으로 이 가시성을 갖습니다. AlloyDB 인스턴스의 VPC 네트워크가 Cloud VPN 터널 또는 Dedicated Interconnect 또는 Partner Interconnect를 위한 VLAN 연결을 사용하여 외부 네트워크에 연결된 경우 외부 네트워크 (온프레미스 네트워크 또는 다른 VPC 네트워크)의 클라이언트 호스트에 이 가시성이 있습니다.
클라이언트 호스트에 아웃바운드 방화벽 정책이 있는 경우 AlloyDB 인스턴스의 IP 주소에서 포트
5433
로 나가는 연결을 허용하고 모든 IP 주소에서 포트443
(표준 HTTPS 포트)로 나가는 연결을 허용해야 합니다.Compute Engine 인스턴스를 클라이언트 호스트로 사용하는 경우 AlloyDB API를 사용할 수 있도록
https://www.googleapis.com/auth/cloud-platform
액세스 범위가 있어야 합니다. 필요한 경우 이 범위를 포함하도록 액세스 범위를 변경합니다.
인증 프록시 클라이언트 다운로드
인증 프록시 클라이언트를 다운로드할 머신은 VPC 네트워크 내에서 AlloyDB 인스턴스에 연결할지 아니면 외부에서 연결할지에 따라 달라집니다.
비공개 서비스 액세스를 사용하여 클러스터에 연결하려면 클러스터에 대한 비공개 서비스 액세스가 있는 VPC 네트워크 내에서 실행되는 Compute Engine 가상 머신 (VM) 인스턴스에 인증 프록시 클라이언트를 다운로드하면 됩니다.
VPC 외부에서 클러스터에 연결하려면 설치하는 머신이 사용하는 외부 연결 전략에 따라 달라집니다. 예를 들어 애플리케이션에 로컬인 macOS 또는 Windows 머신에 인증 프록시 클라이언트를 설치한 다음 AlloyDB VPC 네트워크 내에서 실행되는 SOCKS 서버를 연결 중개자로 사용할 수 있습니다. 자세한 내용은 VPC 외부에서 클러스터에 연결을 참고하세요.
Linux
64비트 (AMD)
인증 프록시 클라이언트를 다운로드합니다.
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.5/alloydb-auth-proxy.linux.amd64 -O alloydb-auth-proxy
인증 프록시 클라이언트를 실행 가능하도록 합니다.
chmod +x alloydb-auth-proxy
32비트 (AMD)
인증 프록시 클라이언트를 다운로드합니다.
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.5/alloydb-auth-proxy.linux.386 -O alloydb-auth-proxy
인증 프록시 클라이언트를 실행 가능하도록 합니다.
chmod +x alloydb-auth-proxy
64비트 (ARM)
인증 프록시 클라이언트를 다운로드합니다.
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.5/alloydb-auth-proxy.linux.arm64 -O alloydb-auth-proxy
인증 프록시 클라이언트를 실행 가능하도록 합니다.
chmod +x alloydb-auth-proxy
32비트 (ARM)
인증 프록시 클라이언트를 다운로드합니다.
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.5/alloydb-auth-proxy.linux.arm -O alloydb-auth-proxy
인증 프록시 클라이언트를 실행 가능하도록 합니다.
chmod +x alloydb-auth-proxy
macOS
M1
인증 프록시 클라이언트를 다운로드합니다.
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.13.5/alloydb-auth-proxy.darwin.arm64
인증 프록시 클라이언트를 실행 가능하도록 합니다.
chmod +x alloydb-auth-proxy
64비트
인증 프록시 클라이언트를 다운로드합니다.
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.13.5/alloydb-auth-proxy.darwin.amd64
인증 프록시 클라이언트를 실행 가능하도록 합니다.
chmod +x alloydb-auth-proxy
32비트
인증 프록시 클라이언트를 다운로드합니다.
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.13.5/alloydb-auth-proxy.darwin.386
인증 프록시 클라이언트를 실행 가능하도록 합니다.
chmod +x alloydb-auth-proxy
Windows
64비트
https://storage.googleapis.com/alloydb-auth-proxy/v1.13.5/alloydb-auth-proxy-x64.exe를 마우스 오른쪽 버튼으로 클릭하고 다른 이름으로 링크 저장을 선택하여 인증 프록시 클라이언트를 다운로드합니다.
파일 이름을 alloydb-auth-proxy.exe
로 바꿉니다.
32비트
https://storage.googleapis.com/alloydb-auth-proxy/v1.13.5/alloydb-auth-proxy-x86.exe를 마우스 오른쪽 버튼으로 클릭하고 다른 이름으로 링크 저장을 선택하여 인증 프록시 클라이언트를 다운로드합니다.
파일 이름을 alloydb-auth-proxy.exe
로 바꿉니다.
Docker 이미지
편의를 위해 인증 프록시 클라이언트가 포함된 여러 컨테이너 이미지가 Artifact Registry에 제공되고 있습니다.
다음 명령어로 Docker를 사용하여 최신 이미지를 로컬 머신으로 가져올 수 있습니다.
docker pull gcr.io/alloydb-connectors/alloydb-auth-proxy:latest
기타 OS
여기에 포함되지 않은 다른 운영체제의 경우 소스에서 인증 프록시 클라이언트를 컴파일하면 됩니다.
IAM 주 구성원을 선택하고 승인을 위해 준비합니다.
AlloyDB 인증 프록시는 이러한 유형의 IAM 보안 주체를 사용하여 클라이언트와 AlloyDB 인스턴스 간의 연결을 승인하는 것을 지원합니다.
사용자 관리 서비스 계정 애플리케이션의 IAM 서비스 계정을 만들고 이를 사용하여 연결을 승인할 수 있습니다.
프로덕션 환경에서는 승인에 서비스 계정을 사용하는 것이 좋습니다.
사용자 계정 자체 IAM 사용자 계정을 사용하여 연결을 승인할 수 있습니다.
자체 사용자 계정을 사용하는 것은 gcloud CLI를 사용하여 AlloyDB 리소스를 관리하고,
psql
와 같은 도구를 사용하여 데이터베이스를 개발하고, 동일한 호스트에서 애플리케이션 코드를 개발하는 개발 환경에서 편리합니다.Compute Engine 기본 서비스 계정 클라이언트 호스트가 Compute Engine 인스턴스인 경우 Compute Engine 기본 서비스 계정을 사용하여 연결을 승인할 수 있습니다.
사용할 IAM 주 구성원을 선택한 후에는 필요한 IAM 권한이 있는지 확인하고 사용자 인증 정보가 클라이언트 호스트에서 사용 가능한지 확인해야 합니다.
필수 IAM 권한
연결을 승인하는 데 사용하는 IAM 주 구성원에게는 roles/alloydb.client
(Cloud AlloyDB 클라이언트) 및 roles/serviceusage.serviceUsageConsumer
(서비스 사용량 소비자) 사전 정의된 역할에서 제공하는 권한이 있어야 합니다.
IAM 보안 주체에 Cloud AlloyDB 클라이언트 역할을 할당하려면 다음 단계를 따르세요.
Google Cloud 프로젝트에서 Cloud Resource Manager API를 사용 설정해야 합니다.
Google Cloud 프로젝트에
roles/owner
(소유자) 기본 IAM 역할 또는 다음 권한을 부여하는 역할이 있어야 합니다.resourcemanager.projects.get
resourcemanager.projects.getIamPolicy
resourcemanager.projects.setIamPolicy
최소 권한 원칙을 준수하면서 이러한 권한을 얻으려면 관리자에게
roles/resourcemanager.projectIamAdmin
(프로젝트 IAM 관리자) 역할을 부여해 달라고 요청하세요.
클라이언트 호스트에서 IAM 사용자 인증 정보를 사용할 수 있도록 설정
클라이언트 호스트에서 IAM 사용자 인증 정보를 사용할 수 있도록 하는 방법은 연결을 승인하는 데 사용하는 IAM 주 구성원의 유형에 따라 다릅니다.
사용자 관리형 서비스 계정
사용자 관리 서비스 계정에 IAM 사용자 인증 정보를 제공하려면 JSON 형식의 서비스 계정 키를 만들고 클라이언트 호스트에 다운로드합니다. 인증 프록시 클라이언트를 시작할 때
--credentials-file
플래그를 사용하여 키 파일의 위치를 지정합니다.사용자 계정
사용자 계정의 IAM 사용자 인증 정보를 제공하려면 클라이언트 호스트에 Google Cloud CLI를 설치한 다음
gcloud init
명령어를 실행하여 사용자 계정을 사용하여 초기화합니다. 인증 프록시 클라이언트를 시작하면 사용자 관리 서비스 계정 사용자 인증 정보를 제공하지 않는 경우 사용자 계정 사용자 인증 정보를 자동으로 검색하여 사용합니다.Compute Engine 기본 서비스 계정
Compute Engine 인스턴스를 클라이언트 호스트로 사용하는 경우 Compute Engine 기본 서비스 계정의 사용자 인증 정보가 이미 호스트에 있습니다. 인증 프록시 클라이언트를 시작하면 사용자 관리 서비스 계정 및 사용자 계정 사용자 인증 정보를 사용할 수 없는 경우 이러한 사용자 인증 정보가 자동으로 검색되고 사용됩니다.
AlloyDB 인스턴스의 연결 URI 수집
인증 프록시 클라이언트를 시작할 때 이 연결 URI 형식을 사용하여 연결할 AlloyDB 인스턴스를 식별합니다.
projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
모든 인스턴스의 연결 URI 목록을 보려면 gcloud CLI alloydb instances list
명령어를 사용합니다.
연결할 각 인스턴스의 인스턴스 연결 URI를 수집합니다.
인증 프록시 클라이언트 시작
인증 프록시 클라이언트를 시작할 때 연결할 AlloyDB 인스턴스에 관한 정보와 이러한 연결을 승인할 때 사용할 사용자 인증 정보 정보(필요한 경우)를 제공합니다.
시작되면 인증 프록시 클라이언트는 다음을 실행합니다.
- 구성한 IAM 주 구성원의 사용자 인증 정보와 IAM 권한을 사용하여 AlloyDB 인스턴스에 대한 연결을 승인합니다. 특정 단계 순서에 따라 사용자 인증 정보를 찾습니다.
- 인스턴스에 공개 IP가 사용 설정된 경우 소스 네트워크에 대한 공개 IP 연결을 자동으로 승인합니다.
- 각 인스턴스의 인증 프록시 서버에 대한 비공개 TLS 1.3 연결을 구성합니다.
- 로컬 클라이언트 연결 요청을 수신 대기하기 시작합니다.
기본적으로 인증 프록시 클라이언트는 IP 주소 127.0.0.1에서 TCP 연결을 수신 대기하며, 포트 5432에서 시작하여 첫 번째 AlloyDB 인스턴스를 초과하는 각 인스턴스에 대해 포트 번호가 1씩 증가합니다. 인증 프록시 클라이언트를 시작할 때 다른 리스너 주소와 다른 포트를 지정할 수 있습니다.
명령줄
./alloydb-auth-proxy INSTANCE_URI... \
[ --credentials-file PATH_TO_KEY_FILE \ ]
[ --token OAUTH_ACCESS_TOKEN \ ]
[ --port INITIAL_PORT_NUMBER \ ]
[ --address LOCAL_LISTENER_ADDRESS \ ]
[ --auto-iam-authn \ ]
[ --psc \ ]
[ --public-ip \ ]
[ --disable-built-in-telemetry ]
다음을 바꿉니다.
INSTANCE_URI
: 연결할 AlloyDB 인스턴스의 인스턴스 연결 URI입니다. 다음 형식을 사용하여 지정합니다.projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
URI에
port
쿼리 매개변수를 추가하여 인증 프록시 클라이언트가 인스턴스에 사용할 기본 로컬 리스너 포트를 재정의할 수 있습니다."projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?port=PORT"
선택사항:
PATH_TO_KEY_FILE
: 연결 승인에 사용할 사용자 관리 서비스 계정의 JSON 키 파일 경로입니다.선택사항:
OAUTH_ACCESS_TOKEN
: 연결 승인에 사용할 OAuth2 토큰 값입니다.(선택사항)
INITIAL_PORT_NUMBER
: 로컬 TCP 연결을 리슨할 때 기본 포트5432
대신 사용할 시작 포트 번호입니다.선택사항:
LOCAL_LISTENER_ADDRESS
: 로컬 TCP 연결을 리슨할 때 기본127.0.0.1
대신 사용할 리스너 주소입니다.
선택사항인 --auto-iam-authn
플래그를 사용하면 인스턴스에 자동으로 인증할 수 있습니다. 이는 인증 프록시 클라이언트를 실행하는 IAM 계정과 연결된 데이터베이스 사용자에게만 적용됩니다. 자세한 내용은 인증 프록시를 사용하여 자동으로 인증을 참고하세요.
선택사항인 --psc
플래그를 사용하면 인증 프록시가 Private Service Connect가 사용 설정된 인스턴스에 연결할 수 있습니다. Private Service Connect로 DNS를 설정하는 방법에 대한 자세한 내용은 DNS 관리 영역 및 DNS 레코드 구성을 참고하세요.
선택사항인 --public-ip
플래그를 사용하면 인증 프록시가 인스턴스의 공개 IP 주소를 사용하여 공개 IP가 사용 설정된 인스턴스에 연결할 수 있습니다. 공개 IP에 대한 자세한 내용은 공개 IP를 사용하여 연결을 참고하세요.
선택사항인 --disable-built-in-telemetry
플래그는 인증 프록시가 연결 및 네트워크 상태를 보고하는 데 사용하는 내부 측정항목 리포터를 사용 중지합니다. 기본적으로 인증 프록시는 내부 작업을 alloydb.googleapis.com
시스템 측정항목 접두사에 보고합니다. 이러한 측정항목은 AlloyDB가 성능을 개선하고 클라이언트 연결 문제를 식별하는 데 도움이 됩니다. 이 옵션은 아웃바운드 측정항목 내보내기가 제한된 환경에서 작동하는 애플리케이션에 유용합니다. 이 원격 분석을 선택 해제하려면 이 플래그를 사용하세요.
Docker 컨테이너
docker run
명령어를 사용하여 인증 프록시 클라이언트를 시작합니다.
Compute Engine 인스턴스에서 제공하는 사용자 인증 정보를 사용하는 경우 다음과 유사한 명령어를 사용할 수 있습니다.
docker run \
--publish 127.0.0.1:PORT:PORT \
gcr.io/alloydb-connectors/alloydb-auth-proxy:latest \
--address 0.0.0.0 \
--port PORT \
INSTANCE_URI
다음을 바꿉니다.
PORT
: 인증 프록시 클라이언트에 대한 로컬 연결에 사용할 포트입니다. 기본값은5432
입니다.INSTANCE_URI
: 연결할 AlloyDB 인스턴스의 인스턴스 연결 URI입니다. 다음 형식을 사용하여 지정합니다.projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
URI에
port
쿼리 매개변수를 추가하여 인증 프록시 클라이언트가 인스턴스에 사용하는 기본 로컬 리스너 포트를 재정의할 수 있습니다."projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?port=PORT"
인증 프록시 클라이언트가 로컬 호스트 외부에 노출되지 않도록 항상 --publish
플래그에 127.0.0.1
프리픽스를 지정합니다.
--address
플래그의 0.0.0.0
값은 Docker 컨테이너 외부에서 리스너에 액세스할 수 있도록 하는 데 필요합니다.
로컬 JSON 파일에 저장된 사용자 인증 정보를 제공하려면 docker run
명령어를 실행할 때 --volume
및 --credentials-file
플래그를 포함하세요.
docker run \
--volume PATH_TO_KEY_FILE:/key.json \
--publish 127.0.0.1:PORT:PORT \
gcr.io/alloydb-connectors/alloydb-auth-proxy:latest \
--address 0.0.0.0 \
--port PORT \
--credentials-file=/key.json \
INSTANCE_URI
PATH_TO_KEY_FILE
를 연결 승인에 사용할 사용자 관리 서비스 계정의 JSON 키 파일 경로로 바꿉니다.
시작 예
다음 예시에서는 인증 프록시 클라이언트를 시작하는 다양한 방법을 보여줍니다. 다음 예시 인스턴스 연결 URI를 사용합니다.
projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary
projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool
기본 시작
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary"
이 예에서 인증 프록시 클라이언트는 일반적인 인증 단계 시퀀스를 따라 연결을 승인한 다음 127.0.0.1:5432
에서 myprimary
인스턴스의 로컬 연결을 리슨하기 시작합니다.
사용자 관리 서비스 계정을 사용하여 시작
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \\
--credentials-file "myappaccount/key.json"
이 예에서 인증 프록시 클라이언트는 myappaccount/key.json
에 저장된 사용자 관리 서비스 계정의 JSON 키를 사용하여 연결을 승인한 다음 127.0.0.1:5432
에서 myprimary
인스턴스로의 로컬 연결을 수신 대기합니다.
여러 인스턴스에 연결하는 시작
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool"
이 예에서 인증 프록시 클라이언트는 일반적인 인증 단계 시퀀스를 따라 연결을 승인한 다음 127.0.0.1:5432
에서 myprimary
인스턴스로, 127.0.0.1:5433
에서 myreadpool
인스턴스로의 로컬 연결을 수신 대기하기 시작합니다.
맞춤 포트에서 수신 대기 시작
인증 프록시 클라이언트에 커스텀 포트를 사용하는 것은 다른 PostgreSQL 연결을 위해 포트 5432
을 예약해야 하는 경우에 유용합니다.
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary?port=5000" \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool?port=5001"
이 예에서 인증 프록시 클라이언트는 일반적인 인증 단계 시퀀스를 따라 연결을 승인한 다음 127.0.0.1:5000
에서 myprimary
인스턴스로, 127.0.0.1:5001
에서 myreadpool
인스턴스로의 로컬 연결을 수신 대기하기 시작합니다.
이러한 맞춤 포트는 순차적이므로 다음 시작 명령어를 사용하여 동일한 효과를 얻을 수 있습니다.
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool" \
--port 5000
커스텀 IP 주소에서 수신 대기 시작
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \
--address "0.0.0.0"
이 예에서 인증 프록시 클라이언트는 일반적인 인증 단계 시퀀스를 따라 연결을 승인한 다음 0.0.0.0:5432
에서 myprimary
인스턴스의 로컬 연결을 리슨하기 시작합니다.
AlloyDB 인증 프록시를 사용하여 애플리케이션을 데이터베이스에 연결
다음 예에서는 AlloyDB 인증 프록시를 사용하여 애플리케이션을 데이터베이스에 연결하는 방법을 보여줍니다.
psql
예시에서는 명령줄 도구를 연결하는 방법을 보여줍니다.
AlloyDB 인증 프록시를 사용하여 AlloyDB 인스턴스에 연결하는 것은 여러 프로그래밍 언어의 경우 Cloud SQL 인증 프록시를 사용하여 PostgreSQL용 Cloud SQL에 연결하는 것과 동일하므로 여기에 나오는 언어 예는 PostgreSQL용 Cloud SQL의 예와 동일합니다.
이 예시는 인증 프록시 클라이언트가 127.0.0.1:5432
에서 로컬 TCP 연결을 리슨하도록 기본적으로 시작하는 것을 기반으로 합니다.
psql
psql -h 127.0.0.1 -p 5432 -U DB_USER
DB_USER
을 연결할 데이터베이스 사용자(예: postgres
)로 바꿉니다.
그러면 DB_USER
사용자의 비밀번호를 입력하라는 메시지가 표시됩니다.
Python
Java
Node.js
Go
웹 애플리케이션의 컨텍스트에서 이 스니펫을 보려면 GitHub의 README를 참고하세요.
C#
웹 애플리케이션의 컨텍스트에서 이 스니펫을 보려면 GitHub의 README를 참고하세요.
Ruby
웹 애플리케이션의 컨텍스트에서 이 스니펫을 보려면 GitHub의 README를 참고하세요.
PHP
웹 애플리케이션의 컨텍스트에서 이 스니펫을 보려면 GitHub의 README를 참고하세요.