Integração com o Microsoft Entra ID

A integração do Cloud SQL para SQL Server com o Microsoft Entra ID oferece gerenciamento de identidade e acesso (IAM) centralizado para seus bancos de dados usando seu locatário atual do Microsoft Entra ID.

Essa integração oferece os seguintes benefícios:

  • Autenticação centralizada. Permite que usuários e aplicativos façam login nas instâncias do Cloud SQL para SQL Server usando as identidades do Microsoft Entra ID sem inserir uma senha novamente. Isso elimina a necessidade de gerenciar logins e senhas específicos do SQL Server separados.

  • Segurança reforçada. Ajuda a aplicar as políticas de segurança atuais da organização, como autenticação multifator (MFA) e regras de acesso condicional (CA), no nível do banco de dados.

  • Gerenciamento simplificado de usuários: Quando a conta do Microsoft Entra ID de um usuário é desativada ou removida, o acesso ao banco de dados do usuário é revogado automaticamente. Esse recurso ajuda a simplificar o desligamento e as revisões de acesso.

Pré-requisitos para integração

Para usar a integração do Cloud SQL para SQL Server com o Microsoft Entra ID, sua instância precisa atender aos seguintes requisitos:

  1. Você precisa ter uma instância do SQL Server 2022 ou criar uma.

    A autenticação do Microsoft Entra ID é compatível apenas com o SQL Server 2022. Ela não está disponível no SQL Server 2017 ou 2019.

  2. Ative a autenticação do Microsoft Entra ID.

    Antes de ativar a autenticação do Microsoft Entra ID, siga estas etapas no portal do Azure:

    1. Encontre seu ID de locatário do Microsoft Entra.
    2. Crie um registro de aplicativo no Microsoft Entra ID.

      O Cloud SQL para SQL Server usa esse aplicativo para se comunicar com seu ID de locatário do Microsoft Entra. Ao criar o aplicativo, anote o ID do aplicativo ou do cliente.

    3. Conceda permissões para que o aplicativo leia os dados do diretório:

      1. Selecione o registro de aplicativo que você acabou de criar e clique em Permissões da API.
      2. Selecione Adicionar uma permissão > Microsoft Graph > Permissões do aplicativo.
      3. Conceda um dos seguintes conjuntos de permissões:
        • Opção 1.
          • Directory.Read.All
        • Opção 2. Fornece permissões mais específicas.
          • Application.Read.All
          • Group.Read.All
          • User.Read.All
      4. Conceda o consentimento do administrador em todo o locatário para permitir que o aplicativo use essas permissões.

Conectividade de rede

O Microsoft Entra ID é um serviço público que usa endpoints públicos para autenticação. Para que a autenticação do Microsoft Entra ID funcione corretamente, sua instância do Cloud SQL precisa fazer conexões de saída com esses endpoints públicos. As seções a seguir discutem as próximas etapas, com base na configuração de conectividade de rede da sua instância:

Instâncias com um IP público

Se a instância do Cloud SQL estiver configurada com um endereço IP público, ela terá acesso de saída integrado à Internet.

Embora nenhuma configuração de rede adicional seja necessária para que a autenticação do Microsoft Entra ID funcione, consulte as limitações antes de continuar.

Instâncias com um IP particular

Se a instância do Cloud SQL estiver configurada apenas com um endereço IP particular, ela não terá acesso direto à Internet. É necessário configurar um caminho de saída para permitir que a instância alcance os endpoints públicos de identidade da Microsoft. A configuração da integração do Microsoft Entra ID depende de como sua instância particular está configurada:

Private Service Connect

Se a instância do Cloud SQL estiver configurada para usar um endereço IP particular, recomendamos usar o Private Service Connect para ativar o Microsoft Entra ID, já que ele elimina algumas tarefas de manutenção de sobrecarga, como as seguintes:

  • Gerenciar VMs Bastion Host.
  • Manutenção de rotas.
  • Criar rotas muito amplas, como as necessárias para a conectividade do PSA.

Antes de continuar, consulte as limitações do uso do Microsoft Entra ID.

Para ativar a conectividade, configure a conversão de endereços de rede do Cloud (Cloud NAT) na VPC do consumidor. Isso permite que a instância habilitada para PSC use o gateway do Cloud NAT para tráfego de saída para endpoints públicos da Microsoft. Depois de ativado, o roteamento interno restringe o tráfego para que apenas o tráfego relacionado ao Microsoft Entra ID chegue à sua instância do Cloud NAT.

