Gestire le associazioni di ruoli condizionali

Questo argomento descrive come aggiungere, modificare e rimuovere le associazioni di ruoli condizionali nei criteri di autorizzazione di Identity and Access Management (IAM).

Prima di iniziare

  • Enable the IAM API.

    Enable the API

  • Leggi la panoramica delle condizioni IAM per comprendere le nozioni di base delle associazioni di ruoli condizionali IAM.

  • Consulta il riferimento agli attributi per scoprire i diversi attributi condizione che possono essere utilizzati in un'espressione.

Ruoli obbligatori

Per gestire le associazioni di ruolo condizionali nel criterio di autorizzazione di una risorsa, devi disporre delle autorizzazioni per recuperare la risorsa e per recuperare e impostare il criterio di autorizzazione per la risorsa. Queste autorizzazioni hanno il seguente formato, dove SERVICE è il nome del servizio proprietario della risorsa e RESOURCE_TYPE è il nome del tipo di risorsa a cui vuoi gestire l'accesso:

  • SERVICE.RESOURCE_TYPE.get
  • SERVICE.RESOURCE_TYPE.getIamPolicy
  • SERVICE.RESOURCE_TYPE.setIamPolicy

Ad esempio, per gestire le associazioni di ruoli condizionali nel criterio di autorizzazione di un progetto, devi disporre delle seguenti autorizzazioni:

  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

Per ottenere le autorizzazioni richieste, chiedi all'amministratore di concederti un ruolo predefinito o personalizzato che includa le autorizzazioni. Ad esempio, l'amministratore potrebbe concederti il ruolo di Amministratore sicurezza (roles/iam.securityAdmin), che include le autorizzazioni per recuperare quasi tutte le risorse Google Cloud e gestire i relativi criteri di autorizzazione.

Aggiungere un'associazione di ruolo condizionale a un criterio

Le associazioni di ruoli condizionali possono essere aggiunte a criteri di autorizzazione nuovi o esistenti per controllare ulteriormente l'accesso alle risorse Google Cloud. Questa sezione mostra come aggiungere una semplice condizione basata sul tempo a un criterio di autorizzazione esistente utilizzando la console Google Cloud, gcloud CLI e l'API REST.

Per aggiungere un'associazione di ruoli condizionale a un criterio di autorizzazione esistente:

Console

  1. Nella console Google Cloud, vai alla pagina IAM.

    Vai alla pagina IAM

  2. Nell'elenco delle entità, individua l'entità che ti interessa e fai clic sul pulsante .

  3. Nel riquadro Modifica autorizzazioni, individua il ruolo per cui vuoi configurare una condizione. Poi, in Condizione IAM (facoltativa), fai clic su Aggiungi condizione IAM.

  4. Nel riquadro Modifica condizione, inserisci un titolo e una descrizione facoltativa per la condizione.

  5. Puoi aggiungere un'espressione di condizione utilizzando il Generatore di condizioni o l'Editor delle condizioni. Il generatore di condizioni fornisce un'interfaccia interattiva per selezionare il tipo di condizione, l'operatore e altri dettagli applicabili relativi all'espressione che preferisci. L'editor delle condizioni fornisce un'interfaccia basata su testo per inserire manualmente un'espressione utilizzando la sintassi CEL.

    Generatore di condizioni:

    1. Dal menu a discesa Tipo di condizione, seleziona Accesso con scadenza.
    2. Dal menu a discesa Operatore, seleziona per.
    3. Nel menu a discesa Ora, fai clic sul pulsante per selezionare una data e un intervallo di tempo.
    4. Fai clic su Salva per applicare la condizione.
    5. Una volta chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva nel riquadro Modifica autorizzazioni per aggiornare la norma di autorizzazione.

    Editor condizioni:

    1. Fai clic sulla scheda Editor delle condizioni e inserisci la seguente espressione (sostituendo il timestamp con il tuo):

      request.time < timestamp("2019-12-31T12:00:00.000Z")
    2. Dopo aver inserito l'espressione, puoi scegliere se convalidare la sintassi CEL facendo clic su Esegui linting sopra la casella di testo in alto a destra.

    3. Fai clic su Salva per applicare la condizione.

    4. Una volta chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva nel riquadro Modifica autorizzazioni per aggiornare la norma di autorizzazione.

