Configura l'accesso temporaneo

Questo argomento descrive come impostare l'accesso temporaneo (con scadenza) alle risorse Google Cloud utilizzando le associazioni di ruoli condizionali nei criteri di autorizzazione. Utilizzando gli attributi data/ora, puoi applicare controlli basati sul tempo quando accedi a una determinata risorsa. Ad esempio, puoi concedere l'accesso temporaneo a un progetto che inizia e termina a un'ora specificata o su base pianificata e ricorrente.

Prima di iniziare

  • Leggi la Panoramica delle condizioni per comprendere le nozioni di base delle associazioni di ruoli condizionali di Identity and Access Management (IAM).
  • Esamina gli attributi data/ora che possono essere utilizzati in un'espressione di condizione. Gli attributi data/ora sono riconosciuti da tutti i servizi Google Cloud.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire le associazioni di ruoli condizionali, chiedi all'amministratore di concederti i seguenti ruoli IAM:

  • Per gestire l'accesso ai progetti: Project IAM Admin (roles/resourcemanager.projectIamAdmin) nel progetto
  • Per gestire l'accesso alle cartelle: Amministratore cartella (roles/resourcemanager.folderAdmin) nella cartella
  • Per gestire l'accesso a progetti, cartelle e organizzazioni: Amministratore dell'organizzazione (roles/resourcemanager.organizationAdmin) nell'organizzazione
  • Per gestire l'accesso a quasi tutte le risorse Google Cloud: Amministratore della sicurezza (roles/iam.securityAdmin) nel progetto, nella cartella o nell'organizzazione di cui vuoi gestire l'accesso alle risorse

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per gestire le associazioni di ruoli condizionali. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per gestire le associazioni di ruoli condizionali sono necessarie le seguenti autorizzazioni:

  • Per gestire l'accesso ai progetti:
    • resourcemanager.projects.getIamPolicy sul progetto
    • resourcemanager.projects.setIamPolicy sul progetto
  • Per gestire l'accesso alle cartelle:
    • resourcemanager.folders.getIamPolicy sulla cartella
    • resourcemanager.folders.setIamPolicy sulla cartella
  • Per gestire l'accesso alle organizzazioni:
    • resourcemanager.organizations.getIamPolicy sull'organizzazione
    • resourcemanager.organizations.setIamPolicy sull'organizzazione

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Concedi l'accesso temporaneo

Un'associazione di ruoli condizionale può essere utilizzata per concedere l'accesso a una risorsa in un determinato periodo di tempo, garantendo che un utente non possa più accedere alla risorsa dopo la data e l'ora di scadenza specificate.

Considera il seguente scenario: le regole di sicurezza delle informazioni dell'azienda ExampleCo sottolineano che nessun dipendente deve avere accesso indefinito alle risorse dei progetti di produzione. In precedenza, gli amministratori impostavano e cancellavano manualmente le associazioni dei ruoli IAM per soddisfare le esigenze di emergenza degli ingegneri. Per ridurre il sovraccarico amministrativo, la società ExampleCo può invece configurare un'associazione di ruoli condizionale con una condizione di data/ora per impostare una data di fine per l'associazione.

Per concedere l'accesso con scadenza a una risorsa di progetto:

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, facoltativamente, una descrizione 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 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. 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 un intervallo di date e ore.
    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 delle condizioni e inserisci la seguente expression (sostituendo il timestamp con il tuo):

      request.time < timestamp("2020-07-01T00: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. 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 Consenti vengono impostati utilizzando il pattern di 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 su disco.

Comando:

gcloud projects get-iam-policy project-id --format=json > filepath

Viene scaricato il formato JSON del criterio di autorizzazione:

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

Per configurare il criterio di autorizzazione con accesso con scadenza, aggiungi la seguente expressione di condizione evidenziata (sostituendo il timestamp con il tuo). Gcloud CLI aggiorna automaticamente la versione:

{
  "bindings": [
    {
      "members": [
        "user:my-user@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "group:my-group@example.com"
      ],
      "role": "roles/iam.securityReviewer",
      "condition": {
        "title": "Expires_July_1_2020",
        "description": "Expires on July 1, 2020",
        "expression":
          "request.time < timestamp('2020-07-01T00:00:00.000Z')"
      }
    }
  ],
  "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 filepath

Il nuovo criterio di autorizzazione viene applicato e la concessione del ruolo del gruppo scadrà 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 di una norma.

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

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:

{
  "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')"
      }
    }
  ]
}

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.


Gestire l'accesso in base ai giorni/alle ore della settimana

Un'associazione di ruoli condizionale può essere utilizzata per concedere l'accesso a una risorsa solo in determinati giorni o ore della settimana su base ricorrente.

Considera il seguente scenario: la società ExampleCo ha un progetto di controllo qualità. L'intero team di QA deve disporre di ruoli con privilegi elevati per svolgere il proprio lavoro. La ExampleCo deve rispettare le leggi sul lavoro vigenti nella sua località, che limitano l'orario di lavoro dal lunedì al venerdì dalle 9:00 alle 17:00. La ExampleCo può utilizzare condizioni di data/ora per assicurarsi che i dipendenti possano accedere a Google Cloud solo durante la settimana lavorativa e durante l'orario di lavoro programmato.

