Usar o Microsoft Active Directory gerenciado pelo cliente (CMAD)

Nesta página, descrevemos como usar o Microsoft Active Directory gerenciado pelo cliente (também conhecido como AD gerenciado pelo cliente, CMAD):

  • Integre o Cloud SQL para SQL Server ao CMAD.
  • Conecte-se a uma instância com um usuário do Active Directory (AD).

Uma instância do Cloud SQL integrada ao CMAD é compatível com a autenticação do Windows, além da autenticação do SQL.

Antes de começar

Criar uma instância com o Windows Authentication

É possível integrar-se ao CMAD durante a criação da instância, ao ativar a autenticação do Windows para a instância. Para vincular, escolha um domínio para a instância a ser mesclada. Se não for possível vincular um domínio, a criação da instância falhará.

Durante a preparação para criar uma instância com a Autenticação do Windows, consulte as dicas e as limitações e alternativas.

Embora seja possível usar um IP público, a instância do Cloud SQL também precisa ter acesso a um IP privado.

Use qualquer uma das opções a seguir para criar uma instância integrada ao CMAD e, como resultado, ativada para a autenticação do Windows. Para informações sobre o comando básico para criar uma instância, consulte Como criar instâncias.

gcloud

Para criar uma instância com CMAD, execute o seguinte:

  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

Substitua:

  • INSTANCE_NAME: o nome da instância do Cloud SQL para SQL Server que você quer criar.
  • DATABASE_VERSION: a versão do banco de dados que você quer usar, como SQLSERVER_2019_STANDARD.
  • DOMAIN: o nome de domínio que você quer usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica o modo do domínio. Se o domínio foi criado e é de propriedade do Google, insira MANAGED_ACTIVE_DIRECTORY. Se o domínio foi criado e pertence ao usuário, insira CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: é o nome da unidade organizacional que você quer usar. Por exemplo, CLOUDOU. Você pode inserir quantas unidades organizacionais forem necessárias.
  • DC1: é o primeiro componente de domínio usado para o nome distinto da unidade organizacional. Por exemplo, DOMAIN. Você pode inserir quantos componentes de domínio forem necessários.
  • DC2: é o segundo componente de domínio usado para o nome distinto da unidade organizacional. Por exemplo, COM. Um valor completo para a flag --active-directory-organizational-unit pode ser assim: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Você pode inserir quantos componentes de domínio forem necessários.
  • PROJECT_ID: é o ID do projeto em que a instância vai ficar.
  • SECRET_NAME: é o secret que você quer usar.
  • IP1: é o endereço IP do primeiro servidor DNS que você quer usar, como 10.20.30.40. É possível inserir quantos endereços IP forem necessários.
  • IP2: é o endereço IP do segundo servidor DNS que você quer usar, como 20.30.40.50. É possível inserir quantos endereços IP forem necessários.
  • CPU: é a quantidade de CPU que você quer atribuir à instância.
  • MEMORY: é a quantidade de memória que você quer atribuir à instância.
  • NETWORK: é o nome da rede a que sua instância será conectada, como projects/my-gcp-project-123/global/networks/my-production-vpc.

REST v1

Para criar uma instância com o CMAD, use uma solicitação POST com o método users:insert.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

Substitua:

  • DATABASE_VERSION: a versão do banco de dados que você quer usar, como SQLSERVER_2019_STANDARD.
  • INSTANCE_NAME: o nome da instância do Cloud SQL para SQL Server que você quer criar.
  • REGION: a região em que você quer que a instância fique, como us-central1.
  • PASSWORD: a senha da instância.
  • MACHINE_TYPE: o tipo de máquina que você quer usar para a instância, como db-n1-standard-8.
  • NETWORK: é o nome da rede a que sua instância será conectada, como projects/my-gcp-project-123/global/networks/my-production-vpc.
  • DOMAIN: o nome de domínio que você quer usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica o modo do domínio. Se o domínio foi criado e é de propriedade do Google, insira MANAGED_ACTIVE_DIRECTORY. Se o domínio foi criado e pertence ao usuário, insira CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: é o nome da unidade organizacional que você quer usar. Por exemplo, CLOUDOU. Você pode inserir quantas unidades organizacionais forem necessárias.
  • DC1: é o primeiro componente de domínio usado para o nome distinto da unidade organizacional. Por exemplo, DOMAIN. Você pode inserir quantos componentes de domínio forem necessários.
  • DC2: é o segundo componente de domínio usado para o nome distinto da unidade organizacional. Por exemplo, COM. Um valor completo para a flag --active-directory-organizational-unit pode ser assim: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Você pode inserir quantos componentes de domínio forem necessários.
  • PROJECT_ID: é o ID do projeto em que a instância vai ficar.
  • SECRET_NAME: é o secret que você quer usar.
  • IP1: é o endereço IP do primeiro servidor DNS que você quer usar, como 10.20.30.40. É possível inserir quantos endereços IP forem necessários.
  • IP2: é o endereço IP do segundo servidor DNS que você quer usar, como 20.30.40.50. É possível inserir quantos endereços IP forem necessários.

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON da solicitação:

