Questo documento spiega come aggiornare la policy DNS interna per utilizzare il DNS di zona per i nuovi progetti. Il DNS a livello di zona migliora l'affidabilità delle applicazioni isolando le interruzioni all'interno delle zone, impedendo interruzioni ai servizi critici come la creazione di istanze e la riparazione automatica.
Prima di iniziare
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è
il processo mediante il quale la tua identità viene verificata per l'accesso ai Google Cloud servizi e alle API.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
-
Controlla la policy DNS globale predefinita:
Organization Policy Administrator (
roles/orgpolicy.policyAdmin
) sulla cartella o sull'organizzazione -
Determina se una cartella è pronta per la migrazione al DNS di zona:
Browser (
roles/browser
) sulla cartella o sull'organizzazione -
Imposta un vincolo dei criteri dell'organizzazione:
orgpolicy.*
-
Determina se una cartella è pronta per la migrazione al DNS di zona:
-
resourcemanager.folders.get
-
resourcemanager.folders.list
-
resourcemanager.organizations.get
-
resourcemanager.projects.get
-
resourcemanager.projects.list
-
-
Controlla i nomi DNS globali e i metadati della VM:
compute.projects.get
- Raccogli un elenco di progetti e cartelle: compila un elenco di tutti i progetti e delle relative cartelle all'interno della tua organizzazione.
- Identifica le cartelle da esentare: individua le cartelle che contengono i progetti incompatibili identificati nel passaggio 1. Queste cartelle dovranno essere temporaneamente esentate dal criterio DNS di zona.
- Imposta la policy dell'organizzazione: applica la policy DNS zonale a livello di organizzazione.
- Esenta cartelle specifiche: applica le esenzioni alle cartelle identificate nel passaggio 3. In questo modo, possono continuare a utilizzare il DNS globale mentre risolvi i problemi relativi ai progetti incompatibili.
- Ambiente flessibile di App Engine, Google Kubernetes Engine e Container in esecuzione su Compute Engine
- Cloud SQL, Cloud Run Functions e Batch
- Dataproc e Dataflow
La data di creazione dell'organizzazione:
- Creati dopo il 6 settembre 2018: la tua organizzazione utilizza il DNS di zona per impostazione predefinita. Non sono necessari ulteriori interventi da parte tua.
- Creati prima del 6 settembre 2018: la tua organizzazione utilizza il DNS globale per impostazione predefinita. Ti consigliamo di eseguire la migrazione al DNS di zona.
L'esistenza e l'applicazione di un vincolo del criterio dell'organizzazione:
Anche se la tua organizzazione è stata creata prima del 6 settembre 2018, un amministratore potrebbe aver applicato un criterio per utilizzare il DNS di zona per tutti i nuovi progetti creati all'interno dell'organizzazione. Per verificare l'esistenza di una policy di questo tipo, puoi utilizzare la console Google Cloud o Google Cloud CLI.
Vai alla pagina IAM e amministrazione>Identità e organizzazione nella console.
Controlla la data di registrazione dell'organizzazione.
Se la tua organizzazione è stata creata prima del 6 settembre 2018, verifica se un vincolo dei criteri dell'organizzazione imposta il tipo DNS predefinito per tutti i nuovi progetti creati sul DNS di zona.
- Vai alla pagina IAM e amministrazione>Policy dell'organizzazione nella console Google Cloud .
- Nel campo Filtro, inserisci
constraints/compute.setNewProjectDefaultToZonalDNSOnly
. - Se il vincolo è configurato, fai clic sul nome Configura l'impostazione del DNS interno per i nuovi progetti per utilizzare solo il DNS di zona.
- Nella pagina Dettagli norme, controlla lo Stato.
- Se lo stato è Applicato, il tipo di DNS interno predefinito è il DNS di zona per tutti i nuovi progetti creati nell'organizzazione.
- In caso contrario, il tipo DNS predefinito per il progetto viene comunque determinato dall'ora di creazione dell'organizzazione.
- Se il vincolo non è stato configurato per l'organizzazione, il tipo DNS predefinito per il progetto viene determinato dalla data di creazione dell'organizzazione.
Controlla il valore dei metadati
creationTime
dell'organizzazione.gcloud organizations describe ORGANIZATION_ID
Sostituisci ORGANIZATION_ID con il numero ID organizzazione o il nome di dominio dell'organizzazione.
Se la tua organizzazione è stata creata prima del 6 settembre 2018, determina se un vincolo di policy dell'organizzazione è configurato per impostare il tipo DNS predefinito per tutti i progetti appena creati sul DNS di zona.
gcloud resource-manager org-policies list --organization=ORGANIZATION_ID \ --filter="constraints/compute"
Nell'output, cerca
constraints/compute.setNewProjectDefaultToZonalDNSOnly
.- Se il vincolo è presente e
Status
èEnforced
, tutti i nuovi progetti creati nell'organizzazione utilizzano il DNS di zona per impostazione predefinita. - Se il vincolo non è presente o non viene applicato, il tipo DNS predefinito viene determinato dalla data di creazione dell'organizzazione, come descritto nel primo passaggio.
- Se il vincolo è presente e
- Crea un set di dati BigQuery.
Esporta i metadati delle risorse per la tua organizzazione in una tabella BigQuery.
- Assicurati che l'API Cloud Asset Inventory sia abilitata.
- Configura le autorizzazioni necessarie per utilizzare l'API Cloud Asset Inventory.
Utilizza il seguente comando gcloud CLI per esportare l'asset
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
Sostituisci quanto segue:
- ORGANIZATION_ID: il numero ID organizzazione
- PROJECT_ID: l'ID progetto
- DATASET_ID: il nome del set di dati BigQuery
- TABLE_NAME: la tabella in cui esportare i metadati. Se la tabella non esiste, BigQuery la crea.
Vai alla BigQuery nella consoleGoogle Cloud .
Seleziona
Crea una nuova query.Nell'area di testo dell'editor di query, inserisci la seguente query GoogleSQL e poi fai clic su
Esegui.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
Sostituisci quanto segue:
- PROJECT_ID: l'ID progetto
- DATASET_ID: il nome del set di dati BigQuery
- TABLE_NAME: la tabella contenente i metadati esportati, dal passaggio 2.
I progetti con il valore
ZONAL_ONLY
pervmDnsSetting
hanno configurato il DNS di zona. In caso contrario, i progetti utilizzano il DNS globale per impostazione predefinita.(Facoltativo) Per una visualizzazione dettagliata del
vmDnsSetting
per ogni progetto, inserisci la seguente query GoogleSQL e poi fai clic su Esegui.SELECT SUBSTR(name,35) as project_id, JSON_VALUE(SAFE.PARSE_JSON(resource.data).vmDnsSetting) AS vmDnsSetting FROM PROJECT_ID.DATASET_ID.TABLE_NAME
- La cartella è pronta se tutti i progetti non hanno eseguito query incompatibili con il DNS a livello di zona negli ultimi 30 giorni.
- Se una cartella non è pronta per la migrazione, lo script risponde con gli ID progetto nella cartella che impediscono che la cartella sia pronta per la migrazione. I progetti in questo elenco di risultati non sono ancora compatibili con il DNS di zona e richiedono un'azione aggiuntiva.
- Recupera l'ID cartella. Se non conosci l'ID cartella, procedi nel seguente modo:
- Nella console Google Cloud , vai alla pagina Risorse gestite.
- Applica il filtro
Name:FOLDER_NAME
per ottenere l'ID della cartella.
Esegui una query sulla tabella BigQuery con i dati di
compute.Project assets
esportati.Per istruzioni su come creare la tabella BigQuery, consulta Determinare quali progetti in una cartella o un'organizzazione utilizzano il DNS globale.
Inserisci la seguente query GoogleSQL, quindi fai clic su
Esegui:SELECT SUBSTR(name,35) AS project_id, FROM PROJECT_ID.DATASET_ID.TABLE_NAME WHERE CONTAINS_SUBSTR(ancestors, 'FOLDER_NUMBER')
Sostituisci quanto segue:
- PROJECT_ID: l'ID progetto
- DATASET_ID: il nome del set di dati BigQuery
- TABLE_NAME: la tabella che contiene i metadati esportati
- FOLDER_NUMBER: il numero ID della cartella
Copia l'elenco degli ID progetto e salvalo in un file.
Esegui lo script
bash
seguente. Lo script scorre gli ID progetto nel file salvato per determinare se una cartella è pronta per la migrazione.- Per le cartelle e i progetti di cui è possibile eseguire la migrazione, notifica ai proprietari dei progetti che possono iniziare a eseguire la migrazione dei progetti pronti.
- Per le cartelle che contengono progetti di cui non è possibile eseguire la migrazione, chiedi ai proprietari dei progetti di correggere le query incompatibili.
- Accedi alla console Google Cloud come super amministratore di Google Workspace o Cloud Identity.
Nella console, vai alla pagina Policy dell'organizzazione.
Fai clic su Seleziona e poi seleziona le cartelle che vuoi esentare dal criterio dell'organizzazione.
La console Google Cloud mostra un elenco dei vincoli delle policy dell'organizzazione per quella cartella su una o più pagine.
Per trovare il vincolo dei criteri dell'organizzazione che applica il DNS di zona:
- Fai clic su Filtra.
- Seleziona Nome.
- Imposta il nome del filtro su Configura l'impostazione del DNS interno per i nuovi progetti per utilizzare solo il DNS di zona.
Fai clic sul nome del vincolo di policy dell'organizzazione per aprire la pagina Dettagli policy.
Fai clic su Modifica.
Nella pagina Modifica, seleziona Personalizza.
Nella sezione Applicazione forzata, seleziona Off per disattivare l'applicazione forzata del vincolo. Ciò significa che il tipo di DNS interno predefinito per tutti i progetti nella cartella è determinato dalla data di creazione dell'organizzazione.
Fai clic su Salva.
Accedi alla console Google Cloud come super amministratore di Google Workspace o Cloud Identity.
Nella console, vai alla pagina Policy dell'organizzazione.
Seleziona la cartella o l'organizzazione per cui vuoi visualizzare le policy dell'organizzazione. La console Google Cloud mostra un elenco dei vincoli delle policy dell'organizzazione disponibili. L'elenco potrebbe estendersi su più pagine.
Per trovare la policy per applicare il DNS di zona, fai clic su Filtra e seleziona Nome, poi imposta il nome del filtro su Configura l'impostazione del DNS interno per i nuovi progetti per utilizzare solo il DNS di zona.
Fai clic sul nome della norma per visualizzarne i dettagli.
La pagina dei dettagli della policy fornisce informazioni sul vincolo e su come viene applicato.
Per impostazione predefinita, l'applicazione non è definita per una cartella o un'organizzazione. Tuttavia, se una cartella principale ha un'applicazione definita, questa viene ereditata dalla cartella principale più vicina che ha un'applicazione definita. Per ulteriori informazioni, consulta la sezione Informazioni sulla valutazione della gerarchia.
Per personalizzare la policy dell'organizzazione, fai clic su Modifica.
Nella pagina di modifica, seleziona Personalizza.
In Applicazione forzata, seleziona On.
In questo modo, il tipo di DNS interno predefinito per tutti i nuovi progetti dell'organizzazione viene impostato sul DNS di zona.
Fai clic su Salva.
Disattiva il criterio dell'organizzazione
constraints/compute.setNewProjectDefaultToZonalDNSOnly
a livello di organizzazione o cartella. Per istruzioni su come modificare questa policy, vedi Imporre il DNS di zona per impostazione predefinita per i nuovi progetti.Imposta l'applicazione di Configura l'impostazione del DNS interno per i nuovi progetti per utilizzare solo il DNS di zona su Off.
Se vuoi ripristinare l'utilizzo del DNS globale per l'intera organizzazione, verifica che nessuna delle cartelle dell'organizzazione applichi il criterio dell'organizzazione
constraints/compute.setNewProjectDefaultToZonalDNSOnly
.Per verificare che il DNS globale sia configurato per i tuoi progetti e le tue istanze, consulta Determinare quali progetti in una cartella o un'organizzazione utilizzano il DNS globale.
- I progetti esistenti che utilizzano il DNS globale devono essere migrati separatamente. Per maggiori informazioni, vedi Aggiornare i progetti in modo da utilizzare il DNS di zona.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Per saperne di più, consulta la sezione Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per visualizzare l'utilizzo del DNS interno a livello di organizzazione e aggiornare il criterio predefinito, chiedi all'amministratore di concederti i seguenti ruoli IAM:
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per visualizzare l'utilizzo del DNS interno a livello di organizzazione e aggiornare il criterio predefinito. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per visualizzare l'utilizzo del DNS interno a livello di organizzazione e aggiornare la policy predefinita sono necessarie le seguenti autorizzazioni:
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Panoramica della configurazione
Quando imposti un criterio dell'organizzazione per ignorare il tipo DNS interno predefinito, i nuovi progetti creati utilizzano il DNS di zona per impostazione predefinita. Il criterio dell'organizzazione non influisce sui progetti esistenti in cui l'API Compute Engine è già abilitata. Per passare al DNS di zona per i progetti esistenti, consulta Passare al DNS di zona per i progetti esistenti.
Ti consigliamo di applicare un criterio DNS di zona a livello di organizzazione. Questo approccio garantisce che tutti i nuovi progetti creati all'interno della tua organizzazione utilizzino il DNS di zona, migliorandone l'affidabilità e la resilienza. Tuttavia, potresti dover esentare alcune cartelle da queste norme a livello di organizzazione. L'esenzione delle cartelle è necessaria quando i nuovi progetti all'interno di queste cartelle dipendono da progetti esistenti incompatibili con il DNS di zona.
Il processo di applicazione di una policy DNS zonale a livello di organizzazione include i seguenti passaggi:
Questo approccio garantisce che i nuovi progetti utilizzino il DNS di zona per una maggiore affidabilità, tenendo conto anche delle dipendenze esistenti dai progetti precedenti che potrebbero non essere pronti per la migrazione immediata.
Limitazioni
L'attivazione dei nomi DNS di zona in tutta l'organizzazione applica le impostazioni DNS di zona alle istanze in altri servizi, ad esempio:
Verifica se le tue applicazioni utilizzano uno di questi servizi e utilizza l'analisi delle query per identificare problemi di compatibilità con il DNS di zona per le cartelle e i progetti associati a queste applicazioni.
Controlla se la tua organizzazione utilizza Global DNS per impostazione predefinita
L'impostazione DNS predefinita per la tua organizzazione dipende da due fattori:
Console
gcloud
Utilizza il comando
organizations describe
e il comandoresource-manager org-policies list
per determinare il tipo DNS predefinito per un'organizzazione.Determinare quali progetti in una cartella o in un'organizzazione utilizzano il DNS globale
Per determinare quali progetti utilizzano il DNS globale, ti consigliamo di utilizzare BigQuery per creare una tabella che elenchi i progetti relativi alla tua organizzazione e i relativi metadati. Puoi quindi utilizzare questa tabella per eseguire una query
Determinare l'idoneità alla migrazione di una cartella
Questo passaggio utilizza uno script
bash
e la tabella BigQuery creata nella sezione precedente per determinare la preparazione alla migrazione della cartella.Completa i seguenti passaggi:
#!/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
Sostituisci FILENAME con il nome del file in cui hai salvato l'elenco degli ID progetto.
Comunica i risultati dell'analisi di preparazione alla migrazione con i proprietari del progetto:
Cartelle esenti non pronte per la migrazione al DNS di zona
Per esentare una cartella dal criterio dell'organizzazione, completa i seguenti passaggi per impostare l'opzione di applicazione per il criterio a livello di cartella su
Off
.Per saperne di più sulla personalizzazione dei vincoli delle policy dell'organizzazione, consulta la pagina Personalizzazione dei criteri per i vincoli booleani nella documentazione di Resource Manager.
Imponi il DNS di zona per impostazione predefinita per i nuovi progetti
Per impostare il criterio dell'organizzazione per una cartella o un'organizzazione:
Per convalidare la modifica della policy dell'organizzazione, puoi creare un nuovo progetto nella cartella o nell'organizzazione, quindi creare e avviare un'istanza VM e verificare se la VM è abilitata per il DNS di zona.
Se è necessario il DNS globale per risolvere una query del nome DNS integrata nel tuo carico di lavoro, puoi eseguire il rollback di questa modifica a livello di organizzazione o cartella disattivando l'applicazione.
Ripristinare l'utilizzo del DNS globale per un'organizzazione o una cartella
Per ripristinare l'utilizzo del DNS globale per un'organizzazione o una cartella, interrompi l'applicazione della policy dell'organizzazione per il DNS di zona. Completa i seguenti passaggi.
Passaggi successivi
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2025-07-14 UTC.
-