Para ativar a conectividade, siga estas etapas obrigatórias:

  1. Crie uma instância ativada para PSC.
  2. Configure a conectividade de saída para sua instância do Cloud SQL.
  3. Crie um gateway do Cloud NAT.

Acesso privado a serviços

Se a instância do Cloud SQL estiver configurada para usar um endereço IP particular e você usar o PSA, siga estas etapas para ativar a conectividade com o Microsoft Entra ID:

  1. Implante uma VM do Bastion Host na VPC.

    Ao criar uma VM de bastion host no projeto, o encaminhamento de IP precisa estar ativado. Se você criou uma VM do Bastion Host baseada em Linux, configure a VM do Bastion Host que acabou de criar para realizar o encaminhamento de IP:

    sudo sysctl net.ipv4.conf.all.forwarding=1
    sudo iptables --table nat --append POSTROUTING --out-interface  ens4 -j MASQUERADE
    
  2. Configure as rotas de rede necessárias para direcionar o tráfego de autenticação do Microsoft Entra ID da sua instância do Cloud SQL pelo host da VM bastion host para acessar a Internet.

    Adicione as rotas correspondentes para cada endpoint do Microsoft Entra ID. Você pode encontrar os intervalos de IP atuais na seção AzureActiveDirectory.ServiceEndpoint do arquivo de recursos Intervalos de IP e tags de serviço do Azure.

    gcloud

    Para cada intervalo de IP do Microsoft Entra ID, crie duas rotas, substituindo VM_NAME e VM_ZONE pelo nome e pela zona reais da VM do bastion host:

    gcloud --project=PROJECT_ID compute routes create NAME \
      --network=NETWORK --destination-range=RANGE \
      --priority=998 --next-hop-gateway=default-internet-gateway
    
    gcloud  --project=PROJECT_ID compute routes create NAME \
      --network=NETWORK --destination-range=RANGE --priority=999 \
      --next-hop-instance=VM_NAME --next-hop-instance-zone=VM_ZONE \
      --next-hop-ilb=ILB_VALUE
    

    Substitua:

    • PROJECT_ID: o ID do projeto em que a instância do Cloud SQL está localizada.
    • NAME: o nome da rota que você quer criar.
    • NETWORK: o nome da rede em que a instância do Cloud SQL está localizada.
    • RANGE: o intervalo de IP que você quer usar.
    • VM_NAME: o nome da VM do Bastion Host que você quer incluir.
    • VM_ZONE: a zona da VM bastion host que você quer incluir, como us-central1.
    • ILB_VALUE: opcional. O nome ou endereço IP de uma regra de encaminhamento para um balanceador de carga TCP/UDP interno. Se você configurou um balanceador de carga na frente das VMs Bastion Host, inclua a flag --next-hop-ilb neste comando.

      Para mais informações, consulte Balanceadores de carga de rede de passagem interna como próximos saltos.

    Um exemplo pode ser assim:

    gcloud  --project=my-customer-project compute routes create my-route-1 --network=default --destination-range=20.20.32.0/27 --priority=998 --next-hop-gateway=default-internet-gateway
    
    gcloud  --project=my-customer-project compute routes create my-route-2 --network=default --destination-range=20.20.32.0/27 --priority=999 --next-hop-instance=my-bastion-vm --next-hop-instance-zone=us-central1-c --next-hop-ilb=fr-ilb1
    
  3. Use o mesmo comando da etapa anterior para aplicar a mesma configuração e permitir o tráfego para verificações de revogação de certificado do Microsoft Entra ID. Use os intervalos de IP listados em Endereço IP do status do certificado DigiCert.

    Se você não concluir esta etapa, a autenticação do Microsoft Entra ID ainda poderá funcionar, mas também poderá haver atrasos ao abrir novas conexões.

Gerenciar a autenticação do Microsoft Entra ID

É possível ativar a autenticação do Entra ID para uma instância nova ou atual.

Criar uma instância com a autenticação do Microsoft Entra ID ativada

É possível ativar a autenticação do Microsoft Entra ID ao criar uma instância do Cloud SQL para SQL Server. Você precisa fornecer o ID específico do locatário do Microsoft Entra e o ID do aplicativo (ID do cliente) do registro de app configurado no portal do Azure.

Para mais informações, consulte Pré-requisitos.

gcloud