Per concedere l'accesso a una risorsa di progetto solo per determinati giorni o ore della settimana su base ricorrente:

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 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. Fai clic su Aggiungi.
    2. Nel menu a discesa Tipo di condizione, seleziona Ora Pianificazione Giorno della settimana.
    3. Nel menu a discesa Operatore, seleziona Dopo o On.
    4. Dal menu a discesa Giorno della settimana, seleziona Lunedì.
    5. Dal menu a discesa Scegli un fuso orario, seleziona il fuso orario che preferisci dall'elenco.
    6. Assicurati che a sinistra sia selezionato l'operatore E, quindi fai di nuovo clic su Aggiungi.
    7. Dal menu a discesa Tipo di condizione, seleziona Ora Pianificazione Giorno della settimana.
    8. Nel menu a discesa Operatore, seleziona Prima o In data.
    9. Dal menu a discesa Giorno della settimana, seleziona Venerdì.
    10. Dal menu a discesa Scegli un fuso orario, seleziona il fuso orario che preferisci dall'elenco.

    A questo punto, hai configurato l'accesso solo dal lunedì al venerdì. Ora configurerai l'accesso dalle 09:00 alle 17:00.

    1. Assicurati che a sinistra sia selezionato l'operatore E, quindi fai di nuovo clic su Aggiungi.
    2. Nel menu a discesa Tipo di condizione, seleziona Ora Pianificazione Ora del giorno.

      1. Nel menu a discesa Operatore, seleziona Dopo o On.
      2. Dal menu a discesa Ora del giorno, seleziona 9 (9:00).
      3. Dal menu a discesa Scegli un fuso orario, seleziona il fuso orario che preferisci dall'elenco.
      4. Nel menu a discesa Tipo di condizione, seleziona Ora Pianificazione Ora del giorno.
      5. Nel menu a discesa Operatore, seleziona Prima o In data. Tieni presente che per questa selezione, "on" verrà valutato logicamente per tutte le ore tra le 17:00 e le 17:59. Per impostare la scadenza dell'accesso alle 16:59, assicurati che l'ora sia impostata su 16 anziché 17.
      6. Dal menu a discesa Ora del giorno, seleziona 17 (17:00).
      7. Dal menu a discesa Scegli un fuso orario, seleziona il fuso orario che preferisci dall'elenco.
      8. Fai clic su Salva per applicare la condizione.
      9. Una volta chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva nel riquadro Modifica autorizzazioni per aggiornare il criterio di autorizzazione.

      Ora hai configurato l'accesso dal lunedì al venerdì dalle 09:00 alle 17:00.

      Editor condizioni:

      1. Fai clic sulla scheda Editor delle condizioni e inserisci la seguente expression (sostituendo i valori segnaposto con i tuoi):

        request.time.getHours("Europe/Berlin") >= 9 &&
        request.time.getHours("Europe/Berlin") <= 17 &&
        request.time.getDayOfWeek("Europe/Berlin") >= 1 &&
        request.time.getDayOfWeek("Europe/Berlin") <= 5
        
      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 il criterio di autorizzazione.

gcloud

I criteri Consenti vengono impostati utilizzando il pattern di 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 su disco.

Comando:

gcloud projects get-iam-policy project-id --format=json > filepath

Viene scaricato il formato JSON del criterio di autorizzazione:

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

Per configurare il criterio di autorizzazione con accesso pianificato, aggiungi la seguente expression condizione evidenziata (sostituendo il timestamp con il tuo). Gcloud CLI aggiorna automaticamente la versione:

{
  "bindings": [
    {
      "members": [
        "user:my-user@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "group:my-group@example.com"
      ],
      "role": "roles/bigquery.dataViewer",
      "condition": {
        "title": "Business_hours",
        "description": "Business hours Monday-Friday",
        "expression": "request.time.getHours('Europe/Berlin') >= 9 && request.time.getHours('Europe/Berlin') <= 17 && request.time.getDayOfWeek('Europe/Berlin') >= 1 && request.time.getDayOfWeek('Europe/Berlin') <= 5"
      }
    }
  ],
  "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 filepath

Il nuovo criterio di autorizzazione viene applicato e la concessione del ruolo del gruppo consentirà l'accesso tra i giorni e gli orari specificati.

REST

Utilizza il pattern di lettura, modifica e scrittura per consentire l'accesso pianificato.

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/bigquery.dataViewer",
      "members": [
        "group:my-group@example.com"
      ]
    }
  ]
}

Successivamente, modifica il criterio di autorizzazione per consentire l'accesso pianificato.

Aggiungi la seguente espressione della condizione evidenziata (sostituendo il timestamp con il tuo). Assicurati di aver aggiornato il valore version in 3:

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:my-user@example.com"
      ]
    },
    {
      "role": "roles/bigquery.dataViewer",
      "members": [
        "group:my-group@example.com"
      ],
      "condition": {
        "title": "Business_hours",
        "description": "Business hours Monday-Friday",
        "expression":
          "request.time.getHours('Europe/Berlin') >= 9 &&
          request.time.getHours('Europe/Berlin') <= 17 &&
          request.time.getDayOfWeek('Europe/Berlin') >= 1 &&
          request.time.getDayOfWeek('Europe/Berlin') <= 5"
      }
    }
  ]
}

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"
        ],
        "condition": {
          "title": "Business_hours",
          "description": "Business hours Monday-Friday",
          "expression": "request.time.getHours('Europe/Berlin') >= 9 && request.time.getHours('Europe/Berlin') <= 17 && request.time.getDayOfWeek('Europe/Berlin') >= 1 && request.time.getDayOfWeek('Europe/Berlin') <= 5"
        }
      }
    ]
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

La risposta contiene il criterio di autorizzazione aggiornato.


Passaggi successivi