Nega l'accesso alle risorse

Questa pagina spiega come negare l'accesso alle entità impedendo loro di utilizzare autorizzazioni specifiche di Identity and Access Management (IAM).

In IAM, impedisci l'accesso con i criteri di rifiuto. Ogni criterio di rifiuto è associato a un'organizzazione, una cartella o un progetto Google Cloud. Un criterio di negazione contiene regole di negazione, che identificano le entità ed elencano le autorizzazioni che le entità non possono utilizzare.

I criteri di negazione sono separati dai criteri di autorizzazione, noti anche come criteri IAM. Un criterio di autorizzazione fornisce l'accesso alle risorse concedendo ruoli IAM alle entità.

Puoi gestire i criteri di rifiuto con l'interfaccia a riga di comando di Google Cloud o l'API REST IAM.v2beta.

Prima di iniziare

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire i criteri di rifiuto, chiedi all'amministratore di concederti i seguenti ruoli IAM sull'organizzazione:

  • Per visualizzare i criteri di rifiuto: Revisore criteri di rifiuto (roles/iam.denyReviewer)
  • Per visualizzare, creare, aggiornare ed eliminare i criteri di rifiuto: Rifiuta Amministratore (roles/iam.denyAdmin)

Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestione dell'accesso.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per gestire i criteri di rifiuto. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

  • Per visualizzare i criteri di rifiuto:
    • iam.denypolicies.get
    • iam.denypolicies.list
  • Per creare, aggiornare ed eliminare i criteri di rifiuto:
    • iam.denypolicies.create
    • iam.denypolicies.delete
    • iam.denypolicies.get
    • iam.denypolicies.update

Potresti anche essere in grado di ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Identifica le autorizzazioni da rifiutare

Prima di creare un criterio di negazione, devi decidere quali autorizzazioni negare e a quali entità negare.

Puoi negare un sottoinsieme di tutte le autorizzazioni IAM. Per un elenco delle autorizzazioni che puoi negare, consulta le autorizzazioni supportate nei criteri di rifiuto.

I criteri di rifiuto vengono gestiti con l'API REST v2beta, che richiede un formato speciale per i nomi delle autorizzazioni. Ad esempio, l'autorizzazione per creare un ruolo personalizzato IAM è denominata come segue:

  • API v1: iam.roles.create
  • API v2beta: iam.googleapis.com/roles.create

Identificare il punto di collegamento

Ogni criterio di rifiuto è associato a un'organizzazione, a una cartella o a un progetto. Per lavorare con i criteri di rifiuto, è necessario un identificatore per la risorsa a cui è associato il criterio di negazione, chiamato punto di collegamento. Questo identificatore utilizza uno dei formati riportati nella seguente tabella:

Formato dei punti allegati
Organizzazione

cloudresourcemanager.googleapis.com/organizations/ORG_ID
Sostituisci ORG_ID con l'ID numerico dell'organizzazione. Per l'API REST, utilizza l'URL per codificare l'intero valore.

Esempio per l'interfaccia a riga di comando gcloud:
cloudresourcemanager.googleapis.com/organizations/123456789012

Esempio per l'API REST:
cloudresourcemanager.googleapis.com%2Forganizations%2F123456789012

Cartella

cloudresourcemanager.googleapis.com/folders/FOLDER_ID
Sostituisci FOLDER_ID con l'ID della cartella numerica. Per l'API REST, utilizza l'URL per codificare l'intero valore.

Esempio per l'interfaccia a riga di comando gcloud:
cloudresourcemanager.googleapis.com/folders/987654321098

Esempio per l'API REST:
cloudresourcemanager.googleapis.com%2Ffolders%2F987654321098

Progetto

cloudresourcemanager.googleapis.com/projects/PROJECT_ID
Sostituisci PROJECT_ID con l'ID progetto alfanumerico o numerico. Per l'API REST, utilizza l'URL per codificare l'intero valore.

Esempio per l'interfaccia a riga di comando gcloud:
cloudresourcemanager.googleapis.com/projects/my-project