gcloud

I criteri Consenti vengono impostati utilizzando il pattern lettura, modifica e scrittura.

Esegui il comando gcloud projects get-iam-policy per ottenere il criterio di autorizzazione corrente per il progetto. Nell'esempio seguente, la versione JSON del criterio di autorizzazione viene scaricata in un percorso sul disco.

Comando:

gcloud projects get-iam-policy project-id --format json > file-path

Viene scaricato il formato JSON del criterio di autorizzazione:

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:travis@example.com"
      ],
      "role": "roles/iam.securityReviewer"
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 1
}

Prendi nota dell'attuale version del criterio di autorizzazione, ovvero 1. Per configurare il criterio di autorizzazione con accesso con scadenza, aggiungi la seguente espressione di condizione evidenziata (sostituendo il timestamp con il tuo). Gcloud CLI aggiorna la versione automaticamente:

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:travis@example.com"
      ],
      "role": "roles/iam.securityReviewer",
      "condition": {
          "title": "Expires_2019",
          "description": "Expires at noon on 2019-12-31",
          "expression":
            "request.time < timestamp('2019-12-31T12:00:00Z')"
      }
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 3
}

Imposta il nuovo criterio di autorizzazione eseguendo il comando gcloud projects set-iam-policy:

gcloud projects set-iam-policy project-id file-path

Il nuovo criterio di autorizzazione viene applicato e l'associazione del ruolo di travis@example.com scade all'ora specificata.

REST

Utilizza il pattern di lettura, modifica e scrittura per consentire l'accesso fino a un ora specifica.

Innanzitutto, leggi il criterio di autorizzazione per il progetto:

Il metodo projects.getIamPolicy dell'API Resource Manager recupera il criterio di autorizzazione di un progetto.

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

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.
  • POLICY_VERSION: la versione del criterio da restituire. Le richieste devono specificare la versione più recente dei criteri, ovvero la versione 3. Per maggiori dettagli, consulta la sezione Specificare una versione delle norme al momento dell'ottenimento delle norme.

Metodo HTTP e URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy

Corpo JSON della richiesta:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:my-user@example.com"
      ]
    },
    {
      "role": "roles/iam.securityReviewer",
      "members": [
        "group:my-group@example.com"
      ]
    }
  ]
}

Prendi nota dell'attuale version del criterio di autorizzazione, ovvero 1.

Successivamente, modifica il criterio di autorizzazione in modo che consenta l'accesso fino a un'ora specifica. Assicurati di modificare il campo version in modo che abbia il valore 3:

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:project-owner@example.com"
      ]
    },
    {
      "role": "roles/iam.securityReviewer",
      "condition": {
        "title": "Expires_2019",
        "description": "Expires at noon on 2019-12-31",
        "expression": "request.time < timestamp('2019-12-31T12:00:00Z')"
      },
      "members": [
        "user:travis@example.com"
      ]
    }
  ]
}

Infine, scrivi il criterio di autorizzazione aggiornato:

Il metodo projects.setIamPolicy dell'API Resource Manager imposta il criterio di autorizzazione nella richiesta come nuovo criterio di autorizzazione del progetto.

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

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.

Metodo HTTP e URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy

Corpo JSON della richiesta:

{
  "policy": {
    "version": 3,
    "etag": "BwWKmjvelug=",
    "bindings": [
      {
        "role": "roles/owner",
        "members": [
          "user:my-user@example.com"
        ]
      },
      {
        "role": "roles/iam.securityReviewer",
        "members": [
          "group:my-group@example.com"
        ],
        "condition": {
          "title": "Expires_July_1_2020",
          "description": "Expires on July 1, 2020",
          "expression":
            "request.time < timestamp('2020-07-01T00:00:00.000Z')"
        }
      }
    ]
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

La risposta contiene il criterio di autorizzazione aggiornato.


Modificare un'associazione di ruoli condizionali esistente

Dopo aver creato una associazione di ruoli condizionale, puoi modificare l'espressione condizione in qualsiasi momento. Questa sezione mostra come aggiornare una condizione basata sul tempo in un criterio di autorizzazione esistente utilizzando la console Google Cloud, Google Cloud CLI e l'API REST.

Per modificare un'associazione di ruolo condizionale in un criterio di autorizzazione esistente:

Console

  1. Nella console Google Cloud, vai alla pagina IAM.

    Vai alla pagina IAM

  2. Nell'elenco delle entità, individua l'entità che ti interessa e fai clic sul pulsante .

  3. Nel riquadro Modifica autorizzazioni, individua il ruolo per cui vuoi configurare una condizione. Poi, in Condizione IAM (facoltativa), fai clic sul nome della condizione esistente per modificarla.

  4. Nel riquadro Modifica condizione, puoi mantenere o aggiornare il titolo e la descrizione esistenti della condizione.

  5. Puoi modificare l'espressione della condizione esistente o aggiungerne una nuova utilizzando il Generatore di condizioni o l'Editor delle condizioni. Il generatore di condizioni fornisce un'interfaccia interattiva per selezionare il tipo di condizione, l'operatore e altri dettagli applicabili all'espressione. L'editor delle condizioni fornisce un'interfaccia basata su testo per inserire manualmente un'espressione utilizzando la sintassi CEL.

    Generatore di condizioni:

    1. Aggiungi una nuova espressione di condizione o modifica quella esistente.
    2. Fai clic su Salva per applicare la condizione.
    3. Una volta chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva nel riquadro Modifica autorizzazioni per aggiornare la norma di autorizzazione.

    Editor condizioni:

    1. Fai clic sulla scheda Editor delle condizioni e aggiungi una nuova expressione di condizione o modifica quella esistente.
    2. Dopo aver inserito l'espressione, puoi scegliere se convalidare la sintassi CEL facendo clic su Esegui linting sopra la casella di testo in alto a destra.
    3. Fai clic su Salva per applicare la condizione.
    4. Una volta chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva nel riquadro Modifica autorizzazioni per aggiornare la norma di autorizzazione.

gcloud

I criteri Consenti vengono impostati utilizzando il pattern lettura, modifica e scrittura.

Esegui il comando gcloud projects get-iam-policy per ottenere il criterio di autorizzazione corrente per il progetto. Nell'esempio seguente, la versione JSON del criterio di autorizzazione viene scaricata in un percorso sul disco.

Comando:

gcloud projects get-iam-policy project-id --format json > file-path

Viene scaricato il formato JSON del criterio di autorizzazione:

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:fatima@example.com"
      ],
      "role": "roles/bigquery.dataViewer",
      "condition": {
        "title": "Duration_3_months",
        "description": "Expires in 3 months on 2019-10-12",
        "expression":
          "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")"
      }
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 3
}

In questo esempio, aggiorneremo i valori title, description e timestamp nell'espressione per modificare la durata della condizione di accesso pianificata. Aggiorna la seguente parte evidenziata della condizione (sostituendo i valori con i tuoi):

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:fatima@example.com"
      ],
      "role": "roles/bigquery.dataViewer",
      "condition": {
        "title": "Duration_5_months",
        "description": "Expires in 5 months on 2020-01-12",
        "expression":
          "request.time > timestamp('2019-07-12T07:00:00.000Z') && request.time < timestamp('2020-01-12T07:00:00.000Z')"
      }
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 3
}

Successivamente, imposta il nuovo criterio di autorizzazione eseguendo il comando gcloud projects set-iam-policy.

gcloud projects set-iam-policy project-id file-path

