이 페이지에는 Cloud SQL IAM 데이터베이스 인증을 사용하도록 구성된 사용자, 서비스 계정 또는 그룹을 허용하기 위해 Cloud SQL 인스턴스를 만들거나 수정하는 절차를 제공합니��. Cloud SQL IAM에 대한 자세한 내용은 IAM 인증을 참조하세요.
새로 생성된 인스턴스에는 postgres
데이터베이스가 있습니다.
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- 사용자 계정에 Cloud SQL 관리자 및 Compute 뷰어 역할이 있는지 확인합니다.
역할 및 권한에 대해 자세히 알아보기
단일 프로젝트에 보유할 수 있는 최대 인스턴스 수는 인스턴스의 네트워크 아키텍처에 따라 다릅니다.
- 새 SQL 네트워크 아키텍처: 인스턴스를 프로젝트당 최대 1,000개까지 보유할 수 있습니다.
- 이전 SQL 네트워크 아키텍처: 인스턴스를 프로젝트당 최대 100개까지 보유할 수 있습니다.
- 두 아키텍처 모두 사용: 두 아키텍처에서의 인스턴스 배포 방식에 따라 한도는 100~1,000개입니다.
상향을 요청하려면 지원 케이스를 접수하세요. 읽기 복제본은 인스턴스로 계산됩니다.
IAM 데이터베이스 인증을 위한 새 인스턴스 구성
IAM 데이터베이스 인증을 위해 새 Cloud SQL 인스턴스를 구성하려면 cloudsql.iam_authentication
플래그를 사용 설정해야 합니다.
이 플래그를 사용 설정한 후에는 Cloud SQL 인스턴스에 IAM 사용자, 서비스 계정 또는 그룹을 추가할 수 있습니다.
IAM 데이터베이스 인증을 사용하도록 새 Cloud SQL 인스턴스를 구성하려면 다음 안내를 따르세요.
콘솔
-
Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.
- 인스턴스 만들기를 클릭합니다.
- PostgreSQL 선택을 클릭합니다.
- 인스턴스 ID의 이름을 입력합니다. 인스턴스 이름은 외부에 공개되므로 민감한 정보나 개인 식별 정보를 포함하지 마세요. 인스턴스 이름에 프로젝트 ID를 포함하지 않아도 됩니다. 적절한 경우 프로젝트 ID가 자동으로 포함됩니다(예: 로그 파일에서).
- 기본 관리자의 비밀번호를 입력합니다.
- 데이터베이스 버전 메뉴에서 데이터베이스 버전을 선택합니다.
- 리전 및 영역 가용성 선택 섹션에서 인스턴스의 리전 및 영역을 선택합니다. 인스턴스를 인스턴스에 액세스하는 리소스와 같은 리전에 배치합니다. 선택한 리전은 나중에 수정할 수 ���습니다. 영역은 일반적으로 지정할 필요가 없습니다.
- 인스턴스 맞춤설정 섹션에서 구성 옵션 표시를 클릭한 후 플래그를 확장합니다.
- 플래그 추가를 클릭합니다.
- 플래그 선택 메뉴에서
cloudsql.iam_authentication
플래그를 선택합니다. 이 플래그의 값으로 사용이 선택되었는지 확인한 후 완료를 클릭합니다. - 필요에 따라 다른 인스턴스 설정을 구성합니다. 설정에 대한 자세한 내용은 설정을 참조하세요.
- 인스턴스 만들기를 클릭합니다.
gcloud
--database-flags
매개변수를 cloudsql.iam_authentication=on
으로 설정하여 gcloud sql instances create
를 실행합니다.
다음을 바꿉니다.
- INSTANCE_NAME: 새 인스턴스의 이름입니다.
- POSTGRES_VERSION: PostgreSQL 버전(예: POSTGRES_9_6, POSTGRES_10, POSTGRES_11, 또는 POSTGRES_12)입니다..
- NUMBER_OF_CORES: 머신의 코어 수입니다.
- AMOUNT_OF_MEMORY: 머신의 메모리 용량입니다. 크기 단위를 제공해야 합니다(예: 3072MiB 또는 9GiB).
- ZONE: 선호하는 Compute Engine 영역(예: us-central1-a 또는 us-central1-b 등)입니다.
- PASSWORD: 루트 사용자의 비밀번호를 만듭니다.
gcloud sql instances create INSTANCE_NAME \ --database-version=POSTGRES_VERSION \ --cpu=NUMBER_OF_CORES \ --memory=AMOUNT_OF_MEMORY \ --zone=ZONE_NAME \ --root-password=PASSWORD \ --database-flags=cloudsql.iam_authentication=on
Terraform
IAM 데이터베이스 인증이 사용 설정된 인스턴스를 만들려면 Terraform 리소스를 사용합니다.
변경사항 적용
Google Cloud 프로젝트에 Terraform 구성을 적용하려면 다음 섹션의 단계를 완료하세요.
Cloud Shell 준비
- Cloud Shell을 실행합니다.
-
Terraform 구성을 적용할 기본 Google Cloud 프로젝트를 설정합니다.
이 명령어는 프로젝트당 한 번만 실행하면 되며 어떤 디렉터리에서도 실행할 수 있습니다.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 구성 파일에서 명시적 값을 설정하면 환경 변수가 재정의됩니다.
디렉터리 준비
각 Terraform 구성 파일에는 자체 디렉터리(루트 모듈이라고도 함)가 있어야 합니다.
-
Cloud Shell에서 디렉터리를 만들고 해당 디렉터리 내에 새 파일을 만드세요. 파일 이름에는
.tf
확장자가 있어야 합니다(예:main.tf
). 이 튜토리얼에서는 파일을main.tf
라고 ��니다.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
튜토리얼을 따라 하는 경우 각 섹션이나 단계에서 샘플 코드를 복사할 수 있습니다.
샘플 코드를 새로 만든
main.tf
에 복사합니다.필요한 경우 GitHub에서 코드를 복사합니다. 이는 Terraform 스니펫이 엔드 투 엔드 솔루션의 일부인 경우에 권장됩니다.
- 환경에 적용할 샘플 매개변수를 검토하고 수정합니다.
- 변경사항을 저장합니다.
-
Terraform을 초기화합니다. 이 작업은 디렉터리당 한 번만 수행하면 됩니다.
terraform init
원하는 경우 최신 Google 공급업체 버전을 사용하려면
-upgrade
옵션을 포함합니다.terraform init -upgrade
변경사항 적용
-
구성을 검토하고 Terraform에서 만들거나 업데이트할 리소스가 예상과 일치하는지 확인합니다.
terraform plan
필요에 따라 구성을 수정합니다.
-
다음 명령어를 실행하고 프롬프트에
yes
를 입력하여 Terraform 구성을 적용합니다.terraform apply
Terraform에 '적용 완료' 메시지가 표시될 때까지 기다립니다.
- 결과를 보려면 Google Cloud 프로젝트를 엽니다. Google Cloud 콘솔에서 UI의 리소스로 이동하여 Terraform이 리소스를 만들었거나 업데이트했는지 확인합니다.
변경사항 삭제
변경사항을 삭제하려면 다음 단계를 따르세요.
- Terraform 구성 파일에서 삭제 보호를 사용 중지하려면
deletion_protection
인수를false
로 설정합니다.deletion_protection = "false"
- 다음 명령어를 실행하고 프롬프트에
yes
를 입력하여 업데이트된 Terraform 구성을 적용합니다.terraform apply
-
다음 명령어를 실행하고 프롬프트에
yes
를 입력하여 이전에 Terraform 구성에 적용된 리소스를 삭제합니다.terraform destroy
REST v1
인스턴스 이름은 외부에 공개되므로 민감한 정보나 개인 식별 정보(PII)는 포함하지 마세요.
인스턴스 이름에 프로젝트 ID를 포함하지 않아도 됩니다. (예: 로그 파일에서) 필요한 경우 프로젝트 ID가 자동으로 포함됩니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- INSTANCE_ID: 원하는 인스턴스 ID입니다.
- REGION: 원하는 리전(예: us-east-1)입니다.
- PROJECT_ID: 프로젝트 ID입니다.
- LOCATION_ID: 위치 ID입니다.
- DATABASE_VERSION: 데이터베이스 버전의 열거형 문자열입니다.
예를 들면
POSTGRES_12
입니다. - PASSWORD: 루트 사용자의 비밀번호입니다.
- MACHINE_TYPE :
db-custom-[CPUS]-[MEMORY_MBS]
와 같은 머신(등급) 유형의 열거형 문자열입니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances
JSON 요청 본문:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true }, "databaseFlags": [ { "name": "cloudsql.iam_authentication", "value": "on" } ] } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
인스턴스 이름은 외부에 공개되므로 민감한 정보나 개인 식별 정보(PII)는 포함하지 마세요.
인스턴스 이름에 프로젝트 ID를 포함하지 않아도 됩니다. (예: 로그 파일에서) 필요한 경�� 프로젝트 ID가 자동으로 포함됩니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- INSTANCE_ID: 원하는 인스턴스 ID입니다.
- REGION: 원하는 리전(예: us-east-1)입니다.
- PROJECT_ID: 프로젝트 ID입니다.
- LOCATION_ID: 위치 ID입니다.
- DATABASE_VERSION: 데이터베이스 버전의 열거형 문자열입니다.
예를 들면
POSTGRES_12
입니다. - PASSWORD: 루트 사용자의 비밀번호입니다.
- MACHINE_TYPE :
db-custom-[CPUS]-[MEMORY_MBS]
와 같은 머신(등급) 유형의 열거형 문자열입니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances
JSON 요청 본문:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true }, "databaseFlags": [ { "name": "cloudsql.iam_authentication", "value": "on" } ] } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
IAM 데이터베이스 인증을 위한 기존 인스턴스 구성
IAM 데이터베이스 인증을 위해 기존 Cloud SQL 인스턴스를 구성하려면 cloudsql.iam_authentication
플래그를 사용 설정해야 합니다.
이 플래그를 사용 설정한 후에는 Cloud SQL 인스턴스에 IAM 사용자, 서비스 계정 또는 그룹을 추가할 수 있습니다.
IAM 데이터베이스 인증을 사용하도록 기존 Cloud SQL 인스턴스를 구성하려면 다음 안내를 따르세요.
콘솔
-
Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.
- 인스턴스의 개요 페이지를 열려면 인스턴스 이름을 클릭합니다.
- 수정을 클릭합니다.
- 인스턴스 맞춤설정 섹션에서 플래그를 확장합니다.
- 플래그 추가를 클릭합니다.
- 플래그 선택 메뉴에서
cloudsql.iam_authentication
플래그를 선택합니다. 이 플래그의 값으로 사용이 선택되었는지 확인한 후 완료를 클릭합니다. - 필요에 따라 다른 인스턴스 설정을 구성합니다. 설정에 대한 자세한 내용은 설정을 참조하세요.
- 저장을 클릭합니다.
gcloud
gcloud CLI 설치 및 시작에 대한 자세한 내용은 gcloud CLI 설치를 참조하세요. Cloud Shell 시작 방법에 대한 자세한 내용은 Cloud Shell 사용을 참조하세요.
이 절차에서는
gcloud
sql instances patch
를 사용합니다.
다음을 바꿉니다.
- INSTANCE_NAME: 새 인스턴스의 이름입니다.
gcloud sql instances patch INSTANCE_NAME \ --database-flags=cloudsql.iam_authentication=on
이렇게 하면 다른 모든 기존 데이터베이스 플래그 설정이 재설정됩니다. 데이터베이스 플래그 설정에 대한 자세한 안내는 데이터베이스 플래그 설정을 참조하세요.
REST v1
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID입니다.
- LOCATION_ID: 위치 ID입니다.
- INSTANCE_ID: 원하는 인스턴스 ID입니다.
- REGION: 원하는 리전입니다.
- DATABASE_VERSION: 데이터베이스 버전의 열거형 문자열입니다.
예를 들면
POSTGRES_12
입니다. - PASSWORD: 루트 사용자의 비밀번호입니다.
- MACHINE_TYPE :
db-custom-[CPUS]-[MEMORY_MBS]
와 같은 머신(등급) 유형의 열거형 문자열입니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances
JSON 요청 본문:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true } "databaseFlags": [ { "name": "cloudsql.iam_authentication", "value": "on" } ] } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID입니다.
- LOCATION_ID: 위치 ID입니다.
- INSTANCE_ID: 원하는 인스턴스 ID입니다.
- REGION: 원하는 리전입니다.
- DATABASE_VERSION: 데이터베이스 버전의 열거형 문자열입니다.
예를 들면
POSTGRES_12
입니다. - PASSWORD: 루트 사용자의 비밀번호입니다.
- MACHINE_TYPE :
db-custom-[CPUS]-[MEMORY_MBS]
와 같은 머신(등급) 유형의 열거형 문자열입니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances
JSON 요청 본문:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true } "databaseFlags": [ { "name": "cloudsql.iam_authentication", "value": "on" } ] } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
다음 단계
- IAM 데이터베이스 인증 자세히 알아보기
- IAM 데이터베이스 인증을 위한 읽기 복제본 로그인 구성 방법 알아보기
- Cloud SQL IAM 데이터베이스 인증을 사용하는 사용자 및 서비스 계정을 만드는 방법 알아보기
- IAM 데이터베이스 인증을 사용하여 Cloud SQL 데이터베이스에 로그인하는 방법 알아보기
- IAM 데이터베이스 인증을 위한 사용자 및 서비스 계정 관리 방법 알아보기