Utilizzo delle chiavi di crittografia gestite dal cliente (CMEK)

Questa pagina descrive come eseguire attività correlate alle chiavi di crittografia gestite dal cliente (CMEK) per Cloud Firestore con compatibilità MongoDB. Per ulteriori informazioni sulla CMEK in generale, inclusi quando e perché abilitarla, consulta la documentazione di Cloud KMS.

Prepara le chiavi CMEK

Prima di poter creare un database Cloud Firestore con compatibilità MongoDB protetto da CMEK, devi completare i seguenti passaggi:

  1. Richiedi l'accesso alla funzionalità CMEK di Cloud Firestore con compatibilità MongoDB.
  2. Crea (o recupera) un service agent Cloud Firestore con compatibilità MongoDB.
  3. Crea una chiave CMEK.
  4. Configura le impostazioni IAM per la chiave.

Completa questi passaggi per ogni progetto che conterrà database Cloud Firestore con compatibilità MongoDB protetti da CMEK. Se in un secondo momento crei una nuova chiave CMEK, devi configurare le impostazioni IAM per questa chiave.

Richiedi l'accesso

Prima di creare un service agent Cloud Firestore con compatibilità MongoDB, richiedi l'accesso alla funzionalità CMEK compilando il modulo di richiesta di accesso.

Crea un service agent Cloud Firestore con compatibilità MongoDB

Prima di creare una chiave CMEK, devi disporre di un service agent Cloud Firestore con compatibilità MongoDB, che è un tipo di account di servizio gestito da Google che Cloud Firestore con compatibilità MongoDB utilizza per accedere alla chiave.

Esegui il comando services identity create per creare l'agente di servizio che Cloud Firestore con compatibilità MongoDB utilizza per accedere alla chiave CMEK per tuo conto. Questo comando crea il service account se non esiste già, poi lo visualizza.

gcloud beta services identity create \
    --service=firestore.googleapis.com \
    --project FIRESTORE_PROJECT

Sostituisci FIRESTORE_PROJECT con il progetto che prevedi di utilizzare per i tuoi database Cloud Firestore con compatibilità MongoDB.

Il comando mostra l'ID agente di servizio, formattato come un indirizzo email. Registra la stringa email di output, perché la utilizzerai in un passaggio successivo.

Service identity created:
service-xxx@gcp-sa-firestore.

Crea una chiave

Puoi utilizzare una chiave creata direttamente in Cloud KMS o una chiave con gestione esterna che rendi disponibile con Cloud External Key Manager.

La posizione della chiave Cloud KMS deve corrispondere a quella del database Cloud Firestore con compatibilità MongoDB con cui verrà utilizzata.

  • Per le posizioni dei database regionali, utilizza lo stesso nome della località per il portachiavi, la chiave e il database, perché i nomi delle località hanno una mappatura uno a uno.

    Ad esempio, se vuoi creare un database protetto da CMEK in us-west1, crea un keyring e una chiave in us-west1.

  • Per le posizioni del database multiregionale, utilizza il nome della posizione della posizione multiregionale di KMS:

    • Utilizza la località multiregionale us di Cloud KMS per la località multiregionale nam5 di Cloud Firestore con compatibilità MongoDB.

    • Utilizza la località multiregionale europe di Cloud KMS per la località multiregionale eur3 di Cloud Firestore con compatibilità MongoDB.

Nel progetto Google Cloud in cui vuoi gestire le chiavi, completa quanto segue:

  1. Abilita l'API Cloud KMS.

  2. Crea chiavi automatizzate e una chiave utilizzando una delle seguenti opzioni:

Configura le impostazioni IAM per la chiave

Console

Per concedere un ruolo Cloud KMS al tuo service agent, procedi nel seguente modo. Puoi anche concedere l'autorizzazione a livello di chiave o portachiavi se vuoi una granularità inferiore.

  1. Nella console Google Cloud, vai alla pagina IAM.

    Vai alla pagina IAM

  2. Fai clic su Aggiungi.

  3. Inserisci l'ID in formato email per l'agente di servizio Cloud Firestore con compatibilità MongoDB.

  4. Seleziona il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS.

  5. Fai clic su Salva.