Viene applicato il criterio di autorizzazione aggiornato e l'associazione del ruolo di fatima@example.com scade al nuovo orario.

REST

Utilizza il pattern di lettura, modifica e scrittura per modificare l'associazione del ruolo condizionale.

Innanzitutto, leggi il criterio di autorizzazione per il progetto:

Il metodo projects.getIamPolicy dell'API Resource Manager recupera il criterio di autorizzazione di un progetto.

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

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.

Metodo HTTP e URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy

Corpo JSON della richiesta:

{
  "options": {
    "requestedPolicyVersion": 3
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:my-user@example.com"
      ]
    },
    {
      "role": "roles/bigquery.dataViewer",
      "condition": {
        "title": "Duration_3_months",
        "description": "Expires in 3 months on 2019-10-12",
        "expression":
          "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")"
      },
      "members": [
        "group:my-group@example.com"
      ]
    }
  ]
}

Successivamente, modifica l'associazione di ruoli condizionale nel criterio di autorizzazione. In questo esempio, aggiorneremo i valori dei timestamp per modificare la durata della condizione di accesso pianificato. Aggiorna la seguente parte evidenziata dell'espressione della condizione (sostituendo il timestamp con il tuo):

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:project-owner@example.com"
      ]
    },
    {
      "role": "roles/bigquery.dataViewer",
      "condition": {
        "title": "Duration_5_months",
        "description": "Expires in 5 months on 2020-01-12",
        "expression":
          "request.time > timestamp('2019-07-12T07:00:00.000Z') && request.time < timestamp('2020-01-12T07:00:00.000Z')"
      },
      "members": [
        "user:fatima@example.com"
      ]
    }
  ]
}

Infine, scrivi il criterio di autorizzazione aggiornato:

Il metodo projects.setIamPolicy dell'API Resource Manager imposta il criterio di autorizzazione nella richiesta come nuovo criterio di autorizzazione del progetto.

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

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.

Metodo HTTP e URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy

Corpo JSON della richiesta:

{
  "policy": {
    "etag": "BwWKmjvelug=",
    "version": 3,
    "bindings": [
      {
        "role": "roles/owner",
        "members": [
          "user:my-user@example.com"
        ]
      },
      {
        "role": "roles/bigquery.dataViewer",
        "condition": {
          "title": "Duration_5_months",
          "description": "Expires in 5 months on 2020-01-12",
          "expression":
            "request.time > timestamp('2019-07-12T07:00:00.000Z') && request.time < timestamp('2020-01-12T07:00:00.000Z')"
        },
        "members": [
          "group:my-group@example.com"
        ],
      }
    ]
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

La risposta contiene il criterio di autorizzazione aggiornato.


Rimuovere una condizione da un'associazione di ruolo

La rimozione di una condizione da un'associazione di ruolo non comporta la revoca del ruolo. Al contrario, consente a tutte le entità nell'associazione del ruolo di utilizzare le autorizzazioni del ruolo in modo incondizionato.

Questa sezione mostra come rimuovere una condizione basata sul tempo in un criterio di autorizzazione utilizzando la console Google Cloud, Google Cloud CLI'API REST.

Per rimuovere una condizione da un'associazione di ruolo in un criterio di autorizzazione:

Console

  1. Nella console Google Cloud, vai alla pagina IAM.

    Vai alla pagina IAM

  2. Nell'elenco delle entità, individua l'entità che ti interessa e fai clic sul pulsante .

  3. Nel riquadro Modifica autorizzazioni, individua l'associazione del ruolo che ti interessa. Poi, in Condizione IAM (facoltativa), fai clic sul nome di una condizione esistente.

  4. Nel riquadro Modifica condizione, fai clic sul pulsante per rimuovere la condizione. Ti verrà chiesto di confermare l'eliminazione della condizione.

  5. Una volta chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva nel riquadro Modifica autorizzazioni per aggiornare il criterio di autorizzazione.

gcloud

I criteri Consenti vengono impostati utilizzando il pattern lettura, modifica e scrittura.

Esegui il comando gcloud projects get-iam-policy per ottenere il criterio di autorizzazione corrente per il progetto. Nell'esempio seguente, la versione JSON del criterio di autorizzazione viene scaricata in un percorso sul disco.

Comando:

gcloud projects get-iam-policy project-id --format json > file-path

Viene scaricato il formato JSON del criterio di autorizzazione:

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:fatima@example.com"
      ],
      "role": "roles/bigquery.dataViewer",
      "condition": {
        "title": "Duration_3_months",
        "description": "Expires in 3 months on 2019-10-12",
        "expression":
          "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")"
      }
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 3
}