Esempio per l'API REST:
cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project

Crea un criterio di negazione

Puoi aggiungere criteri di rifiuto a organizzazioni, cartelle e progetti. Ognuna di queste risorse può avere fino a 5 criteri di negazione.

I criteri di negazione contengono regole di negazione, che specificano quanto segue:

  • Le autorizzazioni da rifiutare.
  • Le entità a cui non sono concesse le autorizzazioni.
  • (Facoltativo) Entità che sono esenti dal rifiuto delle autorizzazioni.

    Ad esempio, puoi negare un'autorizzazione a un gruppo, ma escludere utenti specifici che appartengono a tale gruppo.

  • Facoltativo: un'espressione della condizione che specifica quando le entità non possono utilizzare le autorizzazioni in base ai tag della risorsa.

I criteri di rifiuto vengono ereditati dalla gerarchia delle risorse. Ad esempio, se neghi un'autorizzazione a livello di organizzazione, questa viene negata anche alle cartelle e ai progetti al suo interno e alle risorse specifiche del servizio all'interno di ciascun progetto.

I criteri di negazione sostituiscono i criteri di autorizzazione. Se a un'entità viene concesso un ruolo che contiene un'autorizzazione specifica, ma un criterio di negazione indica che l'entità non può utilizzare tale autorizzazione, l'entità non può utilizzare l'autorizzazione.

gcloud

Per creare un criterio di negazione per una risorsa, inizia creando un file JSON che contenga il criterio. Una norma di negazione utilizza il seguente formato:

{
  "displayName": "POLICY_NAME",
  "rules": [
    {
      "denyRule": DENY_RULE_1
    },
    {
      "denyRule": DENY_RULE_2
    },
    {
      "denyRule": DENY_RULE_N
    }
  ]
}

Specifica i valori seguenti:

  • POLICY_NAME: il nome visualizzato della norma di negazione.
  • DENY_RULE_1, DENY_RULE_2, ...DENY_RULE_N: le regole di negazione nel criterio. Ogni regola di negazione può contenere questi campi:

    Per esempi di regole di negazione, vedi Casi d'uso comuni.

Ad esempio, il seguente criterio di negazione contiene una regola di negazione, che nega un'autorizzazione per l'utente lucian@example.com:

{
  "displayName": "My deny policy.",
  "rules": [
    {
      "denyRule": {
        "deniedPrincipals": [
          "principal://goog/subject/lucian@example.com"
        ],
        "deniedPermissions": [
          "iam.googleapis.com/roles.create"
        ]
      }
    }
  ]
}

Successivamente, esegui il comando gcloud beta iam policies create:

gcloud beta iam policies create POLICY_ID \
    --attachment-point=ATTACHMENT_POINT \
    --kind=denypolicies \
    --policy-file=POLICY_FILE

Specifica i valori seguenti:

  • POLICY_ID: l'identificatore della norma di negazione.

  • ATTACHMENT_POINT: un identificatore per la risorsa a cui è associato il criterio di rifiuto. Per informazioni su come formattare questo valore, vedi Identificare il punto di allegato in questa pagina.

  • POLICY_FILE: il percorso del file JSON che contiene il criterio di negazione.

Per impostazione predefinita, se il comando ha esito positivo, non verrà stampato alcun output. Per stampare una risposta dettagliata, aggiungi il flag --format=json al comando.

Ad esempio, il seguente comando crea un criterio di rifiuto denominato my-deny-policy per il progetto my-project, utilizzando un file denominato policy.json:

gcloud beta iam policies create my-deny-policy \
    --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \
    --kind=denypolicies \
    --policy-file=policy.json

REST

Il metodo policies.createPolicy crea un criterio di negazione per una risorsa.