gcloud

Concedi il ruolo cloudkms.cryptoKeyEncrypterDecrypter al tuo service agent:

gcloud kms keys add-iam-policy-binding KMS_KEY \
--keyring KMS_KEYRING\
--location KMS_LOCATION \
--member serviceAccount:SERVICE_AGENT_EMAIL \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--project KMS_PROJECT

Sostituisci quanto segue:

  • KMS_KEY con il nome che hai assegnato alla chiave
  • KMS_KEYRING con il keyring KMS che contiene la chiave
  • KMS_LOCATION con la regione che contiene le chiavi automatizzate
  • SERVICE_AGENT_EMAIL con l'identificatore in formato email per l'agente di servizio a cui stai concedendo l'accesso
  • KMS_PROJECT con il progetto che contiene la chiave

Il terminale dovrebbe visualizzare una risposta simile alla seguente:

Updated IAM policy for key KMS_KEY.
bindings:
- members:
- serviceAccount:
service-{project-number}@gcp-sa-firestore.
role: roles/cloudkms.cryptoKeyEncrypterDecrypter

Crea un database abilitato per CMEK

Dopo aver creato e configurato le chiavi CMEK, puoi creare un database protetto tramite CMEK. I database Cloud Firestore con compatibilità MongoDB esistenti protetti dalla crittografia predefinita di Google non possono essere convertiti per utilizzare CMEK.

Puoi scegliere un tipo di crittografia e una chiave solo quando crei un database abilitato a CMEK.

Console

  1. Nella console Google Cloud, vai alla pagina Database.

    Vai alla pagina Database

  2. Fai clic su Crea un database Firestore.

  3. Inserisci un ID database.

  4. Seleziona Enterprise Edition.

  5. Seleziona una posizione per il database.

  6. Fai clic su Mostra opzioni di crittografia, quindi seleziona Chiave Cloud KMS.

  7. Seleziona o inserisci il nome risorsa della chiave CMEK che vuoi utilizzare per il database.

  8. L'elenco delle chiavi è limitato al progetto Google Cloud corrente e alla posizione del database che hai selezionato. Per utilizzare una chiave di un progetto Google Cloud diverso, fai clic su Cambia progetto o Inserisci chiave manualmente.

  9. Se ti viene chiesto di concedere l'autorizzazione della chiave all'account di servizio Cloud Firestore con compatibilità MongoDB, fai clic su Concedi. Per creare un database CMEK, al service account Cloud Firestore con compatibilità MongoDB deve essere concesso il ruolo cloudkms.cryptoKeyEncrypterDecrypter.

  10. Seleziona le regole di sicurezza per i client mobile e web.

  11. Fai clic su Crea database.

Dopo aver creato il database, puoi verificare che sia abilitato per CMEK visualizzando i dettagli del database:

  • Se il tuo database è protetto da CMEK, il campo Tipo di crittografia mostra Gestita dal cliente e il campo Chiave di crittografia elenca la versione di Cloud KMS e della chiave corrispondente utilizzata per proteggere questo database.
  • Se il database non è protetto da CMEK, il campo Tipo di crittografia viene visualizzato come Gestita da Google.

gcloud

Prima di creare un database abilitato per CMEK con Google Cloud CLI, installa l'ultima versione e autorizza gcloud CLI. Per ulteriori informazioni, vedi Installare gcloud CLI.

gcloud firestore databases create \
    --location=FIRESTORE_DATABASE_LOCATION \
    --database=DATABASE_ID \
    --edition=enterprise \
    --kms-key-name=KMS_KEY_NAME \
    --project=FIRESTORE_PROJECT

