이 페이지에서는 고객 관리 Microsoft Active Directory (고객 관리 AD (CMAD)라고도 함)를 사용하는 방법을 설명합니다.
- SQL Server용 Cloud SQL을 CMAD와 통합합니다.
- Active Directory (AD) 사용자로 인스턴스에 연결합니다.
CMAD와 통합된 Cloud SQL 인스턴스는 SQL 인증 외에도 Windows 인증을 지원합니다.
시작하기 전에
- Google Cloud 콘솔에서 프로젝트 이름을 선택합니다.
- Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.
- gcloud CLI를 설치하고 초기화합니다.
- 사용자 계정에 Cloud SQL 관리자 역할이 있는지 확인합니다. Identity and Access Management (IAM) 페이지로 이동합니다.
- 통합 기본 요건을 검토합니다.
- Active Directory 복제가 올바르게 작동하는지 확인합니다. 제대로 구현하지 않으면 CMAD 통합에 문제가 발생할 수 있습니다.
Windows 인증을 사용하여 인스턴스 만들기
인스턴스 만들기 중에 CMAD와 통합하여 인스턴스에 대해 Windows 인증을 사용 설정할 수 있습니다. 통합하려면 인스턴스와 조인할 도메인을 선택합니다. 도메인 연결이 실패하면 인스턴스 만들기가 실패합니다.
Windows 인증으로 인스턴스 만들기를 준비할 때 팁과 제한사항 및 대안을 검토합니다.
공개 IP를 사용하도록 선택할 수 있지만 Cloud SQL 인스턴스도 비공개 IP에 액세스할 수 있어야 합니다.
다음 옵션 중 하나를 사용하여 CMAD와 통합되고 결과적으로 Windows 인증이 사용 설정된 인스턴스를 만드세요. 인스턴스를 만드는 기본 명령어에 대한 자세한 내용은 인스턴스 만들기를 참고하세요.
gcloud
CMAD로 인스턴스를 만들려면 다음을 실행합니다.
gcloud sql instances create INSTANCE_NAME \ --database-version=DATABASE_VERSION \ --root-password=PASSWORD \ --active-directory-domain=DOMAIN \ --active-directory-mode=CUSTOMER_MANAGED_ACTIVE_DIRECTORY \ --active-directory-organizational-unit="OU=CLOUD_OU,DC=DC1,DC=DC2" \ --active-directory-secret-manager-key=projects/PROJECT_ID/secrets/SECRET_NAME \ --active-directory-dns-servers=IP1,IP2 \ --cpu=CPU \ --memory=MEMORY \ --network=NETWORK
다음을 바꿉니다.
- INSTANCE_NAME: 만들려는 SQL Server용 Cloud SQL 인스턴스의 이름입니다.
- DATABASE_VERSION: 사용할 데이터베이스 버전입니다(예:
SQLSERVER_2019_STANDARD). - DOMAIN: 사용할 도메인 이름(예:
myaddomain.com) - CUSTOMER_MANAGED_ACTIVE_DIRECTORY: 도메인의 모드를 나타냅니다. 도메인이 Google에 의해 생성되고 소유된 경우
MANAGED_ACTIVE_DIRECTORY를 입력합니다. 도메인이 사용자에 의해 생성되고 소유된 경우CUSTOMER_MANAGED_ACTIVE_DIRECTORY을 입력합니다. - CLOUD_OU: 사용할 조직 단위의 이름입니다.
예를 들면
CLOUDOU입니다. 필요한 만큼 조직 단위를 입력할 수 있습니다. - DC1: 조직 단위의 식별 이름에 사용되는 첫 번째 도메인 구성요소입니다. 예를 들면
DOMAIN입니다. 필요한 만큼 도메인 구성요소를 입력할 수 있습니다. - DC2: 조직 단위의 식별 이름에 사용되는 두 번째 도메인 구성요소입니다. 예를 들면
COM입니다.--active-directory-organizational-unit플래그의 전체 값은"OU=CLOUDOU,DC=DOMAIN,DC=COM"와 같이 표시될 수 있습니다. 필요한 만큼 도메인 구성요소를 입력할 수 있습니다. - PROJECT_ID: 인스턴스가 상주할 프로젝트 ID입니다.
- SECRET_NAME: 사용할 보안 비밀입니다.
- IP1: 사용할 첫 번째 DNS 서버의 IP 주소입니다(예:
10.20.30.40). 필요한 만큼 IP 주소를 입력할 수 있습니다. - IP2: 사용할 두 번째 DNS 서버의 IP 주소입니다(예:
20.30.40.50). 필요한 만큼 IP 주소를 입력할 수 있습니다. - CPU: 인스턴스에 할당할 CPU 양입니다.
- MEMORY: 인스턴스에 할당할 메모리 양입니다.
- NETWORK: 인스턴스가 연결될 네트워크의 이름입니다(예:
projects/my-gcp-project-123/global/networks/my-production-vpc).
REST v1
CMAD로 인스턴스를 만들려면 users:insert 메서드와 함께 POST 요청을 사용합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
다음을 바꿉니다.
- DATABASE_VERSION: 사용할 데이터베이스 버전입니다(예:
SQLSERVER_2019_STANDARD). - INSTANCE_NAME: 만들려는 SQL Server용 Cloud SQL 인스턴스의 이름입니다.
- REGION: 인스턴스가 상주할 리전입니다(예:
us-central1). - PASSWORD: 인스턴스의 비밀번호입니다.
- MACHINE_TYPE: 인스턴스에 사용할 머신 유형(예:
db-n1-standard-8)입니다. - NETWORK: 인스턴스가 연결될 네트워크의 이름입니다(예:
projects/my-gcp-project-123/global/networks/my-production-vpc). - DOMAIN: 사용할 도메인 이름(예:
myaddomain.com) - CUSTOMER_MANAGED_ACTIVE_DIRECTORY: 도메인의 모드를 나타냅니다. 도메인이 Google에 의해 생성되고 소유된 경우
MANAGED_ACTIVE_DIRECTORY를 입력합니다. 도메인이 사용자에 의해 생성되고 소유된 경우CUSTOMER_MANAGED_ACTIVE_DIRECTORY을 입력합니다. - CLOUD_OU: 사용할 조직 단위의 이름입니다.
예를 들면
CLOUDOU입니다. 필요한 만큼 조직 단위를 입력할 수 있습니다. - DC1: 조직 단위의 식별 이름에 사용되는 첫 번째 도메인 구성요소입니다. 예를 들면
DOMAIN입니다. 필요한 만큼 도메인 구성요소를 입력할 수 있습니다. - DC2: 조직 단위의 식별 이름에 사용되는 두 번째 도메인 구성요소입니다. 예를 들면
COM입니다.--active-directory-organizational-unit플래그의 전체 값은"OU=CLOUDOU,DC=DOMAIN,DC=COM"와 같이 표시될 수 있습니다. 필요한 만큼 도메인 구성요소를 입력할 수 있습니다. - PROJECT_ID: 인스턴스가 상주할 프로젝트 ID입니다.
- SECRET_NAME: 사용할 보안 비밀입니다.
- IP1: 사용할 첫 번째 DNS 서버의 IP 주소입니다(예:
10.20.30.40). 필요한 만큼 IP 주소를 입력할 수 있습니다. - IP2: 사용할 두 번째 DNS 서버의 IP 주소입니다(예:
20.30.40.50). 필요한 만큼 IP 주소를 입력할 수 있습니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 요청 본문:
{
"databaseVersion":"DATABASE_VERSION",
"name":"INSTANCE_NAME",
"region":"REGION",
"rootPassword":"PASSWORD",
"settings":{
"tier":"MACHINE-TYPE",
"ipConfiguration":{
"privateNetwork":"NETWORK"
},
"activeDirectoryConfig":{
"domain":"DOMAIN"
"mode": "CUSTOMER_MANAGED_ACTIVE_DIRECTORY",
"organizational_unit":"OU=CLOUDOU,DC=DC1,DC=DC2"
"admin_credential_secret_name":"projects/PROJECT_ID/secrets/SECRET_NAME"
"dns_servers":"IP1,IP2"
}
}
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
"status": "RUNNING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"startTime": "2023-06-14T18:48:35.499Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_NAME",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
CMAD로 인스턴스를 만들려면 users:insert 메서드와 함께 POST 요청을 사용합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
다음을 바꿉니다.
- DATABASE_VERSION: 사용할 데이터베이스 버전입니다(예:
SQLSERVER_2019_STANDARD). - INSTANCE_NAME: 만들려는 SQL Server용 Cloud SQL 인스턴스의 이름입니다.
- REGION: 인스턴스가 상주할 리전입니다(예:
us-central1). - PASSWORD: 인스턴스의 비밀번호입니다.
- MACHINE_TYPE: 인스턴스에 사용할 머신 유형(예:
db-n1-standard-8)입니다. - NETWORK: 인스턴스가 연결될 네트워크의 이름입니다(예:
projects/my-gcp-project-123/global/networks/my-production-vpc). - DOMAIN: 사용할 도메인 이름(예:
myaddomain.com) - CUSTOMER_MANAGED_ACTIVE_DIRECTORY: 도메인의 모드를 나타냅니다. 도메인이 Google에 의해 생성되고 소유된 경우
MANAGED_ACTIVE_DIRECTORY를 입력합니다. 도메인이 사용자에 의해 생성되고 소유된 경우CUSTOMER_MANAGED_ACTIVE_DIRECTORY을 입력합니다. - CLOUD_OU: 사용할 조직 단위의 이름입니다.
예를 들면
CLOUDOU입니다. 필요한 만큼 조직 단위를 입력할 수 있습니다. - DC1: 조직 단위의 식별 이름에 사용되는 첫 번째 도메인 구성요소입니다. 예를 들면
DOMAIN입니다. 필요한 만큼 도메인 구성요소를 입력할 수 있습니다. - DC2: 조직 단위의 식별 이름에 사용되는 두 번째 도메인 구성요소입니다. 예를 들면
COM입니다.--active-directory-organizational-unit플래그의 전체 값은"OU=CLOUDOU,DC=DOMAIN,DC=COM"와 같이 표시될 수 있습니다. 필요한 만큼 도메인 구성요소를 입력할 수 있습니다. - PROJECT_ID: 인스턴스가 상주할 프로젝트 ID입니다.
- SECRET_NAME: 사용할 보안 비밀입니다.
- IP1: 사용할 첫 번째 DNS 서버의 IP 주소입니다(예:
10.20.30.40). 필요한 만큼 IP 주소를 입력할 수 있습니다. - IP2: 사용할 두 번째 DNS 서버의 IP 주소입니다(예:
20.30.40.50). 필요한 만큼 IP 주소를 입력할 수 있습니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 요청 본문:
{
"databaseVersion":"DATABASE_VERSION",
"name":"INSTANCE_NAME",
"region":"REGION",
"rootPassword":"PASSWORD",
"settings":{
"tier":"MACHINE-TYPE",
"ipConfiguration":{
"privateNetwork":"NETWORK"
},
"activeDirectoryConfig":{
"domain":"DOMAIN"
"mode": "CUSTOMER_MANAGED_ACTIVE_DIRECTORY",
"organizational_unit":"OU=CLOUDOU,DC=DC1,DC=DC2"
"admin_credential_secret_name":"projects/PROJECT_ID/secrets/SECRET_NAME"
"dns_servers":"IP1,IP2"
}
}
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME",
"status": "RUNNING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"startTime": "2023-06-14T18:48:35.499Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_NAME",
"selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
Windows 인증으로 인스턴스 업데이트
도메인 변경 또는 추가와 같이 기존 인스턴스의 도메인을 업데이트할 수 있습니다.
인스턴스 업데이트에 대한 일반적인 내용은 인스턴스 수정을 참조하세요.
인스턴스가 현재 CMAD 도메인과 연결된 경우 새 도메인에 연결되기 전 해당 도메인에서 먼저 연결 해제됩니다. 업데이트에 실패하면 인스턴스가 더 이상 어느 도메인에도 연결되지 않을 수 있습니다.
gcloud
다음은 기존 인스턴스를 업데이트하는 명령어의 예시입니다. 이 명령어는 도메인을 추가하거나 바꿉니다. 다음과 같이 --active-directory-domain=DOMAIN을 명령어에 전달합니다.
gcloud sql instances patch INSTANCE_NAME \ --active-directory-domain=DOMAIN \ --active-directory-mode=CUSTOMER_MANAGED_ACTIVE_DIRECTORY \ --active-directory-organizational-unit="OU=CLOUDOU,DC=DOMAIN,DC=COM" \ --active-directory-secret-manager-key=projects/PROJECT_ID/secrets/SECRET_NAME \ --active-directory-dns-servers=IP1,IP2
다음을 바꿉니다.
- INSTANCE_NAME: 업데이트할 SQL Server용 Cloud SQL 인스턴스의 이름입니다.
- DOMAIN: 사용할 도메인 이름입니다(예:
myaddomain.com). - CUSTOMER_MANAGED_ACTIVE_DIRECTORY: 도메인의 모드를 나타냅니다. 도메인이 Google에 의해 생성되고 소유된 경우
MANAGED_ACTIVE_DIRECTORY를 입력합니다. 도메인이 사용자에 의해 생성되고 소유된 경우CUSTOMER_MANAGED_ACTIVE_DIRECTORY을 입력합니다. - CLOUD_OU: 사용할 조직 단위의 이름입니다.
예를 들면
CLOUDOU입니다. 필요한 만큼 조직 단위를 입력할 수 있습니다. - DC1: 조직 단위의 식별 이름에 사용되는 첫 번째 도메인 구성요소입니다. 예를 들면
DOMAIN입니다. 필요한 만큼 도메인 구성요소를 입력할 수 있습니다. - DC2: 조직 단위의 식별 이름에 사용되는 두 번째 도메인 구성요소입니다. 예를 들면
COM입니다.--active-directory-organizational-unit플래그의 전체 값은"OU=CLOUDOU,DC=DOMAIN,DC=COM"와 같이 표시될 수 있습니다. 필요한 만큼 도메인 구성요소를 입력할 수 있습니다. - PROJECT_ID: 인스턴스가 있는 프로젝트 ID입니다.
- SECRET_NAME: 인스턴스와 연결된 보안 비밀입니다.
- IP1: 사용할 첫 번째 DNS 서버의 IP 주소입니다(예:
10.20.30.40). 필요한 만큼 IP 주소를 입력할 수 있습니다. - IP2: 사용할 두 번째 DNS 서버의 IP 주소입니다(예:
20.30.40.50). 필요한 만큼 IP 주소를 입력할 수 있습니다.
REST v1
CMAD 인스턴스를 업데이트하려면 users:insert 메서드와 함께 PATCH 요청을 사용합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- DOMAIN: 사용할 도메인 이름입니다(예:
myaddomain.com). - CUSTOMER_MANAGED_ACTIVE_DIRECTORY: 도메인의 모드를 나타냅니다. 도메인이 Google에 의해 생성되고 소유된 경우
MANAGED_ACTIVE_DIRECTORY를 입력합니다. 도메인이 사용자에 의해 생성되고 소유된 경우CUSTOMER_MANAGED_ACTIVE_DIRECTORY을 입력합니다. - CLOUD_OU: 사용할 조직 단위의 이름입니다.
예를 들면
CLOUDOU입니다. 필요한 만큼 조직 단위를 입력할 수 있습니다. - DC1: 조직 단위의 식별 이름에 사용되는 첫 번째 도메인 구성요소입니다. 예를 들면
DOMAIN입니다. 필요한 만큼 도메인 구성요소를 입력할 수 있습니다. - DC2: 조직 단위의 식별 이름에 사용되는 두 번째 도메인 구성요소입니다. 예를 들면
COM입니다.--active-directory-organizational-unit플래그의 전체 값은"OU=CLOUDOU,DC=DOMAIN,DC=COM"와 같이 표시될 수 있습니다. 필요한 만큼 도메인 구성요소를 입력할 수 있습니다. - PROJECT_ID: 인스턴스가 있는 프로젝트 ID입니다.
- SECRET_NAME: 인스턴스와 연결된 보안 비밀입니다.
- IP1: 사용할 첫 번째 DNS 서버의 IP 주소입니다(예:
10.20.30.40). 필요한 만큼 IP 주소를 입력할 수 있습니다. - IP2: 사용할 두 번째 DNS 서버의 IP 주소입니다(예:
20.30.40.50). 필요한 만큼 IP 주소를 입력할 수 있습니다.
HTTP 메서드 및 URL:
PATCH https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 요청 본문:
{
"settings":{
"activeDirectoryConfig":{
"domain":"DOMAIN"
"mode": "CUSTOMER_MANAGED_ACTIVE_DIRECTORY",
"organizational_unit":"OU=CLOUDOU,DC=DC1,DC=DC2"
"admin_credential_secret_name":"projects/PROJECT_ID/secrets/SECRET_NAME"
"dns_servers":"IP1,IP2"
}
}
}요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
CMAD 인스턴스를 업데이트하려면 users:insert 메서드와 함께 PATCH 요청을 사용합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- DOMAIN: 사용할 도메인 이름입니다(예:
myaddomain.com). - CUSTOMER_MANAGED_ACTIVE_DIRECTORY: 도메인의 모드를 나타냅니다. 도메인이 Google에 의해 생성되고 소유된 경우
MANAGED_ACTIVE_DIRECTORY를 입력합니다. 도메인이 사용자에 의해 생성되고 소유된 경우CUSTOMER_MANAGED_ACTIVE_DIRECTORY을 입력합니다. - CLOUD_OU: 사용할 조직 단위의 이름입니다.
예를 들면
CLOUDOU입니다. 필요한 만큼 조직 단위를 입력할 수 있습니다. - DC1: 조직 단위의 식별 이름에 사용되는 첫 번째 도메인 구성요소입니다. 예를 들면
DOMAIN입니다. 필요한 만큼 도메인 구성요소를 입력할 수 있습니다. - DC2: 조직 단위의 식별 이름에 사용되는 두 번째 도메인 구성요소입니다. 예를 들면
COM입니다.--active-directory-organizational-unit플래그의 전체 값은"OU=CLOUDOU,DC=DOMAIN,DC=COM"와 같이 표시될 수 있습니다. 필요한 만큼 도메인 구성요소를 입력할 수 있습니다. - PROJECT_ID: 인스턴스가 있는 프로젝트 ID입니다.
- SECRET_NAME: 인스턴스와 연결된 보안 비밀입니다.
- IP1: 사용할 첫 번째 DNS 서버의 IP 주소입니다(예:
10.20.30.40). 필요한 만큼 IP 주소를 입력할 수 있습니다. - IP2: 사용할 두 번째 DNS 서버의 IP 주소입니다(예:
20.30.40.50). 필요한 만큼 IP 주소를 입력할 수 있습니다.
HTTP 메서드 및 URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 요청 본문:
{
"settings":{
"activeDirectoryConfig":{
"domain":"DOMAIN"
"mode": "CUSTOMER_MANAGED_ACTIVE_DIRECTORY",
"organizational_unit":"OU=CLOUDOU,DC=DC1,DC=DC2"
"admin_credential_secret_name":"projects/PROJECT_ID/secrets/SECRET_NAME"
"dns_servers":"IP1,IP2"
}
}
}요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 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-16T02:32:12.281Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
Microsoft Active Directory용 관리형 서비스와 CMAD 간 마이그레이션
관리형 Microsoft AD와의 통합에서 CMAD와의 통합으로 인스턴스를 이전하려면 다음 gcloud CLI 명령어를 사용합니다.
gcloud sql instances patch INSTANCE_NAME \ --active-directory-domain=DOMAIN \ --active-directory-mode=CUSTOMER_MANAGED_ACTIVE_DIRECTORY \ --active-directory-organizational-unit="OU=CLOUDOU,DC=DOMAIN,DC=COM" \ --active-directory-secret-manager-key=projects/PROJECT_ID/secrets/SECRET_NAME \ --active-directory-dns-servers=IP1,IP2
다음을 바꿉니다.
- INSTANCE_NAME: 수정하려는 SQL Server용 Cloud SQL 인스턴스의 이름입니다.
- DOMAIN: 사용할 도메인 이름입니다(예:
myaddomain.com). - CUSTOMER_MANAGED_ACTIVE_DIRECTORY: 도메인의 모드를 나타냅니다. 도메인이 Google에 의해 생성되고 소유된 경우
MANAGED_ACTIVE_DIRECTORY를 입력합니다. 도메인이 사용자에 의해 생성되고 소유된 경우CUSTOMER_MANAGED_ACTIVE_DIRECTORY을 입력합니다. - CLOUD_OU: 사용할 조직 단위의 이름입니다.
예를 들면
CLOUDOU입니다. 필요한 만큼 조직 단위를 입력할 수 있습니다. - DC1: 조직 단위의 식별 이름에 사용되는 첫 번째 도메인 구성요소입니다. 예를 들면
DOMAIN입니다. 필요한 만큼 도메인 구성요소를 입력할 수 있습니다. - DC2: 조직 단위의 식별 이름에 사용되는 두 번째 도메인 구성요소입니다. 예를 들면
COM입니다.--active-directory-organizational-unit플래그의 전체 값은"OU=CLOUDOU,DC=DOMAIN,DC=COM"와 같이 표시될 수 있습니다. 필요한 만큼 도메인 구성요소를 입력할 수 있습니다. - PROJECT_ID: 인스턴스가 있는 프로젝트 ID입니다.
- SECRET_NAME: 인스턴스와 연결된 보안 비밀입니다.
- IP1: 사용할 첫 번째 DNS 서버의 IP 주소입니다(예:
10.20.30.40). 필요한 만큼 IP 주소를 입력할 수 있습니다. - IP2: 사용할 두 번째 DNS 서버의 IP 주소입니다(예:
20.30.40.50). 필요한 만큼 IP 주소를 입력할 수 있습니다.
사용자로 인스턴스에 연결
SQL Server용 Cloud SQL의 경우 기본 사용자는 sqlserver입니다.
인스턴스를 CMAD와 통합한 후 다음과 같이 sqlserver 사용자로 인스턴스에 연결할 수 있습니다.
- 다음과 같이 Windows 사용자 또는 그룹을 기준으로 SQL Server 로그인을 만듭니다.
CREATE LOGIN [domain\user_or_group] FROM WINDOWS
- Windows 인증을 사용하여 인스턴스 DNS 이름으로 인스턴스에 로그인합니다. 지정할 인스턴스 DNS 이름의 예는 다음과 같습니다.
- 비공개 IP를 통해 연결하는 예를 보여줍니다.
private.myinstance.us-central1.myproject.cloudsql.mydomain.com
- 공개 IP를 통해 연결하는 예시를 보여줍니다.
public.myinstance.us-central1.myproject.cloudsql.mydomain.com
- Cloud SQL 인증 프록시를 통해 연결하는 예를 보여줍니다.
proxy.myinstance.us-central1.myproject.cloudsql.mydomain.com
자세한 내용은 Windows 인증으로 Cloud SQL 인증 프록시 사용을 참고하세요.
- 비공개 IP를 통해 연결하는 예를 보여줍니다.
인스턴스 IP 주소를 사용할 경우 IP 호스트 이름을 지원하도록 Kerberos 클라이언트를 구성해야 합니다. Cloud SQL은 트러스트 관계를 통해 연결된 도메인의 IP 주소를 사용한 로그인을 지원하지 않습니다.
Windows 인증으로 Cloud SQL 인증 프록시 사용
CMAD 통합에 Cloud SQL 인증 프록시를 사용할 수 있습니다.
시작하기 전에 다음을 검토하세요.
Windows 인증 단계
Cloud SQL 인증 프록시 시작에 대한 배경 정보는 Cloud SQL 인증 프록시 시작을 참조하세요.
Windows 인증의 경우 포트 1433에서 Cloud SQL 인증 프록시를 실행해야 합니다. 사전 정의된 서비스 기본 이름 (SPN) 항목을 Cloud SQL 인증 프록시 주소에 매핑하려면 다음 명령어를 사용하세요.
Proxy.[instance].[location].[project].cloudsql.[domain]
로컬로 Cloud SQL 인증 프록시 실행
Cloud SQL 인증 프록시를 로컬로 실행하려면 호스트 파일을 사용하여 다음을 127.0.0.1에 매핑합니다.
Proxy.[instance].[location].[project].cloudsql.[domain]
예를 들어 호스트 파일에 다음을 추가할 수 있습니다 (예: c:\windows\system32\drivers\etc\hosts).
127.0.0.1 proxy.[instance].[location].[project].cloudsql.[domain]
이 예시에서는 다음 명령어를 사용하여 Cloud SQL 인증 프록시를 실행하고 127.0.0.1:1433에 제공할 수 있습니다.
cloud-sql-proxy.exe --credentials-file credential.json project:name
로컬이 아닌 방식으로 Cloud SQL 인증 프록시 실행
외부에서 Cloud SQL 인증 프록시를 실행하려면 로컬로 Cloud SQL 인증 프록시 실행의 안내를 따르되 호스트 파일에 다른 항목을 사용합니다.
특히 로컬이 아닌 호스트가 예를 들어 MyOtherHost이면 호스트 파일에 다음을 추가할 수 있습니다.
127.0.0.1 MyOtherHost proxy.[instance].[location].[project].cloudsql.[domain]
클라이언트의 NTLM 대체 문제 해결
Windows 인증 및 인스턴스 IP 주소를 사용하여 인스턴스에 로그인하는 경우 IP 호스트 이름을 지원하도록 Kerberos 클라이언트를 구성해야 합니다.
Cloud SQL은 NTLM 인증을 지원하지 않지만 일부 Kerberos 클라이언트가 이것으로 대체하려고 시도할 수 있습니다. 이 섹션에서 설명한 것처럼 SQL Server Management Studio (SSMS)에 연결하려고 할 때 다음 오류 메시지가 발생하면 NTLM 대체가 원인일 수 있습니다.
NTLM은 인증에 대한 Microsoft 보안 프로토콜 집합입니다. 자세한 내용은 NTLM 대체 이유를 참고하세요.
Windows 클라이언트의 NTLM 대체 확인
Windows 터미널에서 NTLM 대체로 인해 오류가 발생했는지 확인하려면 다음을 완료하세요.
- 사용할 온프레미스 사용자 인증 정보로 로그인합니다.
"Run as..."명령어는 사용하지 마세요. - 명령 프롬프트를 엽니다.
klist purge를 실행합니다.- SSMS에서 Windows 인증을 사용하여 SQL Server에 연결해 봅니다.
klist를 실행하고 반환된 오류에 대해 발급된 티켓이 있는지 확인합니다.- 티켓이 없으면 NTLM이 오류의 원인일 수 있습니다.
- 티켓이 있는 경우 SQL Server 드라이버가 NTLM 인증을 적용하지 않는지 확인합니다. 또한 그룹 정책을 통해 NTLM 인증이 적용되는지 확인합니다.
Linux 클라이언트의 NTLM 대체 확인
Ubuntu 16.04에서 NTLM 대체로 오류가 발생했는지 확인하려면 이 섹션의 단계를 따르세요. 이 단계는 다른 Linux 배포의 단계와 비슷합니다.
Kerberos 인증 설정
- Kerberos 클라이언트를 설정합니다.
sudo apt-get install krb5-user
- 기본 렐름을 입력하라는 메시지가 표시되면 온프레미스 도메인 이름을 대문자로 입력합니다.
- 다음 명령어를 실행하여 SQL Server 명령줄 도구를 설치합니다.
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list sudo apt-get update sudo apt-get install mssql-tools unixodbc-dev
Windows 인증 연결
- kinit 도구를 다음과 같이 실행합니다.
kinit
- Windows 인증으로 연결하려면 다음을 실행하세요.
/opt/mssql-tools/bin/sqlcmd -S
- klist 명령어를 실행하고 다음 반환된 메시지에 대해 특별히 티켓이 발급되었는지 확인합니다.
MSSQLSvc/:1433 @ domain
- 티켓이 발급되지 않았다면 이전 오류는 NTLM 대체를 초래한 문제를 나타낼 가능성이 높습니다.
NTLM 대체 이유
NTLM로의 대체는 다음 조건과 관련될 수 있는 클라이언트 구성 오류입니다.
- 기본적으로 호스트 이름이 IP 주소인 경우 Windows는 호스트에 대해 Kerberos 인증을 시도하지 않습니다. IP 주소에 Kerberos 인증을 사용 설정하려면 Microsoft 문서에 설명된 방법을 시도하세요.
- 외부 트러스트를 통한 Kerberos 인증은 작동하지 않습니다. 대신 포리스트 트러스트를 사용하세요.
- 다른 포리스트에서 서비스를 찾을 수 있도록 하려면 Kerberos 인증에 이름 서픽스 라우팅이 필요합니다. 두 도메인 간 트러스트 관계 설정에 설명된 방법을 시도해 보세요.
- 서비스에 등록된 SPN이 없으면 Kerberos 인증은 작동하지 않습니다. Google Cloud 콘솔에서 가져온 FQDN 또는 IP 주소만 사용하여 Windows 인증과 연결합니다.
온프레미스 AD 사용자의 Windows 로그인 만들기
CREATE LOGIN 안내에 따라 온프레미스 사용자에 대해 Windows 로그인을 만듭니다. 예를 들어 다음과 비슷한 명령어를 지정합니다.
CREATE LOGIN [DOMAIN_NAME\USER_NAME] FROM WINDOWS
Cloud SQL에서 CMAD 사용을 위한 팁
- 공개 IP를 포함하는 인스턴스는 비공개 IP도 포함하는 경우에만 지원됩니다. 인스턴스에 대해 비공개 IP가 사용 설정되어야 합니다. 그런 다음 두 항목을 모두 사용할 수 있는 한 공개 IP 또는 비공개 IP를 사용하여 인스턴스에 연결하도록 선택할 수 있습니다.
- 대체 인스턴스를 포함하여 인스턴스를 만들기 전에 다음을 검토합니다.
- 트러스트 관계를 통해 연결된 도메인에서 Windows 인증이 실패하면 고객 관리 도메인의 사용자로 Windows 인증이 작동하는지 확인합니다. 이 경우 다음을 완료합니다.
- DNS 이름을 사용했는지 확인합니다. 트러스트 관계를 사용하여 연결된 도메인에서는 IP 주소가 지원되지 않습니다.
- 모든 방화벽 포트 열기를 포함하여 두 도메인 간 트러스트 관계 설정의 단계를 완료했는지 확인합니다.
- 트러스트를 검증합니다.
- 트러스트 방향에 따라 트러스트 관계를 통해 연결된 도메인의 사용자가 인증을 수행하도록 허용되는지 확인합니다.
- 디렉터리 동기화를 위해 라우팅 불가능한 도메인 준비하기에 설명된 단계를 따릅니다.
- SQL Server용 Cloud SQL을 사용하지 않고 트러스트가 작동하는지 확인합니다.
- Windows VM을 만듭니다.
- CMAD 도메인에 연결합니다.
- 예를 들어 트러스트 관계를 통해 연결된 도메인의 사용자로 메모장 실행을 시도합니다.
- 클라이언트 VM을 다시 시작하고 Windows 인증을 다시 테스트합니다.
- SQL Server 로그인 만들기를 시도할 수 있지만 다음 오류가 발생합니다.
이 오류는 도메인 로컬 그룹이 지원되지 않기 때문에 발생했을 수 있습니다. 해당하는 경우 대신 전역 또는 범용 그룹을 사용하세요.
- SQL Server 쿼리로 다음 오류가 발생하면 트러스트 관계를 통해 연결된 도메인의 사용자에 대해 지원되지 않는 IP 주소 때문인지 확인합니다.
다음 작업을 통해 이 문제를 해결할 수 있습니다.
- 관리형 도메인의 사용자를 연결하기 위해 IP 주소를 사용하는 경우 Microsoft 문서의 안내를 따르세요.
- Google Cloud 콘솔에 이름이 표시되므로 프록시를 사용하지 않고 항상 동일한 DNS 이름을 사용하여 SQL Server용 Cloud SQL에 연결합니다.
인스턴스가 최근에 업데이트되었는지 여부에 관계없이 인스턴스에서 Windows 인증 관련 문제가 계속 발생하면 도메인에서 연결 해제한 후 다시 연결해보세요. 이렇게 하려면 업데이트 절차에 따라 도메인을 연결 해제한 후 다시 연결합니다. 이렇게 해도 데이터베이스에 존재하는 기존 Windows 인증 사용자 또는 로그인은 삭제되지 않습니다. 하지만 Windows 인증을 삭제하면 인스턴스가 다시 시작됩니다.
- AD 진단 도구를 사용하여 Google Cloud 콘솔에서 고객 관리 도메인 및 SQL Server용 Cloud SQL 인스턴스의 AD 설정 문제 해결 관리형 Microsoft AD 관련 단계를 건너뜁니다.
문제 해결
다음 표에는 일반적인 오류 메시지와 해결 방법이 나와 있습니다.
| 발생 오류 | 문제 원인 | 해결 방법 |
|---|---|---|
Per-product, per-project Service Account (P4 SA) not found for project. |
서비스 계정 이름이 잘못되었습니다. | 서비스 계정 페이지에서 올바른 사용자 프로젝트에 대해 서비스 계정을 만들었는지 확인합니다. |
The operation completed but an update to Active Directory failed.
You may experience issues with Windows Authentication on this instance, please
see https://cloud.google.com/sql/docs/sqlserver/configure-cmad for tips. |
필요한 업데이트를 CMAD 도메인에서 수행할 수 없습니다. | Windows 인증에 문제가 발생하면 CMAD 도메인을 연결 해제한 후 다시 연결하도록 시도할 수 있습니다. 이렇게 하려면 업데이트 절차에 따라 도메인을 연결 해제한 후 다시 연결합니다. 이렇게 해도 데이터베이스에 존재하는 기존 Windows 인증 사용자 또는 로그인은 삭제되지 않습니다. 하지만 Windows 인증을 삭제하면 인스턴스가 다시 시작됩니다. |
This instance would need new network architecture to support Active
Directory. See https://cloud.google.com/sql/docs/sqlserver/configure-cmad." |
이 인스턴스는 새 네트워크 아키텍처를 사용하지 않습니다. | 인스턴스를 새 네트워크 아키텍처로 업그레이드합니다. |
Admin credential secret name / Organizational unit / DNS Server
names is required or Invalid Admin credential secret name /
OrganizationalUnit / DNS Server names provided. |
관리자 사용자 인증 정보, 조직 단위, DNS 서버는 필수 매개변수입니다. | 이러한 매개변수를 지정하여 요청을 다시 시도하세요. |
Integration failed due to insufficient permissions. The Service
Agent for this project must be granted the secretmanager.secrets.getIamPolicy
and secretmanager.secrets.setIamPolicy permissions on the provided admin
credential key in Secret Manager. |
이 프로젝트의 서비스 에이전트에 필요한 권한이 없습니다. | secretmanager.secrets.getIamPolicy 및 secretmanager.secrets.setIamPolicy 권한이 있는 커스텀 역할을 만들고 이 프로젝트의 서비스 에이전트에 할당합니다. 자세한 내용은 Secret Manager 역할 및 권한을 참고하세요. |