Prima di utilizzare qualsiasi dato della richiesta, apporta le seguenti sostituzioni:

  • ENCODED_ATTACHMENT_POINT: un identificatore codificato tramite URL per la risorsa a cui è associato il criterio di negazione. Per informazioni su come formattare questo valore, vedi Identificare il punto di allegato in questa pagina.

  • POLICY_ID: un identificatore per la norma di negazione.
  • POLICY_NAME: il nome visualizzato della norma di rifiuto.
  • DENY_RULE_1, DENY_RULE_2, ...DENY_RULE_N: le regole di negazione nel criterio. Ogni regola di negazione può contenere questi campi:

    Per esempi di regole di negazione, vedi Casi d'uso comuni.

URL e metodo HTTP:

POST https://iam.googleapis.com/v2beta/policies/ENCODED_ATTACHMENT_POINT/denypolicies?policyId=POLICY_ID

Corpo JSON della richiesta:

{
  "displayName": "POLICY_NAME",
  "rules": [
    {
      "denyRule": DENY_RULE_1
    },
    {
      "denyRule": DENY_RULE_2
    },

    {
      "denyRule": DENY_RULE_N
    }
  ]
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/89cb3e508bf1ff01",
  "metadata": {
    "@type": "type.googleapis.com/google.iam.v2beta.PolicyOperationMetadata",
    "createTime": "2021-09-28T19:06:12.455151Z"
  },
  "response": {
    "@type": "type.googleapis.com/google.iam.v2beta.Policy",
    "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy",
    "uid": "6665c437-a3b2-a018-6934-54dd16d3426e",
    "kind": "DenyPolicy",
    "displayName": "My deny policy.",
    "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=",
    "createTime": "2021-09-28T19:06:12.455151Z",
    "updateTime": "2021-09-28T22:26:21.968687Z"
    "rules": [
      {
        "denyRule": {
          "deniedPrincipals": [
            "principal://goog/subject/lucian@example.com"
          ],
          "deniedPermissions": [
            "iam.googleapis.com/roles.create"
          ]
        }
      }
    ]
  }
}

La risposta identifica un'operazione a lunga esecuzione. Puoi monitorare lo stato dell'operazione a lunga esecuzione per sapere quando viene completata. Per maggiori dettagli, consulta Verificare lo stato di un'operazione a lunga esecuzione in questa pagina.

Elenca criteri di rifiuto

Una risorsa può avere fino a 5 criteri di negazione. Puoi elencare tutti i criteri di rifiuto associati a una risorsa, quindi visualizzare ogni criterio di rifiuto per vedere le regole di negazione in ogni criterio.

gcloud

Per elencare i criteri di rifiuto per una risorsa, esegui il comando gcloud beta iam policies list:

gcloud beta iam policies list \
    --attachment-point=ATTACHMENT_POINT \
    --kind=denypolicies \
    --format=json

Specifica il valore seguente:

  • ATTACHMENT_POINT: un identificatore per la risorsa a cui è associato il criterio di rifiuto. Per informazioni su come formattare questo valore, vedi Identificare il punto di allegato in questa pagina.

Ad esempio, i seguenti elenchi di comandi negano i criteri collegati a un'organizzazione il cui ID numerico è 123456789012:

gcloud beta iam policies list \
    --attachment-point=cloudresourcemanager.googleapis.com/organizations/123456789012 \
    --kind=denypolicies \
    --format=json

REST

Il metodo policies.listPolicies elenca i criteri di rifiuto per una risorsa.

Prima di utilizzare qualsiasi dato della richiesta, apporta le seguenti sostituzioni:

  • ENCODED_ATTACHMENT_POINT: un identificatore codificato tramite URL per la risorsa a cui è associato il criterio di negazione. Per informazioni su come formattare questo valore, vedi Identificare il punto di allegato in questa pagina.

URL e metodo HTTP:

