Esta página descreve como usar o Microsoft Active Directory gerido pelo cliente (também conhecido como AD gerido pelo cliente [CMAD]):
- Integre o Cloud SQL para SQL Server com o CMAD.
- Estabeleça ligação a uma instância com um utilizador do Active Directory (AD).
Uma instância do Cloud SQL integrada com o CMAD suporta a autenticação do Windows, além da autenticação SQL.
Antes de começar
- Na Google Cloud consola, selecione o nome do projeto.
- Certifique-se de que a faturação está ativada para o seu Google Cloud projeto. Saiba como confirmar se a faturação está ativada para o seu projeto.
- Instale e inicialize a CLI gcloud.
- Certifique-se de que tem a função de administrador do Cloud SQL na sua conta de utilizador. Aceda à página de gestão de identidade e de acesso (IAM).
- Reveja os pré-requisitos para a integração.
- Verifique se a replicação do Active Directory está a funcionar corretamente. Se não for implementado corretamente, pode ter problemas com a integração do CMAD.
Crie uma instância com a autenticação do Windows
Pode fazer a integração com o CMAD durante a criação da instância, ativando a autenticação do Windows para a instância. Para fazer a integração, escolhe um domínio para a instância participar. Se a associação a um domínio falhar, a criação da instância falha.
Em preparação para criar uma instância com a autenticação do Windows, reveja as sugestões e as limitações e alternativas.
Embora possa optar por usar um IP público, a instância do Cloud SQL também tem de ter acesso a um IP privado.
Use qualquer uma das seguintes opções para criar uma instância integrada com o CMAD e, como resultado, ativada para a autenticação do Windows. Para ver informações sobre o comando básico para criar uma instância, consulte o artigo Criar instâncias.
gcloud
Para criar uma instância com o 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 o seguinte:
- INSTANCE_NAME: o nome da instância do Cloud SQL para SQL Server que quer criar.
- DATABASE_VERSION: a versão da base de dados que quer usar, como
SQLSERVER_2019_STANDARD. - DOMAIN: o nome do domínio que quer usar, como
myaddomain.com. - CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica o modo do domínio. Se o domínio for criado e detido pela Google, introduza
MANAGED_ACTIVE_DIRECTORY. Se o domínio for criado e pertencer ao utilizador, introduzaCUSTOMER_MANAGED_ACTIVE_DIRECTORY. - CLOUD_OU: é o nome da unidade organizacional que quer usar.
Por exemplo,
CLOUDOU. Pode introduzir tantas unidades organizacionais quantas forem necessárias. - DC1: é o primeiro componente do domínio usado para o nome
distinto da unidade organizacional. Por exemplo,
DOMAIN. Pode introduzir quantos componentes de domínio forem necessários. - DC2: é o segundo componente do domínio usado para o nome
distinto da unidade organizacional. Por exemplo,
COM. Um valor completo para a flag--active-directory-organizational-unitpode ter o seguinte aspeto:"OU=CLOUDOU,DC=DOMAIN,DC=COM". Pode introduzir quantos componentes de domínio forem necessários. - PROJECT_ID: é o ID do projeto onde a instância vai residir.
- SECRET_NAME: é o segredo que quer usar.
- IP1: é o endereço IP do primeiro servidor DNS que quer usar, por exemplo,
10.20.30.40. Pode introduzir todos os endereços IP necessários. - IP2: é o endereço IP do segundo servidor DNS que quer usar, como
20.30.40.50. Pode introduzir todos os endereços IP necessários. - CPU: é a quantidade de CPU que quer atribuir à instância.
- MEMORY: é a quantidade de memória que quer atribuir à instância.
- NETWORK: é o nome da rede à qual a sua instância vai
estar ligada, como
projects/my-gcp-project-123/global/networks/my-production-vpc.
REST v1
Para criar uma instância com o CMAD, use um pedido POST com o método users:insert.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Substitua o seguinte:
- DATABASE_VERSION: a versão da base de dados que quer usar, como
SQLSERVER_2019_STANDARD. - INSTANCE_NAME: o nome da instância do Cloud SQL para SQL Server que quer criar.
- REGION: a região onde quer que a instância resida, como
us-central1. - PASSWORD: a palavra-passe da instância.
- MACHINE_TYPE: o tipo de máquina que quer usar para a instância, como
db-n1-standard-8. - NETWORK: é o nome da rede à qual a sua instância vai
estar ligada, como
projects/my-gcp-project-123/global/networks/my-production-vpc. - DOMAIN: o nome do domínio que quer usar, como
myaddomain.com. - CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica o modo do domínio. Se o domínio for criado e detido pela Google, introduza
MANAGED_ACTIVE_DIRECTORY. Se o domínio for criado e pertencer ao utilizador, introduzaCUSTOMER_MANAGED_ACTIVE_DIRECTORY. - CLOUD_OU: é o nome da unidade organizacional que quer usar.
Por exemplo,
CLOUDOU. Pode introduzir tantas unidades organizacionais quantas forem necessárias. - DC1: é o primeiro componente do domínio usado para o nome
distinto da unidade organizacional. Por exemplo,
DOMAIN. Pode introduzir quantos componentes de domínio forem necessários. - DC2: é o segundo componente do domínio usado para o nome
distinto da unidade organizacional. Por exemplo,
COM. Um valor completo para a flag--active-directory-organizational-unitpode ter o seguinte aspeto:"OU=CLOUDOU,DC=DOMAIN,DC=COM". Pode introduzir quantos componentes de domínio forem necessários. - PROJECT_ID: é o ID do projeto onde a instância vai residir.
- SECRET_NAME: é o segredo que quer usar.
- IP1: é o endereço IP do primeiro servidor DNS que quer usar, por exemplo,
10.20.30.40. Pode introduzir todos os endereços IP necessários. - IP2: é o endereço IP do segundo servidor DNS que quer usar, como
20.30.40.50. Pode introduzir todos os endereços IP necessários.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
Corpo JSON do pedido:
{
"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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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 um pedido POST com o método users:insert.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Substitua o seguinte:
- DATABASE_VERSION: a versão da base de dados que quer usar, como
SQLSERVER_2019_STANDARD. - INSTANCE_NAME: o nome da instância do Cloud SQL para SQL Server que quer criar.
- REGION: a região onde quer que a instância resida, como
us-central1. - PASSWORD: a palavra-passe da instância.
- MACHINE_TYPE: o tipo de máquina que quer usar para a instância, como
db-n1-standard-8. - NETWORK: é o nome da rede à qual a sua instância vai
estar ligada, como
projects/my-gcp-project-123/global/networks/my-production-vpc. - DOMAIN: o nome do domínio que quer usar, como
myaddomain.com. - CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica o modo do domínio. Se o domínio for criado e detido pela Google, introduza
MANAGED_ACTIVE_DIRECTORY. Se o domínio for criado e pertencer ao utilizador, introduzaCUSTOMER_MANAGED_ACTIVE_DIRECTORY. - CLOUD_OU: é o nome da unidade organizacional que quer usar.
Por exemplo,
CLOUDOU. Pode introduzir tantas unidades organizacionais quantas forem necessárias. - DC1: é o primeiro componente do domínio usado para o nome
distinto da unidade organizacional. Por exemplo,
DOMAIN. Pode introduzir quantos componentes de domínio forem necessários. - DC2: é o segundo componente do domínio usado para o nome
distinto da unidade organizacional. Por exemplo,
COM. Um valor completo para a flag--active-directory-organizational-unitpode ter o seguinte aspeto:"OU=CLOUDOU,DC=DOMAIN,DC=COM". Pode introduzir quantos componentes de domínio forem necessários. - PROJECT_ID: é o ID do projeto onde a instância vai residir.
- SECRET_NAME: é o segredo que quer usar.
- IP1: é o endereço IP do primeiro servidor DNS que quer usar, por exemplo,
10.20.30.40. Pode introduzir todos os endereços IP necessários. - IP2: é o endereço IP do segundo servidor DNS que quer usar, como
20.30.40.50. Pode introduzir todos os endereços IP necessários.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
Corpo JSON do pedido:
{
"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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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"
}
Atualize uma instância com a autenticação do Windows
Pode atualizar o domínio de uma instância existente, como alterar ou adicionar um domínio.
Para informações gerais sobre a atualização de uma instância, consulte o artigo Editar instâncias.
Se uma instância estiver atualmente associada a um domínio CMAD, a instância é inicialmente desassociada desse domínio antes de ser associada ao novo domínio. Se a atualização falhar, a instância pode deixar de estar associada a qualquer domínio.
gcloud
Segue-se um comando de exemplo para atualizar uma instância existente. O comando
adiciona ou substitui um domínio. Transmita
--active-directory-domain=DOMAIN para o comando, da seguinte forma:
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 o seguinte:
- INSTANCE_NAME: o nome da instância do Cloud SQL para SQL Server que quer atualizar.
- DOMAIN: o nome do domínio que quer usar, como
myaddomain.com. - CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica o modo do domínio. Se o domínio for criado e detido pela Google, introduza
MANAGED_ACTIVE_DIRECTORY. Se o domínio for criado e pertencer ao utilizador, introduzaCUSTOMER_MANAGED_ACTIVE_DIRECTORY. - CLOUD_OU: é o nome da unidade organizacional que quer usar.
Por exemplo,
CLOUDOU. Pode introduzir tantas unidades organizacionais quantas forem necessárias. - DC1: é o primeiro componente do domínio usado para o nome
distinto da unidade organizacional. Por exemplo,
DOMAIN. Pode introduzir quantos componentes de domínio forem necessários. - DC2: é o segundo componente do domínio usado para o nome
distinto da unidade organizacional. Por exemplo,
COM. Um valor completo para a flag--active-directory-organizational-unitpode ter o seguinte aspeto:"OU=CLOUDOU,DC=DOMAIN,DC=COM". Pode introduzir quantos componentes de domínio forem necessários. - PROJECT_ID: é o ID do projeto onde a instância reside.
- SECRET_NAME: é o segredo associado à instância.
- IP1: é o endereço IP do primeiro servidor DNS que quer usar, por exemplo,
10.20.30.40. Pode introduzir todos os endereços IP necessários. - IP2: é o endereço IP do segundo servidor DNS que quer usar, como
20.30.40.50. Pode introduzir todos os endereços IP necessários.
REST v1
Para atualizar uma instância CMAD, use um pedido PATCH com o método users:insert.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- DOMAIN: o nome do domínio que quer usar, como
myaddomain.com. - CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica o modo do domínio. Se o domínio for criado e detido pela Google, introduza
MANAGED_ACTIVE_DIRECTORY. Se o domínio for criado e pertencer ao utilizador, introduzaCUSTOMER_MANAGED_ACTIVE_DIRECTORY. - CLOUD_OU: é o nome da unidade organizacional que quer usar.
Por exemplo,
CLOUDOU. Pode introduzir tantas unidades organizacionais quantas forem necessárias. - DC1: é o primeiro componente do domínio usado para o nome
distinto da unidade organizacional. Por exemplo,
DOMAIN. Pode introduzir quantos componentes de domínio forem necessários. - DC2: é o segundo componente do domínio usado para o nome
distinto da unidade organizacional. Por exemplo,
COM. Um valor completo para a flag--active-directory-organizational-unitpode ter o seguinte aspeto:"OU=CLOUDOU,DC=DOMAIN,DC=COM". Pode introduzir quantos componentes de domínio forem necessários. - PROJECT_ID: é o ID do projeto onde a instância reside.
- SECRET_NAME: é o segredo associado à instância.
- IP1: é o endereço IP do primeiro servidor DNS que quer usar, por exemplo,
10.20.30.40. Pode introduzir todos os endereços IP necessários. - IP2: é o endereço IP do segundo servidor DNS que quer usar, como
20.30.40.50. Pode introduzir todos os endereços IP necessários.
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID
Corpo JSON do pedido:
{
"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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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 CMAD, use um pedido PATCH com o método users:insert.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- DOMAIN: o nome do domínio que quer usar, como
myaddomain.com. - CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica o modo do domínio. Se o domínio for criado e detido pela Google, introduza
MANAGED_ACTIVE_DIRECTORY. Se o domínio for criado e pertencer ao utilizador, introduzaCUSTOMER_MANAGED_ACTIVE_DIRECTORY. - CLOUD_OU: é o nome da unidade organizacional que quer usar.
Por exemplo,
CLOUDOU. Pode introduzir tantas unidades organizacionais quantas forem necessárias. - DC1: é o primeiro componente do domínio usado para o nome
distinto da unidade organizacional. Por exemplo,
DOMAIN. Pode introduzir quantos componentes de domínio forem necessários. - DC2: é o segundo componente do domínio usado para o nome
distinto da unidade organizacional. Por exemplo,
COM. Um valor completo para a flag--active-directory-organizational-unitpode ter o seguinte aspeto:"OU=CLOUDOU,DC=DOMAIN,DC=COM". Pode introduzir quantos componentes de domínio forem necessários. - PROJECT_ID: é o ID do projeto onde a instância reside.
- SECRET_NAME: é o segredo associado à instância.
- IP1: é o endereço IP do primeiro servidor DNS que quer usar, por exemplo,
10.20.30.40. Pode introduzir todos os endereços IP necessários. - IP2: é o endereço IP do segundo servidor DNS que quer usar, como
20.30.40.50. Pode introduzir todos os endereços IP necessários.
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
Corpo JSON do pedido:
{
"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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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 gerido para o Microsoft Active Directory e o CMAD
Para migrar uma instância da integração com o Microsoft AD gerido para a integração com o CMAD, use o seguinte comando da 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
Substitua o seguinte:
- INSTANCE_NAME: o nome da instância do Cloud SQL para SQL Server que quer modificar.
- DOMAIN: o nome do domínio que quer usar, como
myaddomain.com. - CUSTOMER_MANAGED_ACTIVE_DIRECTORY: indica o modo do domínio. Se o domínio for criado e detido pela Google, introduza
MANAGED_ACTIVE_DIRECTORY. Se o domínio for criado e pertencer ao utilizador, introduzaCUSTOMER_MANAGED_ACTIVE_DIRECTORY. - CLOUD_OU: é o nome da unidade organizacional que quer usar.
Por exemplo,
CLOUDOU. Pode introduzir tantas unidades organizacionais quantas forem necessárias. - DC1: é o primeiro componente do domínio usado para o nome
distinto da unidade organizacional. Por exemplo,
DOMAIN. Pode introduzir quantos componentes de domínio forem necessários. - DC2: é o segundo componente do domínio usado para o nome
distinto da unidade organizacional. Por exemplo,
COM. Um valor completo para a flag--active-directory-organizational-unitpode ter o seguinte aspeto:"OU=CLOUDOU,DC=DOMAIN,DC=COM". Pode introduzir quantos componentes de domínio forem necessários. - PROJECT_ID: é o ID do projeto onde a instância reside.
- SECRET_NAME: é o segredo associado à instância.
- IP1: é o endereço IP do primeiro servidor DNS que quer usar, por exemplo,
10.20.30.40. Pode introduzir todos os endereços IP necessários. - IP2: é o endereço IP do segundo servidor DNS que quer usar, como
20.30.40.50. Pode introduzir todos os endereços IP necessários.
Associar-se a uma instância com um utilizador
Para o Cloud SQL para SQL Server, o utilizador predefinido é sqlserver.
Depois de integrar uma instância com o CMAD, pode estabelecer ligação à instância com o utilizador sqlserver, da seguinte forma:
- Crie um início de sessão do SQL Server com base num utilizador ou num grupo do Windows, da seguinte forma:
CREATE LOGIN [domain\user_or_group] FROM WINDOWS
- Inicie sessão na instância através da autenticação do Windows com o nome DNS da instância. Seguem-se exemplos de nomes DNS de instâncias a especificar:
- Mostra um exemplo de ligação através de um IP privado:
private.myinstance.us-central1.myproject.cloudsql.mydomain.com
- Mostra um exemplo de ligação através de um IP público:
public.myinstance.us-central1.myproject.cloudsql.mydomain.com
- Mostra um exemplo de ligação através do proxy Auth do Cloud SQL:
proxy.myinstance.us-central1.myproject.cloudsql.mydomain.com
Para mais informações, consulte o artigo Use o proxy Auth do Cloud SQL com a autenticação do Windows.
- Mostra um exemplo de ligação através de um IP privado:
Se usar o endereço IP da instância, tem de configurar os clientes Kerberos para suportarem nomes de anfitriões IP. O Cloud SQL não suporta a iniciar sessão através de endereços IP de domínios ligados através de uma relação de confiança.
Use o proxy Auth do Cloud SQL com a autenticação do Windows
Pode usar o proxy Auth do Cloud SQL com a sua integração da CMAD.
Antes de começar, reveja o seguinte:
Passos para a autenticação do Windows
Para obter informações gerais sobre como iniciar o proxy Auth do Cloud SQL, consulte o artigo Inicie o proxy Auth do Cloud SQL.
Para a autenticação do Windows, tem de executar o proxy Auth do Cloud SQL na porta 1433. Para mapear uma entrada de nome principal do serviço (SPN) predefinida para um endereço do proxy Auth do Cloud SQL, use o seguinte comando:
Proxy.[instance].[location].[project].cloudsql.[domain]
Execute o proxy Auth do Cloud SQL localmente
Se executar o proxy Auth do Cloud SQL localmente, use o ficheiro hosts para mapear o seguinte para
127.0.0.1:
Proxy.[instance].[location].[project].cloudsql.[domain]
Por exemplo, pode adicionar o seguinte ao ficheiro hosts (por exemplo, para
c:\windows\system32\drivers\etc\hosts):
127.0.0.1 proxy.[instance].[location].[project].cloudsql.[domain]
Nesse exemplo, pode executar o proxy Auth do Cloud SQL com este comando e torná-lo disponível em 127.0.0.1:1433:
cloud-sql-proxy.exe --credentials-file credential.json project:name
Execute o proxy Auth do Cloud SQL não localmente
Para executar o proxy Auth do Cloud SQL externamente, siga as instruções em Executar o proxy Auth do Cloud SQL localmente, mas use uma entrada diferente no ficheiro de anfitriões.
Especificamente, se um anfitrião não local for, por exemplo, MyOtherHost, pode adicionar o seguinte ao ficheiro hosts:
127.0.0.1 MyOtherHost proxy.[instance].[location].[project].cloudsql.[domain]
Resolução de problemas de alternativa NTLM em clientes
Se usar a autenticação do Windows e um endereço IP de instância para iniciar sessão numa instância, tem de configurar um cliente Kerberos para suportar nomes de anfitriões IP.
O Cloud SQL não suporta a autenticação NTLM, mas alguns clientes Kerberos podem tentar recorrer a ela. Conforme abordado nesta secção, se tentar estabelecer ligação com o SQL Server Management Studio (SSMS) e ocorrer a seguinte mensagem de erro, uma causa provável é o fallback do NTLM:
NTLM é um conjunto de protocolos de segurança da Microsoft para autenticação. Para mais informações, consulte o artigo Motivos para o fallback do NTLM.
Validação de uma alternativa NTLM para um cliente Windows
Num terminal do Windows, para verificar se uma alternativa NTLM causou um erro, conclua o seguinte:
- Inicie sessão com as credenciais no local que quer usar. Não use comandos
"Run as...". - Abra uma linha de comandos.
- Corrida
klist purge. - No SSMS, tente estabelecer ligação ao SQL Server com a autenticação do Windows.
- Execute
kliste verifique se existe um pedido emitido para o erro devolvido. - Se não existir nenhum pedido desse tipo, a alternativa NTLM é a causa provável do erro.
- Se existir um pedido desse tipo, verifique se o controlador do SQL Server não impõe a autenticação NTLM. Além disso, verifique se a autenticação NTLM é aplicada através de uma política de grupo.
Valide a alternativa NTLM para um cliente Linux
No Ubuntu 16.04, para verificar se uma alternativa NTLM causou um erro, siga os passos nesta secção. Os passos são semelhantes aos de outras distribuições do Linux.
Configure a autenticação Kerberos
- Configure um cliente Kerberos:
sudo apt-get install krb5-user
- Quando lhe for pedido o domínio predefinido, escreva um nome de domínio no local com letras maiúsculas.
- Execute o seguinte comando para instalar as ferramentas de linha de comandos 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
Estabeleça ligação com a autenticação do Windows
- Execute a ferramenta kinit da seguinte forma:
kinit
- Para estabelecer ligação com a autenticação do Windows, execute o seguinte:
/opt/mssql-tools/bin/sqlcmd -S
- Execute o comando klist e verifique se foi emitido um pedido especificamente
para a seguinte mensagem devolvida:
MSSQLSvc/:1433 @ domain
- Se o pedido não foi emitido, o erro anterior indica provavelmente um problema que causa o recuo do NTLM.
Motivos para o recuo do NTLM
A alternativa ao NTLM é uma configuração incorreta do cliente que pode estar associada às seguintes condições:
- Por predefinição, o Windows não tenta a autenticação Kerberos para um anfitrião se o nome de anfitrião for um endereço IP. Para ativar a autenticação Kerberos para endereços IP, experimente o método descrito na documentação da Microsoft.
- A autenticação Kerberos através de relações de confiança externas não funciona. Em alternativa, use relações de confiança de florestas.
- A autenticação Kerberos requer o encaminhamento do sufixo do nome para permitir a localização de serviços noutra floresta. Experimente o método descrito no artigo Configure uma relação de confiança entre dois domínios.
- A autenticação Kerberos não funciona se não existir um SPN registado para o serviço. Use apenas FQDNs ou endereços IP que obtém a partir da Google Cloud consola para estabelecer ligação com a autenticação do Windows.
Crie um início de sessão do Windows para utilizadores do AD no local
Siga as CREATE LOGINinstruções
para criar um início de sessão do Windows para um utilizador no local. Por exemplo, especifique um comando semelhante ao seguinte:
CREATE LOGIN [DOMAIN_NAME\USER_NAME] FROM WINDOWS
Sugestões para usar o CMAD com o Cloud SQL
- É suportada uma instância com IP público, desde que também tenha um IP privado. O IP privado tem de estar ativado para a instância. Em seguida, pode optar por usar um IP público ou um IP privado para se ligar à instância, desde que ambos estejam disponíveis.
- Antes de criar uma instância, inclusive como instância de substituição, reveja o seguinte:
- Se a autenticação do Windows falhar a partir de um domínio ligado através de uma relação de confiança, verifique se a autenticação do Windows funciona para um utilizador de um domínio gerido pelo cliente. Se for o caso, conclua o seguinte:
- Verifique se usou um nome DNS. Os endereços IP não são suportados a partir de domínios ligados através de uma relação de confiança.
- Certifique-se de que concluiu os passos em Configure uma relação de confiança entre dois domínios, incluindo a abertura de todas as portas da firewall.
- Valide a confiança.
- Verifique se a direção da confiança permite que os utilizadores do domínio (ligados através de uma relação de confiança) sejam autenticados.
- Siga os passos descritos no artigo Prepare um domínio não encaminhável para a sincronização de diretórios.
- Verifique se a confiança funciona sem usar o Cloud SQL para SQL Server:
- Crie uma VM do Windows.
- Associe-o ao domínio CMAD.
- Tente executar, por exemplo, o Bloco de notas como um utilizador do domínio que está ligado através de uma relação de confiança.
- Reinicie a VM do cliente e volte a testar a autenticação do Windows.
- Pode tentar criar um início de sessão do SQL Server, mas, em seguida, receber o seguinte erro:
Isto pode ter ocorrido porque os grupos locais do domínio não são suportados. Se aplicável, use grupos globais ou universais.
- Se as consultas do SQL Server resultarem no seguinte erro, tenha em atenção que os endereços IP não são suportados para utilizadores de domínios ligados através de uma relação de confiança:
As seguintes ações podem resolver este problema:
- Se for usado um endereço IP para ligar utilizadores de um domínio gerido, siga as instruções na documentação da Microsoft.
- Evite usar proxies e use sempre o mesmo nome DNS para estabelecer ligação ao Cloud SQL para SQL Server, tal como vê o nome na Google Cloud consola.
Se uma instância tiver problemas contínuos com a autenticação do Windows (independentemente de a instância ter sido atualizada recentemente), experimente desassociá-la do domínio e, em seguida, associá-la novamente. Para tal, use o
procedimento de atualização
para anular a associação e, em seguida, voltar a associar o domínio. Ao fazê-lo, não remove os utilizadores nem os inícios de sessão autenticados pelo Windows existentes nas suas bases de dados. No entanto,
a remoção da autenticação do Windows faz com que uma instância seja reiniciada.
- Use a ferramenta de diagnóstico do AD para resolver problemas de configuração do AD com o seu domínio gerido pelo cliente e instâncias do Cloud SQL para SQL Server na Google Cloud consola. Ignore os passos relacionados com o Microsoft AD gerido.
Resolver problemas
A tabela seguinte apresenta mensagens de erro comuns e formas de ajudar a resolvê-las:
| Para este erro… | O problema pode ser... | Experimente 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, certifique-se de que criou uma conta de serviço para o projeto de utilizador 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 fazer as atualizações necessárias no domínio CMAD. | Se tiver problemas com a autenticação do Windows, pode experimentar desassociar o domínio CMAD e, em seguida, associá-lo novamente. Para tal, use o procedimento de atualização para anular a associação e, em seguida, voltar a associar o domínio. Ao fazê-lo, não remove os utilizadores nem os inícios de sessão autenticados pelo Windows existentes nas suas bases de dados. No entanto, a remoção da 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." |
Esta instância não usa a nova arquitetura de rede. | Atualize a 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. |
Os parâmetros de credenciais de administrador, unidade organizacional e servidores DNS são obrigatórios. | Tente novamente o pedido com estes 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 do serviço para este projeto não tem as autorizações necessárias. | Crie uma função personalizada com as autorizações secretmanager.secrets.getIamPolicy
e secretmanager.secrets.setIamPolicy e atribua-a
ao agente do serviço para este projeto. Para mais informações, consulte o artigo
Funções e autorizações do Secret Manager. |
O que se segue?
- Vista geral do Active Directory gerido pelo cliente (CMAD)
- Use a ferramenta de diagnóstico do Active Directory