gcloud beta sql instances create INSTANCE_NAME \
    --database-version=EDITION \
    --tier=TIER \
    --network=NETWORK
    --root-password=PASSWORD
    --entra-id-tenant-id=TENANT_ID \
    --entra-id-application-id=APPLICATION_ID

Substitua:

  • INSTANCE_NAME: o nome da instância que você quer criar.
  • EDITION: a edição da instância que você quer usar, como SQLSERVER_2022_STANDARD.
  • TIER: o tipo de máquina ou camada da instância que você quer usar, como db-custom-2-3840.
  • NETWORK: o nome da rede que você quer usar.
  • PASSWORD: a senha da instância.
  • TENANT_ID: o ID do locatário do Microsoft Entra.
  • APPLICATION_ID: o ID do aplicativo ou do cliente.

Um exemplo pode ser assim:

gcloud beta sql instances create my-entraid-instance \
    --database-version=SQLSERVER_2022_STANDARD \
    --tier=db-custom-2-3840 \
    --assign-ip \
    --root-password=D61Xv36f!0lE \
    --entra-id-tenant-id=7e281aab-e994-4c83-88ed-d1674477a39c \
    --entra-id-application-id=4c5ed2da-0478-4aaa-ab65-6dfd33ba8bfd

REST v1

Nem todos os campos possíveis são mostrados na chamada de API básica a seguir. Para o protótipo de uma solicitação JSON, consulte Configurações.

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

  • PROJECT_ID: o nome do projeto em que a instância a ser criada vai estar localizada.
  • INSTANCE_ID: o ID da instância que você quer criar.
  • EDITION: a edição da instância que você quer usar, como SQLSERVER_2022_STANDARD.
  • REGION: a região em que você quer que a instância fique, como us-central1.
  • PASSWORD: a senha da instância.
  • TIER: o tipo de máquina ou camada da instância que você quer usar, como db-custom-2-3840.
  • NETWORK: o nome da rede que você quer usar.
  • TENANT_ID: o ID do locatário do Microsoft Entra.
  • APPLICATION_ID: o ID do aplicativo ou do cliente.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "databaseVersion":"EDITION",
  "name":"INSTANCE_ID",
  "region":"REGION",
  "rootPassword":"PASSWORD",
  "settings":
  {
    "tier":"TIER",
    "ipConfiguration":
      {
        "privateNetwork":"NETWORK"
      },
    "entraidConfig":
    {
      "tenantId": "TENANT_ID",
      "applicationId": "APPLICATION_ID"
    }
  }
}

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_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

Nem todos os campos possíveis são mostrados na chamada de API básica a seguir. Para o protótipo de uma solicitação JSON, consulte Configurações.

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

  • PROJECT_ID: o nome do projeto em que a instância a ser criada vai estar localizada.
  • INSTANCE_ID: o ID da instância que você quer criar.
  • EDITION: a edição da instância que você quer usar, como SQLSERVER_2022_STANDARD.
  • REGION: a região em que você quer que a instância fique, como us-central1.
  • PASSWORD: a senha da instância.
  • TIER: o tipo de máquina ou camada da instância que você quer usar, como db-custom-2-3840.
  • NETWORK: o nome da rede que você quer usar.
  • TENANT_ID: o ID do locatário do Microsoft Entra.
  • APPLICATION_ID: o ID do aplicativo ou do cliente.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "databaseVersion":"EDITION",
  "name":"INSTANCE_ID",
  "region":"REGION",
  "rootPassword":"PASSWORD",
  "settings":
  {
    "tier":"TIER",
    "ipConfiguration":
      {
        "privateNetwork":"NETWORK"
      },
    "entraidConfig":
    {
      "tenantId": "TENANT_ID",
      "applicationId": "APPLICATION_ID"
    }
  }
}

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_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/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Gerenciar a autenticação do Microsoft Entra ID em uma instância atual

É possível ativar, modificar ou desativar a configuração do Microsoft Entra ID em uma instância existente a qualquer momento.

Para modificar a configuração da instância, faça um patch com os novos valores ou os valores excluídos de ID do locatário e ID do aplicativo (cliente).

Esse processo não envolve a entrada ou saída de um domínio.

É possível atualizar os valores de ID do locatário e ID do aplicativo sem ativar ou desativar a integração com o Microsoft Entra ID.

gcloud

gcloud beta sql instances patch INSTANCE_NAME \
    --entra-id-tenant-id="NEW_TENANT_ID" \
    --entra-id-application-id="NEW_APPLICATION_ID"