Sostituisci quanto segue:

  • FIRESTORE_DATABASE_LOCATION con la posizione del database
  • DATABASE_ID con un ID per il database
  • KMS_KEY_NAME con il nome che hai assegnato alla chiave. Utilizza il nome completo della risorsa per la chiave nel seguente formato:

    projects/KMS_PROJECT/locations/KMS_LOCATION/keyRings/KMS_KEYRING_ID/cryptoKeys/KMS_KEY_ID

  • FIRESTORE_PROJECT con il progetto da utilizzare per il tuo database Cloud Firestore con compatibilità MongoDB

Accedere a un database protetto da CMEK

Tutte le operazioni di lettura, scrittura e query inviate a un database protetto da CMEK devono funzionare allo stesso modo di un database criptato predefinito di Google. Ad esempio, non è necessario fornire una chiave per ogni richiesta.

Ripristinare un database protetto da CMEK

Prima di ripristinare il database protetto da CMEK da un backup:

  • Decidi se vuoi ripristinare il database con la crittografia CMEK, con la crittografia predefinita di Google (non CMEK) o con la stessa crittografia del backup.
  • Prepara la chiave (versione primaria) e la versione della chiave che hai utilizzato per criptare il backup. Abilita sia la chiave che la versione della chiave.

gcloud

Ripristinare un database protetto da CMEK alla crittografia CMEK

Per eseguire il ripristino con la crittografia CMEK, esegui il comando gcloud firestore databases restore con i flag facoltativi encryption-type e kms-key-name per configurare il tipo di crittografia per il database ripristinato. Se non specifichi il tipo di crittografia, il database ripristinato utilizzerà la stessa configurazione di crittografia del backup.

gcloud firestore databases restore \
--encryption-type=customer-managed-encryption \
--kms-key-name=KMS_KEY_NAME

Sostituisci KMS_KEY_NAME con il nome che hai assegnato alla chiave. Utilizza il nome completo della risorsa per la chiave nel seguente formato:

projects/KMS_PROJECT/locations/KMS_LOCATION/keyRings/KMS_KEYRING_ID/cryptoKeys/KMS_KEY_ID

Ripristinare un database protetto da CMEK alla crittografia predefinita

Per eseguire il ripristino alla crittografia predefinita di Google (non CMEK), imposta il flag encryption-type nel seguente modo:

gcloud firestore databases restore \
--encryption-type=google-default-encryption

Ripristina un database protetto da CMEK con lo stesso tipo di crittografia del backup

Per eseguire il ripristino con lo stesso tipo di crittografia del backup, imposta il flag encryption-type nel seguente modo:

gcloud firestore databases restore --encryption-type=use-source-encryption

Interfaccia a riga di comando di Firebase

Ripristinare un database protetto da CMEK alla crittografia CMEK

Per eseguire il ripristino alla crittografia CMEK, utilizza i flag facoltativi encryption-type e kms-key-name. Se non specifichi il tipo di crittografia, il database ripristinato utilizzerà la stessa configurazione di crittografia del backup.

firebase firestore:databases:restore \
--database DATABASE_ID \
--backup 'projects/FIRESTORE_PROJECT/locations/FIRESTORE_LOCATION/backups/BACKUP_ID' \
--encryption-type CUSTOMER_MANAGED_ENCRYPTION \
--kms-key-name projects/KMS_PROJECT/locations/KMS_LOCATION/keyRings/KMS_KEYRING_ID/cryptoKeys/KMS_KEY_ID \
--project FIRESTORE_PROJECT

Sostituisci quanto segue:

  • DATABASE_ID: l'ID del tuo database
  • FIRESTORE_PROJECT con il progetto da utilizzare per il tuo database Cloud Firestore con compatibilità MongoDB
  • FIRESTORE_LOCATION con la posizione del tuo database Cloud Firestore con compatibilità MongoDB
  • BACKUP_ID: l'ID del backup
  • KMS_PROJECT con il progetto che contiene la chiave CMEK
  • KMS_LOCATION con la posizione che contiene la chiave CMEK e le chiavi automatizzate
  • KMS_KEYRING_ID: l'ID del tuo keyring CMEK