{
   "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"
      }
   }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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

Para criar uma instância com o CMAD, use uma solicitação POST com o método users:insert.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

Substitua:

  • DATABASE_VERSION: a versão do banco de dados que você quer usar, como SQLSERVER_2019_STANDARD.
  • INSTANCE_NAME: o nome da instância do Cloud SQL para SQL Server que você quer criar.
  • REGION: a região em que você quer que a instância fique, como us-central1.
  • PASSWORD: a senha da instância.
  • MACHINE_TYPE: o tipo de máquina que você quer usar para a instância, como db-n1-standard-8.
  • NETWORK: é o nome da rede a que sua instância será conectada, como projects/my-gcp-project-123/global/networks/my-production-vpc.
  • DOMAIN: o nome de domínio que você quer usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica o modo do domínio. Se o domínio foi criado e é de propriedade do Google, insira MANAGED_ACTIVE_DIRECTORY. Se o domínio foi criado e pertence ao usuário, insira CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: é o nome da unidade organizacional que você quer usar. Por exemplo, CLOUDOU. Você pode inserir quantas unidades organizacionais forem necessárias.
  • DC1: é o primeiro componente de domínio usado para o nome distinto da unidade organizacional. Por exemplo, DOMAIN. Você pode inserir quantos componentes de domínio forem necessários.
  • DC2: é o segundo componente de domínio usado para o nome distinto da unidade organizacional. Por exemplo, COM. Um valor completo para a flag --active-directory-organizational-unit pode ser assim: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Você pode inserir quantos componentes de domínio forem necessários.
  • PROJECT_ID: é o ID do projeto em que a instância vai ficar.
  • SECRET_NAME: é o secret que você quer usar.
  • IP1: é o endereço IP do primeiro servidor DNS que você quer usar, como 10.20.30.40. É possível inserir quantos endereços IP forem necessários.
  • IP2: é o endereço IP do segundo servidor DNS que você quer usar, como 20.30.40.50. É possível inserir quantos endereços IP forem necessários.

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON da solicitação:

{
   "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"
      }
   }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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"
}

Atualizar uma instância com a autenticação do Windows

É possível atualizar o domínio de uma instância atual, como mudar ou adicionar um domínio.

Para informações gerais sobre como atualizar uma instância, consulte Como editar instâncias.

Se uma instância estiver vinculada a um domínio do CMAD, ela primeiro será desvinculada desse domínio antes de ser vinculada ao novo domínio. Se a atualização falhar, a instância talvez não esteja mais vinculada a nenhum domínio.

gcloud

Confira a seguir um exemplo de comando para atualizar uma instância. O comando adiciona ou substitui um domínio. Transmita --active-directory-domain=DOMAIN ao comando da seguinte maneira:

  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