Substitua:

  • INSTANCE_NAME: o nome da instância que você quer modificar.
  • NEW_TENANT_ID: o novo ID do locatário do Microsoft Entra. Para desativar o Microsoft Entra ID, deixe essa string vazia.
  • NEW_APPLICATION_ID: o novo ID do aplicativo ou do cliente. Para desativar o Microsoft Entra ID, deixe essa string vazia.

Um exemplo pode ser assim:

gcloud beta sql instances patch my-existing-instance \
    --entra-id-tenant-id=7e281aab-e994-4c83-88ed-d1674477a39c \
    --entra-id-application-id=4c5ed2da-0478-4aaa-ab65-6dfd33ba8bfd

REST v1

Nem todos os campos possíveis são mostrados na chamada de API básica a seguir. Para o protótipo de uma solicitação JSON, consulte Configurações.

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

  • PROJECT_ID: o ID do projeto em que a instância que você quer modificar está localizada.
  • INSTANCE_ID: o ID da instância que você quer modificar.
  • TENANT_ID: o ID do locatário do Microsoft Entra. Para desativar o Microsoft Entra ID, deixe essa string vazia.
  • APPLICATION_ID: o ID do aplicativo ou do cliente. Para desativar o Microsoft Entra ID, deixe essa string vazia.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "settings":
  {
    "entraidConfig":
    {
      "tenantId": "NEW_TENANT_ID",
      "applicationId": "NEW_APPLICATION_ID"
    }
  }
}

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_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

Nem todos os campos possíveis são mostrados na chamada de API básica a seguir. Para o protótipo de uma solicitação JSON, consulte Configurações.

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

  • PROJECT_ID: o ID do projeto em que a instância que você quer modificar está localizada.
  • INSTANCE_ID: o ID da instância que você quer modificar.
  • TENANT_ID: o ID do locatário do Microsoft Entra. Para desativar o Microsoft Entra ID, deixe essa string vazia.
  • APPLICATION_ID: o ID do aplicativo ou do cliente. Para desativar o Microsoft Entra ID, deixe essa string vazia.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "settings":
  {
    "entraidConfig":
    {
      "tenantId": "NEW_TENANT_ID",
      "applicationId": "NEW_APPLICATION_ID"
    }
  }
}

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_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/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Adicionar o certificado ao aplicativo

Para que o Microsoft Entra ID autentique sua instância do Cloud SQL para SQL Server, faça upload do certificado público da instância do Cloud SQL para SQL Server no registro do app do Microsoft Entra ID.

  1. Depois de ativar a autenticação do Microsoft Entra ID na sua instância, crie um certificado específico da instância para o Microsoft Entra ID.

    gcloud

    gcloud beta sql ssl entraid-certs create --instance=INSTANCE_NAME
    

    Substitua:

    • INSTANCE_NAME: o nome da instância para a qual você quer criar um certificado.

    REST v1

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

    • PROJECT_ID: o ID do projeto em que a instância está localizada.
    • INSTANCE_ID: o ID da instância.

    Método HTTP e URL:

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

    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_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

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

    • PROJECT_ID: o ID do projeto em que a instância está localizada.
    • INSTANCE_ID: o ID da instância.

    Método HTTP e URL:

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

    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_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/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    
  2. Recupere os detalhes do certificado que você acabou de criar:

    gcloud

    gcloud beta sql ssl entraid-certs list --instance=INSTANCE_NAME --format="value(ssl_cert.cert)"
    

    Substitua:

    • INSTANCE_NAME: o nome da instância associada ao certificado que você acabou de criar.

    REST v1

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

    • PROJECT_ID: o ID do projeto em que a instância está localizada.
    • INSTANCE_ID: o ID da instância.

    Método HTTP e URL:

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

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

    Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.

    Esse comando imprime um certificado que pode ser salvo em um arquivo e depois enviado para o portal do Azure.

    Remova todos os caracteres de nova linha incorporados do arquivo e separe manualmente cada nova linha. Se isso não for feito, o upload do arquivo vai falhar.

    Por exemplo, você pode receber uma string de texto semelhante a esta:

    Line1\Line2\Line3
    

    É necessário separar cada linha manualmente, como no exemplo a seguir:

    Line1
    Line2
    Line3
    

    Se não quiser fazer isso manualmente, use o seguinte comando:

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -H "x-goog-user-project: PROJECT_ID" "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/listEntraIdCertificates" -s | jq -r '.certs[0].cert'
    

    Substitua:

    • PROJECT_ID: o ID do projeto em que a instância está localizada.
    • INSTANCE_NAME: o nome da instância associada ao certificado que você acabou de criar.

    REST v1beta4

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

    • PROJECT_ID: o ID do projeto em que a instância está localizada.
    • INSTANCE_ID: o ID da instância.

    Método HTTP e URL:

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

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

    Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.

    Esse comando imprime um certificado que pode ser salvo em um arquivo e depois enviado para o portal do Azure.

    Remova todos os caracteres de nova linha incorporados do arquivo e separe manualmente cada nova linha. Se isso não for feito, o upload do arquivo vai falhar.

    Por exemplo, você pode receber uma string de texto semelhante a esta:

    Line1\Line2\Line3
    

    É necessário separar cada linha manualmente, como no exemplo a seguir:

    Line1
    Line2
    Line3
    

    Se não quiser fazer isso manualmente, use o seguinte comando:

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -H "x-goog-user-project: PROJECT_ID" "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/listEntraIdCertificates" -s | jq -r '.certs[0].cert'
    

    Substitua:

    • PROJECT_ID: o ID do projeto em que a instância está localizada.
    • INSTANCE_NAME: o nome da instância associada ao certificado que você acabou de criar.
  3. Adicione o certificado ao portal do Azure.

    1. Navegue até o Registro do app no portal do Azure.
    2. Abra Certificados e chaves secretas.
    3. Selecione Fazer upload do certificado. Procure e adicione o arquivo de certificado que você recuperou da sua instância.
    4. Clique em OK.

