이 페이지에서는 AlloyDB 인증 프록시를 설정하고 사용하여 AlloyDB 인스턴스에 승인되고 암호화된 연결을 설정하는 방법을 보여줍니다. 인증 프록시의 개념적 개요는 AlloyDB 인증 프록시 정보를 참고하세요.
AlloyDB 인증 프록시를 사용하려면 일회성 설정 단계를 여러 번 수행한 다음 인증 프록시 클라이언트를 시작하고 이를 사용하여 데이터베이스에 연결합니다.
- 설정 단계:
- 클라이언트 호스트에 인증 프록시 클라이언트를 다운로드합니다.
- 승인에 사용할 Identity and Access Management (IAM) 주 구성원을 선택하고, 주 구성원에 필요한 권한이 있는지 확인하고, 클라이언트 호스트에서 사용자 인증 정보를 사용할 수 있도록 합니다.
- 연결하려는 AlloyDB 인스턴스의 연결 URI를 수집합니다.
- 클라이언트 호스트에서 인증 프록시 클라이언트를 시작합니다.
- 인증 프록시 클라이언트에 대한 로컬 연결을 열어 애플리케이션을 데이터베이스에 연결합니다.
시작하기 전에
-
클라이언트 호스트는 다음 요구사항을 충족해야 합니다.
연결하려는 인스턴스가 있는 Virtual Private Cloud (VPC) 네트워크에 대한 네트워크 가시성이 있어야 합니다. 이 Virtual Private Cloud(VPC) 네트워크의 클라이언트 호스트 (예: Compute Engine 인스턴스)는 본질적으로 이러한 가시성을 갖습니다. 외부 네트워크 (온프레미스 네트워크 또는 다른 VPC 네트워크)의 클라이언트 호스트는 AlloyDB 인스턴스의 VPC 네트워크가 Cloud VPN 터널 또는 Dedicated Interconnect 또는 Partner Interconnect의 VLAN 연결을 사용하여 외부 네트워크에 연결된 경우 이 공개 상태를 확인할 수 있습니다.
클라이언트 호스트에 아웃바운드 방화벽 정책이 있는 경우 AlloyDB 인스턴스의 IP 주소에서 포트
5433
로 나가는 연결을 허용하고 모든 IP 주소에서 포트443
(표준 HTTPS 포트)로 나가는 연결을 허용해야 합니다.Compute Engine 인스턴스를 클라이언트 호스트로 사용하는 경우 AlloyDB Admin 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.12.1/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.12.1/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.12.1/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.12.1/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.12.1/alloydb-auth-proxy.darwin.arm64
인증 프록시 클라이언트 실행 파일을 만듭니다.
chmod +x alloydb-auth-proxy
64비트
인증 프록시 클라이언트를 다운로드합니다.
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.12.1/alloydb-auth-proxy.darwin.amd64
인증 프록시 클라이언트 실행 파일을 만듭니다.
chmod +x alloydb-auth-proxy
32비트
인증 프록시 클라이언트를 다운로드합니다.
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.12.1/alloydb-auth-proxy.darwin.386
인증 프록시 클라이언트 실행 파일을 만듭니다.
chmod +x alloydb-auth-proxy
Windows
64비트
https://storage.googleapis.com/alloydb-auth-proxy/v1.12.1/alloydb-auth-proxy-x64.exe를 마우스 오른쪽 버튼으로 클릭하고 다른 이름으로 링크 저장을 선택하여 인증 프록시 클라이언트를 다운로드합니다.
파일 이름을 alloydb-auth-proxy.exe
로 바꿉니다.
32비트
https://storage.googleapis.com/alloydb-auth-proxy/v1.12.1/alloydb-auth-proxy-x86.exe를 마우스 오른쪽 버튼으로 클릭하고 다른 이름으로 링크 저장을 선택하여 인증 프록시 클라이언트를 다운로드합니다.
파일 이름을 alloydb-auth-proxy.exe
로 바꿉니다.
Docker 이미지
편의를 위해 Container 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
명령어를 실행하여 사용자 계정을 사용하여 초기화합니다. Auth Proxy 클라이언트를 시작할 때 사용자 관리 서비스 계정 사용자 인증 정보를 제공하지 않으면 사용자 계정 사용자 인증 정보가 자동으로 검색되고 사용됩니다.Compute Engine 기본 서비스 계정
Compute Engine 인스턴스를 클라이언트 호스트로 사용하는 경우 Compute Engine 기본 서비스 계정의 사용자 인증 정보가 이미 호스트에 있습니다. Auth Proxy 클라이언트를 시작하면 사용자 관리 서비스 계정 및 사용자 계정 사용자 인증 정보를 사용할 수 없는 경우 이러한 사용자 인증 정보를 자동으로 검색하고 사용합니다.
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]
다음을 바꿉니다.
INSTANCE_URI
: 연결할 AlloyDB 인스턴스의 인스턴스 연결 URI로, 다음 형식을 사용하여 지정됩니다.projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
URI에
port
쿼리 매개변수를 추가하여 인스턴스에 Auth Proxy 클라이언트가 사용할 기본 로컬 리스너 포트를 재정의할 수 있습니다."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를 사용하여 연결을 참고하세요.
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
쿼리 매개변수를 추가하여 인스턴스에 Auth Proxy 클라이언트가 사용하는 기본 로컬 리스너 포트를 재정의할 수 있습니다."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 키 파일 경로로 바꿉니다.
시작 예
다음 예는 Auth Proxy 클라이언트를 시작하는 다양한 방법을 보여줍니다. 다음과 같은 인스턴스 연결 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
웹 애플리케이션의 컨텍스트에서 이 스니펫을 보려면 GitHub의 README를 참고하세요.
자바
웹 애플리케이션의 컨텍스트에서 이 스니펫을 보려면 GitHub의 README를 참고하세요.
Node.js
웹 애플리케이션의 컨텍스트에서 이 스니펫을 보려면 GitHub의 README를 참고하세요.
Go
웹 애플리케이션의 컨텍스트에서 이 스니펫을 보려면 GitHub의 README를 참고하세요.
C#
웹 애플리케이션의 컨텍스트에서 이 스니펫을 보려면 GitHub의 README를 참고하세요.
Ruby
웹 애플리케이션의 컨텍스트에서 이 스니펫을 보려면 GitHub의 README를 참고하세요.
PHP
웹 애플리케이션의 컨텍스트에서 이 스니펫을 보려면 GitHub의 README를 참고하세요.