Substitua:

  • INSTANCE_NAME: o nome da instância do Cloud SQL para SQL Server que você quer atualizar.
  • DOMAIN: o nome de domínio que você quer usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica o modo do domínio. Se o domínio foi criado e é de propriedade do Google, insira MANAGED_ACTIVE_DIRECTORY. Se o domínio foi criado e pertence ao usuário, insira CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: é o nome da unidade organizacional que você quer usar. Por exemplo, CLOUDOU. Você pode inserir quantas unidades organizacionais forem necessárias.
  • DC1: é o primeiro componente de domínio usado para o nome distinto da unidade organizacional. Por exemplo, DOMAIN. Você pode inserir quantos componentes de domínio forem necessários.
  • DC2: é o segundo componente de domínio usado para o nome distinto da unidade organizacional. Por exemplo, COM. Um valor completo para a flag --active-directory-organizational-unit pode ser assim: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Você pode inserir quantos componentes de domínio forem necessários.
  • PROJECT_ID: é o ID do projeto em que a instância reside.
  • SECRET_NAME: é o secret associado à instância.
  • IP1: é o endereço IP do primeiro servidor DNS que você quer usar, como 10.20.30.40. É possível inserir quantos endereços IP forem necessários.
  • IP2: é o endereço IP do segundo servidor DNS que você quer usar, como 20.30.40.50. É possível inserir quantos endereços IP forem necessários.

REST v1

Para atualizar uma instância do CMAD, use uma solicitação PATCH com o método users:insert.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • DOMAIN: o nome de domínio que você quer usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica o modo do domínio. Se o domínio foi criado e é de propriedade do Google, insira MANAGED_ACTIVE_DIRECTORY. Se o domínio foi criado e pertence ao usuário, insira CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: é o nome da unidade organizacional que você quer usar. Por exemplo, CLOUDOU. Você pode inserir quantas unidades organizacionais forem necessárias.
  • DC1: é o primeiro componente de domínio usado para o nome distinto da unidade organizacional. Por exemplo, DOMAIN. Você pode inserir quantos componentes de domínio forem necessários.
  • DC2: é o segundo componente de domínio usado para o nome distinto da unidade organizacional. Por exemplo, COM. Um valor completo para a flag --active-directory-organizational-unit pode ser assim: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Você pode inserir quantos componentes de domínio forem necessários.
  • PROJECT_ID: é o ID do projeto em que a instância reside.
  • SECRET_NAME: é o secret associado à instância.
  • IP1: é o endereço IP do primeiro servidor DNS que você quer usar, como 10.20.30.40. É possível inserir quantos endereços IP forem necessários.
  • IP2: é o endereço IP do segundo servidor DNS que você quer usar, como 20.30.40.50. É possível inserir quantos endereços IP forem necessários.

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON da solicitação:

{
    "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"
        }
    }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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

Para atualizar uma instância do CMAD, use uma solicitação PATCH com o método users:insert.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • DOMAIN: o nome de domínio que você quer usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica o modo do domínio. Se o domínio foi criado e é de propriedade do Google, insira MANAGED_ACTIVE_DIRECTORY. Se o domínio foi criado e pertence ao usuário, insira CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: é o nome da unidade organizacional que você quer usar. Por exemplo, CLOUDOU. Você pode inserir quantas unidades organizacionais forem necessárias.
  • DC1: é o primeiro componente de domínio usado para o nome distinto da unidade organizacional. Por exemplo, DOMAIN. Você pode inserir quantos componentes de domínio forem necessários.
  • DC2: é o segundo componente de domínio usado para o nome distinto da unidade organizacional. Por exemplo, COM. Um valor completo para a flag --active-directory-organizational-unit pode ser assim: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Você pode inserir quantos componentes de domínio forem necessários.
  • PROJECT_ID: é o ID do projeto em que a instância reside.
  • SECRET_NAME: é o secret associado à instância.
  • IP1: é o endereço IP do primeiro servidor DNS que você quer usar, como 10.20.30.40. É possível inserir quantos endereços IP forem necessários.
  • IP2: é o endereço IP do segundo servidor DNS que você quer usar, como 20.30.40.50. É possível inserir quantos endereços IP forem necessários.

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON da solicitação:

{
    "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"
        }
    }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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"
}

Migração entre o Serviço gerenciado para Microsoft Active Directory e o CMAD

Para migrar uma instância da integração com o Managed Microsoft AD para a integração com o CMAD, use o seguinte comando da CLI gcloud:

  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

