Configurazione di istanze nuove ed esistenti per l'autenticazione IAM dei database

Questa pagina contiene procedure per creare o modificare istanze Cloud SQL per consentire a utenti, service account o gruppi configurati per utilizzare l'autenticazione del database IAM di Cloud SQL. Per scoprire di più sull'integrazione di Cloud SQL IAM, consulta Autenticazione IAM.

Un'istanza appena creata ha un database postgres.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Install the gcloud CLI.

  5. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Install the gcloud CLI.

  10. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. Assicurati di disporre dei ruoli Amministratore Cloud SQL e Visualizzatore Compute sul tuo account utente.

    Vai alla pagina IAM

    Scopri di più su ruoli e autorizzazioni.

  13. Il numero massimo di istanze che puoi avere in un singolo progetto dipende dall'architettura di rete di queste istanze:

    • Nuova architettura di rete SQL: puoi avere fino a 1000 istanze per progetto.
    • Architettura di rete SQL precedente: puoi avere fino a 100 istanze per progetto.
    • Utilizzo di entrambe le architetture: il limite sarà compreso tra 100 e 1000, a seconda della distribuzione delle istanze nelle due architetture.

    Invia una richiesta di assistenza per richiedere un aumento. Le repliche di lettura vengono conteggiate come istanze.

    Configura nuove istanze per l'autenticazione IAM dei database

    Per configurare una nuova istanza Cloud SQL per l'autenticazione IAM dei database, devi abilitare il flag cloudsql.iam_authentication. Dopo aver abilitato questo flag, puoi aggiungere utenti IAM, service account o gruppi all'istanza Cloud SQL.

    Per configurare una nuova istanza Cloud SQL in modo che utilizzi l'autenticazione IAM dei database:

    Console

    1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

      Vai a Istanze Cloud SQL

    2. Fai clic su Crea istanza.
    3. Fai clic su Scegli PostgreSQL.
    4. Inserisci un nome per l'ID istanza.
    5. Non includere informazioni sensibili o che consentono l'identificazione personale nel nome dell'istanza, in quanto è visibile esternamente. Non è necessario includere l'ID progetto nel nome dell'istanza. L'ID progetto viene incluso automaticamente dove appropriato (ad esempio, nei file di log).
    6. Inserisci una password per l'amministratore predefinito.
    7. Nel menu Versione del database, seleziona una versione del database.
    8. Nella sezione Scegli la disponibilità per regione e zona, seleziona la regione e la zona per la tua istanza. Posiziona l'istanza nella stessa regione delle risorse che vi accedono. La regione selezionata non potrà essere modificata in futuro. In genere, non è necessario specificare una zona.
    9. Nella sezione Personalizza la tua istanza, fai clic su Mostra opzioni di configurazione, quindi espandi Flag.
    10. Fai clic su Aggiungi flag.
    11. Dal menu Scegli un flag, seleziona il flag cloudsql.iam_authentication. Assicurati che On sia selezionato come valore per questo flag, quindi fai clic su Fine.
    12. Configura altre impostazioni dell'istanza, se necessario. Per ulteriori informazioni sulle impostazioni, vedi Impostazioni.
    13. Fai clic su Crea istanza.

    gcloud

    Esegui gcloud sql instances create con il parametro --database-flags impostato su cloudsql.iam_authentication=on.

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome della nuova istanza.
    • POSTGRES_VERSION: la versione di PostgreSQL (ad esempio POSTGRES_9_6, POSTGRES_10, POSTGRES_11 o POSTGRES_12).
    • NUMBER_OF_CORES: il numero di core nella macchina.
    • AMOUNT_OF_MEMORY: la quantità di memoria nella macchina. Deve essere fornita un'unità di misura delle dimensioni (ad esempio, 3072 MiB o 9 GiB).
    • ZONE: zona Compute Engine preferita (ad es. us-central1-a o us-central1-b).
    • PASSWORD: crea una password per l'utente root.
    gcloud sql instances create INSTANCE_NAME \
    --database-version=POSTGRES_VERSION \
    --cpu=NUMBER_OF_CORES \
    --memory=AMOUNT_OF_MEMORY \
    --zone=ZONE_NAME \
    --root-password=PASSWORD \
    --database-flags=cloudsql.iam_authentication=on

    Terraform

    Per creare un'istanza con l'autenticazione IAM dei database abilitata, utilizza una risorsa Terraform.

    resource "google_sql_database_instance" "default" {
      name             = "postgres-db-auth-instance-name-test"
      region           = "us-west4"
      database_version = "POSTGRES_14"
      settings {
        tier = "db-custom-2-7680"
        database_flags {
          name  = "cloudsql.iam_authentication"
          value = "on"
        }
      }
    }

    Applica le modifiche

    Per applicare la configurazione di Terraform in un progetto Google Cloud , completa i passaggi nelle sezioni seguenti.

    Prepara Cloud Shell

    1. Avvia Cloud Shell.
    2. Imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni Terraform.

      Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.

      export GOOGLE_CLOUD_PROJECT=PROJECT_ID

      Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.

    Prepara la directory

    Ogni file di configurazione di Terraform deve avere la propria directory (chiamata anche modulo radice).

    1. In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione .tf, ad esempio main.tf. In questo tutorial, il file viene denominato main.tf.
      mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    2. Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.

      Copia il codice campione nel file main.tf appena creato.

      (Facoltativo) Copia il codice da GitHub. Questa operazione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.

    3. Rivedi e modifica i parametri di esempio da applicare al tuo ambiente.
    4. Salva le modifiche.
    5. Inizializza Terraform. Devi effettuare questa operazione una sola volta per directory.
      terraform init

      (Facoltativo) Per utilizzare l'ultima versione del provider Google, includi l'opzione -upgrade:

      terraform init -upgrade

    Applica le modifiche

    1. Rivedi la configurazione e verifica che le risorse che Terraform creerà o aggiornerà corrispondano alle tue aspettative:
      terraform plan

      Apporta le correzioni necessarie alla configurazione.

    2. Applica la configurazione di Terraform eseguendo il comando seguente e inserendo yes al prompt:
      terraform apply

      Attendi che Terraform visualizzi il messaggio "Apply complete!" (Applicazione completata).

    3. Apri il tuo Google Cloud progetto per visualizzare i risultati. Nella console Google Cloud , vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.

    Elimina le modifiche

    Per eliminare le modifiche:

    1. Per disattivare la protezione dall'eliminazione, imposta l'argomento deletion_protection su false nel file di configurazione Terraform.
      deletion_protection =  "false"
    2. Applica la configurazione Terraform aggiornata eseguendo il comando seguente e inserendo yes al prompt:
      terraform apply
    1. Rimuovi le risorse applicate in precedenza con la configurazione Terraform eseguendo il seguente comando e inserendo yes al prompt:

      terraform destroy

    REST v1

    Non includere informazioni sensibili o che consentono l'identificazione personale (PII) nel nome dell'istanza, perché è visibile esternamente.

    Non è necessario includere l'ID progetto nel nome dell'istanza. L'ID progetto viene incluso automaticamente dove necessario (ad esempio nei file di log).

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • INSTANCE_ID: l'ID istanza desiderato
    • REGION: la regione desiderata, ad esempio us-east-1
    • PROJECT_ID: l'ID progetto
    • LOCATION_ID: l'ID località
    • DATABASE_VERSION: stringa enum della versione del database. Ad esempio: POSTGRES_12
    • PASSWORD: la password per l'utente root
    • MACHINE_TYPE: stringa enum del tipo di macchina (livello), come: db-custom-[CPUS]-[MEMORY_MBS]

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

    {
      "name": "INSTANCE_ID",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "backupConfiguration": {
          "enabled": true
        },
        "databaseFlags": [
          {
            "name": "cloudsql.iam_authentication",
            "value": "on"
          }
        ]
      }
    }
    

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "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"
    }
    
    Per vedere come viene creata la richiesta API REST sottostante per questa attività, consulta Explorer API nella pagina instances:insert.

    REST v1beta4

    Non includere informazioni sensibili o che consentono l'identificazione personale (PII) nel nome dell'istanza, perché è visibile esternamente.

    Non è necessario includere l'ID progetto nel nome dell'istanza. L'ID progetto viene incluso automaticamente dove necessario (ad esempio nei file di log).

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • INSTANCE_ID: l'ID istanza desiderato
    • REGION: la regione desiderata, ad esempio us-east-1
    • PROJECT_ID: l'ID progetto
    • LOCATION_ID: l'ID località
    • DATABASE_VERSION: stringa enum della versione del database. Ad esempio: POSTGRES_12
    • PASSWORD: la password per l'utente root
    • MACHINE_TYPE: stringa enum del tipo di macchina (livello), come: db-custom-[CPUS]-[MEMORY_MBS]

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

    {
      "name": "INSTANCE_ID",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "backupConfiguration": {
          "enabled": true
        },
        "databaseFlags": [
          {
            "name": "cloudsql.iam_authentication",
            "value": "on"
          }
        ]
      }
    }
    

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-01T19:13:21.834Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    
    Per vedere come viene creata la richiesta API REST sottostante per questa attività, consulta Explorer API nella pagina instances:insert.

    Configurazione delle istanze esistenti per l'autenticazione IAM dei database

    Per configurare un'istanza Cloud SQL esistente per l'autenticazione IAM dei database, devi attivare il flag cloudsql.iam_authentication. Dopo aver abilitato questo flag, puoi aggiungere utenti IAM, service account o gruppi all'istanza Cloud SQL.

    Per configurare un'istanza Cloud SQL esistente in modo che utilizzi l'autenticazione IAM dei database:

    Console

    1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

      Vai a Istanze Cloud SQL

    2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
    3. Fai clic su Modifica.
    4. Nella sezione Personalizza la tua istanza, espandi Flag.
    5. Fai clic su Aggiungi flag.
    6. Dal menu Scegli un flag, seleziona il flag cloudsql.iam_authentication. Assicurati che On sia selezionato come valore per questo flag, quindi fai clic su Fine.
    7. Configura altre impostazioni dell'istanza, se necessario. Per ulteriori informazioni sulle impostazioni, vedi Impostazioni.
    8. Fai clic su Salva.

    gcloud

    Per informazioni sull'installazione e su come iniziare a utilizzare gcloud CLI, consulta Installare gcloud CLI. Per informazioni sull'avvio di Cloud Shell, consulta Utilizzare Cloud Shell.

    Per questa procedura, utilizza gcloud sql instances patch.

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome della nuova istanza.
    gcloud sql instances patch INSTANCE_NAME \
    --database-flags=cloudsql.iam_authentication=on

    Vengono ripristinate tutte le altre impostazioni dei flag di database esistenti. Per ulteriori indicazioni sull'impostazione dei flag di database, consulta Impostare un flag di database.


    REST v1

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID progetto
    • LOCATION_ID: l'ID località
    • INSTANCE_ID: l'ID istanza desiderato
    • REGION: la regione desiderata
    • DATABASE_VERSION: stringa enum della versione del database. Ad esempio: POSTGRES_12
    • PASSWORD: la password per l'utente root
    • MACHINE_TYPE: stringa enum del tipo di macchina (livello), come: db-custom-[CPUS]-[MEMORY_MBS]

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

    {
      "name": "INSTANCE_ID",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "backupConfiguration": {
          "enabled": true
        }
        "databaseFlags":
        [
          {
            "name": "cloudsql.iam_authentication",
            "value": "on"
          }
        ]
      }
    }
    

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "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

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID progetto
    • LOCATION_ID: l'ID località
    • INSTANCE_ID: l'ID istanza desiderato
    • REGION: la regione desiderata
    • DATABASE_VERSION: stringa enum della versione del database. Ad esempio: POSTGRES_12
    • PASSWORD: la password per l'utente root
    • MACHINE_TYPE: stringa enum del tipo di macchina (livello), come: db-custom-[CPUS]-[MEMORY_MBS]

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

    {
      "name": "INSTANCE_ID",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "backupConfiguration": {
          "enabled": true
        }
        "databaseFlags":
        [
          {
            "name": "cloudsql.iam_authentication",
            "value": "on"
          }
        ]
      }
    }
    

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-01T19:13:21.834Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    Passaggi successivi