GET https://iam.googleapis.com/v2beta/policies/ENCODED_ATTACHMENT_POINT/denypolicies

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "policies": [
    {
      "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy",
      "uid": "6665c437-a3b2-a018-6934-54dd16d3426e",
      "kind": "DenyPolicy",
      "displayName": "My deny policy.",
      "createTime": "2021-09-28T19:06:12.455151Z",
      "updateTime": "2021-09-28T22:26:21.968687Z"
    },
    {
      "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy-2",
      "uid": "8465d710-ea20-0a08-d92c-b2a3ebf766ab",
      "kind": "DenyPolicy",
      "displayName": "My second deny policy.",
      "createTime": "2021-10-05T19:21:53.595455Z",
      "updateTime": "2021-10-05T19:21:53.595455Z"
    },
    {
      "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy-3",
      "uid": "ee9f7c2f-7e8c-b05c-d4e5-e03bfb2954e0",
      "kind": "DenyPolicy",
      "displayName": "My third deny policy.",
      "createTime": "2021-10-05T19:22:26.770543Z",
      "updateTime": "2021-10-05T19:22:26.770543Z"
    }
  ]
}

Visualizza un criterio di negazione

Puoi visualizzare un criterio di negazione per vedere le regole di negazione che contiene, comprese le autorizzazioni negate e le entità che non possono utilizzare tali autorizzazioni.

gcloud

Per ottenere il criterio di negazione per una risorsa, esegui il comando gcloud beta iam policies get:

gcloud beta iam policies get POLICY_ID \
    --attachment-point=ATTACHMENT_POINT \
    --kind=denypolicies \
    --format=json

Specifica i valori seguenti:

  • POLICY_ID: l'identificatore della norma di negazione.

  • ATTACHMENT_POINT: un identificatore per la risorsa a cui è associato il criterio di rifiuto. Per informazioni su come formattare questo valore, vedi Identificare il punto di allegato in questa pagina.

Ad esempio, il seguente comando recupera il criterio di rifiuto denominato my-deny-policy per il progetto my-project e lo salva in un file denominato policy.json:

gcloud beta iam policies get my-deny-policy \
    --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \
    --kind=denypolicies \
    --format=json \
    > ./policy.json

REST

Il metodo policies.get riceve un criterio di negazione per una risorsa.

Prima di utilizzare qualsiasi dato della richiesta, apporta le seguenti sostituzioni:

  • ENCODED_ATTACHMENT_POINT: un identificatore codificato tramite URL per la risorsa a cui è associato il criterio di negazione. Per informazioni su come formattare questo valore, vedi Identificare il punto di allegato in questa pagina.

  • POLICY_ID: un identificatore per la norma di negazione.

URL e metodo HTTP:

GET https://iam.googleapis.com/v2beta/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy",
  "uid": "6665c437-a3b2-a018-6934-54dd16d3426e",
  "kind": "DenyPolicy",
  "displayName": "My deny policy.",
  "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=",
  "createTime": "2021-10-05T19:22:26.770543Z",
  "updateTime": "2021-10-05T19:22:26.770543Z",
  "rules": [
    {
      "denyRule": {
        "deniedPrincipals": [
          "principal://goog/subject/lucian@example.com"
        ],
        "deniedPermissions": [
          "iam.googleapis.com/roles.create"
        ]
      }
    }
  ]
}

Aggiorna un criterio di rifiuto

Dopo aver creato un criterio di negazione, puoi aggiornare le regole di negazione che contiene, nonché il nome visualizzato.

Per aggiornare un criterio di negazione, utilizza il pattern read-Modify-Write:

  1. Leggi la versione corrente del criterio.
  2. Modifica le informazioni nel criterio in base alle tue esigenze.
  3. Scrivi la norma aggiornata.

Leggi il criterio di negazione

gcloud

Per ottenere il criterio di negazione per una risorsa, esegui il comando gcloud beta iam policies get:

gcloud beta iam policies get POLICY_ID \
    --attachment-point=ATTACHMENT_POINT \
    --kind=denypolicies \
    --format=json

Specifica i valori seguenti:

  • POLICY_ID: l'identificatore della norma di negazione.

  • ATTACHMENT_POINT: un identificatore per la risorsa a cui è associato il criterio di rifiuto. Per informazioni su come formattare questo valore, vedi Identificare il punto di allegato in questa pagina.

Ad esempio, il seguente comando recupera il criterio di rifiuto denominato my-deny-policy per il progetto my-project e lo salva in un file denominato policy.json:

gcloud beta iam policies get my-deny-policy \
    --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \
    --kind=denypolicies \
    --format=json \
    > ./policy.json

REST

Il metodo policies.get riceve un criterio di negazione per una risorsa.

Prima di utilizzare qualsiasi dato della richiesta, apporta le seguenti sostituzioni:

  • ENCODED_ATTACHMENT_POINT: un identificatore codificato tramite URL per la risorsa a cui è associato il criterio di negazione. Per informazioni su come formattare questo valore, vedi Identificare il punto di allegato in questa pagina.

  • POLICY_ID: un identificatore per la norma di negazione.

URL e metodo HTTP:

GET https://iam.googleapis.com/v2beta/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy",
  "uid": "6665c437-a3b2-a018-6934-54dd16d3426e",
  "kind": "DenyPolicy",
  "displayName": "My deny policy.",
  "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=",
  "createTime": "2021-10-05T19:22:26.770543Z",
  "updateTime": "2021-10-05T19:22:26.770543Z",
  "rules": [
    {
      "denyRule": {
        "deniedPrincipals": [
          "principal://goog/subject/lucian@example.com"
        ],
        "deniedPermissions": [
          "iam.googleapis.com/roles.create"
        ]
      }
    }
  ]
}

Modifica il criterio di negazione

Per modificare il criterio di negazione, devi apportare delle modifiche alla copia del criterio che hai precedentemente letto da IAM. Puoi aggiornare il nome visualizzato oppure aggiungere, modificare o rimuovere le regole di negazione. Le modifiche non hanno effetto finché non crei il criterio aggiornato.

Ad esempio, potresti aggiungere un'autorizzazione a una regola di negazione esistente:

{
  "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy",
  "uid": "6665c437-a3b2-a018-6934-54dd16d3426e",
  "kind": "DenyPolicy",
  "displayName": "My deny policy.",
  "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=",
  "createTime": "2021-10-05T19:22:26.770543Z",
  "updateTime": "2021-10-05T19:22:26.770543Z",
  "rules": [
    {
      "denyRule": {
        "deniedPrincipals": [
          "principal://goog/subject/lucian@example.com"
        ],
        "deniedPermissions": [
          "iam.googleapis.com/roles.create",
          "iam.googleapis.com/roles.delete"
        ]
      }
    }
  ]
}

Scrivi il criterio di rifiuto aggiornato

Dopo aver modificato il criterio di rifiuto localmente, devi scrivere il criterio di negazione aggiornato in IAM.

Ogni criterio di negazione contiene un campo etag che identifica la versione del criterio. Il valore etag cambia ogni volta che aggiorni il criterio. Quando scrivi il criterio aggiornato, etag nella richiesta deve corrispondere all'elemento etag corrente archiviato in IAM. Se i valori non corrispondono, la richiesta ha esito negativo. Questa funzionalità aiuta a impedire che le modifiche simultanee si sovrappongano.

gcloud

Per aggiornare il criterio di negazione per una risorsa, esegui il comando gcloud beta iam policies update:

gcloud beta iam policies update POLICY_ID \
    --attachment-point=ATTACHMENT_POINT \
    --kind=denypolicies \
    --policy-file=POLICY_FILE

Specifica i valori seguenti:

  • POLICY_ID: l'identificatore della norma di negazione.

  • ATTACHMENT_POINT: un identificatore per la risorsa a cui è associato il criterio di rifiuto. Per informazioni su come formattare questo valore, vedi Identificare il punto di allegato in questa pagina.

  • POLICY_FILE: il percorso del file JSON che contiene il criterio di negazione.

Per impostazione predefinita, se il comando ha esito positivo, non verrà stampato alcun output. Per stampare una risposta dettagliata, aggiungi il flag --format=json al comando.

Ad esempio, il seguente comando aggiorna un criterio di rifiuto denominato my-deny-policy per il progetto my-project, utilizzando un file denominato policy.json:

gcloud beta iam policies update my-deny-policy \
    --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \
    --kind=denypolicies \
    --policy-file=policy.json

REST