Verifica che il database Cloud Firestore con compatibilità MongoDB ripristinato sia criptato con CMEK:

firebase firestore:databases:get DATABASE_ID --project FIRESTORE_PROJECT

Ripristinare un database protetto da CMEK alla crittografia predefinita

Per eseguire il ripristino alla crittografia predefinita di Google (non CMEK), imposta il flag encryption-type nel seguente modo:

firebase firestore:databases:restore \
--database DATABASE_ID \
--backup 'projects/FIRESTORE_PROJECT/locations/FIRESTORE_LOCATION/backups/BACKUP_ID' \
--encryption-type GOOGLE_DEFAULT_ENCRYPTION \
--project FIRESTORE_PROJECT

Sostituisci quanto segue:

  • DATABASE_ID: l'ID del tuo database
  • FIRESTORE_PROJECT con il progetto da utilizzare per il tuo database Cloud Firestore con compatibilità MongoDB
  • FIRESTORE_LOCATION con la posizione del tuo database Cloud Firestore con compatibilità MongoDB
  • BACKUP_ID: l'ID del backup

Ripristina un database protetto da CMEK con lo stesso tipo di crittografia del backup

Per eseguire il ripristino con lo stesso tipo di crittografia del backup, imposta il flag encryption-type nel seguente modo:

firebase firestore:databases:restore \
--database DATABASE_ID \
--backup 'projects/FIRESTORE_PROJECT/locations/FIRESTORE_LOCATION/backups/BACKUP_ID' \
--encryption-type USE_SOURCE_ENCRYPTION

Sostituisci quanto segue:

  • DATABASE_ID: l'ID del tuo database
  • FIRESTORE_PROJECT con il progetto da utilizzare per il tuo database Cloud Firestore con compatibilità MongoDB
  • FIRESTORE_LOCATION con la posizione del tuo database Cloud Firestore con compatibilità MongoDB
  • BACKUP_ID: l'ID del backup

Clonare un database protetto da CMEK

Prima di clonare un database protetto da CMEK:

  • Decidi se vuoi clonare il database nella crittografia CMEK, nella crittografia predefinita di Google (non CMEK) o nella stessa crittografia del database di origine.
  • Prepara la chiave (versione principale) e la versione della chiave che hai utilizzato per criptare il database di origine. Abilita sia la chiave che la versione della chiave.

gcloud

Clonare un database protetto da CMEK nella crittografia CMEK

Per clonare la crittografia CMEK, esegui il comando gcloud alpha firestore databases clone con i flag facoltativi encryption-type e kms-key-name per configurare il tipo di crittografia per il database clonato. Se non specifichi il tipo di crittografia, il database clonato utilizzerà la stessa configurazione di crittografia del database di origine.

gcloud alpha firestore databases clone \
--encryption-type=customer-managed-encryption \
--kms-key-name=KMS_KEY_NAME

Sostituisci KMS_KEY_NAME con il nome che hai assegnato alla chiave. Utilizza il nome completo della risorsa per la chiave nel seguente formato:

projects/KMS_PROJECT/locations/KMS_LOCATION/keyRings/KMS_KEYRING_ID/cryptoKeys/KMS_KEY_ID

Clonare un database protetto da CMEK nella crittografia predefinita

Per clonare nella crittografia predefinita di Google (non CMEK), imposta il flag encryption-type nel seguente modo:

gcloud alpha firestore databases clone \
--encryption-type=google-default-encryption

Clonare un database protetto da CMEK nello stesso tipo di crittografia del database di origine

Per clonare con lo stesso tipo di crittografia del database di origine, imposta il flag encryption-type nel seguente modo:

gcloud alpha firestore databases clone \
--encryption-type=use-source-encryption

Visualizzare la chiave in uso

gcloud