Substitua:

  • INSTANCE_NAME: o nome da instância do Cloud SQL para SQL Server que você quer modificar.
  • DOMAIN: o nome de domínio que você quer usar, como myaddomain.com.
  • CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica o modo do domínio. Se o domínio foi criado e é de propriedade do Google, insira MANAGED_ACTIVE_DIRECTORY. Se o domínio foi criado e pertence ao usuário, insira CUSTOMER_MANAGED_ACTIVE_DIRECTORY.
  • CLOUD_OU: é o nome da unidade organizacional que você quer usar. Por exemplo, CLOUDOU. Você pode inserir quantas unidades organizacionais forem necessárias.
  • DC1: é o primeiro componente de domínio usado para o nome distinto da unidade organizacional. Por exemplo, DOMAIN. Você pode inserir quantos componentes de domínio forem necessários.
  • DC2: é o segundo componente de domínio usado para o nome distinto da unidade organizacional. Por exemplo, COM. Um valor completo para a flag --active-directory-organizational-unit pode ser assim: "OU=CLOUDOU,DC=DOMAIN,DC=COM". Você pode inserir quantos componentes de domínio forem necessários.
  • PROJECT_ID: é o ID do projeto em que a instância reside.
  • SECRET_NAME: é o secret associado à instância.
  • IP1: é o endereço IP do primeiro servidor DNS que você quer usar, como 10.20.30.40. É possível inserir quantos endereços IP forem necessários.
  • IP2: é o endereço IP do segundo servidor DNS que você quer usar, como 20.30.40.50. É possível inserir quantos endereços IP forem necessários.

Conectar-se a uma instância com um usuário

Para o Cloud SQL para SQL Server, o usuário padrão é sqlserver.

Depois de integrar uma instância ao CMAD, é possível se conectar a ela com o usuário sqlserver da seguinte maneira:

  1. Crie um login do SQL Server com base em um usuário ou grupo do Windows da seguinte maneira:
          CREATE LOGIN [domain\user_or_group] FROM WINDOWS
        
  2. Faça login na instância usando a autenticação do Windows com o nome DNS da instância. Exemplos de nomes de DNS de instância a serem especificados:
    • Mostra um exemplo de conexão por um IP particular:
            private.myinstance.us-central1.myproject.cloudsql.mydomain.com
            
    • Mostra um exemplo de conexão por um IP público:
              public.myinstance.us-central1.myproject.cloudsql.mydomain.com
              
    • Mostra um exemplo de conexão pelo proxy de autenticação do Cloud SQL:
              proxy.myinstance.us-central1.myproject.cloudsql.mydomain.com
              

      Para mais informações, consulte Usar o proxy de autenticação do Cloud SQL com a autenticação do Windows.

Se você usar o endereço IP da instância, configure os clientes do Kerberos para aceitar nomes de host IP. O Cloud SQL não é compatível com o login usando endereços IP de domínios conectados por uma relação de confiança.

Usar o proxy do Cloud SQL Auth com a autenticação do Windows

Use o proxy de autenticação do Cloud SQL com a integração do CMAD.

Antes de começar, leia o seguinte:

Etapas para autenticação do Windows

Para informações sobre como iniciar o proxy do Cloud SQL Auth, consulte Iniciar o proxy do Cloud SQL Auth.

Para autenticação do Windows, execute o proxy do Cloud SQL Auth na porta 1433. Para mapear uma entrada predefinida do Service Principal Name (SPN) para um endereço de proxy de autenticação do Cloud SQL, use o seguinte comando:

Proxy.[instance].[location].[project].cloudsql.[domain]

Executar o proxy do Cloud SQL Auth localmente

Se você executar o proxy do Cloud SQL Auth localmente, use o arquivo de hosts para mapear o seguinte para 127.0.0.1:

Proxy.[instance].[location].[project].cloudsql.[domain]

Por exemplo, você pode adicionar o seguinte ao arquivo de hosts (por exemplo, a c:\windows\system32\drivers\etc\hosts):

127.0.0.1 proxy.[instance].[location].[project].cloudsql.[domain]

Nesse exemplo, é possível executar o proxy do Cloud SQL Auth usando esse comando e disponibilizá-lo em 127.0.0.1:1433:

cloud-sql-proxy.exe --credentials-file credential.json project:name

Executar o proxy do Cloud SQL Auth não localmente

Para executar o proxy do Cloud SQL Auth externamente, siga as instruções em Como executar o proxy do Cloud SQL Auth localmente, mas use uma entrada diferente no arquivo de hosts.

Especificamente, se um host não local for, por exemplo, MyOtherHost, adicione o seguinte ao arquivo hosts:

127.0.0.1 MyOtherHost proxy.[instance].[location].[project].cloudsql.[domain]

