Controllare l'eliminazione delle versioni delle chiavi

Google Cloud offre due vincoli di policy dell'organizzazione per impostare la policy di distruzione delle versioni delle chiavi in un'organizzazione:

  • constraints/cloudkms.minimumDestroyScheduledDuration viene utilizzato per impostare una durata minima per lo stato pianificata per l'eliminazione per le nuove chiavi all'interno dell'organizzazione.
  • constraints/cloudkms.disableBeforeDestroy viene utilizzato per richiedere che una versione della chiave sia stata disattivata prima di poter essere pianificata per l'eliminazione.

Prima di iniziare

Le istruzioni riportate in questa pagina presuppongono che tu abbia familiarità con l'utilizzo dei vincoli e che tu disponga delle risorse e dei ruoli richiesti.

Risorse richieste

Prima di poter completare i passaggi descritti in questa pagina, devi disporre delle seguenti risorse:

  • Un'organizzazione.
  • (Facoltativo) Una risorsa progetto o cartella all'interno della tua organizzazione.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire le policy dell'organizzazione, chiedi all'amministratore di concederti il ruolo IAM Amministratore delle policy dell'organizzazione (roles/orgpolicy.policyAdmin) sull'organizzazione. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per gestire le policy dell'organizzazione. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per gestire le policy dell'organizzazione sono necessarie le seguenti autorizzazioni:

  • orgpolicy.constraints.list
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set

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

Richiedere una durata minima pianificata per l'eliminazione

Il vincolo Durata pianificata minima dell'eliminazione per chiave (constraints/cloudkms.minimumDestroyScheduledDuration) viene utilizzato per impostare una durata minima per lo stato pianificata per l'eliminazione per le nuove chiavi. Questo vincolo sostituisce la durata minima pianificata per l'eliminazione a livello di progetto, cartella o organizzazione. Questo vincolo riduce la probabilità di eliminare accidentalmente una chiave ancora necessaria. Puoi impostare questo vincolo su un valore più alto per assicurarti di avere il tempo di impedire l'eliminazione della chiave prima che diventi irreversibile.

Utilizza valori più alti per questo vincolo quando l'eliminazione indesiderata delle chiavi sarebbe più dannosa, ad esempio per i dati di produzione soggetti a requisiti di conservazione dei dati. Utilizza valori più bassi per questo vincolo quando l'eliminazione indesiderata delle chiavi sarebbe meno dannosa, ad esempio per gli ambienti di sviluppo o test. Puoi anche utilizzare valori più bassi per consentire la distruzione crittografica tempestiva. Tuttavia, come valore minimo, questo vincolo non può garantire che le nuove chiavi vengano create con durate pianificate per l'eliminazione basse.

Per richiedere una durata minima pianificata per l'eliminazione:

  1. Ottieni la policy corrente sulla risorsa dell'organizzazione utilizzando il comando describe. Questo comando restituisce la policy applicata direttamente a questa risorsa:

    gcloud org-policies describe \
      constraints/cloudkms.minimumDestroyScheduledDuration \
      --organization=ORGANIZATION_ID
    

    Sostituisci ORGANIZATION_ID con l'identificatore univoco della risorsa dell'organizzazione. L'ID organizzazione è formattato come numeri decimali e non può avere zeri iniziali.

    Puoi anche visualizzare la policy dell'organizzazione per una cartella o un progetto con i flag --folder o --project e, rispettivamente, l'ID cartella o l'ID progetto.

    La risposta restituisce la policy dell'organizzazione corrente, se esiste. L'output è simile al seguente:

    name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration
    spec:
      etag: COTP+KYGELiCmsoB
      inheritFromParent: true
      rules:
      - values:
          allowedValues:
          - in:7d
      updateTime: '2023-08-17T14:00:04.424051Z'
    

    Se non è impostata una policy, il comando describe restituisce un errore NOT_FOUND:

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. Imposta la policy sull'organizzazione utilizzando il comando set-policy. Questo comando sovrascrive qualsiasi policy attualmente collegata alla risorsa.

    1. Crea un file temporaneo /tmp/policy.yaml per archiviare la policy:

      name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration
      spec:
        rules:
        - values:
            allowedValues:
            - in:MINIMUM_DURATION
      

      Sostituisci quanto segue:

      • ORGANIZATION_ID: l'ID numerico della tua organizzazione.
      • MINIMUM_DURATION: la durata minima dello stato pianificata per l'eliminazione per le chiavi in questa organizzazione, in giorni. Deve essere uno dei seguenti valori: 7d, 15d, 30d, 60d, 90d o 120d.
    2. Esegui il comando set-policy:

      gcloud org-policies set-policy /tmp/policy.yaml
      
  3. Visualizza la policy effettiva corrente utilizzando describe --effective. Questo comando restituisce la policy dell'organizzazione così come viene valutata in questo punto della gerarchia delle risorse, inclusa l'ereditarietà.

    gcloud org-policies describe \
      constraints/cloudkms.minimumDestroyScheduledDuration --effective \
      --organization=ORGANIZATION_ID
    

    L'output è simile al seguente:

    name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration
    spec:
      rules:
        - values:
            allowedValues:
            - 30d
            - 15d
            - 90d
            - 60d
            - 7d
            - 120d
    

    Poiché questa policy dell'organizzazione è stata impostata a livello di organizzazione, viene ereditata da tutte le risorse figlio che consentono l'ereditarietà.

