Gestisci gli utenti con l'autenticazione integrata

Questa pagina descrive come attivare e utilizzare l'autenticazione integrata di Cloud SQL.

Per una panoramica, consulta Autenticazione integrata dei database Cloud SQL.

Prima di creare gli utenti

  1. Crea un'istanza Cloud SQL. Per ulteriori informazioni, vedi Creare istanze.
  2. Abilita le policy per le password per l'istanza. Per saperne di più, consulta Norme relative alle password delle istanze.
  3. Se prevedi di utilizzare il client amministrativo del database per gestire gli utenti, svolgi le seguenti operazioni:

    1. Connetti il client all'istanza. Consulta Opzioni di connessione per applicazioni esterne.

    2. Configura l'utente predefinito sull'istanza impostando la password. Vedi Impostare la password per l'account utente predefinito.

Imposta la password per l'account utente predefinito

Quando crei una nuova istanza Cloud SQL, devi impostare una password per l'account utente predefinito prima di poterti connettere all'istanza.

Per Cloud SQL per MySQL, l'utente predefinito è root@%. Ciò indica un utente del database con il nome utente root che può connettersi da qualsiasi host (@%).

Console

  1. Nella console Trusted 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. Seleziona Utenti dal menu di navigazione SQL.
  4. Trova l'utente root e seleziona Cambia password dal menu Altre azioni Icona Altre azioni..

    Tieni in considerazione le condizioni elencate per la password, che derivano dai criteri relativi alla password impostati per l'istanza.

  5. Fornisci una password efficace che puoi ricordare e fai clic su Ok.

gcloud

Utilizza il comando gcloud sql users set-password come segue per impostare la password per l'utente predefinito.

Sostituisci INSTANCE_NAME con il nome dell'istanza prima di eseguire il comando.

gcloud sql users set-password root \
--host=% \
--instance=INSTANCE_NAME \
--prompt-for-password

REST v1

Per aggiornare la password dell'account utente predefinito, utilizza una richiesta PUT con il metodo users:update.

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

  • project-id: il tuo ID progetto
  • instance-id: l'ID istanza desiderato
  • password: la password dell'utente

Metodo HTTP e URL:

PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=root&host=%25

Corpo JSON della richiesta:

{
  "name": "root",
  "password": "password"
}

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": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

Per aggiornare la password dell'account utente predefinito, utilizza una richiesta PUT con il metodo users:update.

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

  • project-id: il tuo ID progetto
  • instance-id: l'ID istanza desiderato
  • password: la password dell'utente

Metodo HTTP e URL:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=root&host=%25

Corpo JSON della richiesta:

{
  "name": "root",
  "password": "password"
}

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": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Crea un utente

Dopo aver configurato l'account utente predefinito, puoi creare altri utenti.

Console

  1. Nella console Trusted 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. Seleziona Utenti dal menu di navigazione SQL.
  4. Fai clic su Aggiungi account utente.

    Nella pagina Aggiungi un account utente all'istanza instance_name, puoi scegliere se l'utente esegue l'autenticazione con il metodo del database integrato (nome utente e password) o come utente IAM.

  5. Seleziona Autenticazione integrata (impostazione predefinita) e aggiungi le seguenti informazioni:
    • Un nome utente.
    • Facoltativo. Una password. Fornisci una password efficace che puoi ricordare.
    • Facoltativo. La policy per le password degli utenti.
    • Nella sezione Nome host, il valore predefinito è Consenti qualsiasi host, il che significa che l'utente può connettersi da qualsiasi indirizzo IP. (Facoltativo) Seleziona Limita l'host per indirizzo IP o intervallo di indirizzi e inserisci un indirizzo IP o un intervallo di indirizzi nella sezione Host. L'utente può quindi connettersi solo dall'indirizzo IP o dagli indirizzi specificati.
  6. Fai clic su Aggiungi.

