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

Questa pagina contiene procedure per creare o modificare istanze Cloud SQL in modo da consentire a utenti o account di servizio configurati per l'utilizzo dell'autenticazione del database IAM di Cloud SQL. Per saperne di più sull'integrazione IAM di Cloud SQL, consulta Autenticazione IAM.

Un'istanza appena creata ha un database postgres.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Installa Google Cloud CLI.
  5. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  6. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  7. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  8. Installa Google Cloud CLI.
  9. Per initialize gcloud CLI, esegui questo comando:

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

    Vai alla pagina IAM

    Scopri di più su ruoli e autorizzazioni.

Configura nuove istanze per l'autenticazione dei database IAM

Cloud SQL utilizza un flag per abilitare e disabilitare le connessioni utente IAM su un'istanza. In questa procedura, abiliti il flag.

Per configurare una nuova istanza che utilizza l'autenticazione IAM del database Cloud SQL:

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. Non includere informazioni sensibili o che consentono l'identificazione personale nel nome dell'istanza, poiché sono visibili esternamente. Non è necessario includere l'ID progetto nel nome dell'istanza. L'ID progetto viene incluso automaticamente ove appropriato (ad esempio nei file di log).
  5. Inserisci una password per l'utente amministratore predefinito.
  6. Nel menu a discesa Versione database, seleziona una versione del database.
  7. Nella sezione Scegli la disponibilità a livello di 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 può essere modificata in futuro. In genere, non è necessario specificare una zona.
  8. Nella sezione Personalizza la tua istanza, fai clic su Mostra opzioni di configurazione, quindi espandi Flag.
  9. Fai clic su Aggiungi segnalazione.
  10. Nel menu a discesa Scegli un flag, seleziona il flag cloudsql.iam_authentication. Assicurati che sia selezionato On come valore per questo flag, quindi fai clic su Fine.
  11. Configura altre impostazioni dell'istanza, se necessario. Per ulteriori informazioni sulle impostazioni, vedi Impostazioni.
  12. 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 PostgreSQL (come 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. È necessario specificare un'unità di dimensione (ad esempio, 3072 MiB o 9 GiB).
  • ZONE: zona di Compute Engine preferita (ad esempio 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 del database IAM 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"
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally
  # delete this instance by use of Terraform whereas
  # `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Applica le modifiche

Per applicare la configurazione 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 a 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

    Se imposti valori espliciti nel file di configurazione Terraform, le variabili di ambiente vengono sostituite.

Prepara la directory

Ogni file di configurazione Terraform deve avere una propria directory (detta anche modulo principale).

  1. In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome del file deve avere l'estensione .tf, ad esempio main.tf. In questo tutorial, il file è indicato come 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.

    Se vuoi, copia il codice da GitHub. Questa opzione è consigliata se lo snippet Terraform fa parte di una soluzione end-to-end.

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

    Facoltativamente, per utilizzare la versione più recente 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 Terraform eseguendo il comando seguente e inserendo yes al prompt:
    terraform apply

    Attendi finché Terraform non visualizza il messaggio "Applicazione completata".

  3. Apri il progetto Google Cloud 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 disabilitare la protezione dall'eliminazione, nel file di configurazione Terraform imposta l'argomento deletion_protection su false.
    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 tua configurazione Terraform eseguendo il comando seguente e inserendo yes al prompt:

    terraform destroy

REST v1

Non includere informazioni sensibili o che consentono l'identificazione personale (PII) nel nome dell'istanza: sono visibili 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, effettua le seguenti sostituzioni:

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

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/sql/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/sql/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/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}
Per vedere come viene creata la richiesta dell'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: sono visibili 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, effettua le seguenti sostituzioni:

  • INSTANCE_ID: l'ID istanza desiderato
  • REGION: la regione desiderata, ad esempio us-east-1
  • PROJECT_ID: il tuo ID progetto
  • LOCATION_ID: l'ID località
  • DATABASE_VERSION: stringa enum della versione del database. Ad esempio: POSTGRES_12
  • PASSWORD: la password dell'utente root
  • MACHINE_TYPE: stringa enum del tipo di macchina (livello), ad esempio: 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 dell'API REST sottostante per questa attività, consulta Explorer API nella pagina instances:insert.

Configura le istanze esistenti per l'autenticazione IAM del database Cloud SQL

Per configurare l'autenticazione del database IAM su un'istanza esistente:

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 segnalazione.
  6. Nel menu a discesa Scegli un flag, seleziona il flag cloudsql.iam_authentication. Assicurati che sia selezionato On 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 Installa gcloud CLI. Per informazioni sull'avvio di Cloud Shell, vedi 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

Questa operazione reimposta 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, effettua le seguenti sostituzioni:

  • PROJECT_ID: il tuo 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 dell'utente root
  • MACHINE_TYPE: stringa enum del tipo di macchina (livello), ad esempio: db-custom-[CPUS]-[MEMORY_MBS]

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/sql/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/sql/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/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

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

  • PROJECT_ID: il tuo 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 dell'utente root
  • MACHINE_TYPE: stringa enum del tipo di macchina (livello), ad esempio: 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