Solução de problemas de fallback NTLM em clientes

Se você usa a autenticação do Windows e um endereço IP de instância para fazer login em uma instância, configure um cliente do Kerberos para aceitar nomes de host IP.

O Cloud SQL não é compatível com a autenticação NTLM, mas alguns clientes do Kerberos podem tentar um fallback. Conforme discutido nesta seção, se você tentar se conectar ao SQL Server Management Studio (SSMS) e a seguinte mensagem de erro ocorrer, uma causa provável é o fallback do NTLM:

Login failed. The login is from an untrusted domain and cannot be used with
Integrated authentication. (Microsoft SQL Server, Error: 18452)

O NTLM é um conjunto de protocolos de segurança para autenticação da Microsoft. Para mais informações, consulte Motivos para o fallback do NTLM.

Verificação de um fallback do NTLM para um cliente Windows

Em um terminal do Windows, para verificar se um fallback de NTLM causou um erro, faça o seguinte:

  1. Faça login com as credenciais locais que você quer usar. Não use comandos "Run as...".
  2. Abra um prompt de comando.
  3. Execute klist purge.
  4. No SSMS, tente se conectar ao SQL Server com a autenticação do Windows.
  5. Execute klist e verifique se há um ticket emitido para o erro retornado.
    MSSQLSvc/
    :1433 @ domain.
  6. Se não houver um ticket como esse, o fallback de NTLM é a causa provável do erro.
  7. Se o ticket existir, verifique se o driver do SQL Server não exige a autenticação do NTLM. Verifique também se a autenticação do NTLM é aplicada por uma política de grupo.

Verificar o fallback do NTLM para um cliente Linux

No Ubuntu 16.04, para verificar se um fallback de NTLM causou um erro, siga as etapas nesta seção. As etapas são semelhantes às de outras distribuições do Linux.

Configurar a autenticação do Kerberos

  1. Para configurar um cliente do Kerberos, faça o seguinte:
          sudo apt-get install krb5-user
        
  2. Quando for solicitado o realm padrão, digite um nome de domínio local em letras maiúsculas.
  3. Execute o seguinte comando para instalar as ferramentas de linha de comando do 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
        

Conectar-se com a autenticação do Windows

  1. Execute a ferramenta kinit da seguinte maneira:
        kinit 
        
  2. Para se conectar com a autenticação do Windows, execute o seguinte:
        /opt/mssql-tools/bin/sqlcmd -S 
  3. Execute o comando klist e verifique se um ticket foi emitido especificamente para a seguinte mensagem retornada:
        MSSQLSvc/
    :1433 @ domain
  4. Se o ticket não foi emitido, o erro anterior provavelmente indica um problema que causa o fallback do NTLM.

Motivos para o fallback do NTLM

O fallback do NTLM é uma configuração incorreta do cliente que pode ser associada às seguintes condições:

  • Por padrão, o Windows não tenta a autenticação do Kerberos para um host se o nome do host for um endereço IP. Para ativar a autenticação do Kerberos para endereços IP, teste o método descrito na documentação da Microsoft.
  • A autenticação do Kerberos pelas relações de confiança externas não funciona. Use confianças de floresta.
  • A autenticação do Kerberos requer o roteamento de sufixo de nome para permitir a descoberta de serviços em outra floresta. Tente o método descrito em Configurar uma relação de confiança entre dois domínios.
  • A autenticação do Kerberos não funciona se não houver um SPN registrado no serviço. Use apenas FQDNs ou endereços IP recebidos do console Google Cloud para se conectar à autenticação do Windows.

Criar um login do Windows para usuários do AD no local

Siga as instruções do CREATE LOGIN para criar um login do Windows para um usuário local. Por exemplo, especifique um comando semelhante ao seguinte:

CREATE LOGIN [DOMAIN_NAME\USER_NAME] FROM WINDOWS

