Configura l'accesso temporaneo

Questo argomento descrive come impostare l'accesso temporaneo (in scadenza) alle risorse Google Cloud utilizzando le associazioni di ruoli condizionali nei criteri di autorizzazione. Utilizzando gli attributi di 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 si arresta in un orario specifico o su base pianificata e ricorrente.

Prima di iniziare

  • Leggi la panoramica delle condizioni per comprendere le nozioni di base sulle associazioni di ruoli condizionali IAM (Identity and Access Management).
  • Esamina gli attributi di data/ora che possono essere utilizzati in un'espressione della condizione. Gli attributi di data e 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: Amministratore IAM progetto (roles/resourcemanager.projectIamAdmin) sul progetto
  • Per gestire l'accesso alle cartelle: Amministratore cartelle (roles/resourcemanager.folderAdmin) sulla cartella
  • Per gestire l'accesso a progetti, cartelle e organizzazioni: Amministratore organizzazione (roles/resourcemanager.organizationAdmin) nell'organizzazione
  • Per gestire l'accesso a quasi tutte le risorse Google Cloud: Amministratore sicurezza (roles/iam.securityAdmin) sul progetto, sulla cartella o sull'organizzazione di cui vuoi gestire l'accesso alle risorse

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

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

Autorizzazioni obbligatorie

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

  • 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 nella cartella
    • resourcemanager.folders.setIamPolicy nella cartella
  • Per gestire l'accesso alle organizzazioni:
    • resourcemanager.organizations.getIamPolicy sull'organizzazione
    • resourcemanager.organizations.setIamPolicy sull'organizzazione

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

Concedi l'accesso temporaneo

È possibile utilizzare un'associazione di ruoli condizionale per concedere a una risorsa l'accesso limitato nel tempo, in modo che un utente non possa più accedere alla risorsa dopo la data e l'ora di scadenza specificate.

Considera il seguente scenario: le regole sulla 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 ed eliminavano manualmente le associazioni di ruoli IAM per soddisfare le esigenze di emergenza degli ingegneri. Per ridurre il sovraccarico amministrativo, ExampleCo può configurare un'associazione di ruolo condizionale con una condizione di data/ora per impostare una data di fine per l'associazione.

Per concedere l'accesso espandibile 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 quella che ti interessa e fai clic sul pulsante .

  3. Nel riquadro Modifica autorizzazioni, individua il ruolo 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 il Builder 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 selezionare una data e un intervallo di tempo.
    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("2020-07-01T00: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 > filepath

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
}

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_July_1_2020",
        "description": "Expires on July 1, 2020",
        "expression":
          "request.time < timestamp('2020-07-01T00: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 filepath

Il nuovo criterio di autorizzazione viene applicato e la concessione del ruolo di travis@example.com scadrà all'ora specificata.

REST

Utilizza il pattern lettura-modifica-scrittura per consentire l'accesso fino a un orario 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"
      ]
    }
  ]
}

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:

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

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.


Gestisci l'accesso in base a giorni/ore della settimana

Puoi utilizzare un'associazione condizionale di ruoli per concedere l'accesso a una risorsa solo in determinati giorni o ore della settimana su base ricorrente.

Considera lo scenario seguente: l'azienda ExampleCo ha un progetto di controllo qualità. L'intero team addetto al QA deve disporre di ruoli con privilegi elevati per completare il proprio lavoro. ExampleCo deve rispettare le leggi sul lavoro nel proprio paese, che limitano l'orario di lavoro al lunedì e il venerdì dalle 9:00 alle 17:00. ExampleCo può utilizzare condizioni di data/ora per garantire che i suoi dipendenti possano accedere a Google Cloud solo durante la settimana lavorativa e durante l'orario di lavoro pianificato.

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 quella che ti interessa e fai clic sul pulsante .

  3. Nel riquadro Modifica autorizzazioni, individua il ruolo 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 il Builder 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. Fai clic su Aggiungi.
    2. Nell'elenco a discesa Tipo di condizione, seleziona Ora Programmazione Giorno della settimana.
    3. Nel menu a discesa Operatore, seleziona Dopo o On.
    4. Dall'elenco a discesa Giorno della settimana, seleziona Lunedì.
    5. Nel menu a discesa Scegli un fuso orario, seleziona il fuso orario desiderato dall'elenco.
    6. Assicurati che l'operatore And sia selezionato sulla sinistra, quindi fai di nuovo clic su Aggiungi.
    7. Nell'elenco a discesa Tipo di condizione, seleziona Ora Programmazione Giorno della settimana.
    8. Dal menu a discesa Operatore, seleziona Prima o On.
    9. Nell'elenco a discesa Giorno della settimana, seleziona Venerdì.
    10. Nel menu a discesa Scegli un fuso orario, seleziona il fuso orario desiderato dall'elenco.

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

    1. Assicurati che l'operatore And sia selezionato sulla sinistra, quindi fai di nuovo clic su Aggiungi.
    2. Nell'elenco a discesa Tipo di condizione, seleziona Ora Programmazione Ora del giorno.

      1. Nel menu a discesa Operatore, seleziona Dopo o On.
      2. Dal menu a discesa Ora del giorno, seleziona 9 (09:00).
      3. Nel menu a discesa Scegli un fuso orario, seleziona il fuso orario desiderato dall'elenco.
      4. Nell'elenco a discesa Tipo di condizione, seleziona Ora Programmazione Ora del giorno.
      5. Dal menu a discesa Operatore, seleziona Prima o On. Tieni presente che, per questa selezione, "on" valuterà logicamente tutti gli orari compresi tra le 17:00 (17:00) e le 17:59 (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. Nel menu a discesa Scegli un fuso orario, seleziona il fuso orario desiderato 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.

      Hai configurato l'accesso da lunedì a venerdì dalle 9:00 alle 17:00.

      Editor condizioni:

      1. Fai clic sulla scheda Editor condizioni e inserisci la seguente espressione (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 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. 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 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 > filepath

Viene scaricato il formato JSON del criterio di autorizzazione:

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

Per configurare il criterio di autorizzazione con accesso pianificato, 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:rita@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
}

Quindi, 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 di rita@example.com consentirà l'accesso tra i giorni e gli orari specificati.

REST

Utilizza il pattern lettura-modifica-scrittura per consentire l'accesso pianificato.

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