Il metodo policies.update aggiorna un criterio di negazione.

Prima di utilizzare qualsiasi dato della richiesta, apporta le seguenti sostituzioni:

  • ENCODED_ATTACHMENT_POINT: un identificatore codificato tramite URL per la risorsa a cui è associato il criterio di negazione. Per informazioni su come formattare questo valore, vedi Identificare il punto di allegato in questa pagina.

  • POLICY_ID: un identificatore per la norma di negazione.
  • POLICY: le norme di negazione aggiornate.

    Ad esempio, per aggiungere un'autorizzazione al criterio mostrato nel passaggio precedente, sostituisci POLICY con il seguente:

    {
      "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy",
      "uid": "6665c437-a3b2-a018-6934-54dd16d3426e",
      "kind": "DenyPolicy",
      "displayName": "My deny policy.",
      "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=",
      "createTime": "2021-10-05T19:22:26.770543Z",
      "updateTime": "2021-10-05T19:22:26.770543Z",
      "rules": [
        {
          "denyRule": {
            "deniedPrincipals": [
              "principal://goog/subject/lucian@example.com"
            ],
            "deniedPermissions": [
              "iam.googleapis.com/roles.create",
              "iam.googleapis.com/roles.delete"
            ]
          }
        }
      ]
    }

URL e metodo HTTP:

PUT https://iam.googleapis.com/v2beta/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID

Corpo JSON della richiesta:

POLICY

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/8b2d0ab2daf1ff01",
  "metadata": {
    "@type": "type.googleapis.com/google.iam.v2alpha.PolicyOperationMetadata",
    "createTime": "2021-10-05T22:26:21.968687Z"
  },
  "response": {
    "@type": "type.googleapis.com/google.iam.v2alpha.Policy",
    "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy",
    "uid": "6665c437-a3b2-a018-6934-54dd16d3426e",
    "kind": "DenyPolicy",
    "displayName": "My deny policy.",
    "etag": "MTgxNTIxNDE3NTYxNjQxODYxMTI=",
    "createTime": "2021-10-05T19:22:26.770543Z",
    "updateTime": "2021-10-05T22:26:21.968687Z",
    "rules": [
      {
        "denyRule": {
          "deniedPrincipals": [
            "principal://goog/subject/lucian@example.com"
          ],
          "deniedPermissions": [
            "iam.googleapis.com/roles.create",
            "iam.googleapis.com/roles.delete"
          ]
        }
      }
    ]
  }
}

La risposta identifica un'operazione a lunga esecuzione. Puoi monitorare lo stato dell'operazione a lunga esecuzione per sapere quando viene completata. Per maggiori dettagli, consulta Verificare lo stato di un'operazione a lunga esecuzione in questa pagina.

Elimina un criterio di negazione

Se non vuoi più applicare le regole in un criterio di negazione, puoi eliminare il criterio di negazione.

Facoltativamente, puoi specificare il etag per la versione del criterio che stai eliminando. Se specifichi l'elemento etag, deve corrispondere all'elemento etag memorizzato da IAM; se i valori non corrispondono, la richiesta non va a buon fine. Puoi utilizzare questa funzionalità per assicurarti di eliminare il criterio previsto, anziché una versione aggiornata del criterio.

Se ometti il etag dalla richiesta, IAM elimina il criterio in modo incondizionato.

gcloud

Per eliminare un criterio di negazione da una risorsa, esegui il comando gcloud beta iam policies delete:

gcloud beta iam policies delete POLICY_ID \
    --attachment-point=ATTACHMENT_POINT \
    --kind=denypolicies

Specifica i valori seguenti:

  • POLICY_ID: l'identificatore della norma di negazione.

  • ATTACHMENT_POINT: un identificatore per la risorsa a cui è associato il criterio di rifiuto. Per informazioni su come formattare questo valore, vedi Identificare il punto di allegato in questa pagina.

Facoltativamente, puoi aggiungere il flag --etag=ETAG. Sostituisci ETAG con il valore etag attuale del criterio di negazione.