Dicas para usar o CMAD com o Cloud SQL

  • Uma instância com IP público é compatível, desde que ela também tenha um IP particular. O IP particular precisa estar ativado para a instância. Depois, é possível usar um IP público ou particular para se conectar à instância, desde que ambos estejam disponíveis.
  • Antes de criar uma instância, incluindo uma instância de substituição, analise o seguinte:
  • Se a autenticação do Windows falhar em um domínio conectado por uma relação de confiança, verifique se a autenticação do Windows funciona para um usuário de um domínio gerenciado pelo cliente. Em caso afirmativo, faça o seguinte:
    1. Verifique se você usou um nome DNS. Os endereços IP não são compatíveis com domínios conectados usando uma relação de confiança.
    2. Verifique se você concluiu as etapas em Configurar uma relação de confiança entre dois domínios, incluindo a abertura de todas as portas de firewall.
    3. Valide a confiança.
    4. Verifique se a direção da confiança permite que os usuários do domínio (conectados por um relacionamento de confiança) façam a autenticação.
    5. Siga as etapas descritas em Preparar um domínio não roteável para a sincronização de diretório.
    6. Verifique se a confiança funciona sem usar o Cloud SQL para SQL Server:
      1. Crie uma VM do Windows.
      2. Vincule-a ao domínio do CMAD.
      3. Tente executar, por exemplo, o Bloco de Notas como um usuário pelo domínio que está conectado por meio de uma relação de confiança.
    7. Reinicie a VM do cliente e teste novamente a Autenticação do Windows.
  • Você pode tentar criar um login do SQL Server, mas receberá o seguinte erro:
        Windows NT user or group domain\name not found. Check the name again.
        

    Isso pode ter ocorrido porque os grupos locais de domínios não são compatíveis. Se aplicável, use grupos globais ou universais.

  • Se as consultas do SQL Server resultarem no seguinte erro, os endereços IP não serão compatíveis com usuários de domínios conectados por uma relação de confiança:
        The login is from an untrusted domain.
        

    As seguintes ações podem resolver esse problema:

    • Se um endereço IP for usado para conectar usuários de um domínio gerenciado, siga as instruções na documentação da Microsoft.
    • Evite usar proxies e sempre use o mesmo nome DNS para se conectar ao Cloud SQL para SQL Server, conforme visto no console Google Cloud .
  • Se uma instância tiver problemas contínuos com a autenticação do Windows (independentemente de a instância ter sido atualizada recentemente), tente desvincular e vincular novamente ao domínio. Para isso, use o procedimento de atualização para desvincular e vincular o domínio na sequência. Isso não remove nenhum usuário ou login autenticado pelo Windows existente nos seus bancos de dados. No entanto, remover a autenticação do Windows faz com que uma instância seja reiniciada.
  • Use a ferramenta de diagnóstico do AD para solucionar problemas de configuração do AD com seu domínio gerenciado pelo cliente e instâncias do Cloud SQL para SQL Server no console Google Cloud . Pule as etapas relacionadas ao Managed Microsoft AD.

Resolver problemas

A tabela a seguir lista mensagens de erro comuns e maneiras de resolvê-las:

Para este erro... O problema pode ser... Tente o seguinte...
Per-product, per-project Service Account (P4 SA) not found for project. O nome da conta de serviço está incorreto. Na página Contas de serviço, verifique se você criou uma conta de serviço para o projeto de usuário correto.
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. Não foi possível realizar as atualizações necessárias no domínio do CMAD. Se você tiver problemas com a autenticação do Windows, tente desvincular o domínio do CMAD e, em seguida, vincule-o novamente. Para isso, use o procedimento de atualização para desvincular e vincular o domínio na sequência. Isso não remove nenhum usuário ou login autenticado pelo Windows existente nos seus bancos de dados. No entanto, remover a autenticação do Windows faz com que uma instância seja reiniciada.
This instance would need new network architecture to support Active Directory. See https://cloud.google.com/sql/docs/sqlserver/configure-cmad." Essa instância não usa a nova arquitetura de rede. Faça upgrade da instância para a nova arquitetura de rede.
Admin credential secret name / Organizational unit / DNS Server names is required or Invalid Admin credential secret name / OrganizationalUnit / DNS Server names provided. As credenciais de administrador, a unidade organizacional e os servidores DNS são parâmetros obrigatórios. Tente de novo com esses parâmetros especificados.
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. O agente de serviço deste projeto não tem as permissões necessárias. Crie um papel personalizado com as permissões secretmanager.secrets.getIamPolicy e secretmanager.secrets.setIamPolicy e atribua ao agente de serviço desse projeto. Para mais informações, consulte Papéis e permissões do Secret Manager.

A seguir