Girar o certificado do Microsoft Entra ID

Você precisa alternar o certificado do Microsoft Entra ID antes que ele expire. Recomendamos iniciar esse processo pelo menos uma semana antes da data de validade programada:

  1. Siga as etapas em Adicionar o certificado ao aplicativo para criar um certificado novo e inativo na instância do Cloud SQL para SQL Server e fazer upload dele para o Microsoft Entra ID usando o portal do Azure. Isso não afeta o certificado ativo atual.

  2. Ative o novo certificado na instância do Cloud SQL para SQL Server, o que aciona o Cloud SQL para SQL Server para começar a usar o novo certificado em todas as novas autenticações.

    gcloud

    gcloud beta sql ssl entraid-certs rotate --instance=INSTANCE_NAME
    

    Substitua:

    • INSTANCE_NAME: o nome da instância associada ao certificado que você quer rotacionar.

    REST v1

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

    • PROJECT_ID: o ID do projeto em que a instância está localizada.
    • INSTANCE_ID: o ID da instância.

    Método HTTP e URL:

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

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

    Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.

    REST v1beta4

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

    • PROJECT_ID: o ID do projeto em que a instância está localizada.
    • INSTANCE_ID: o ID da instância.

    Método HTTP e URL:

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

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

    Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.

  3. Sua instância agora usa o novo certificado.

    Você pode remover com segurança o certificado antigo do registro do app do Microsoft Entra ID e da instância do Cloud SQL para SQL Server. Para mais informações, consulte Adicionar e gerenciar credenciais de aplicativos no Microsoft Entra ID.

Reverter o certificado do Microsoft Entra ID

Se você tiver problemas depois de alternar para um novo certificado, poderá reverter para o certificado anterior.

Para fazer um rollback, o certificado anterior precisa ser válido e confiável para o registro do app do Microsoft Entra ID.

Os comandos a seguir reativam imediatamente o certificado anterior especificado na sua instância do Cloud SQL para SQL Server.

gcloud

gcloud beta sql ssl entraid-certs rollback --instance=INSTANCE_NAME

Substitua:

  • INSTANCE_NAME: o nome da instância associada ao certificado que você quer reverter.

REST v1

Nem todos os campos possíveis são mostrados na chamada de API básica a seguir. Para o protótipo de uma solicitação JSON, consulte Configurações.

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

  • PROJECT_ID: o ID do projeto em que a instância está localizada.
  • INSTANCE_ID: o ID da instância para a qual você quer fazer o rollback do certificado.
  • CERTIFICATE_NAME: o nome do novo certificado que você quer usar para substituir o antigo, como sha1Fingerprint.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  {
  "RotateEntraIdCertificateContext": {"nextVersion": "CERTIFICATE_NAME"}
  }
}

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_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