Per impostazione predefinita, se il comando ha esito positivo, non verrà stampato alcun output. Per stampare una risposta dettagliata, aggiungi il flag --format=json al comando.

Ad esempio, il seguente comando elimina una norma di negazione denominata my-deny-policy dal progetto my-project:

gcloud beta iam policies delete my-deny-policy \
    --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \
    --kind=denypolicies

REST

Il metodo policies.delete elimina un criterio di negazione da una risorsa.

Prima di utilizzare qualsiasi dato della richiesta, apporta le seguenti sostituzioni:

  • ENCODED_ATTACHMENT_POINT: un identificatore codificato tramite URL per la risorsa a cui è associato il criterio di negazione. Per informazioni su come formattare questo valore, vedi Identificare il punto di allegato in questa pagina.

  • POLICY_ID: un identificatore per la norma di negazione.
  • ETAG: facoltativo. Identificatore della versione del criterio. Se presente, questo valore deve corrispondere al valore etag attuale per il criterio.

URL e metodo HTTP:

DELETE https://iam.googleapis.com/v2beta/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID?etag=ETAG

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/8223fe308bf1ff01",
  "metadata": {
    "@type": "type.googleapis.com/google.iam.v2beta.PolicyOperationMetadata",
    "createTime": "2021-10-05T19:45:00.133311Z"
  },
  "response": {
    "@type": "type.googleapis.com/google.iam.v2beta.Policy",
    "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy",
    "kind": "DenyPolicy",
    "displayName": "My deny policy.",
    "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=",
    "createTime": "2021-09-28T19:06:12.455151Z",
    "updateTime": "2021-10-05T19:45:00.133311Z",
    "deleteTime": "2021-10-05T19:45:00.133311Z",
    "rules": [
      {
        "denyRule": {
          "deniedPrincipals": [
            "principal://goog/subject/lucian@example.com"
          ],
          "deniedPermissions": [
            "iam.googleapis.com/roles.create"
          ]
        }
      }
    ]
  }
}

La risposta identifica un'operazione a lunga esecuzione. Puoi monitorare lo stato dell'operazione a lunga esecuzione per sapere quando viene completata. Per maggiori dettagli, consulta Verificare lo stato di un'operazione a lunga esecuzione in questa pagina.

Controllare lo stato di un'operazione a lunga esecuzione

Quando utilizzi l'API REST, qualsiasi metodo che modifica un criterio di negazione restituisce un'operazione a lunga esecuzione (LRO). L'operazione a lunga esecuzione monitora lo stato della richiesta e indica se la modifica al criterio è stata completata. Puoi eseguire un sondaggio per l'operazione a lunga esecuzione per monitorarne lo stato.

Per eseguire il polling di un'operazione a lunga esecuzione, inizia recuperando il relativo stato attuale:

REST

Il metodo policies.operations.get restituisce lo stato di un'operazione a lunga esecuzione.

Prima di utilizzare qualsiasi dato della richiesta, apporta le seguenti sostituzioni:

  • ENCODED_ATTACHMENT_POINT: un identificatore codificato tramite URL per la risorsa a cui è associato il criterio di negazione. Per informazioni su come formattare questo valore, vedi Identificare il punto di allegato in questa pagina.

  • OPERATION_ID: l'identificatore dell'operazione. Riceverai questo identificatore nella risposta alla richiesta originale come parte del nome dell'operazione. Utilizza il valore esadecimale alla fine del nome dell'operazione. Ad esempio, 89cb3e508bf1ff01.

URL e metodo HTTP:

GET https://iam.googleapis.com/v2beta/policies/ENCODED_ATTACHMENT_POINT/operations/OPERATION_ID

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/89cb3e508bf1ff01",
  "done": true
}

Se il campo done dell'operazione non è presente, continua a monitorarne lo stato ricevendo ripetutamente l'operazione. Utilizza il backoff esponenziale troncato per introdurre un ritardo tra ciascuna richiesta. Se il campo done è impostato su true, l'operazione è completata e puoi interromperla.

Passaggi successivi