Richiedere la disattivazione delle chiavi prima dell'eliminazione

Il vincolo Limita l'eliminazione delle chiavi alle chiavi disattivate (constraints/cloudkms.disableBeforeDestroy) ti consente di richiedere che una chiave sia stata disattivata prima di poter pianificare l'eliminazione della chiave. La disattivazione di una chiave prima della sua eliminazione è una best practice consigliata perché ti aiuta a verificare che la chiave non sia in uso. Puoi combinare questo vincolo con una policy di Identity and Access Management attenta per creare un processo di eliminazione in più passaggi che richiede la collaborazione di più ruoli.

Per utilizzare questo vincolo per creare un processo di eliminazione in più passaggi, assicurati che nessun utente disponga delle autorizzazioni cloudkms.cryptoKeyVersions.update e cloudkms.cryptoKeyVersions.destroy. Questo caso d'uso richiede che tu utilizzi ruoli personalizzati.

Per richiedere che una chiave sia nello stato disattivata prima di poter pianificare l'eliminazione della chiave:

gcloud

  1. Ottieni la policy corrente sulla risorsa dell'organizzazione utilizzando il comando describe. Questo comando restituisce la policy applicata direttamente a questa risorsa:

    gcloud org-policies describe \
      constraints/cloudkms.disableBeforeDestroy \
      --organization=ORGANIZATION_ID
    

    Sostituisci ORGANIZATION_ID con l'identificatore univoco della risorsa dell'organizzazione. L'ID organizzazione è formattato come numeri decimali e non può avere zeri iniziali.

    Puoi anche visualizzare la policy dell'organizzazione per una cartella o un progetto con i flag --folder o --project e, rispettivamente, l'ID cartella o l'ID progetto.

    La risposta restituisce la policy dell'organizzazione corrente, se esiste. L'output è simile al seguente:

    name: organizations/ORGANIZATION_ID/policies/cloudkms.disableBeforeDestroy
    spec:
      etag: CPvY+KYGENDwgxA=
      rules:
      - enforce: true
      updateTime: '2023-08-17T14:19:39.033618Z'
    

    Se non è impostata una policy, il comando describe restituisce un errore NOT_FOUND:

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. Imposta la policy sull'organizzazione utilizzando il comando set-policy. Questo comando sovrascrive qualsiasi policy già collegata alla risorsa.

    1. Crea un file temporaneo /tmp/policy.yaml per archiviare la policy:

      name: organizations/ORGANIZATION_ID/policies/cloudkms.disableBeforeDestroy
      spec:
        rules:
        - enforce: true
      

      Sostituisci ORGANIZATION_ID con l'identificatore univoco della risorsa dell'organizzazione.

    2. Esegui il comando set-policy:

      gcloud org-policies set-policy /tmp/policy.yaml
      
  3. Visualizza la policy effettiva corrente utilizzando describe --effective. Questo comando restituisce la policy dell'organizzazione così come viene valutata in questo punto della gerarchia delle risorse, inclusa l'ereditarietà.

    gcloud org-policies describe \
      constraints/cloudkms.disableBeforeDestroy --effective \
      --organization=ORGANIZATION_ID
    

    L'output è simile al seguente:

    name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration
    spec:
      rules:
      - enforce: true
    

    Poiché questa policy dell'organizzazione è stata impostata a livello di organizzazione, viene ereditata da tutte le risorse figlio che consentono l'ereditarietà.

Passaggi successivi