Nem todos os campos possíveis são mostrados na chamada de API básica a seguir. Para o protótipo de uma solicitação JSON, consulte Configurações.

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

  • PROJECT_ID: o ID do projeto em que a instância está localizada.
  • INSTANCE_ID: o ID da instância para a qual você quer fazer o rollback do certificado.
  • CERTIFICATE_NAME: o nome do novo certificado que você quer usar para substituir o antigo, como sha1Fingerprint.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  {
  "RotateEntraIdCertificateContext": {"nextVersion": "CERTIFICATE_NAME"}
  }
}

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

Criar o login inicial do Microsoft Entra ID

Depois de ativar a autenticação do Microsoft Entra ID na instância, crie seus logins do Microsoft Entra ID.

  1. Crie o primeiro login do Microsoft Entra ID.

    Esse login inicial, que representa um usuário ou grupo do Microsoft Entra ID, não pode ser criado usando T-SQL. Crie usando a CLI gcloud ou a API Cloud SQL Admin:

    gcloud

    gcloud sql users create USER_NAME --instance=INSTANCE_NAME --type=ENTRAID_USER
    

    Substitua:

    • USER_NAME: o nome do usuário do Cloud SQL para SQL Server que você quer criar.
    • INSTANCE_NAME: o nome da instância em que você quer criar logins do Microsoft Entra ID.
    • ENTRAID_USER: o nome de usuário do Microsoft Entra ID.

    Um exemplo pode ser assim:

    gcloud sql users create myentraiduser@mytenant.com --instance=my-entraid-instance --type=ENTRAID_USER
    

    REST v1

    Nem todos os campos possíveis são mostrados na chamada de API básica a seguir. Para o protótipo de uma solicitação JSON, consulte Configurações.

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

    • PROJECT_ID: o ID do projeto em que a instância está localizada.
    • INSTANCE_ID: o ID da instância que você quer atualizar.
    • USER_NAME: o nome do usuário do Cloud SQL para SQL Server que você quer criar.
    • ENTRAID_USER: o nome de usuário do Microsoft Entra ID.

    Método HTTP e URL:

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

    Corpo JSON da solicitação:

    {
      "name": "USER_NAME"
      "type": "ENTRAID_USER"
    }
    

    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_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

    Nem todos os campos possíveis são mostrados na chamada de API básica a seguir. Para o protótipo de uma solicitação JSON, consulte Configurações.

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

    • PROJECT_ID: o ID do projeto em que a instância está localizada.
    • INSTANCE_ID: o ID da instância que você quer atualizar.
    • USER_NAME: o nome do usuário do Cloud SQL para SQL Server que você quer criar.
    • ENTRAID_USER: o nome de usuário do Microsoft Entra ID.

    Método HTTP e URL:

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

    Corpo JSON da solicitação:

    {
      "name": "USER_NAME"
      "type": "ENTRAID_USER"
    }
    

    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_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/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    Depois que o login inicial do Microsoft Entra ID for criado, você poderá se conectar ao banco de dados como esse usuário.

  2. Crie logins subsequentes do Microsoft Entra ID.

    Você pode criar e gerenciar outros logins do Microsoft Entra ID, conforme observado na etapa anterior.

    Se preferir usar outra ferramenta, como o SQL Server Management Studio (SSMS), primeiro conceda ao login inicial a permissão para gerenciar outros logins:

    GRANT ALTER ANY LOGIN TO [ENTRA_ID_USER] AS CustomerDbRootRole
    

    Substitua ENTRAID_USER pelo nome de usuário do Microsoft Entra ID.

    Depois que as permissões são concedidas, esse login pode criar e gerenciar outros logins do Microsoft Entra ID usando comandos T-SQL padrão. Um exemplo de comando pode ser semelhante a este:

    CREATE LOGIN [<<ENTRA_ID_USER>>] FROM EXTERNAL PROVIDER
    

    Substitua ENTRAID_USER pelo nome de usuário do Microsoft Entra ID.

    Para criar usuários com base em logins do Microsoft Entra ID ou conceder permissões, use comandos T-SQL padrão.

    Para mais informações, incluindo como criar um login usando a sintaxe adequada, consulte Configurar a autenticação do Microsoft Entra para o SQL Server com registro de app.

Práticas recomendadas