Puoi utilizzare il comando databases describe gcloud CLI per confermare la configurazione CMEK del database:

gcloud firestore databases describe \
  --database=DATABASE_ID \
  --project=FIRESTORE_PROJECT

Dovresti vedere le informazioni su CMEK nel campo cmekConfig della risposta in modo simile a quanto segue:

cmekConfig:
    activeKeyVersion:
    - projects/PROJECT_ID/locations/us/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME/cryptoKeyVersions/1
    kmsKeyName: projects/PROJECT_ID/locations/us/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME
  locationId: nam5
  name: projects/PROJECT_ID/databases/DATABASE_ID

La risposta include le seguenti informazioni:

  • kmsKeyName: il nome completo della risorsa della chiave utilizzata per criptare il database protetto da CMEK.
  • activeKeyVersion: un elenco di tutte le versioni delle chiavi in uso nel database protetto da CMEK. Durante la rotazione delle chiavi, puoi avere più versioni di chiavi attive. Sia la vecchia versione della chiave che la nuova devono essere disponibili durante la rotazione della chiave. Non disattivare la vecchia versione della chiave finché non viene più visualizzata nel campo activeKeyVersion.

API REST

Richiesta HTTP:

GET https://firestore.googleapis.com/v1/{name=projects/FIRESTORE_PROJECT/databases/DATABASE_ID}

Nel corpo della richiesta, configura CMEK nel campo cmek_config.kms_key_name. Impostato sull'ID risorsa completo di una chiave Cloud KMS. È consentita solo una chiave nella stessa posizione di questo database.

Questo valore deve essere l'ID risorsa della chiave Cloud KMS nel formato projects/{KMS_PROJECT}/locations/{KMS_LOCATION}/keyRings/{KMS_KEYRING_ID}/cryptoKeys/{KMS_KEY_ID}.

Per ulteriori dettagli su altri campi, consulta la pagina database create.

Esempio di richiesta:

curl 'https://firestore.googleapis.com/v1/projects/FIRESTORE_PROJECT/databases/{DATABASE_ID}' \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-type: application/json"

Esempio di risposta:

{
  "name": "projects/FIRESTORE_PROJECT/databases/{DATABASE_ID}",
  "locationId": "{FIRESTORE_DATABASE_LOCATION}",
  "type": "FIRESTORE_NATIVE",
  "cmekConfig": {
    "kmsKeyName": "projects/{KMS_PROJECT}/locations/{KMS_LOCATION}/keyRings/{KMS_KEYRING_ID}/cryptoKeys/{KMS_KEY_ID}",
    "activeKeyVersion": [
      "projects/{KMS_PROJECT}/locations/{KMS_LOCATION}/keyRings/{KMS_KEYRING_ID}/cryptoKeys/{KMS_KEY_ID}/cryptoKeyVersions/1"
    ]
  },
  ...
}

Disattivare una chiave

Per disattivare una chiave associata a un database:

  1. Visualizzare le versioni delle chiavi in uso per un database
  2. Disabilita queste versioni della chiave
  3. Attendi che la modifica diventi effettiva e verifica se i dati non sono più accessibili. In genere l'applicazione delle modifiche richiede pochi minuti, ma in alcuni casi può essere necessario attendere fino a 3 ore.

Quando una chiave utilizzata da un database viene disattivata, riceverai un'eccezione INVALID_ARGUMENT con ulteriori dettagli nel messaggio di errore, ad esempio:

{
  "error": {
    "code": 400,
    "message": "Failed: (InvalidArgument) The customer-managed encryption key required by the requested resource is not accessible. Error reason: projects/{FIRESTORE_PROJECT}/locations/{KMS_LOCATION}/keyRings/{KMS_KEYRING_ID}/cryptoKeys/{KMS_KEY_ID}/cryptoKeyVersions/1 is not enabled, current state is: DISABLED.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.DebugInfo",
        "detail": "Failed: (InvalidArgument) The customer-managed encryption key required by the requested resource is not accessible. Error reason: projects/{FIRESTORE_PROJECT}/locations/{KMS_LOCATION}/keyRings/{KMS_KEYRING_ID}/cryptoKeys/{KMS_KEY_ID}/cryptoKeyVersions/1 is not enabled, current state is: DISABLED."
      }
    ]
  }
}

