Imposta il DNS di zona come predefinito per i nuovi progetti

Questo documento spiega come aggiornare la policy DNS interna per utilizzare il DNS di zona con i nuovi progetti. Il DNS di zona migliora l'affidabilità delle applicazioni isolando le interruzioni all'interno delle zone, evitando interruzioni di servizi critici come la creazione di istanze e il ripristino automatico.

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 a servizi e API di Trusted Cloud by S3NS . 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 Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, and then sign in to the gcloud CLI with your federated identity. After signing in, initialize the Google Cloud CLI by running the following command:

      gcloud init
    2. Set a default region and zone.

    REST

    Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.

      Install the Google Cloud CLI, and then sign in to the gcloud CLI with your federated identity. After signing in, initialize the Google Cloud CLI by running the following command:

      gcloud init

    Per saperne di più, consulta Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Trusted Cloud .

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per visualizzare l'utilizzo del DNS interno a livello di organizzazione e aggiornare la policy predefinita, chiedi all'amministratore di concederti i seguenti ruoli IAM:

  • Controllare la policy DNS globale predefinita: Organization Policy Administrator (roles/orgpolicy.policyAdmin) sulla cartella o sull'organizzazione
  • Determinare se una cartella è pronta per la migrazione al DNS di zona: Browser (roles/browser) sulla cartella o sull'organizzazione

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 la policy predefinita. 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:

  • Impostare un vincolo per la policy dell'organizzazione: orgpolicy.*
  • Determinare 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
  • Controllare i nomi DNS globali e i metadati della VM: compute.projects.get

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Panoramica della configurazione

Quando imposti una policy dell'organizzazione per eseguire l'override del tipo di DNS interno predefinito, per impostazione predefinita i nuovi progetti creati utilizzano il DNS di zona. La policy dell'organizzazione non influisce sui progetti esistenti in cui l'API Compute Engine è già abilitata. Per far sì che i progetti esistenti passino al DNS di zona, consulta la sezione Passaggio al DNS di zona per i progetti esistenti.

Ti consigliamo di applicare una policy 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 questa policy a livello di organizzazione. È necessario esentare le cartelle quando i nuovi progetti al loro interno dipendono da progetti esistenti incompatibili con il DNS di zona.

La procedura di applicazione di una policy DNS di zona a livello di organizzazione include i seguenti passaggi:

  1. Raccogli un elenco di progetti e cartelle: compila un elenco di tutti i progetti e delle relative cartelle associate all'interno della tua organizzazione.
  2. Identifica le cartelle da esentare: individua le cartelle contenenti i progetti incompatibili identificati nel passaggio 1. Queste cartelle dovranno essere temporaneamente esentate dalla policy DNS di zona.
  3. Imposta la policy dell'organizzazione: applica la policy DNS di zona a livello di organizzazione.
  4. Esenta cartelle specifiche: applica le esenzioni alle cartelle identificate nel passaggio 3. In questo modo, potranno continuare a utilizzare il DNS globale mentre ti occupi dei progetti incompatibili al loro interno.

Questo approccio garantisce che i nuovi progetti utilizzino il DNS di zona per una maggiore affidabilità, tenendo al contempo conto delle dipendenze esistenti nei progetti precedenti che potrebbero non essere pronti per la migrazione immediata.

Limitazioni

L'attivazione dei nomi DNS di zona nell'intera organizzazione applica le impostazioni DNS di zona alle istanze di altri servizi, ad esempio:

Controlla se le tue applicazioni utilizzano uno di questi servizi e utilizza l'analisi delle query per identificare i problemi di compatibilità con il DNS di zona per le cartelle e i progetti associati a queste applicazioni.

Verifica se la tua organizzazione utilizza il DNS globale per impostazione predefinita

L'impostazione DNS predefinita per la tua organizzazione dipende da due fattori:

  • La data di creazione dell'organizzazione:

    • Creazione successiva al 6 settembre 2018: la tua organizzazione utilizza il DNS di zona per impostazione predefinita. Non sono necessari ulteriori interventi da parte tua.
    • Creazione precedente al 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 della policy dell'organizzazione:

    Anche se la tua organizzazione è stata creata prima del 6 settembre 2018, un amministratore potrebbe aver applicato una policy per l'utilizzo del DNS di zona per tutti i nuovi progetti creati all'interno dell'organizzazione. Per verificare la presenza di una policy di questo tipo, puoi utilizzare la console Trusted Cloud o Google Cloud CLI.

