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 si interrompe 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 condizionali di ruoli, chiedi all'amministratore di concederti 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 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 del 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 dell'organizzazione
    • resourcemanager.organizations.setIamPolicy dell'organizzazione

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

Concedere 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: la sicurezza delle informazioni dell'azienda ExampleCo sottolineano che nessun dipendente dovrebbe avere accesso indefinito alle risorse per i progetti di produzione. In precedenza, gli amministratori impostavano manualmente delle associazioni di ruoli IAM per soddisfare le esigenze un'emergenza e alle esigenze aziendali. 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. Dall'elenco delle entità, individua quella che ti interessa e fai clic sulla Pulsante .

  3. Nel riquadro Modifica autorizzazioni, individua il ruolo per cui vuoi configurare una condizione. Quindi, 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 di testo inserisci manualmente un'espressione utilizzando Sintassi CEL.

    Generatore di condizioni:

    1. Dal menu a discesa Tipo di condizione, seleziona In scadenza Accesso.
    2. Dal menu a discesa Operatore, seleziona per.
    3. Nel menu a discesa Ora, fai clic sull'icona 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 clic su Salva. dal 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 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 clic su Salva. dal riquadro Modifica autorizzazioni per aggiornare il criterio di autorizzazione.

gcloud

I criteri di autorizzazione vengono impostati utilizzando read-modify-write pattern.

Esegui il comando gcloud projects get-iam-policy per ottenere il criterio di autorizzazione corrente per il progetto. Nel seguente Ad esempio, 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 con scadenza, aggiungi la seguente expression condizione evidenziata (sostituendo il timestamp con il tuo). La gcloud CLI aggiorna la versione automaticamente:

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

La nuova norma di autorizzazione viene applicata e la concessione del ruolo di travis@example.com scade all'ora specificata.

REST

Usare lo strumento read-modify-write per consentire l'accesso fino a un momento specifico.

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 utilizzare restituito. Le richieste devono specificare la versione del criterio più recente, ovvero la versione del criterio 3. Consulta la sezione Specificare una versione del criterio quando si riceve un criterio per maggiori dettagli.

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'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: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:

L'API Resource Manager projects.setIamPolicy 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: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

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: l'azienda ExampleCo dispone di un controllo di qualità progetto. 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. ExampleCo può utilizzare condizioni di data/ora per assicurarsi che i dipendenti possano accedere solo Google Cloud 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. Dall'elenco delle entità, individua quella che ti interessa e fai clic sulla Pulsante .

  3. Nel riquadro Modifica autorizzazioni, individua il ruolo per cui vuoi configurare una condizione. Quindi, 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 la colonna Condizione Builder o l'editor condizioni. La condizione Builder offre un'interfaccia interattiva per selezionare il tipo di condizione, l'operatore e altri dettagli applicabili sulla un'espressione di base. L'editor delle condizioni fornisce un'interfaccia di testo inserisci manualmente un'espressione utilizzando Sintassi CEL.

    Generatore di condizioni:

    1. Fai clic su Aggiungi.
    2. Dal menu a discesa Tipo di condizione, seleziona Ora. Programmazione Giorno della settimana.
    3. Dal 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 l'ora che preferisci zona attiva nell'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. Programmazione 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 l'operatore And sia selezionato a sinistra, 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. Dal menu a discesa Tipo di condizione, seleziona Ora. Programmazione Ora del giorno.
      5. Dal menu a discesa Operatore, seleziona Prima o Su. Nota che, per questa selezione, "on" eseguirà logicamente la valutazione 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. Dal menu a discesa Scegli un fuso orario, seleziona l'ora che preferisci zona attiva nell'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 dal lunedì al venerdì, dalle 9:00 alle 17:00.

      Editor condizioni:

      1. Fai clic sulla scheda Editor condizioni e inserisci quanto segue (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 clic su Salva. dal riquadro Modifica autorizzazioni per aggiornare il criterio di autorizzazione.

gcloud

I criteri di autorizzazione vengono impostati utilizzando read-modify-write pattern.

Esegui il comando gcloud projects get-iam-policy per ottenere il criterio di autorizzazione corrente per il progetto. Nel seguente Ad esempio, 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 quanto segue espressione di condizione evidenziata (sostituendo il timestamp con la tua). L'interfaccia a riga di comando gcloud 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

Usare lo strumento read-modify-write per consentire l'accesso programmato.

Prima di tutto, 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 utilizzare restituito. 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: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 di 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, 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: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