Este documento explica como atualizar a sua política de DNS interno para usar o DNS zonal para novos projetos. O DNS zonal melhora a fiabilidade das aplicações isolando as interrupções nas zonas, o que impede interrupções nos serviços críticos, como a criação de instâncias e a autorrecuperação.
Antes de começar
-
Se ainda não o tiver feito, configure a autenticação.
A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
- Set a default region and zone.
REST
Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.
Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.
Funções necessárias
Para receber as autorizações de que precisa para ver a utilização de DNS interno ao nível da organização e atualizar a política predefinida, peça ao seu administrador para lhe conceder as seguintes funções de IAM:
-
Verifique a política de DNS global predefinida:
Administrador da política da organização (
roles/orgpolicy.policyAdmin
) na pasta ou na organização -
Determine se uma pasta está pronta para migrar para o DNS zonal:
Navegador (
roles/browser
) na pasta ou na organização
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Estas funções predefinidas contêm as autorizações necessárias para ver a utilização de DNS interno ao nível da organização e atualizar a política predefinida. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para ver a utilização de DNS interno ao nível da organização e atualizar a política predefinida:
-
Defina uma restrição de política da organização:
orgpolicy.*
-
Determine se uma pasta está pronta para migrar para o DNS zonal:
-
resourcemanager.folders.get
-
resourcemanager.folders.list
-
resourcemanager.organizations.get
-
resourcemanager.projects.get
-
resourcemanager.projects.list
-
-
Verifique os nomes de DNS globais e os metadados da VM:
compute.projects.get
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Vista geral da configuração
Quando define uma política da organização para substituir o tipo de DNS interno predefinido, os projetos recém-criados usam o DNS zonal por predefinição. A política organizacional não afeta os projetos existentes nos quais a API Compute Engine já está ativada. Para mudar os projetos existentes para usar o DNS zonal, consulte o artigo Mudar os projetos existentes para o DNS zonal.
Recomendamos que aplique uma política de DNS zonal ao nível da organização. Esta abordagem garante que todos os novos projetos criados na sua organização usam o DNS zonal, o que melhora a respetiva fiabilidade e resiliência. No entanto, pode ter de isentar algumas pastas desta política ao nível da organização. A isenção de pastas é necessária quando novos projetos nessas pastas dependem de projetos existentes que são incompatíveis com o DNS zonal.
O processo de aplicação de uma política de DNS zonal ao nível da organização inclui os seguintes passos:
- Reúna uma lista de projetos e pastas: compile uma lista de todos os projetos e das respetivas pastas associadas na sua organização.
- Identifique as pastas a isentar: identifique as pastas que contêm os projetos incompatíveis identificados no passo 1. Estas pastas têm de ser temporariamente isentas da política de DNS zonal.
- Defina a política organizacional: aplique a política de DNS zonal ao nível organizacional.
- Isentar pastas específicas: aplique isenções às pastas identificadas no passo 3. Isto permite-lhes continuar a usar o DNS global enquanto resolve os projetos incompatíveis nos mesmos.
Esta abordagem garante que os novos projetos usam o DNS zonal para uma maior fiabilidade, ao mesmo tempo que acomoda as dependências existentes em projetos mais antigos que podem não estar prontos para a migração imediata.
Limitações
A ativação de nomes DNS zonais em toda a sua organização aplica definições de DNS zonais a instâncias noutros serviços, como os seguintes:
- Ambiente flexível do App Engine, Google Kubernetes Engine e Contentores em execução no Compute Engine
- Cloud SQL, funções do Cloud Run e Batch
- Dataproc e Dataflow
Reveja se as suas aplicações usam algum destes serviços e use a análise de consultas para identificar problemas de compatibilidade com o DNS zonal para as pastas e os projetos associados a essas aplicações.
Verifique se a sua organização usa o DNS global por predefinição
A predefinição de DNS da sua organização depende de dois fatores:
A data de criação da organização:
- Criadas após 6 de setembro de 2018: a sua organização usa o DNS zonal por predefinição. Não é necessária nenhuma ação adicional.
- Criado antes de 6 de setembro de 2018: a sua organização usa o DNS global por predefinição. Deve considerar migrar para o DNS zonal.
A existência e a aplicação de uma restrição de política da organização:
Mesmo que a sua organização tenha sido criada antes de 6 de setembro de 2018, um administrador pode ter aplicado uma política para usar o DNS zonal para todos os novos projetos criados na organização. Para verificar se existe uma política deste tipo, pode usar a Google Cloud consola ou a Google Cloud CLI.
Consola
Aceda à página IAM e administrador>Identidade e organização na consola.
Verifique a data de inscrição da organização.
Se a sua organização foi criada antes de 6 de setembro de 2018, verifique se uma restrição da política da organização define o tipo de DNS predefinido para todos os projetos criados recentemente como DNS zonal.
- Aceda à página IAM e administração>Políticas de organização na Google Cloud consola.
- No campo Filtro, introduza
constraints/compute.setNewProjectDefaultToZonalDNSOnly
. - Se a restrição estiver configurada, clique no nome Define a definição de DNS interna para novos projetos como DNS zonal apenas.
- Na página Detalhes da política, verifique o Estado.
- Se o estado for Aplicado, o tipo de DNS interno predefinido é o DNS zonal para todos os novos projetos criados na organização.
- Caso contrário, o tipo de DNS predefinido para o projeto continua a ser determinado pela hora de criação da organização.
- Se a restrição não tiver sido configurada para a organização, o tipo de DNS predefinido para o projeto é determinado pela data de criação da organização.
gcloud
Use o comando
organizations describe
e o comandoresource-manager org-policies list
para determinar o tipo de DNS predefinido de uma organização.Verifique o valor dos metadados da organização
creationTime
.gcloud organizations describe ORGANIZATION_ID
Substitua ORGANIZATION_ID pelo número de ID da organização ou pelo nome do domínio da organização.
Se a sua organização foi criada antes de 6 de setembro de 2018, determine se existe uma restrição de política da organização configurada para definir o tipo de DNS predefinido para todos os projetos criados recentemente como DNS zonal.
gcloud resource-manager org-policies list --organization=ORGANIZATION_ID \ --filter="constraints/compute"
No resultado, procure
constraints/compute.setNewProjectDefaultToZonalDNSOnly
.- Se a restrição estiver presente e
Status
forEnforced
, todos os novos projetos criados na organização usam o DNS zonal por predefinição. - Se a restrição não estiver presente ou não for aplicada, o tipo de DNS predefinido é determinado pela data de criação da organização, conforme descrito no primeiro passo.
- Se a restrição estiver presente e
Determine que projetos numa pasta ou numa organização usam o DNS global
Para determinar que projetos estão a usar o DNS global, recomendamos que use o BigQuery para criar uma tabela que liste os projetos relativos da sua organização e os respetivos metadados. Em seguida, pode usar esta tabela para executar uma consulta
- Crie um conjunto de dados do BigQuery.
Exporte os metadados dos recursos da sua organização para uma tabela do BigQuery.
- Certifique-se de que a API Cloud Asset Inventory está ativada.
- Configure as autorizações necessárias para usar a API Cloud Asset Inventory.
Use o seguinte comando da CLI gcloud para exportar o recurso
compute.googleapis.com/Project
:gcloud asset export \ --content-type resource \ --organization 'ORGANIZATION_ID' \ --bigquery-table 'projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME' \ --asset-types='compute.googleapis.com/Project' \ --output-bigquery-force
Substitua o seguinte:
- ORGANIZATION_ID: o número de ID da organização
- PROJECT_ID: o ID do projeto
- DATASET_ID: o nome do conjunto de dados do BigQuery
- TABLE_NAME: a tabela para a qual está a exportar os metadados. Se a tabela não existir, o BigQuery cria-a.
Aceda à BigQuery na Google Cloud consola.
Selecione
Compor uma nova consulta.Na área de texto do editor de consultas, introduza a seguinte consulta GoogleSQL e, de seguida, clique em
Executar.SELECT JSON_VALUE(SAFE.PARSE_JSON(resource.data).vmDnsSetting) AS vmDnsSetting, count(*) as project_count FROM PROJECT_ID.DATASET_ID.TABLE_NAME GROUP BY 1
Substitua o seguinte:
- PROJECT_ID: o ID do projeto
- DATASET_ID: o nome do conjunto de dados do BigQuery
- TABLE_NAME: a tabela que contém os metadados exportados, do passo 2.
Os projetos com o valor
ZONAL_ONLY
paravmDnsSetting
têm o DNS zonal configurado. Caso contrário, os projetos usam o DNS global por predefinição.Opcional: para uma vista detalhada do
vmDnsSetting
para cada projeto, introduza a seguinte consulta GoogleSQL e, de seguida, clique em Executar.SELECT SUBSTR(name,35) as project_id, JSON_VALUE(SAFE.PARSE_JSON(resource.data).vmDnsSetting) AS vmDnsSetting FROM PROJECT_ID.DATASET_ID.TABLE_NAME
Determine a prontidão para migração de uma pasta
Este passo usa um script
bash
e a tabela do BigQuery criada na secção anterior para determinar a prontidão para a migração da pasta.- A pasta está pronta se todos os projetos não tiverem feito consultas que sejam incompatíveis com o DNS zonal nos últimos 30 dias.
- Se uma pasta não estiver pronta para a migração, o script responde com os IDs dos projetos na pasta que estão a impedir que a pasta fique pronta para a migração. Os projetos nesta lista de resultados ainda não são compatíveis com o DNS zonal e requerem uma ação adicional.
Conclua os seguintes passos:
- Obtenha o ID da pasta. Se não souber o ID da pasta, faça o seguinte:
- Na Google Cloud consola, aceda à página Recursos geridos.
- Aplique o filtro
Name:FOLDER_NAME
para obter o ID da pasta.
Consulte a tabela do BigQuery com os dados do
compute.Project assets
exportados.Para ver as instruções sobre como criar a tabela do BigQuery, consulte o artigo Determine que projetos numa pasta ou numa organização usam o DNS global.
Introduza a seguinte consulta GoogleSQL e, de seguida, clique em
Executar:SELECT SUBSTR(name,35) AS project_id, FROM PROJECT_ID.DATASET_ID.TABLE_NAME WHERE CONTAINS_SUBSTR(ancestors, 'FOLDER_NUMBER')
Substitua o seguinte:
- PROJECT_ID: o ID do projeto
- DATASET_ID: o nome do conjunto de dados do BigQuery
- TABLE_NAME: a tabela que contém os metadados exportados
- FOLDER_NUMBER: o número de ID da pasta
Copie a lista de IDs dos projetos e guarde-a num ficheiro.
Execute o seguinte guião do
bash
. O script itera os IDs dos projetos no ficheiro guardado para determinar se uma pasta está pronta para a migração.
#!/bin/bash inaccessible_projects=() unready_projects=() for project in $(cat ~/FILENAME | tr '\n' ' '); do echo -e "Checking project $project..." ERROR=`curl -s --request POST "https://monitoring.googleapis.com/v3/projects/$project/timeSeries:query" -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Accept: application/json" -H "Content-Type: application/json" --data '{"query":"fetch compute.googleapis.com/Location | metric '"'"'compute.googleapis.com/global_dns/request_count'"'"' | filter metric.zonal_dns_readiness = '"'"'zonal_dns_risky'"'"' | every 30d | within 30d"}' --compressed | jq --raw-output '.error'` if ! [[ "$ERROR" -eq "null" ]]; then inaccessible_projects+=($project) continue fi QUERY_COUNT=`curl -s --request POST "https://monitoring.googleapis.com/v3/projects/$project/timeSeries:query" -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Accept: application/json" -H "Content-Type: application/json" --data '{"query":"fetch compute.googleapis.com/Location | metric '"'"'compute.googleapis.com/global_dns/request_count'"'"' | filter metric.zonal_dns_readiness = '"'"'zonal_dns_risky'"'"' | every 30d | within 30d"}' --compressed | jq --raw-output '.timeSeriesData[0].pointData[0].values[0].int64Value'` if [[ "$QUERY_COUNT" -ne "null" ]] && [[ "$QUERY_COUNT" -ne "0" ]]; then unready_projects+=($project) fi done error_len=${#inaccessible_projects[@]} unready_len=${#unready_projects[@]} echo -e "$error_len projects were inaccessible" echo -e "$unready_len projects were not ready for migration" if [ $error_len -ne 0 ]; then echo "Unable to access the following projects:" for project in "${inaccessible_projects[@]}"; do echo "$project" done fi if [ $unready_len -ne 0 ]; then echo "The following projects are not ready for migration:" for project in "${unready_projects[@]}"; do echo "$project" done fi if (( $error_len + $unready_len > 0 )); then echo "This folder is NOT ready for gDNS -> zDNS migration." else echo "This folder is ready for gDNS -> zDNS migration." fi
Substitua FILENAME pelo nome do ficheiro no qual guardou a lista de IDs dos projetos.
Comunique os resultados da análise de prontidão para a migração aos proprietários do projeto:
- Para pastas e projetos seguros para migrar, notifique os proprietários dos projetos de que podem começar a migrar projetos prontos.
- Para pastas que contêm projetos que não são seguros para migrar, dê instruções aos proprietários dos projetos para corrigirem consultas incompatíveis.
Exclua pastas que não estejam preparadas para migrar para o DNS zonal
Para isentar uma pasta da política da organização, conclua os seguintes passos para definir a opção de aplicação da política ao nível da pasta como
Off
.- Inicie sessão na Google Cloud consola como superadministrador do Google Workspace ou Cloud ID.
Na consola, aceda à página Políticas de organização.
Clique em Selecionar e, de seguida, selecione as pastas que quer isentar da política da organização.
A Google Cloud consola apresenta uma lista de restrições da política da organização para essa pasta numa ou mais páginas.
Para encontrar a restrição da política da organização que aplica o DNS zonal:
- Clique em Filtrar.
- Selecione Nome.
- Defina o nome do filtro como Define a definição de DNS interna para novos projetos como DNS zonal apenas.
Clique no nome da restrição da política da organização para abrir a página Detalhes da política.
Clique em Edit.
Na página Editar, selecione Personalizar.
Em Aplicação, selecione Desativada para desativar a aplicação da restrição. Isto significa que o tipo de DNS interno predefinido para todos os projetos na pasta é determinado pela data de criação da organização.
Clique em Guardar.
Para mais informações sobre a personalização das restrições da política da organização, consulte o artigo Personalizar políticas para restrições booleanas na documentação do Resource Manager.
Aplique o DNS zonal por predefinição para novos projetos
Use os passos seguintes para definir a política da organização para uma pasta ou uma organização.
Inicie sessão na Google Cloud consola como superadministrador do Google Workspace ou Cloud ID.
Na consola, aceda à página Políticas de organização.
Selecione a pasta ou a organização para a qual quer ver as políticas de organização. A Google Cloud consola apresenta uma lista de restrições da política da organização disponíveis. A lista pode abranger várias páginas.
Para encontrar a política que aplica o DNS zonal, clique em Filtrar e selecione Nome. Em seguida, defina o nome do filtro como Define a definição de DNS interna para novos projetos como DNS zonal apenas.
Clique no nome da política para ver os respetivos detalhes.
A página de detalhes da política faculta informações sobre a restrição e como a restrição é aplicada.
Por predefinição, a aplicação é indefinida para uma pasta ou uma organização. No entanto, se uma pasta principal tiver uma aplicação definida, a aplicação é herdada da pasta principal mais próxima que tenha uma aplicação definida. Para mais informações, consulte o artigo Compreender a avaliação da hierarquia.
Para personalizar a política de organização, clique em Editar.
Na página de edição, selecione Personalizar.
Em Aplicação, selecione Ativar.
Esta ação define o tipo de DNS interno predefinido para todos os novos projetos na organização como DNS zonal.
Clique em Guardar.
Para validar a alteração da política da organização, pode criar um novo projeto na pasta ou na organização e, em seguida, criar e iniciar uma instância de VM e verificar se a VM está ativada para DNS zonal.
Se for necessário o DNS global para resolver uma consulta de nome DNS incorporada na sua carga de trabalho, pode reverter esta alteração ao nível da organização ou da pasta desativando a aplicação.
Reverta para a utilização do DNS global para uma organização ou uma pasta
Para reverter uma organização ou uma pasta para a utilização do DNS global, pare a aplicação da política organizacional para o DNS zonal. Conclua os seguintes passos.
Desative a política da organização
constraints/compute.setNewProjectDefaultToZonalDNSOnly
ao nível da organização ou da pasta. Para obter instruções sobre como modificar esta política, consulte o artigo Aplique o DNS zonal por predefinição para novos projetos.Defina a aplicação de Sets the internal DNS setting for new projects to Zonal DNS Only como Desativado.
Se quiser reverter para a utilização do DNS global para toda a organização, verifique se nenhuma das pastas na organização está a aplicar a política da organização
constraints/compute.setNewProjectDefaultToZonalDNSOnly
.Para verificar se o DNS global está configurado para os seus projetos e instâncias, consulte o artigo Determine que projetos numa pasta ou organização usam o DNS global.
O que se segue?
- Todos os projetos existentes que usam DNS global têm de ser migrados separadamente. Para mais informações, consulte o artigo Atualize os seus projetos para usar o DNS zonal.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-09-19 UTC.
-