Para ajudar a isolar permissões e definir melhor os limites de segurança, recomendamos criar um registro de aplicativo exclusivo do Microsoft Entra ID para cada instância do Cloud SQL para SQL Server. A revogação das credenciais do aplicativo não afeta outras instâncias não relacionadas.

Para mais informações, consulte Como registrar um aplicativo no Microsoft Entra ID.

Solução de problemas

As seções a seguir ajudam a resolver problemas que podem ocorrer ao gerenciar a integração do Microsoft Entra ID.

Problemas de conectividade de rede com instâncias de IP particular

Você pode ter alguns dos seguintes problemas durante a configuração da integração:

  • Operações lentas para criar logins do Microsoft Entra ID
  • Não é possível criar logins do Microsoft Entra ID
  • Não é possível se conectar à instância usando a autenticação do Microsoft Entra ID

Para ajudar a resolver esses problemas, faça o seguinte teste de conectividade:

  1. No mesmo projeto e VPC, e na mesma região da instância do Cloud SQL para SQL Server, crie uma VM de teste configurada apenas com um IP particular. Google Cloud

  2. Conecte-se à VM que você acabou de criar usando o protocolo de área de trabalho remota (RDP) ou o protocolo de shell seguro (SSH). Em seguida, execute os comandos a seguir para testar a capacidade de alcance. Essas etapas podem ser aplicadas a VMs baseadas em Linux e Windows:

    curl -4iv login.microsoftonline.com
    curl -4iv graph.microsoft.com
    curl -4iv ocsp.digicert.com
    

Se você não conseguir acessar nenhum desses endpoints, seja por causa de erros de tempo limite ou de conexão recusada, verifique a configuração de rede para o seguinte:

  • Para o Private Service Connect, verifique se o Cloud NAT está configurado corretamente para permitir o acesso à Internet de saída.
  • Para o Acesso privado a serviços, verifique a configuração das rotas personalizadas e dos hosts bastion.
  • Verifique as regras de firewall da VPC para garantir que o tráfego de saída para esses domínios não esteja bloqueado.

Mensagens de erro comuns

Você pode encontrar o seguinte erro de login durante a autenticação do Microsoft Entra ID:

Login failed for user ""

Para resolver esse problema, verifique se existe um login do SQL Server para esse usuário do Microsoft Entra ID.

Migração do Microsoft Active Directory

Nos cenários a seguir, é possível ativar a autenticação do Microsoft Entra ID sem desativar a autenticação do Microsoft Active Directory:

Réplicas de leitura

  • Se você adicionar uma réplica de leitura a uma instância principal com o Microsoft Entra ID ativado, a réplica de leitura será configurada automaticamente para usar o Microsoft Entra ID.
  • Se a instância principal tiver o Microsoft Entra ID ativado e você restaurar um backup para essa instância, a réplica de leitura associada será configurada automaticamente para usar o Microsoft Entra, já que a identidade não muda.

Instâncias clonadas e restauração para uma instância diferente

A integração do Microsoft Entra ID não é configurada automaticamente para a nova instância nos seguintes cenários:

  • Um clone da instância principal.
  • Um backup restaurado em uma instância que não é a principal.

Nesses casos, é necessário ativar manualmente o Microsoft Entra ID na nova instância e fazer upload do certificado novamente para o aplicativo Microsoft Entra ID. Esse requisito é uma medida de segurança para evitar que várias instâncias não relacionadas usem a mesma identidade de aplicativo.

Limitações

  • A autenticação do Microsoft Entra ID é compatível apenas com o SQL Server 2022. Ela não está disponível no SQL Server 2017 ou 2019.
  • Se você clonar uma instância ou restaurar um backup em uma instância diferente, a integração do Microsoft Entra ID não será configurada automaticamente na nova instância. Para mais informações, consulte Backup e recuperação.
  • A autenticação do ID do Microsoft Entra não é compatível com instâncias de alta disponibilidade (HA) configuradas com um IP público.
  • A autenticação do Microsoft Entra ID não é compatível com instâncias principais ativadas para PSC nem com as instâncias de réplica de leitura correspondentes.
  • Evite fazer a rotação de certificados do Microsoft Entra ID em instâncias principais com réplicas anexadas. Se você fizer a rotação do certificado da instância principal, os certificados da réplica não serão atualizados.
  • A integração do Microsoft Entra ID com o Cloud SQL para SQL Server pode ser configurada usando a CLI gcloud ou a API Cloud SQL Admin. A integração não pode ser gerenciada usando o Terraform.

A seguir