Console

  1. Vai alla pagina IAM e amministrazione>Identità e organizzazione nella console.

    Vai a Identità e organizzazione

  2. Controlla la data di registrazione dell'organizzazione.

    Uno screenshot della pagina della console Identità e organizzazione che mostra la data di completamento della registrazione.

  3. Se la tua organizzazione è stata creata prima del 6 settembre 2018, controlla se un vincolo della policy dell'organizzazione imposta il tipo DNS predefinito per tutti i nuovi progetti su DNS di zona.

    1. Vai alla pagina IAM e amministrazione>Policy dell'organizzazione nella console Trusted Cloud .
    2. Nel campo Filtro, inserisci constraints/compute.setNewProjectDefaultToZonalDNSOnly.
    3. 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.
    4. Nella pagina Dettagli policy, 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 di DNS predefinito per il progetto viene determinato dalla data di creazione dell'organizzazione.
    5. Se il vincolo non è stato configurato per l'organizzazione, il tipo di DNS predefinito per il progetto è determinato dalla data di creazione dell'organizzazione.

gcloud

Utilizza il comando organizations describe e il comando resource-manager org-policies list per determinare il tipo di DNS predefinito per un'organizzazione.

  1. Controlla il valore dei metadati creationTime dell'organizzazione.

    gcloud organizations describe ORGANIZATION_ID
    

    Sostituisci ORGANIZATION_ID con l'ID o il nome di dominio dell'organizzazione.

  2. Se la tua organizzazione è stata creata prima del 6 settembre 2018, determina se un vincolo della policy dell'organizzazione è configurato per impostare il tipo di DNS predefinito per tutti i nuovi progetti su DNS di zona.

    gcloud resource-manager org-policies list --organization=ORGANIZATION_ID \
       --filter="constraints/compute"
    

    Nell'output, cerca constraints/compute.setNewProjectDefaultToZonalDNSOnly.

    1. Se il vincolo è presente e Status è Enforced, tutti i nuovi progetti creati nell'organizzazione utilizzano il DNS di zona per impostazione predefinita.
    2. Se il vincolo non è presente o non viene applicato, il tipo di DNS predefinito è determinato dalla data di creazione dell'organizzazione, come descritto nel primo passaggio.

Determina quali progetti in una cartella o 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 relativi progetti per la tua organizzazione con i metadati corrispondenti. Puoi quindi utilizzare questa tabella per eseguire una query

  1. Crea un set di dati BigQuery.
  2. Esporta i metadati degli asset per la tua organizzazione in una tabella BigQuery.

    1. Assicurati che l'API Cloud Asset Inventory sia abilitata.
    2. Configura le autorizzazioni obbligatorie per utilizzare l'API Cloud Asset Inventory.
    3. 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 dell'organizzazione
      • PROJECT_ID: l'ID progetto
      • DATASET_ID: il nome del set di dati BigQuery
      • TABLE_NAME: la tabella in cui esporti i metadati. Se la tabella non esiste, BigQuery la creerà.
  3. Vai alla pagina BigQuery nella consoleTrusted Cloud .

  4. Seleziona Crea una nuova query.

  5. 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 del passaggio 2.

    I progetti con il valore ZONAL_ONLY per vmDnsSetting hanno il DNS di zona configurato. In caso contrario, i progetti utilizzano il DNS globale per impostazione predefinita.

  6. Facoltativo: per una visualizzazione dettagliata di 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
    

Determina l'idoneità alla migrazione di una cartella

Questo passaggio utilizza uno script bash e la tabella BigQuery creata nella sezione precedente per determinare l'idoneità alla migrazione della cartella.

  • La cartella è pronta se tutti i progetti non hanno eseguito query incompatibili con il DNS di zona negli ultimi 30 giorni.
  • Se una cartella non è pronta per la migrazione, lo script risponde con gli ID dei progetti nella cartella che ne impediscono la preparazione per la migrazione. I progetti in questo elenco di risultati non sono ancora compatibili con il DNS di zona e richiedono un'azione aggiuntiva.

Completa i seguenti passaggi:

  1. Recupera l'ID cartella. Se non conosci l'ID cartella, segui questi passaggi:
    1. Nella console Trusted Cloud , vai alla pagina Risorse gestite.
    2. Applica il filtro Name:FOLDER_NAME per recuperare l'ID della cartella.
  2. Esegui una query sulla tabella BigQuery con i dati compute.Project assets esportati.

    Per le istruzioni su come creare la tabella BigQuery, consulta Determina quali progetti in una cartella o un'organizzazione utilizzano il DNS globale.

    Inserisci la seguente query GoogleSQL e poi 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 contenente i metadati esportati
    • FOLDER_NUMBER: il numero ID della cartella
  3. Copia l'elenco degli ID progetto e salvalo in un file.

  4. Esegui il seguente script bash: Lo script esegue l'iterazione degli ID progetto nel file salvato per determinare se una cartella è pronta per la migrazione.

#!/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 di ID progetto.