Agli utenti creati su istanze che utilizzano MySQL 8.0 o versioni successive e il metodo di autenticazione di Cloud SQL viene concesso automaticamente il ruolo cloudsqlsuperuser e dispongono dei seguenti privilegi associati a questo ruolo: CREATEROLE, CREATEDB e LOGIN.

Agli utenti creati su istanze che utilizzano MySQL 5.7 e il metodo di autenticazione di Cloud SQL vengono concessi automaticamente tutti i privilegi, ad eccezione di FILE e SUPER. Se devi modificare i privilegi per questi utenti, utilizza il comando GRANT o REVOKE nel client mysql.

Per ulteriori informazioni su questi account utente e privilegi, vedi Altri account utente MySQL.

gcloud

Per creare un utente, utilizza il comando gcloud sql users create.

Sostituisci quanto segue:

  • USER_NAME: il nome utente.
  • HOST: il nome host dell'utente come indirizzo IP specifico, intervallo di indirizzi o qualsiasi host (%).
  • INSTANCE_NAME: il nome dell'istanza.
  • PASSWORD: la password dell'utente.
gcloud sql users create USER_NAME \
--host=HOST \
--instance=INSTANCE_NAME \
--password=PASSWORD

Agli utenti creati su istanze che utilizzano MySQL 8.0 o versioni successive e il metodo di autenticazione di Cloud SQL viene concesso automaticamente il ruolo cloudsqlsuperuser e dispongono dei seguenti privilegi associati a questo ruolo: CREATEROLE, CREATEDB e LOGIN.

Agli utenti creati su istanze che utilizzano MySQL 5.7 e il metodo di autenticazione di Cloud SQL vengono concessi automaticamente tutti i privilegi, ad eccezione di FILE e SUPER. Se devi modificare i privilegi per questi utenti, utilizza il comando GRANT o REVOKE nel client mysql.

Per ulteriori informazioni su questi account utente e privilegi, vedi Altri account utente MySQL.

I limiti di lunghezza del nome utente sono gli stessi per Cloud SQL e per MySQL on-premise: 32 caratteri per MySQL 8.0 e versioni successive, 16 caratteri per le versioni precedenti.

Quando crei un utente, puoi aggiungere parametri dei criteri per le password utente.

Terraform

Per creare un utente, utilizza una risorsa Terraform.

resource "random_password" "pwd" {
  length  = 16
  special = false
}

resource "google_sql_user" "user" {
  name     = "user"
  instance = google_sql_database_instance.instance.name
  password = random_password.pwd.result
}

Applica le modifiche

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

Prepara Cloud Shell

  1. Avvia Cloud Shell.
  2. Imposta il progetto Trusted 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 Trusted Cloud progetto per visualizzare i risultati. Nella console Trusted 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

Per creare un utente, utilizza una richiesta POST con il metodo users:insert.

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

  • project-id: il tuo ID progetto
  • instance-id: l'ID istanza desiderato
  • user-id: l'ID dell'utente
  • password: la password dell'utente

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users

Corpo JSON della richiesta:

{
  "name": "user-id",
  "password": "password"
}

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": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:44:16.656Z",
  "startTime": "2020-02-07T22:44:16.686Z",
  "endTime": "2020-02-07T22:44:20.437Z",
  "operationType": "CREATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Agli utenti creati su istanze che utilizzano MySQL 8.0 o versioni successive e il metodo di autenticazione di Cloud SQL viene concesso automaticamente il ruolo cloudsqlsuperuser e dispongono dei seguenti privilegi associati a questo ruolo: CREATEROLE, CREATEDB e LOGIN.

Agli utenti creati su istanze che utilizzano MySQL 5.7 e il metodo di autenticazione di Cloud SQL vengono concessi automaticamente tutti i privilegi, ad eccezione di FILE e SUPER. Se devi modificare i privilegi per questi utenti, utilizza il comando GRANT o REVOKE nel client mysql.

Per ulteriori informazioni su questi account utente e privilegi, vedi Altri account utente MySQL.

I limiti di lunghezza del nome utente sono gli stessi per Cloud SQL e per MySQL on-premise: 32 caratteri per MySQL 8.0 e versioni successive, 16 caratteri per le versioni precedenti.

