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

  • Attiva IAM API.

    Abilita l'API

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

  • Esamina il riferimento all'attributo per conoscere i diversi attributi della condizione che possono essere utilizzati in un'espressione.

Ruoli obbligatori

Per gestire le associazioni di ruoli condizionali nel criterio di autorizzazione di una risorsa, devi avere le autorizzazioni necessarie per ottenere la risorsa e per ottenere e impostare il criterio di autorizzazione per la risorsa. Queste autorizzazioni hanno il formato seguente, dove SERVICE è il nome del servizio proprietario della risorsa e RESOURCE_TYPE è il nome del tipo di risorsa per 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 in un 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 Amministratore sicurezza (roles/iam.securityAdmin), che include le autorizzazioni per ottenere quasi tutte le risorse Google Cloud e gestire i relativi criteri di autorizzazione.

Aggiungere un'associazione di ruoli condizionale a un criterio

È possibile aggiungere associazioni di ruoli condizionali ai 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, Google Cloud 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 quella che ti interessa e fai clic sul pulsante .

  3. Nel riquadro Modifica autorizzazioni, individua il ruolo desiderato per cui configurare una condizione. 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 lo Strumento per la creazione di condizioni o l'Editor 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 di condizioni fornisce un'interfaccia basata su testo per inserire manualmente un'espressione utilizzando la sintassi CEL.

    Strumento per la creazione delle condizioni:

    1. Nell'elenco a discesa Tipo di condizione, seleziona Accesso in scadenza.
    2. Dal menu a discesa Operatore, seleziona da.
    3. Dal menu a discesa Ora, fai clic sul pulsante per scegliere tra un intervallo di data e ora.
    4. Fai clic su Salva per applicare la condizione.
    5. Dopo aver chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva nel riquadro Modifica autorizzazioni per aggiornare il criterio di autorizzazione.

    Editor condizioni:

    1. Fai clic sulla scheda Editor 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 di convalidare la sintassi CEL facendo clic su Esegui Linter sopra la casella di testo in alto a destra.

    3. Fai clic su Salva per applicare la condizione.

    4. Dopo aver chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva nel riquadro Modifica autorizzazioni per aggiornare il criterio di autorizzazione.

gcloud

I criteri di autorizzazione vengono impostati utilizzando il pattern lettura-modifica-scrittura.

Esegui il comando gcloud projects get-iam-policy per ottenere l'attuale criterio di autorizzazione per il progetto. Nell'esempio seguente, la versione JSON del criterio di autorizzazione viene scaricata in un percorso su 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, che è 1. Per configurare il criterio di autorizzazione con accesso prevedibile, aggiungi la seguente espressione della condizione evidenziata (sostituendo il timestamp con il tuo). gcloud CLI aggiorna automaticamente la versione:

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

Quindi, 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 dei ruoli di travis@example.com scadrà all'ora specificata.

REST

Utilizza il pattern lettura-modifica-scrittura per consentire l'accesso fino a un momento specifico.

Prima di tutto, leggi il criterio di autorizzazione per il progetto:

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

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

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:project-owner@example.com"
      ]
    },
    {
      "role": "roles/iam.securityReviewer",
      "members": [
        "user:travis@example.com"
      ]
    }
  ]
}

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