Abilitare una chiave

Per riattivare una chiave associata a un database:

  1. Visualizzare le versioni delle chiavi in uso per un database
  2. Abilita queste versioni della chiave
  3. Attendi che la modifica diventi effettiva e verifica se i dati non sono più accessibili. In genere l'applicazione delle modifiche richiede pochi minuti, ma in alcuni casi può essere necessario attendere fino a 3 ore.

Visualizza i log di controllo per una chiave Cloud KMS

Prima di attivare gli audit log di accesso ai dati di Cloud KMS, devi conoscere gli audit log di Cloud.

I log di controllo dell'accesso ai dati di Cloud KMS mostrano quando Cloud Firestore con compatibilità MongoDB o altri prodotti configurati per utilizzare la tua chiave CMEK effettuano chiamate di crittografia o decrittografia a Cloud KMS. Cloud Firestore con compatibilità MongoDB non esegue una chiamata di crittografia o decrittografia a ogni richiesta di dati, ma mantiene un poller che controlla periodicamente la chiave. I risultati del sondaggio vengono visualizzati negli audit log.

Puoi configurare e interagire con i log di controllo nella console Google Cloud:

  1. Assicurati che il logging sia abilitato per l'API Cloud KMS nel tuo progetto.

  2. Vai a Cloud Logging nella console Google Cloud.

    Vai a Cloud Logging

  3. Limita le voci di log alla tua chiave Cloud KMS aggiungendo le seguenti righe al generatore di query:

    resource.type="cloudkms_cryptokey"
    resource.labels.key_ring_id = KMS_KEYRING
    resource.labels.crypto_key_id = KMS_KEY
    resource.labels.location=KMS_LOCATION
    

    Sostituisci quanto segue:

    • KMS_KEY con il nome della chiave CMEK
    • KMS_KEYRING con il keyring KMS che contiene la chiave
    • KMS_LOCATION con la posizione della chiave e delle chiavi automatizzate

    Il log mostra un paio di voci di log ogni cinque minuti circa per database. Le voci di log sono simili a questi esempi:

    Info 2021-03-20 08:02:24.869 EDT Cloudkms.googleapis.com Decrypt projects/cloud-kms-project/locations/us-central1/keyRings/firestore-keys/cryptoKeys/my-cmek-key service-123456789123@gcp-sa-firestore.
    audit_log, method: "Decrypt", principal_email: "service-1234567891011@gcp-sa-firestore."
    
    Info 2021-03-20 08:02:24.913 EDT Cloudkms.googleapis.com Encrypt projects/cloud-kms-project/locations/us-central1/keyRings/firestore-keys/cryptoKeys/my-cmek-key service-123456789123@gcp-sa-firestore.
    audit_log, method: "Encrypt", principal_email: "service-123456789123@gcp-sa-firestore."
    

Per informazioni dettagliate sull'interpretazione dei log di controllo, vedi Comprendere i log di controllo.

Configura una policy dell'organizzazione CMEK

Per specificare i requisiti di conformità alla crittografia per i database Cloud Firestore con compatibilità MongoDB nella tua organizzazione, utilizza un vincolo dei criteri dell'organizzazione CMEK.

Richiedi la protezione CMEK

Configura constraints/gcp.restrictNonCmekServices in modo che richieda CMEK per la creazione di database Cloud Firestore con compatibilità MongoDB. Imposta il vincolo su deny e aggiungi firestore.googleapis.com all'elenco di tipi non consentiti, ad esempio:

gcloud resource-manager org-policies deny gcp.restrictNonCmekServices  is:firestore.googleapis.com --project=FIRESTORE_PROJECT