Quando crei un utente, puoi aggiungere parametri dei criteri per le password utente.

REST v1beta4

Per creare un utente, utilizza una richiesta POST con il metodo users:insert.

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

  • project-id: il tuo ID progetto
  • instance-id: l'ID istanza desiderato
  • user-id: l'ID dell'utente
  • password: la password dell'utente

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users

Corpo JSON della richiesta:

{
  "name": "user-id",
  "password": "password"
}

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": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:44:16.656Z",
  "startTime": "2020-02-07T22:44:16.686Z",
  "endTime": "2020-02-07T22:44:20.437Z",
  "operationType": "CREATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Agli utenti creati su istanze che utilizzano MySQL 8.0 o versioni successive e il metodo di autenticazione di Cloud SQL viene concesso automaticamente il ruolo cloudsqlsuperuser e dispongono dei seguenti privilegi associati a questo ruolo: CREATEROLE, CREATEDB e LOGIN.

Agli utenti creati su istanze che utilizzano MySQL 5.7 e il metodo di autenticazione di Cloud SQL vengono concessi automaticamente tutti i privilegi, ad eccezione di FILE e SUPER. Se devi modificare i privilegi per questi utenti, utilizza il comando GRANT o REVOKE nel client mysql.

Per ulteriori informazioni su questi account utente e privilegi, vedi Altri account utente MySQL.

I limiti di lunghezza del nome utente sono gli stessi per Cloud SQL e per MySQL on-premise: 32 caratteri per MySQL 8.0 e versioni successive, 16 caratteri per le versioni precedenti.

Quando crei un utente, puoi aggiungere parametri dei criteri per le password utente.

Client MySQL

  1. Per creare un utente, al prompt mysql, utilizza la seguente istruzione CREATE USER:
      CREATE USER 'USER_NAME'@'%'
         IDENTIFIED BY 'PASSWORD';
      

    (Facoltativo) Aggiungi i parametri della policy per le password degli utenti.

  2. Puoi confermare la creazione dell'utente visualizzando la tabella degli utenti:
    SELECT user, host FROM mysql.user;
    Per un'istanza di seconda generazione, l'output è simile a questo esempio:
    +----------+-----------+
    | user     | host      |
    +----------+-----------+
    | root     | %         |
    | newuser  | %         |
    +----------+-----------+
    1 row in set (0.01 sec)
    
  3. Concedi i privilegi all'utente con l'istruzione GRANT. Per saperne di più, consulta Privilegi forniti da MySQL.
  4. Svuota la tabella mysql.user per assicurarti che la modifica venga mantenuta:
      FLUSH TABLES mysql.user;

Impostare una policy per le password degli utenti

Puoi impostare un criterio per le password con il tipo di autenticazione integrato.

Console

  1. Nella console Trusted 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. Seleziona Utenti dal menu di navigazione SQL.
  4. Fai clic su Altre azioni Icona Altre azioni. per l'utente di cui vuoi modificare le norme.
  5. Seleziona Modifica policy password.
  6. Nella sezione Norme relative alle password, seleziona una o più delle seguenti opzioni:
    • Imposta la scadenza della password: specifica il numero di giorni dopo i quali la password scade e l'utente deve crearne una nuova.
    • Blocco dopo tentativi non riusciti: specifica il numero di volte in cui un utente può provare la password in modo errato prima che l'account venga bloccato.

      Supportato solo su Cloud SQL per MySQL 8.0 e versioni successive.

    • Richiedi password attuale quando viene modificata la password: richiede agli utenti di inserire la password esistente quando tentano di modificarla.

gcloud

Per impostare i criteri per le password degli utenti, utilizza il comando gcloud sql users set-password-policy.

Utilizza --password-policy-enable-password-verification per rendere obbligatorio l'inserimento della password esistente quando gli utenti tentano di modificare la password. Per disattivare questo parametro, utilizza --no-password-policy-enable-password-verification.