Per rimuovere l'associazione del ruolo condizionale dal criterio di autorizzazione, rimuovi il blocco condition come mostrato di seguito:

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:fatima@example.com"
      ],
      "role": "roles/bigquery.dataViewer",
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 3
}

Tieni presente che version è ancora impostato su 3, nonostante il fatto che le associazioni di ruoli incondizionali richiedono solo un criterio di autorizzazione 1. Ti consigliamo di utilizzare sempre il numero di versione più alto quando imposti un criterio di autorizzazione, sia per le associazioni di ruoli condizionali sia per quelle incondizionali. Per ulteriori informazioni, consulta i requisiti delle versioni. Gcloud CLI aggiorna automaticamente il numero di versione per il criterio di autorizzazione.

Imposta quindi il criterio di autorizzazione aggiornato eseguendo il comando gcloud projects set-iam-policy:

gcloud projects set-iam-policy project-id file-path

Viene applicato il criterio di autorizzazione aggiornato, rimuovendo l'associazione di ruolo condizionale per fatima@example.com. L'associazione del ruolo non scadrà più.

REST

Utilizza il pattern di lettura, modifica e scrittura per rimuovere l'associazione del ruolo condizionale.

Innanzitutto, leggi il criterio di autorizzazione per il progetto:

Il metodo projects.getIamPolicy dell'API Resource Manager recupera il criterio di autorizzazione di un progetto.

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

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.

Metodo HTTP e URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy

Corpo JSON della richiesta:

{
  "options": {
    "requestedPolicyVersion": 3
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:my-user@example.com"
      ]
    },
    {
      "role": "roles/bigquery.dataViewer",
      "condition": {
        "title": "Duration_3_months",
        "description": "Expires in 3 months on 2019-10-12",
        "expression":
          "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")"
      },
      "members": [
        "group:my-group@example.com"
      ]
    }
  ]
}

Successivamente, modifica il criterio di autorizzazione rimuovendo l'associazione del ruolo condizionale:

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:project-owner@example.com"
      ]
    },
    {
      "role": "roles/bigquery.dataViewer",
      "members": [
        "user:fatima@example.com"
      ]
    }
  ]
}

Tieni presente che version è ancora impostato su 3, nonostante il fatto che le associazioni di ruoli incondizionali richiedono solo un criterio di autorizzazione 1. Ti consigliamo di utilizzare sempre il numero di versione più alto quando imposti un criterio di autorizzazione, sia per le associazioni di ruoli condizionali sia per quelle incondizionali. Per ulteriori informazioni, consulta i requisiti delle versioni.

Infine, scrivi il criterio di autorizzazione aggiornato:

Il metodo projects.setIamPolicy dell'API Resource Manager imposta il criterio di autorizzazione nella richiesta come nuovo criterio di autorizzazione del progetto.

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

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.

Metodo HTTP e URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy

Corpo JSON della richiesta:

{
  "policy": {
    "etag": "BwWKmjvelug=",
    "version": 3,
    "bindings": [
      {
        "role": "roles/owner",
        "members": [
          "user:my-user@example.com"
        ]
      },
      {
        "role": "roles/bigquery.dataViewer",
        "members": [
          "group:my-group@example.com"
        ]
      }
    ]
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

La risposta contiene il criterio di autorizzazione aggiornato.


Passaggi successivi