Sostituisci FIRESTORE_PROJECT con il progetto da limitare.

Per scoprire di più sulla configurazione delle policy dell'organizzazione, consulta la pagina Creazione e modifica delle policy.

Dopo l'entrata in vigore della policy, ricevi un'eccezione FAILED_PRECONDITION e un messaggio di errore se provi a creare un database non CMEK nel progetto interessato. Ad esempio, un'eccezione ha il seguente aspetto:

{
  "error": {
    "code": 400,
    "message": "Constraint 'constraints/gcp.restrictNonCmekServices' violated for 'projects/FIRESTORE_PROJECT' attempting to perform the operation 'google.firestore.admin.v1.FirestoreAdmin.CreateDatabase' with violated value 'firestore.googleapis.com'. See https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints for more information.",
    "status": "FAILED_PRECONDITION",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.PreconditionFailure",
        "violations": [
          {
            "type": "constraints/gcp.restrictNonCmekServices",
            "subject": "orgpolicy:projects/FIRESTORE_PROJECT",
            "description": "Constraint 'constraints/gcp.restrictNonCmekServices' violated for 'projects/FIRESTORE_PROJECT' attempting to perform the operation 'google.firestore.admin.v1.FirestoreAdmin.CreateDatabase' with violated value 'firestore.googleapis.com'. See https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints for more information."
          }
        ]

Limitare l'utilizzo delle chiavi per CMEK

Per limitare le chiavi Cloud KMS utilizzate per la protezione CMEK, configura il vincolo constraints/gcp.restrictCmekCryptoKeyProjects.

Come vincolo di elenco, i valori accettati sono indicatori della gerarchia delle risorse (ad esempio, projects/PROJECT_ID, under:folders/FOLDER_ID e under:organizations/ORGANIZATION_ID). Utilizza questo vincolo configurando un elenco di indicatori della gerarchia delle risorse e impostando il vincolo su Consenti. Questa configurazione limita i servizi supportati in modo che le chiavi CMEK possano essere scelte solo tra i progetti, le cartelle e le organizzazioni elencati. Le richieste di creazione di risorse protette da CMEK nei servizi configurati non vanno a buon fine senza una chiave Cloud Firestore con compatibilità MongoDB di una delle risorse consentite.

L'esempio seguente consente solo le chiavi di ALLOWED_KEY_PROJECT_ID per i database protetti da CMEK nel progetto specificato:

gcloud resource-manager org-policies allow gcp.restrictCmekCryptoKeyProjects \
under:projects/<var>ALLOWED_KEY_PROJECT_ID</var> \
--project=<var>FIRESTORE_PROJECT</var>

Dopo l'entrata in vigore della norma, ricevi un'eccezione FAILED_PRECONDITION e un messaggio di errore se violi il vincolo. Un'eccezione è simile alla seguente:

{
  "error": {
    "code": 400,
    "message": "Constraint 'constraints/gcp.restrictCmekCryptoKeyProjects' violated for 'projects/FIRESTORE_PROJECT' attempting to perform the operation 'google.firestore.admin.v1.FirestoreAdmin.CreateDatabase' with violated value 'projects/{NOT_ALLOWED_KEY_PROJECT}'. See https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints for more information.",
    "status": "FAILED_PRECONDITION",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.PreconditionFailure",
        "violations": [
          {
            "type": "constraints/gcp.restrictCmekCryptoKeyProjects",
            "subject": "orgpolicy:projects/FIRESTORE_PROJECT",
            "description": "Constraint 'constraints/gcp.restrictCmekCryptoKeyProjects' violated for 'projects/FIRESTORE_PROJECT' attempting to perform the operation 'google.firestore.admin.v1.FirestoreAdmin.CreateDatabase' with violated value 'projects/{NOT_ALLOWED_KEY_PROJECT}'. See https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints for more information."
          }
        ]
      }
    ]
  }
}

Passaggi successivi