Comunica i risultati dell'analisi di idoneità alla migrazione ai proprietari del progetto:

  • Per le cartelle e i progetti di cui è possibile eseguire la migrazione in sicurezza, informa i proprietari dei progetti che possono iniziare a eseguire la migrazione dei progetti pronti.
  • Per le cartelle che contengono progetti per i quali non è possibile eseguire la migrazione in sicurezza, invita i proprietari dei progetti a correggere le query incompatibili.

Esenta le cartelle non pronte per la migrazione al DNS di zona

Per esentare una cartella dalla policy dell'organizzazione, completa i seguenti passaggi per impostare l'opzione di applicazione della policy a livello di cartella su Off.

  1. Accedi alla console Trusted Cloud come super amministratore di Google Workspace o Cloud Identity.
  2. Nella console, vai alla pagina Policy dell'organizzazione.

    Vai a Policy dell'organizzazione

  3. Fai clic su Seleziona e poi seleziona le cartelle da esentare dalla policy dell'organizzazione.

    La console Trusted Cloud mostra un elenco dei vincoli della policy dell'organizzazione per la cartella in una o più pagine.

  4. Per trovare il vincolo della policy dell'organizzazione che applica il DNS di zona:

    1. Fai clic su Filtro.
    2. Seleziona Nome.
    3. Imposta il nome del filtro su Configura l'impostazione del DNS interno per i nuovi progetti per utilizzare solo il DNS di zona.
  5. Fai clic sul nome del vincolo della policy dell'organizzazione per aprire la pagina Dettagli policy.

  6. Fai clic su Modifica.

  7. Nella pagina Modifica, seleziona Personalizza.

  8. In Applicazione forzata, seleziona Off per disattivare l'applicazione del vincolo. Ciò significa che il tipo di DNS interno predefinito per tutti i progetti nella cartella è determinato dalla data di creazione dell'organizzazione.

  9. Fai clic su Salva.

Per ulteriori informazioni sulla personalizzazione dei vincoli della policy dell'organizzazione, consulta la sezione Personalizzazione delle policy per i vincoli booleani nella documentazione di Resource Manager.

Applica il DNS di zona per impostazione predefinita ai nuovi progetti

Per impostare la policy dell'organizzazione per una cartella o un'organizzazione, segui questi passaggi:

  1. Accedi alla console Trusted Cloud come super amministratore di Google Workspace o Cloud Identity.

  2. Nella console, vai alla pagina Policy dell'organizzazione.

    Vai a Policy dell'organizzazione

  3. Seleziona la cartella o l'organizzazione per cui vuoi visualizzare le policy dell'organizzazione. La console Trusted Cloud mostra un elenco dei vincoli delle policy dell'organizzazione disponibili. L'elenco potrebbe essere suddiviso su più pagine.

  4. Per trovare la policy per applicare il DNS di zona, fai clic su Filtra e seleziona Nome, quindi imposta il nome del filtro su Configura l'impostazione del DNS interno per i nuovi progetti per utilizzare solo il DNS di zona.

  5. Fai clic sul nome della policy 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 saperne di più, consulta Informazioni sulla valutazione della gerarchia.

  6. Per personalizzare la policy dell'organizzazione, fai clic su Modifica.

  7. Nella pagina di modifica, seleziona Personalizza.

  8. 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.

  9. Fai clic su Salva.

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 il DNS globale è necessario per risolvere una query sul nome DNS integrata nel tuo workload, puoi eseguire il rollback di questa modifica a livello di organizzazione o cartella disattivando l'applicazione.

Ripristina l'utilizzo del DNS globale per un'organizzazione o una cartella

Per ripristinare l'utilizzo del DNS globale per un'organizzazione o una cartella, arresta l'applicazione della policy dell'organizzazione per il DNS di zona. Completa i seguenti passaggi.

  1. Disattiva la policy dell'organizzazione constraints/compute.setNewProjectDefaultToZonalDNSOnly a livello di organizzazione o cartella. Per istruzioni su come modificare questa policy, consulta Applica il DNS di zona per impostazione predefinita ai nuovi progetti.

    Imposta l'applicazione dell'impostazione Configura l'impostazione del DNS interno per i nuovi progetti per utilizzare solo il DNS di zona su Off.

  2. Se vuoi ripristinare l'utilizzo del DNS globale per l'intera organizzazione, verifica che nessuna delle cartelle dell'organizzazione applichi la policy dell'organizzazione constraints/compute.setNewProjectDefaultToZonalDNSOnly.

  3. Per verificare che il DNS globale sia configurato per i tuoi progetti e istanze, consulta Determina quali progetti in una cartella o un'organizzazione utilizzano il DNS globale.

Passaggi successivi