Successivamente, modifica il criterio di autorizzazione in modo che consenta l'accesso fino a un periodo di tempo specifico. Assicurati di modificare il campo version con 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, effettua le seguenti sostituzioni:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche come 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:project-owner@example.com"
        ]
      },
      {
        "role": "roles/iam.securityReviewer",
        "members": [
          "user:travis@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 condizionale esistente

Dopo aver creato un'associazione di ruoli condizionale, puoi modificare l'espressione della 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 quella che ti interessa e fai clic sul pulsante .

  3. Nel riquadro Modifica autorizzazioni, individua il ruolo desiderato per cui configurare una condizione. 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 lo Strumento per la creazione di condizioni o l'Editor 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 di condizioni fornisce un'interfaccia basata su testo per inserire manualmente un'espressione utilizzando la sintassi CEL.

    Strumento per la creazione delle condizioni:

    1. Aggiungi una nuova espressione della condizione o modifica l'espressione della condizione esistente.
    2. Fai clic su Salva per applicare la condizione.
    3. Dopo aver chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva nel riquadro Modifica autorizzazioni per aggiornare il criterio di autorizzazione.

    Editor condizioni:

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

gcloud

I criteri di autorizzazione vengono impostati utilizzando il pattern lettura-modifica-scrittura.

Esegui il comando gcloud projects get-iam-policy per ottenere l'attuale criterio di autorizzazione per il progetto. Nell'esempio seguente, la versione JSON del criterio di autorizzazione viene scaricata in un percorso su 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 del timestamp nell'espressione per modificare la durata della condizione di accesso pianificato. 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
}

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

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

Il criterio di autorizzazione aggiornato viene applicato e l'associazione dei ruoli di fatima@example.com scadrà alla nuova data.

REST

Utilizza il pattern read-modify-write per modificare l'associazione condizionale dei ruoli.

Prima di tutto, leggi il criterio di autorizzazione per il progetto:

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

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

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche come 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:project-owner@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": [
        "user:fatima@example.com"
      ]
    }
  ]
}

Successivamente, modifica l'associazione del ruolo condizionale nel criterio di autorizzazione. In questo esempio, aggiorneremo i valori del 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, effettua le seguenti sostituzioni:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche come 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: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"
        ],
      }
    ]
  }
}

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. Invece, consente a tutte le entità nell'associazione del ruolo di utilizzare le autorizzazioni nel ruolo incondizionatamente.

Questa sezione mostra come rimuovere una condizione basata sul tempo in un criterio di autorizzazione utilizzando la console Google Cloud, Google Cloud CLI e l'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 quella che ti interessa e fai clic sul pulsante .

  3. Nel riquadro Modifica autorizzazioni, individua l'associazione di ruoli che ti interessa. 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. Dopo aver chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva nel riquadro Modifica autorizzazioni per aggiornare il criterio di autorizzazione.

gcloud

I criteri di autorizzazione vengono impostati utilizzando il pattern lettura-modifica-scrittura.

Esegui il comando gcloud projects get-iam-policy per ottenere l'attuale criterio di autorizzazione per il progetto. Nell'esempio seguente, la versione JSON del criterio di autorizzazione viene scaricata in un percorso su 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 dei ruoli 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 le associazioni di ruoli non condizionali richiedano solo un criterio di autorizzazione della versione 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 che per le associazioni di ruoli incondizionate. Per ulteriori informazioni, vedi i requisiti della versione. Gcloud CLI aggiorna automaticamente il numero di versione del criterio di autorizzazione.

Quindi, imposta il criterio di autorizzazione aggiornato eseguendo il comando gcloud projects set-iam-policy:

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

Il criterio di autorizzazione aggiornato viene applicato, rimuovendo l'associazione di ruolo condizionale per fatima@example.com. L'associazione dei ruoli non scadrà più.

REST

Utilizza il pattern read-modify-write per rimuovere l'associazione condizionale del ruolo.

Prima di tutto, leggi il criterio di autorizzazione per il progetto:

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

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

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche come 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:project-owner@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": [
        "user:fatima@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 le associazioni di ruoli non condizionali richiedano solo un criterio di autorizzazione della versione 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 che per le associazioni di ruoli incondizionate. Per ulteriori informazioni, vedi i requisiti della versione.

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

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche come 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:project-owner@example.com"
        ]
      },
      {
        "role": "roles/bigquery.dataViewer",
        "members": [
          "user:fatima@example.com"
        ]
      }
    ]
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

La risposta contiene il criterio di autorizzazione aggiornato.


Passaggi successivi