Sostituisci quanto segue:

  • USER_NAME: il nome utente.
  • INSTANCE_NAME: il nome dell'istanza.
  • HOST: il nome host dell'utente come indirizzo IP specifico, intervallo di indirizzi o qualsiasi host (%).
  • PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS: Facoltativo: il numero di volte in cui un utente può provare la password in modo errato prima che l'account venga bloccato. Utilizza --password-policy-enable-failed-attempts-check per abilitare e --no-password-policy-enable-failed-attempts-check per disattivare il controllo.
  • PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION: (facoltativo) Specifica il numero di giorni dopo i quali la password scade e l'utente deve crearne una nuova.
gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--password-policy-enable-failed-attempts-check \
--password-policy-allowed-failed-attempts=PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS \
--password-policy-password-expiration-duration=PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION \
--password-policy-enable-password-verification

Per rimuovere un criterio per le password utente, utilizza il parametro --clear-password-policy.

gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--clear-password-policy

Per visualizzare le norme relative alle password utente, vedi Elencare gli utenti.

REST v1

Per impostare un criterio per le password utente, utilizza una richiesta PUT con il metodo users:update.

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

  • PROJECT_ID: il tuo ID progetto
  • INSTANCE_ID: l'ID istanza
  • USER_ID: l'ID dell'utente
  • PASSWORD: la password dell'utente
  • FAILED_ATTEMPTS_CHECK: impostato su true per attivare un controllo del numero di tentativi di accesso non riusciti dopo i quali l'account viene bloccato
  • NUMBER_OF_ATTEMPTS: il numero di tentativi di accesso non riusciti dopo i quali l'account viene bloccato
  • PASSWORD_EXPIRATION_DURATION: il numero di giorni dopo i quali la password scade e l'utente deve crearne una nuova
  • VERIFY_PASSWORD: impostato su true per rendere obbligatorio l'inserimento della password esistente quando si tenta di modificare la password

Metodo HTTP e URL:

PUT https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

Corpo JSON della richiesta:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {
      {
        "enableFailedAttemptsCheck" : "FAILED_ATTEMPTS_CHECK",
        "allowedFailedAttempts" : "NUMBER_OF_ATTEMPTS",
        "passwordExpirationDuration" : "PASSWORD_EXPIRATION_DURATION",
        "enablePasswordVerification" : "VERIFY_PASSWORD"
      }
    },
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Per visualizzare le norme relative alle password utente, vedi Elencare gli utenti.

REST v1beta4

Per impostare un criterio per le password utente, utilizza una richiesta PUT con il metodo users:update.

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

  • PROJECT_ID: il tuo ID progetto
  • INSTANCE_ID: l'ID istanza
  • USER_ID: l'ID dell'utente
  • PASSWORD: la password dell'utente
  • FAILED_ATTEMPTS_CHECK: impostato su true per attivare un controllo del numero di tentativi di accesso non riusciti dopo i quali l'account viene bloccato
  • NUMBER_OF_ATTEMPTS: il numero di tentativi di accesso non riusciti dopo i quali l'account viene bloccato
  • PASSWORD_EXPIRATION_DURATION: il numero di giorni dopo i quali la password scade e l'utente deve crearne una nuova
  • VERIFY_PASSWORD: impostato su true per rendere obbligatorio l'inserimento della password esistente quando si tenta di modificare la password

Metodo HTTP e URL:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

Corpo JSON della richiesta:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {
      {
        "enableFailedAttemptsCheck" : "FAILED_ATTEMPTS_CHECK",
        "allowedFailedAttempts" : "NUMBER_OF_ATTEMPTS",
        "passwordExpirationDuration" : "PASSWORD_EXPIRATION_DURATION",
        "enablePasswordVerification" : "VERIFY_PASSWORD"
      }
    },
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Per visualizzare le norme relative alle password utente, vedi Elencare gli utenti.

Client MySQL

Per impostare un criterio per le password utente, al prompt mysql, utilizza la seguente istruzione ALTER USER:

ALTER USER USER_NAME
    FAILED_LOGIN_ATTEMPTS ALLOWED_FAILED_ATTEMPTS
    PASSWORD EXPIRE INTERVAL PASSWORD_EXPIRATION_DURATION DAY
    PASSWORD REQUIRE CURRENT;

Sostituisci quanto segue:

  • USER_NAME: il nome utente.
  • ALLOWED_FAILED_ATTEMPTS: Facoltativo: il numero di volte in cui un utente può provare la password in modo errato prima che l'account venga bloccato.
  • PASSWORD_EXPIRATION_DURATION: (facoltativo) Specifica il numero di giorni dopo i quali la password scade e l'utente deve crearne una nuova.

Utilizza l'opzione PASSWORD REQUIRE CURRENT per rendere obbligatorio l'inserimento della password esistente quando gli utenti tentano di modificarla.

Per visualizzare le norme relative alle password degli utenti, vedi Elencare gli utenti.

Elenca utenti

Console

  1. Nella console Trusted 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. Seleziona Utenti dal menu di navigazione SQL.

    L'elenco mostra il tipo di User name, Host name e Authentication per ogni utente.

    Inoltre, per il tipo di autenticazione integrata, viene indicato anche Password status.

gcloud

Utilizza il comando gcloud sql users list per elencare gli utenti per questa istanza:

gcloud sql users list \
--instance=INSTANCE_NAME

Il comando restituisce Name, Host e Type di autenticazione per ogni utente.

Inoltre, per il tipo di autenticazione integrato, vengono restituiti lo stato e le impostazioni del criterio per le password. Ad esempio:

    NAME    HOST    TYPE        PASSWORD_POLICY
    user1           BUILT_IN    {'allowedFailedAttempts': 2,
                                 'enableFailedAttemptsCheck': True,
                                 'passwordExpirationDuration': '7d',
                                 'status': {
                                   'locked': True,
                                   'passwordExpirationTime': '2022-07-01T19:53:45.822742904Z'
                                 }
                                }
   

REST v1

Per elencare gli utenti definiti per un'istanza, utilizza una richiesta GET con il metodo users:list.

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

  • project-id: il tuo ID progetto
  • instance-id: l'ID istanza desiderato

