이 페이지에서는 사용자 및 서비스 계정이 Cloud SQL IAM 데이터베이스 인증을 사용하여 Cloud SQL 데이터베이스에 로그인하는 방법을 설명합니다. 자세한 내용은 IAM 인증을 참조하세요.
시작하기 전에
- IAM 데이터베이스 인증을 사용하도록 인스턴스를 구성합니다. 자세한 내용은 IAM 데이터베이스 인증을 위한 인스턴스 구성을 참조하세요.
- 데이터베이스에 IAM 사용자를 추가합니다. 자세한 내용은 데이터베이스에 IAM 사용자 또는 서비스 계정 추가를 참조하세요.
roles/cloudsql.instanceUser
IAM 역할을 IAM 사용자에게 추가합니다. 이 역할은 필요한 Cloud SQL IAMcloudsql.instances.login
권한이 포함된 사전 정의된 역할입니다. IAM 데이터베이스 인증을 사용하여 데이터베이스 인스턴스에 로그인하려면 이 권한이 필요합니다. 자세한 내용은 역할 및 권한을 참조하세요.- IAM 사용자가 데이터베이스에 추가되면 기본적으로 새 데이터베이스 사용자에게는 데이터베이스에 대한 권한이 없습니다.
GRANT
명령어를 사용하여 IAM 데이터베이스 사용자에게 필요한 권한을 부여해야 합니다. 자세한 내용은 IAM 사용자에게 데이터베이스 권한 부여를 참조하세요.
IAM 데이터베이스 인증을 사용하여 로그인
사용자 또는 애플리케이션을 대신해서 Cloud SQL 인스턴스 인증을 자동으로 처리하도록 Cloud SQL 커넥터를 구성할 수 있습니다. 커넥터에는 Cloud SQL 인증 프록시, Go 커넥터, 자바 커넥터, Python 커넥터가 포함됩니다. 이러한 커넥터는 모두 자동 IAM 데이터베이스 인증을 지원합니다. 자동 IAM 데이터베이스 인증에 Cloud SQL 커넥터를 사용할 때 커넥터 시작을 위해 사용되는 IAM 계정은 데이터베이스에 인증을 수행하는 것과 동일한 계정이어야 합니다.
자동 IAM 데이터베이스 인증을 사용하여 로그인하려면 다음 안내를 따르세요.
Cloud SQL 인증 프록시
Google Cloud에 인증합니다.
사용자(User)
애플리케이션 기본 사용자 인증 정보(ADC)를 사용하여 Google Cloud에 인증합니다.
gcloud auth application-default login
명령어를 사용합니다. 자세한 내용은 애플리케이션 기본 사용자 인증 정보 설정을 참조하세요.서비스 계정
서비스 계정으로 ADC를 사용하여 Google Cloud에 인증하려면 서비스 계정 가장 또는 서비스 계정 키를 사용하면 됩니다. 서비스 계정 가장을 사용하려면 SERVICE_ACCOUNT_EMAIL_ADDRESS를 바꾸고 다음 명령어를 실행합니다.
gcloud auth application-default login --impersonate-service-account SERVICE_ACCOUNT_EMAIL_ADDRESS
자세한 내용은 애플리케이션 기본 사용자 인증 정보 설정을 참조하세요.
--auto-iam-authn
플래그로 Cloud SQL 인증 프록시를 시작합니다.다음을 바꿉니다.
- INSTANCE_CONNECTION_NAME: Cloud SQL 인스턴스를 식별하기 위한 연결 문자열입니다. 기본 PostgreSQL 포트가 아닌 다른 포트를 사용하는 경우 포트 번호를 지정합니다. 이 문자열을 찾아 구성하는 방법에 대한 자세한 내용은 Cloud SQL 인증 프록시 인증 옵션을 참조하세요.
./cloud-sql-proxy --auto-iam-authn INSTANCE_CONNECTION_NAME
프록시를 시작하는 방법에 대한 자세한 내용은 Cloud SQL 인증 프록시 시작을 참조하세요.
Cloud SQL 인증 프록시를 사용하여 인스턴스에 연결할 준비가 되면
psql
클라이언트로 로그인합니다.다음을 바꿉니다.
- HOSTNAME: Cloud SQL 인증 프록시에 사용되는 IP 주소. 기본적으로 Cloud SQL 인증 프록시는
127.0.0.1
의 localhost 주소를 사용하지만 Cloud SQL 인증 프록시를 시작할 때 다른 IP 주소를 할당할 수 있습니다. - USERNAME: IAM의 경우 사용자 이름은 사용자의 전체 이메일 주소입니다. 서비스 계정의 경우
.gserviceaccount.com
도메인 서픽스가 없는 서비스 계정의 이메일입니다. - PORT_NUMBER: (선택사항) 인스턴스 연결 문자열에 다른 포트를 지정한 경우 해당 포트 번호를 지정합니다.
- DATABASE_NAME: 연결할 데이터베이스의 이름입니다.
다음 명령어를 실행합니다.
psql -h HOSTNAME \ -U USERNAME \ --port PORT_NUMBER \ --dbname=DATABASE_NAME
Cloud SQL 인증 프록시에 연결하는 방법에 대한 자세한 내용은 psql 클라이언트에 연결을 참조하세요.
- HOSTNAME: Cloud SQL 인증 프록시에 사용되는 IP 주소. 기본적으로 Cloud SQL 인증 프록시는
Go
자바 JDBC
자바 R2DBC
Python
수동 IAM 데이터베이스 인증을 사용하여 로그인
사용자 또는 애플리케이션은 Google Cloud에서 액세스 토큰을 수동으로 요청하고 데이터베이스에 제공해 IAM을 사용하여 데이터베이스에 인증할 수 있습니다. gcloud CLI를 사용하면 데이터베이스에 로그인하는 데 사용되는 Cloud SQL Admin API 범위와 함께 OAuth 2.0 토큰을 명시적으로 요청할 수 있습니다. 수동 IAM 데이터베이스 인증을 사용하여 데이터베이스 사용자로 로그인할 때는 이메일 주소를 사용자 이름으로, 액세스 토큰을 비밀번호로 사용합니다. 이 메서드를 데이터베이스에 직접 연결하거나 Cloud SQL 커넥터와 함께 사용할 수 있습니다.
이 절차에서는 Google Cloud에 인증하고 액세스 토큰을 요청한 후 토큰을 IAM 데이터베이스 사용자의 비밀번호로 전달하여 데이터베이스에 연결합니다. Cloud SQL 인증 프록시를 사용하지 않고 연결하려면 다음 단계를 수행합니다.
이러한 단계를 수행하려면 다음을 수행해야 합니다.
gcloud sql generate-login-token
명령어를 사용하여 인증 토큰을 생성합니다.수동 IAM 데이터베이스 인증을 사용하여 로그인하려면 다음 안내를 따르세요.
gcloud
Google Cloud에 인증합니다.
사용자(User)
gcloud auth login
를 사용하여 IAM에 인증합니다. 자세한 내용은 사용자 계정으로 승인을 참조하세요.서비스 계정
gcloud auth activate-service-account
를 사용하여 IAM에 인증합니다. 자세한 내용은 서비스 계정을 사용하여 승인을 참조하세요.액세스 토큰을 요청하고 클라이언트로 로그인합니다.
다음을 바꿉니다.
- HOSTNAME: 인스턴스의 IP 주소(공개 IP 주소 또는 비공개 IP 주소)
- USERNAME: IAM의 경우 사용자 이름은 사용자의 전체 이메일 주소입니다. 서비스 계정의 경우
.gserviceaccount.com
도메인 서픽스가 없는 서비스 계정의 이메일입니다. - DATABASE_NAME: 연결할 데이터베이스의 이름입니다.
PGPASSWORD=`gcloud sql generate-login-token` \ psql "sslmode=require \ hostaddr=HOSTNAME \ user=USERNAME \ dbname=DATABASE_NAME" \ --no-password
Cloud SQL 인스턴스의
ssl_mode
가TRUSTED_CLIENT_CERTIFICATE_REQUIRED
로 구성된 경우 자동 IAM 데이터베이스 인증을 통해 로그인하여 클라이언트 ID 검증을 시행하는 것이 좋습니다.
다음 단계
- IAM 데이터베이스 인증 자세히 알아보기
- 감사 로그에서 로그인 정보를 사용 설정 및 확인하는 방법 알아보기
- Cloud SQL IAM 데이터베이스 인증을 사용하는 사용자 및 서비스 계정을 만드는 방법 알아보기
- IAM 데이터베이스 인증을 위한 사용자 및 서비스 계정 관리 방법 알아보기