Metodo HTTP e URL:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#usersList",
  "items": [
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "sqlserver",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "user-id-1",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "user-id-2",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

Se è stata impostata una policy per le password utente, la sezione items della risposta include una sezione passwordPolicy. Il seguente esempio di codice mostra la sezione passwordPolicy.

  {
  ...
  "passwordValidationUserPolicy" : {
    {
      "enableFailedAttemptsCheck" : true,
      "allowedFailedAttempts" : 8,
      "passwordExpirationDuration" : "7d",
      "enablePasswordVerification" : true
    }
  },
  ...
}
  

REST v1beta4

Per elencare gli utenti definiti per un'istanza, utilizza una richiesta GET con il metodo users:list.

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

  • project-id: il tuo ID progetto
  • instance-id: l'ID istanza desiderato

Metodo HTTP e URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#usersList",
  "items": [
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "sqlserver",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "user-id-1",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "user-id-2",
      "host": "",
      "instance": "instance-id",
      "project": "project-id",
      "sqlserverUserDetails": {
        "serverRoles": [
          "CustomerDbRootRole"
        ]
      }
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

Se è stata impostata una policy per le password utente, la sezione items della risposta include una sezione passwordPolicy. Il seguente esempio di codice mostra la sezione passwordPolicy.

  {
  ...
  "passwordValidationUserPolicy" : {
    {
      "enableFailedAttemptsCheck" : true,
      "allowedFailedAttempts" : 8,
      "passwordExpirationDuration" : "7d",
      "enablePasswordVerification" : true
    }
  },
  ...
}
  

Client MySQL

Per elencare gli utenti MySQL, al prompt mysql, utilizza la seguente istruzione SELECT:

SELECT user, host FROM mysql.user;

Per un'istanza di seconda generazione con solo l'account utente root configurato, l'output è simile a questo esempio:

+------+-----------+
| user | host      |
+------+-----------+
| root | %         |
+------+-----------+
1 row in set (0.01 sec)

Questo esempio mostra gli utenti di un'istanza con l'utente root. Questo utente può connettersi da qualsiasi host (%). Il campo della password mostra l'hash della password.

Modificare la password di un utente

Le password utente possono essere modificate in uno dei seguenti modi.

Console

  1. Nella console Trusted 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. Seleziona Utenti dal menu di navigazione SQL.
  4. Fai clic su Altre azioni Icona Altre azioni. per l'utente che vuoi aggiornare.
  5. Seleziona Cambia password.
  6. Specifica una nuova password.

    Inoltre, se vuoi continuare a utilizzare la password precedente, seleziona la casella di controllo Mantieni la password attuale.

  7. Fai clic su OK.

gcloud

Utilizza il comando gcloud sql users set-password per modificare una password.

Sostituisci quanto segue:

  • USER_NAME: il nome utente.
  • HOST: il nome host dell'utente come indirizzo IP specifico, intervallo di indirizzi o qualsiasi host (%).
  • INSTANCE_NAME: il nome dell'istanza.
  • PASSWORD: una password. Deve soddisfare i requisiti dei criteri per le password, se impostati.

(Facoltativo) Per MySQL 8.0 e versioni successive, puoi continuare a consentire all'utente di utilizzare la password precedente con l'opzione --retain-password. Per eliminare la password precedente, utilizza l'opzione --discard-dual-password.

gcloud sql users set-password USER_NAME \
--host=HOST \
--instance=INSTANCE_NAME \
--password=PASSWORD

REST v1

Per modificare la password di un utente, utilizza una richiesta PUT con il metodo users:update.

La seguente richiesta aggiorna la password per l'account utente user_name'@'%. Se l'utente ha un host diverso, devi modificare la chiamata con l'host corretto.

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

  • project-id: il tuo ID progetto
  • instance-id: l'ID istanza desiderato
  • user-id: l'ID dell'utente
  • password: La nuova password per l'utente
  • dual-password: uno di questi valori enum:
    • DUAL_PASSWORD: l'utente può continuare a utilizzare la password precedente.
    • NO_DUAL_PASSWORD: l'utente non può utilizzare la password precedente.
    • NO_MODIFY_DUAL_PASSWORD: lo stato della doppia password rimane invariato.

Metodo HTTP e URL:

PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=user-id

Corpo JSON della richiesta:

{
  "name": "user-id",
  "password": "password",
  "retainedPassword" : "dual-password"
}

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": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

Per modificare la password di un utente, utilizza una richiesta PUT con il metodo users:update.

La seguente richiesta aggiorna la password per l'account utente user_name'@'%. Se l'utente ha un host diverso, devi modificare la chiamata con l'host corretto.

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

  • project-id: il tuo ID progetto
  • instance-id: l'ID istanza desiderato
  • user-id: l'ID dell'utente
  • password: La nuova password per l'utente
  • dual-password: uno di questi valori enum:
    • DUAL_PASSWORD: l'utente può continuare a utilizzare la password precedente.
    • NO_DUAL_PASSWORD: l'utente non può utilizzare la password precedente.
    • NO_MODIFY_DUAL_PASSWORD: lo stato della doppia password rimane invariato.

Metodo HTTP e URL:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=user-id

Corpo JSON della richiesta:

{
  "name": "user-id",
  "password": "password",
  "retainedPassword" : "dual-password"
}

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": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Client MySQL

  1. Per modificare la password, al prompt mysql, utilizza l'istruzione SET PASSWORD:
    SET PASSWORD FOR USER_NAME = PASSWORD('auth_string');
  2. Svuota la tabella mysql.user per assicurarti che la modifica venga mantenuta:
    FLUSH TABLES mysql.user;

Se un utente è bloccato a causa delle impostazioni dei criteri per le password, modifica la password per sbloccarlo. Assicurati che le password, quando vengono modificate, rispettino le norme relative alle password.

Rimuovere una policy per le password degli utenti

Puoi rimuovere un criterio per le password da un utente con il tipo di autenticazione integrato.

gcloud

Per rimuovere la policy delle password utente, utilizza il comando gcloud sql users set-password-policy e il parametro --clear-password-policy.

Sostituisci quanto segue:

  • USER_NAME: il nome utente
  • INSTANCE_NAME: il nome dell'istanza
  • HOST: il nome host dell'utente come indirizzo IP specifico, intervallo di indirizzi o qualsiasi host (%)
gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--clear-password-policy

REST v1

Per rimuovere un criterio per le password utente, utilizza una richiesta PUT con il metodo users:update.

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

  • PROJECT_ID: il tuo ID progetto
  • INSTANCE_ID: l'ID istanza
  • USER_ID: l'ID dell'utente
  • PASSWORD: la password dell'utente

Metodo HTTP e URL:

PUT https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

Corpo JSON della richiesta:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {}
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

REST v1beta4

Per rimuovere un criterio per le password utente, utilizza una richiesta PUT con il metodo users:update.

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

  • PROJECT_ID: il tuo ID progetto
  • INSTANCE_ID: l'ID istanza
  • USER_ID: l'ID dell'utente
  • PASSWORD: la password dell'utente

Metodo HTTP e URL:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

Corpo JSON della richiesta:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {}
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Rimuovere un utente

L'utente predefinito può rimuovere gli utenti.

Prima di rimuovere un utente, devi eliminare tutti gli oggetti di sua proprietà o riassegnarne la proprietà e revocare tutti i privilegi concessi al ruolo su altri oggetti.

Console

  1. Nella console Trusted 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. Seleziona Utenti dal menu di navigazione SQL.
  4. Fai clic su Altre azioni Icona Altre azioni. per l'utente che vuoi rimuovere.
  5. Seleziona Rimuovi e poi di nuovo Rimuovi.

gcloud

Utilizza il comando gcloud sql users delete per rimuovere un utente.

Sostituisci quanto segue:

  • USER_NAME: il nome utente.
  • HOST: il nome host dell'utente come indirizzo IP specifico, intervallo di indirizzi o qualsiasi host (%).
  • INSTANCE_NAME: il nome dell'istanza.
gcloud sql users delete USER_NAME \
--host=HOST \
--instance=INSTANCE_NAME

REST v1

La richiesta riportata di seguito utilizza il metodo users:delete per eliminare l'account utente specificato.

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

  • PROJECT_ID: il tuo ID progetto
  • INSTANCE_ID: l'ID istanza desiderato
  • USERNAME: l'indirizzo email dell'utente o del account di servizio

Metodo HTTP e URL:

DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME

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": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "DELETE_USER",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

La richiesta riportata di seguito utilizza il metodo users:delete per eliminare l'account utente specificato.

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

  • PROJECT_ID: il tuo ID progetto
  • INSTANCE_ID: l'ID istanza desiderato
  • USERNAME: l'indirizzo email dell'utente o del account di servizio

Metodo HTTP e URL:

DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME

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": "DONE",
  "user": "user@example.com",
  "insertTime": "2020-02-07T22:38:41.217Z",
  "startTime": "2020-02-07T22:38:41.217Z",
  "endTime": "2020-02-07T22:38:44.801Z",
  "operationType": "DELETE_USER",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Client MySQL

  1. Per eliminare un utente, al prompt mysql, utilizza la seguente istruzione DROP USER:
    DROP USER 'USER_NAME'@'HOST_NAME';
  2. Svuota la tabella mysql.user per assicurarti che la modifica venga mantenuta:
    FLUSH TABLES mysql.user;

Aggiornare le proprietà utente

Per aggiornare le proprietà utente, come host o privilegi, devi utilizzare il client mysql. Per ulteriori informazioni, consulta la sezione MySQL User Account Management nella documentazione di MySQL.

Passaggi successivi