Attivare Autokey di Cloud KMS

Questo documento mostra come abilitare e configurare Cloud KMS Autokey utilizzando la console Google Cloud , Google Cloud CLI, l'API Cloud KMS o Terraform. Puoi attivare Autokey con l'archiviazione delle chiavi in un progetto dedicato per una cartella oppure puoi attivare Autokey con l'archiviazione delle chiavi nello stesso progetto per un singolo progetto o per tutti i progetti all'interno di una cartella. Per saperne di più su Autokey, consulta la panoramica di Autokey.

Questo documento è rivolto agli amministratori.

Eredità della configurazione di Autokey

Quando configuri Autokey in una cartella, le cartelle e i progetti secondari all'interno di questa cartella ereditano la configurazione di Autokey della cartella principale. Quando configuri Autokey in una cartella o un progetto figlio, decidi se ereditare la configurazione dalla risorsa padre o creare una nuova configurazione Autokey per quella risorsa. Le configurazioni di Autokey applicate alle risorse secondarie sostituiscono la configurazione della cartella principale.

La tabella seguente mostra i casi d'uso della configurazione Autokey supportati:

Tipo di risorsa Configurazione di Autokey Descrizione
Organizzazione Non applicabile Autokey non può essere attivato per le organizzazioni. Le risorse secondarie all'interno di un'organizzazione ereditano una risorsa AutokeyConfig vuota. Nella console Google Cloud , queste risorse mostrano uno stato di Autokey Non attivato. Se vuoi limitare l'utilizzo di Autokey all'interno della tua organizzazione o disattivarlo completamente, puoi utilizzare le policy dell'organizzazione. Per saperne di più, vedi Controllare l'utilizzo di Autokey.
Cartella DEDICATED_KEY_PROJECT Autokey con archiviazione delle chiavi del progetto dedicato è abilitato per i progetti risorsa all'interno della cartella. Per i progetti risorsa che ereditano questa configurazione, Autokey crea le chiavi nel progetto chiave dedicato.
Cartella RESOURCE_PROJECT Autokey con archiviazione delle chiavi nello stesso progetto è abilitato per i progetti risorsa all'interno della cartella. Per i progetti risorsa che ereditano questa configurazione, Autokey crea le chiavi nello stesso progetto delle risorse che proteggono.
Cartella DISABLED Autokey è disattivato all'interno della cartella, ma le cartelle secondarie e i progetti possono comunque eseguire l'override di questa configurazione. Se vuoi limitare Autokey all'interno della cartella o disattivarlo completamente, puoi utilizzare le policy dell'organizzazione. Per saperne di più, vedi Controllare l'utilizzo di Autokey.
Cartella KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED La cartella eredita la configurazione Autokey dalla cartella o dall'organizzazione padre.
Progetto RESOURCE_PROJECT Autokey con archiviazione delle chiavi nello stesso progetto è abilitato per il progetto della risorsa. Per le risorse create in questo progetto, Autokey crea le chiavi nello stesso progetto.
Progetto DISABLED Autokey è disattivato per il progetto risorsa. Gli sviluppatori che creano risorse in questo progetto devono creare e eseguire il provisioning delle chiavi manualmente se vogliono utilizzare CMEK per le risorse che creano.
Progetto KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED Il progetto eredita la configurazione Autokey dalla cartella padre.

Prima di iniziare

Prima di poter attivare Autokey con l'archiviazione delle chiavi del progetto dedicato per una cartella, devi disporre di quanto segue:

  • Una risorsa dell'organizzazione che contiene una cartella in cui vuoi attivare Autokey. Se non hai una cartella in cui vuoi attivare Autokey, puoi crearne una nuova. Se abiliti Autokey in questa cartella, Autokey verrà abilitato per tutti i progetti di risorse all'interno della cartella.

  • Se hai progetti risorsa in cui vuoi utilizzare Autokey con l'archiviazione delle chiavi in un progetto dedicato, ma non si trovano all'interno di una cartella in cui abiliterai Autokey, puoi spostare i progetti risorsa esistenti in nuove cartelle.

Prima di poter attivare Autokey con l'archiviazione delle chiavi nello stesso progetto, devi disporre di uno dei seguenti elementi:

  • Un progetto Google Cloud in cui vuoi attivare Autokey e in cui l'autorizzazione keyHandles.create non è bloccata da un criterio di negazione IAM.
  • Una cartella Google Cloud in cui vuoi abilitare Autokey, che contiene almeno un progetto in cui l'autorizzazione keyHandles.create non è bloccata da un criterio di negazione IAM.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per attivare e configurare Autokey, chiedi all'amministratore di concederti i seguenti ruoli IAM nella cartella, nel progetto o in una risorsa padre:

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

Questi ruoli predefiniti contengono le autorizzazioni necessarie per abilitare e configurare Autokey. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per abilitare e configurare Autokey sono necessarie le seguenti autorizzazioni:

  • Per attivare Autokey:
    • cloudkms.autokeyConfigs.*
    • serviceusage.services.enable
  • Per abilitare Autokey con l'archiviazione delle chiavi in un progetto dedicato:
    • resourcemanager.folders.get
    • resourcemanager.folders.getIamPolicy
    • resourcemanager.folders.setIamPolicy
    • billing.resourceAssociations.create
  • Per visualizzare la configurazione di Autokey:
    • cloudkms.folders.showEffectiveAutokeyConfig
    • cloudkms.projects.showEffectiveAutokeyConfig
  • Per visualizzare tutte le configurazioni Autokey effettive:
    • cloudasset.assets.query
    • serviceusage.services.use

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

Configurazione di Terraform

Questa sezione contiene variabili e risorse Terraform di esempio che sono prerequisiti per il resto degli esempi Terraform in questo documento. Se non utilizzi Terraform per creare o gestire le configurazioni Autokey, ignora questa sezione.

Fai clic qui per mostrare o nascondere l'esempio di configurazione di Terraform

Questo esempio completa i seguenti passaggi di configurazione:

  1. Definisci le variabili utilizzate negli esempi Terraform successivi.
  2. Crea una cartella delle risorse. Puoi saltare questo passaggio se prevedi di utilizzare solo l'archiviazione delle chiavi nello stesso progetto in singoli progetti.
  3. Concedi i ruoli di amministratore e utente di Autokey.
  variable "organization_ID" {
    description = "Your Google Cloud Org ID"
    type        = string
    default     = "ORGANIZATION_ID"
  }

  variable "billing_account" {
    description = "Your Google Cloud Billing Account ID"
    type        = string
    default     = "BILLING_ACCOUNT_ID"
  }

  /* List the users who should have the authority to enable and configure
    Autokey at a folder level */
  variable "autokey_folder_admins" {
    type    = list(string)
    default = [AUTOKEY_ADMIN_USER_IDS]
  }

  /* List the users who should have the authority to protect their resources
    with Autokey */
  variable "autokey_folder_users" {
    type    = list(string)
    default = [AUTOKEY_DEVELOPER_USER_IDS]
  }

  /* List the users who should have the authority to manage crypto operations
    in the Autokey key project */
  variable "autokey_project_kms_admins" {
    type    = list(string)
    default = [KEY_PROJECT_ADMIN_USER_IDS]
  }

  # Create a new folder
  resource "google_folder" "autokey_folder" {
    parent       = "organizations/${var.organization_ID}"
    display_name = "autokey_folder"
  }
  /* To use a folder that already exists, omit this block and instead create a
     variable for the folder ID instead, and then update subsequent resources
     to use the variable. */

  # Set permissions for key admins to use Autokey in this folder
  resource "google_folder_iam_binding" "autokey_folder_admin" {
    folder  = google_folder.autokey_folder.name
    role    = "roles/cloudkms.autokeyAdmin"
    members = var.autokey_folder_admins
  }

  /* Set permissions for users to protect resources with Autokey in
    this folder */
  resource "google_folder_iam_binding" "autokey_folder_users" {
    folder  = google_folder.autokey_folder.name
    role    = "roles/cloudkms.autokeyUser"
    members = var.autokey_folder_users
  }
  

Sostituisci quanto segue:

  1. BILLING_ACCOUNT_ID: l'ID del tuo account di fatturazione Google Cloud . L'ID account di fatturazione è un valore alfanumerico di 18 caratteri separati da trattini, ad esempio 010101-F0FFF0-10XX01.
  2. AUTOKEY_ADMIN_USER_IDS: un elenco di indirizzi email per gli utenti che devono disporre del ruolo `roles/cloudkms.autokeyAdmin`, ad esempio "Ariel@example.com", "Charlie@example.com".
  3. AUTOKEY_DEVELOPER_USER_IDS: un elenco di indirizzi email per gli utenti che devono disporre del ruolo `roles/cloudkms.autokeyUser`, ad esempio "Kalani@example.com", "Mahan@example.com".
  4. KEY_PROJECT_ADMIN_USER_IDS: un elenco di indirizzi email per gli utenti che devono disporre del ruolo `roles/cloudkms.admin`, ad esempio "Sasha@example.com", "Nur@example.com".

Configurare Autokey con l'archiviazione delle chiavi in un progetto dedicato

Quando utilizzi Autokey con l'archiviazione delle chiavi in un progetto dedicato in una cartella, devi scegliere un singolo progetto chiave che contenga tutte le chiavi create da Autokey in quella cartella. Se utilizzi l'archiviazione delle chiavi nello stesso progetto, non hai bisogno di un progetto chiave dedicato. Continua da Abilita Autokey con l'archiviazione delle chiavi nello stesso progetto.

Ti consigliamo di creare un nuovo progetto di chiavi per contenere le risorse Cloud KMS create da Autokey. Devi creare il progetto chiave all'interno della risorsa organizzazione. Se hai già un progetto chiave che vuoi utilizzare per le chiavi create da Autokey, puoi saltare la sezione Crea un progetto chiave e continuare dalla sezione Configura il progetto chiave Autokey in questa pagina.

Il progetto chiave può essere creato all'interno della stessa cartella in cui prevedi di attivare Autokey. Non devi creare altre risorse all'interno del progetto chiave. Se tenti di creare risorse protette da Autokey nel progetto chiave, Autokey rifiuta la richiesta di una nuova chiave.

Se in futuro prevedi di eseguire la migrazione ad Assured Workloads, crea il progetto delle chiavi all'interno della stessa cartella delle risorse protette da queste chiavi.

Se la tua organizzazione utilizza il vincolo della policy dell'organizzazione constraints/gcp.restrictCmekCryptoKeyProjects per garantire che tutte le chiavi CMEK provengano da progetti di chiavi specificati, devi aggiungere il tuo progetto di chiavi all'elenco dei progetti consentiti. Per maggiori informazioni sulla policy dell'organizzazione CMEK, consulta Policy dell'organizzazione CMEK.

Crea un progetto chiave

Console

  1. Nella console Google Cloud , vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Per Seleziona organizzazione, seleziona la risorsa Organizzazione in cui vuoi creare un progetto.
  3. Fai clic su Create project (Crea progetto).
  4. Nella finestra Nuovo progetto visualizzata, inserisci un nome per il progetto e seleziona un account di fatturazione. Il nome del progetto può contenere solo lettere, numeri, virgolette singole, trattini, spazi o punti esclamativi e deve avere una lunghezza compresa tra 4 e 30 caratteri.
  5. Per Posizione, seleziona la risorsa che vuoi impostare come principale per il progetto della chiave.
  6. Per completare la creazione del progetto, fai clic su Crea.

gcloud

  • Crea un nuovo progetto:

    gcloud projects create PROJECT_ID \
        --PARENT_TYPE=PARENT_ID
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto che contiene le chiavi automatizzate.
    • PARENT_TYPE: il tipo di risorsa in cui vuoi creare il nuovo progetto chiave. Inserisci organization per creare il nuovo progetto di chiavi in un'organizzazione specifica oppure inserisci folder per creare il nuovo progetto di chiavi in una cartella specifica.
    • PARENT_ID: l'ID dell'organizzazione o della cartella in cui vuoi creare il progetto chiave.

REST

  • Crea un nuovo progetto:

    curl "https://cloudresourcemanager.googleapis.com/v3/projects/"
        --request "POST" \
        --header "authorization: Bearer TOKEN" \
        --header "content-type: application/json" \
        --data '{ "projectId": "PROJECT_ID", "name": "PROJECT_NAME", "parent": "PARENT_TYPE/PARENT_ID" }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'identificatore che vuoi utilizzare per il tuo progetto di chiavi dedicato.
    • PROJECT_NAME: il nome che vuoi utilizzare per il progetto di chiavi dedicato.
    • PARENT_TYPE: il tipo di risorsa della risorsa principale in cui vuoi creare il progetto chiave dedicato, ad esempio organizations o folders.
    • PARENT_ID": l'identificatore della risorsa principale in cui vuoi creare il progetto con chiave dedicata.

Terraform

Il seguente esempio di Terraform crea un progetto di gestione delle chiavi dedicato nella cartella creata in precedenza.

/* Define the project ID to use for the dedicated key project. The project
  ID must be 6 to 30 characters with lowercase letters, digits, hyphens. The
  project ID must start with a letter. Trailing hyphens are prohibited */
variable "key_management_project_ID" {
  description = "Sets the project ID for the dedicated key project. This project will contain the Key Rings and Keys generated by Cloud KMS Autokey"
  type        = string
  default     = "KEY_PROJECT_ID"
}

# Create a key project to store keys created by Autokey
resource "google_project" "key_management_project" {
  project_id      = var.key_management_project_ID
  name            = var.key_management_project_ID
  billing_account = var.billing_account
  folder_id       = google_folder.autokey_folder.name
}

output "project_number" {
  value = google_project.key_management_project.number
}

Sostituisci KEY_PROJECT_ID con l'ID da utilizzare per il progetto con chiave dedicata, ad esempio autokey-key-project.

Configurare un blocco sul progetto

Dopo aver creato il progetto Cloud KMS, ti consigliamo di proteggerlo con un blocco (anteprima) per evitare l'eliminazione accidentale. Quando viene applicato un blocco del progetto, l'eliminazione del progetto Cloud KMS viene bloccata finché il blocco non viene rimosso.

Prepara il progetto di gestione dedicato delle chiavi

Console

  1. Abilita l'API Cloud KMS nel progetto chiave.

    Abilitare l'API

  2. Se utilizzi un nuovo progetto di chiavi, concedi le autorizzazioni di amministratore Cloud KMS per il progetto di chiavi. Ripeti i seguenti passaggi per concedere il ruolo Amministratore Cloud KMS a te e a ogni altro utente amministratore Cloud KMS:

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

      Vai a IAM

    2. Seleziona il progetto chiave.

    3. Fai clic su Concedi l'accesso, quindi inserisci l'indirizzo email dell'utente.

    4. Seleziona il ruolo Amministratore Cloud KMS.

    5. Fai clic su Salva.

gcloud

  1. Abilita l'API Cloud KMS nel progetto chiave:

    gcloud services enable cloudkms.googleapis.com
    
  2. Concedi le autorizzazioni di amministratore Cloud KMS per il progetto di chiavi. Ripeti il comando seguente per concedere il ruolo roles/cloudkms.admin a te e a ogni altro utente amministratore Cloud KMS:

    gcloud projects add-iam-policy-binding PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=user:KEY_ADMIN_EMAIL
    

    Sostituisci quanto segue:

    • PROJECT_NUMBER: il numero del progetto chiave.
    • KEY_ADMIN_EMAIL: l'indirizzo email dell'utente responsabile della gestione delle chiavi Cloud KMS.

REST

  1. Abilita l'API Cloud KMS nel progetto chiave:

    curl "https://serviceusage.googleapis.com/v1/projects/PROJECT_ID/services/cloudkms.googleapis.com:enable" \
        --request "POST" \
        --header "authorization: Bearer TOKEN"
    

    Sostituisci PROJECT_ID con l'identificatore del tuo progetto di chiavi dedicato.

  2. Recupera il criterio IAM attuale per il progetto di chiavi dedicate.

    curl "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy" \
        --request POST \
        --header "authorization: Bearer TOKEN"
        --header "Content-Type: application/json; charset=utf-8" \
        --data '{"options": {"requestedPolicyVersion": 3}}'
    

    La risposta contiene la policy di autorizzazione corrente del progetto.

  3. Modifica la policy di autorizzazione restituita per aggiungere il ruolo roles/cloudkms.admin per ogni utente amministratore di Cloud KMS, incluso te, utilizzando come guida il seguente esempio di associazione di ruolo: json { "role": "roles/cloudkms.admin", "members": [ "PRINCIPAL_LIST" ], }

    Sostituisci PRINCIPAL_LIST con un elenco separato da virgole di principal utente, ad esempio admin_1@example.com,admin_2@example.com.

    Questa modifica non ha effetto finché non imposti la nuova policy.

  4. Imposta la nuova policy di autorizzazione.

    curl "https://cloudresourcemanager.googleapis.com/1/projects/PROJECT_ID:setIamPolicy" \
        --request POST \
        --header "authorization: Bearer TOKEN" \
        --header "Content-Type: application/json; charset=utf-8" \
        --data 'ALLOW_POLICY'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'identificatore del progetto di chiavi dedicato.
    • ALLOW_POLICY: il file JSON della policy di autorizzazione aggiornata che hai creato nel passaggio precedente, incluse le concessioni di ruolo esistenti e quelle che hai appena aggiunto.

Terraform

Il seguente esempio di Terraform abilita l'API Cloud KMS nel progetto di chiave dedicato e concede il ruolo roles/cloudkms.admin ai principal amministratore Cloud KMS identificati in precedenza.

# Enable the Cloud KMS API in the key project
resource "google_project_service" "enable_api" {
  service                    = "cloudkms.googleapis.com"
  project                    = google_project.key_management_project.project_id
  disable_on_destroy         = false
  disable_dependent_services = false
  depends_on                 = [google_project.key_management_project]
}

/* Grant role for Cloud KMS admins to use Autokey in the
   dedicated key project */
resource "google_project_iam_binding" "autokey_project_admin" {
  project    = google_project.key_management_project.project_id
  role       = "roles/cloudkms.admin"
  members    = var.autokey_project_kms_admins
  depends_on = [ google_project.key_management_project ]
}

Abilita Cloud KMS Autokey in una cartella di risorse

Console

  1. Nella console Google Cloud , vai alla pagina Controlli di gestione delle chiavi.

    Vai ai controlli di gestione delle chiavi

  2. Nel selettore di contesto, seleziona la cartella in cui vuoi attivare Autokey con l'archiviazione delle chiavi del progetto dedicato.
  3. Nella sezione Autokey, fai clic su Gestisci.
  4. Fai clic su Configura.
  5. In Origine configurazione, seleziona Configura per cartella.
  6. In Configurazione, seleziona Abilita l'archiviazione delle chiavi del progetto dedicato.
  7. Seleziona il progetto chiave e poi fai clic su Invia.

    Un messaggio conferma che Cloud KMS Autokey è abilitato nella cartella.

gcloud

  1. Crea un file YAML che contenga quanto segue AutokeyConfig:

    name: folders/FOLDER_NUMBER/autokeyConfig
    keyProjectResolutionMode: DEDICATED_KEY_PROJECT
    keyProject: projects/PROJECT_ID
    

    Sostituisci quanto segue:

    • FOLDER_NUMBER: il numero della cartella in cui vuoi attivare Autokey con l'archiviazione delle chiavi del progetto dedicato.
    • PROJECT_ID: l'identificatore del progetto di chiavi dedicato.
  2. Applica AutokeyConfig alla cartella:

    gcloud kms autokey-config update AUTOKEY_CONFIG_PATH
    

    Sostituisci AUTOKEY_CONFIG_PATH con il percorso del file YAML che hai creato nel passaggio precedente.

REST

Crea il file AutokeyConfig per la cartella in cui vuoi abilitare Autokey con l'archiviazione delle chiavi del progetto dedicato:

curl "https://cloudkms.googleapis.com/v1/folders/FOLDER_ID/autokeyConfig?updateMask=keyProject,keyProjectResolutionMode" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{"keyProject": "projects/PROJECT_ID", "keyProjectResolutionMode": "DEDICATED_KEY_PROJECT"}'

Sostituisci quanto segue:

  • FOLDER_ID: l'ID della cartella in cui vuoi attivare Autokey.
  • PROJECT_ID: l'ID del progetto chiave.

Terraform

/* Enable AutokeyConfig for dedicated-project key storage in the
   folder */
resource "google_kms_autokey_config" "autokey_config" {
  provider    = google-beta
  folder      = google_folder.autokey_folder.folder_id
  key_project = "projects/${google_project.key_management_project.project_id}"
  key_project_resolution_mode = "DEDICATED_KEY_PROJECT"
  /* For folder scope, valid values are DEDICATED_KEY_PROJECT,
     RESOURCE_PROJECT, and DISABLED. With DEDICATED_KEY_PROJECT, define the
    key_project as well. With RESOURCE_PROJECT, omit key_project. Keys will
    be created in the same project as the protected resource. */
}

Configura l'agente di servizio Cloud KMS

L'agente di servizio Cloud KMS per un progetto di chiavi crea chiavi e applica i binding dei criteri IAM durante la creazione delle risorse, per conto di un amministratore Cloud KMS umano. Per poter creare e assegnare chiavi, l'agente di servizio Cloud KMS richiede le autorizzazioni di amministratore Cloud KMS.

gcloud

  1. Crea l'agente di servizio Cloud KMS:

    gcloud beta services identity create --service=cloudkms.googleapis.com \
        --project=PROJECT_NUMBER
    

    Sostituisci PROJECT_NUMBER con il numero di progetto del progetto chiave.

    L'output è simile al seguente:

    Service identity created: service-PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com
    

    L'output del comando indica che l'account di servizio Cloud EKM (con il sottodominio gcp-sa-ekms) è stato creato. Tuttavia, il comando crea anche il service agent Cloud KMS (con il sottodominio gcp-sa-cloudkms), che è il service agent che utilizzerai in seguito in queste istruzioni.

  2. Concedi le autorizzazioni di amministratore Cloud KMS al service agent:

    gcloud projects add-iam-policy-binding PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
    

    Sostituisci PROJECT_NUMBER con il numero di progetto del progetto chiave.

Terraform

# Create the Cloud KMS service agent
resource "google_project_service_identity" "KMS_Service_Agent" {
  provider   = google-beta
  service    = "cloudkms.googleapis.com"
  project    = google_project.key_management_project.project_id
  depends_on = [google_project.key_management_project]
}

/* Grant role for the Cloud KMS service agent to use delegated
  Cloud KMS administrator permissions */
resource "google_project_iam_member" "autokey_project_admin" {
  project = google_project.key_management_project.project_id
  role    = "roles/cloudkms.admin"
  member  = "serviceAccount:service-${google_project.key_management_project.number}@gcp-sa-cloudkms.iam.gserviceaccount.com"
}

Abilita Autokey con l'archiviazione delle chiavi nello stesso progetto

Quando utilizzi Autokey con l'archiviazione delle chiavi nello stesso progetto, Autokey crea le chiavi all'interno dello stesso progetto delle risorse che proteggono. I progetti che utilizzano l'archiviazione delle chiavi nello stesso progetto possono esistere all'interno di cartelle che utilizzano l'archiviazione delle chiavi in un progetto dedicato. Quando Autokey è abilitato in un progetto, la configurazione Autokey a livello di progetto sostituisce la configurazione Autokey nella cartella padre.

Per abilitare Autokey con l'archiviazione delle chiavi nello stesso progetto per un singolo progetto, completa i seguenti passaggi:

Console

  1. Nella console Google Cloud , vai alla pagina Controlli di gestione delle chiavi.

    Vai ai controlli di gestione delle chiavi

  2. Nel selettore di contesto, seleziona il progetto in cui vuoi attivare Autokey con l'archiviazione delle chiavi nello stesso progetto.
  3. Nella sezione Autokey, fai clic su Gestisci.
  4. Fai clic su Configura.
  5. In Origine della configurazione, seleziona Configura per il progetto.
  6. In Configurazione, seleziona Abilita l'archiviazione delle chiavi nello stesso progetto.
  7. Fai clic su Invia.

    Un messaggio conferma che Cloud KMS Autokey è abilitato nel progetto.

gcloud

  1. Crea un file YAML che contenga quanto segue AutokeyConfig:

    name: projects/PROJECT_ID/autokeyConfig
    keyProjectResolutionMode: RESOURCE_PROJECT
    keyProject:
    

    Sostituisci PROJECT_ID con l'identificatore del progetto in cui vuoi abilitare Autokey con l'archiviazione delle chiavi nello stesso progetto.

  2. Applica AutokeyConfig al progetto:

    gcloud kms autokey-config update AUTOKEY_CONFIG_PATH
    

    Sostituisci AUTOKEY_CONFIG_PATH con il percorso del file YAML che hai creato nel passaggio precedente.

  3. Abilita l'API Cloud KMS sul progetto:

    gcloud services enable cloudkms.googleapis.com
    

REST

  1. Utilizzando l'API REST, crea AutokeyConfig per il progetto in cui vuoi attivare Autokey con l'archiviazione delle chiavi nello stesso progetto:

    curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/autokeyConfig?updateMask=keyProjectResolutionMode,keyProject" \
        --request "PATCH" \
        --header "authorization: Bearer TOKEN" \
        --header "content-type: application/json" \
        --data '{"keyProjectResolutionMode": "RESOURCE_PROJECT", "keyProject": ""}'
    

    Sostituisci PROJECT_ID con l'ID del progetto in cui vuoi attivare Autokey.

  2. In gcloud CLI, abilita l'API Cloud KMS nel progetto:

    gcloud services enable cloudkms.googleapis.com
    

Terraform

Per abilitare Autokey con l'archiviazione delle chiavi nello stesso progetto in un singolo progetto, utilizza una risorsa autokey_config_project simile alla seguente:

/* To set autokey config for a project */
resource "google_kms_autokey_config" "autokey_config_project" {
  provider = google-beta
  project = "projects/${google_project.key_management_project.project_id}"
  key_project_resolution_mode = "RESOURCE_PROJECT"
  # For project scope, valid values are RESOURCE_PROJECT or DISABLED
}

Per abilitare Autokey con l'archiviazione delle chiavi nello stesso progetto per tutti i progetti all'interno di una cartella, completa i seguenti passaggi:

Console

  1. Nella console Google Cloud , vai alla pagina Controlli di gestione delle chiavi.

    Vai ai controlli di gestione delle chiavi

  2. Nel selettore di contesto, seleziona la cartella in cui vuoi attivare Autokey con l'archiviazione delle chiavi nello stesso progetto.
  3. Fai clic su Configura.
  4. In Origine configurazione, seleziona Configura per cartella.
  5. In Configurazione, seleziona Abilita l'archiviazione delle chiavi nello stesso progetto.
  6. Fai clic su Invia.

    Un messaggio conferma che Cloud KMS Autokey è abilitato nella cartella.

gcloud

  1. Crea un file YAML che contenga quanto segue AutokeyConfig:

    name: folders/FOLDER_NUMBER/autokeyConfig
    keyProjectResolutionMode: RESOURCE_PROJECT
    keyProject:
    

    Sostituisci FOLDER_NUMBER con il numero della cartella in cui vuoi attivare Autokey con l'archiviazione delle chiavi nello stesso progetto.

  2. Applica AutokeyConfig alla cartella:

    gcloud kms autokey-config update AUTOKEY_CONFIG_PATH
    

    Sostituisci AUTOKEY_CONFIG_PATH con il percorso del file YAML che hai creato nel passaggio precedente.

REST

  1. Utilizzando l'API REST, crea AutokeyConfig per la cartella in cui vuoi attivare Autokey con l'archiviazione delle chiavi nello stesso progetto:

    curl "https://cloudkms.googleapis.com/v1/folders/FOLDER_ID/autokeyConfig?updateMask=keyProjectResolutionMode,keyProject" \
        --request "PATCH" \
        --header "authorization: Bearer TOKEN" \
        --header "content-type: application/json" \
        --data '{"keyProjectResolutionMode": "RESOURCE_PROJECT", "keyProject": ""}'
    

    Sostituisci FOLDER_ID con l'ID della cartella in cui vuoi abilitare Autokey. Questo comando abilita Autokey con l'archiviazione delle chiavi nello stesso progetto per tutti i progetti all'interno della cartella.

  2. In gcloud CLI, attiva l'API Cloud KMS in ogni progetto in cui vuoi utilizzare Autokey con l'archiviazione delle chiavi nello stesso progetto:

    gcloud services enable cloudkms.googleapis.com
    

    Puoi abilitare l'API Cloud KMS in ogni progetto contemporaneamente oppure abilitarla nei singoli progetti in base alle esigenze. I tuoi sviluppatori non possono utilizzare Autokey nel progetto finché l'API Cloud KMS non è abilitata per quel progetto.

Terraform

Per abilitare Autokey con l'archiviazione delle chiavi nello stesso progetto in tutti i progetti di una cartella, utilizza una risorsa folder_config simile alla seguente:

/* Enable AutokeyConfig on a folder */
resource "google_kms_autokey_config" "folder_config" {
  provider    = google-beta
  folder      = google_folder.autokey_folder.name
  key_project_resolution_mode = "RESOURCE_PROJECT"
  /* For folder scope, valid values are DEDICATED_KEY_PROJECT,
     RESOURCE_PROJECT, or DISABLED. With DEDICATED_KEY_PROJECT, define the
     key_project as well. With RESOURCE_PROJECT, omit key_project. Keys will
     be created in the same project as the protected resource. */
}

Cancella configurazione Autokey

Puoi cancellare la configurazione Autokey in una cartella o un progetto per ripristinare l'utilizzo della configurazione della cartella padre.

Console

  1. Nella console Google Cloud , vai alla pagina Controlli di gestione delle chiavi.

    Vai ai controlli di gestione delle chiavi

  2. Nel selettore di contesto, seleziona la cartella o il progetto in cui vuoi cancellare la configurazione Autokey.
  3. Nella sezione Autokey, fai clic su Gestisci.
  4. Fai clic su Configura.
  5. In Origine configurazione, seleziona Eredita.
  6. Fai clic su Invia.

gcloud

  1. Crea un file YAML che contenga quanto segue AutokeyConfig:

    name: RESOURCE_TYPE/RESOURCE_ID/autokeyConfig
    keyProjectResolutionMode: KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED
    keyProject:
    

    Sostituisci quanto segue:

    • RESOURCE_TYPE: il tipo di risorsa in cui vuoi cancellare la configurazione di Autokey. Da impostare su folders o projects.
    • RESOURCE_ID: l'identificatore della cartella in cui vuoi cancellare la configurazione di Autokey.
  2. Applica AutokeyConfig alla cartella o al progetto:

    gcloud kms autokey-config update AUTOKEY_CONFIG_PATH
    

    Sostituisci AUTOKEY_CONFIG_PATH con il percorso del file YAML che hai creato nel passaggio precedente.

REST

Deseleziona AutokeyConfig per la cartella o il progetto in cui vuoi ripristinare la configurazione Autokey ereditata:

curl "https://cloudkms.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/autokeyConfig?updateMask:keyProjectResolutionMode,keyProject" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{"keyProjectResolutionMode": "KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED", "keyProject": ""}'

Sostituisci quanto segue:

  • RESOURCE_TYPE: il tipo di risorsa in cui vuoi disattivare Autokey. Da impostare su folders o projects.
  • RESOURCE_ID: l'identificatore della cartella in cui vuoi disattivare Autokey con l'archiviazione delle chiavi nello stesso progetto.

Terraform

# Clear AutokeyConfig for the folder
resource "google_kms_autokey_config" "autokey_config" {
  provider    = google-beta
  folder      = google_folder.autokey_folder.folder_id
  key_project = ""
  key_project_resolution_mode = "KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED"
}

Visualizza la configurazione Autokey effettiva

Puoi visualizzare la configurazione Autokey effettiva di una cartella o di un progetto. La configurazione Autokey effettiva indica quanto segue:

  • Indica se Autokey è abilitato per la risorsa selezionata.
  • Se Autokey è abilitato, indica se la risorsa selezionata utilizza l'archiviazione delle chiavi in un progetto dedicato o nello stesso progetto.
  • Se la risorsa selezionata utilizza l'archiviazione delle chiavi in un progetto dedicato, l'identificatore della risorsa del progetto di chiavi dedicato.
  • Indica se questa configurazione Autokey viene ereditata da una cartella padre o configurata nella risorsa selezionata.

Console

  1. Nella console Google Cloud , vai alla pagina Controlli di gestione delle chiavi.

    Vai ai controlli di gestione delle chiavi

  2. Nel selettore di contesto, seleziona la cartella o il progetto in cui vuoi visualizzare le impostazioni di Autokey.
  3. Nella sezione Autokey, fai clic su Gestisci.

gcloud

Visualizza l'AutokeyConfig effettivo:

gcloud kms autokey-config show-effective-config \
    --RESOURCE_TYPE=RESOURCE_ID

Sostituisci quanto segue:

  • RESOURCE_TYPE: il tipo di risorsa in cui vuoi visualizzare la configurazione Autokey effettiva. Da impostare su folder o project.
  • RESOURCE_ID: l'identificatore della risorsa in cui vuoi visualizzare la configurazione Autokey effettiva.

L'output è simile al seguente:

keyProject: KEY_PROJECT
keyProjectResolutionMode: KEY_PROJECT_RESOLUTION_MODE
source:
  name: RESOURCE_IDENTIFIER

Questo output include i seguenti valori:

  • KEY_PROJECT: l'identificatore della risorsa del progetto chiave, ad esempio projects/PROJECT_ID. Se Autokey è disabilitata o se la risorsa è una cartella in cui è abilitata l'archiviazione delle chiavi nello stesso progetto, questo campo viene omesso.
  • KEY_PROJECT_RESOLUTION_MODE: il keyProjectResolutionMode della risorsa, ad esempio RESOURCE_PROJECT, DEDICATED_KEY_PROJECT o DISABLED. Se Autokey non è abilitato nella risorsa o in qualsiasi risorsa padre, questo campo viene omesso.
  • RESOURCE_IDENTIFIER: l'identificatore della risorsa in cui è configurato AutokeyConfig. In questo modo puoi determinare se AutokeyConfig viene ereditato da una risorsa padre o configurato nella risorsa su cui hai eseguito la query.

REST

Visualizza il AutokeyConfig effettivo per una cartella o un progetto:

curl "https://cloudkms.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:showEffectiveAutokeyConfig" \
    --request "GET" \
    --header "authorization: Bearer TOKEN"
  ```

Replace the following:
  • RESOURCE_TYPE: il tipo di risorsa in cui vuoi visualizzare la configurazione di Autokey. Da impostare su folders o projects.
  • RESOURCE_ID: l'identificatore della risorsa in cui vuoi visualizzare la configurazione di Autokey.

L'output è simile al seguente:

{
  "keyProject": KEY_PROJECT,
  "keyProjectResolutionMode": KEY_PROJECT_RESOLUTION_MODE,
  "source": {
    RESOURCE_IDENTIFIER
  }
}

Questo output include i seguenti valori:

  • KEY_PROJECT: l'identificatore della risorsa del progetto chiave, ad esempio projects/PROJECT_ID. Se Autokey è disabilitato o se la risorsa è una cartella in cui è abilitata l'archiviazione delle chiavi nello stesso progetto, questo campo viene omesso.
  • KEY_PROJECT_RESOLUTION_MODE: il keyProjectResolutionMode della risorsa, ad esempio RESOURCE_PROJECT, DEDICATED_KEY_PROJECT o DISABLED. Se Autokey non è abilitato nella risorsa o in qualsiasi risorsa padre, questo campo viene omesso.
  • RESOURCE_IDENTIFIER: l'identificatore della risorsa in cui è configurato AutokeyConfig. In questo modo puoi determinare se AutokeyConfig viene ereditato da una risorsa padre o configurato nella risorsa su cui hai eseguito la query.

SQL

Puoi utilizzare una query SQL con Cloud Asset Inventory per valutare la configurazione Autokey effettiva per tutti i progetti all'interno di una cartella o di un'organizzazione.

  1. Imposta le variabili di ambiente bash per l'ID organizzazione e l'ambito di ricerca.

    export ORG_ID="ORGANIZATION_ID"
    export TARGET_SCOPE="RESOURCE_TYPE/RESOURCE_ID" 
    

    Sostituisci quanto segue:

    • ORGANIZATION_ID: l'identificatore numerico della tua organizzazione.
    • RESOURCE_TYPE: il tipo di risorsa in cui vuoi visualizzare le configurazioni Autokey effettive. Imposta organizations per visualizzare le configurazioni per tutti i progetti nella tua organizzazione o folders per visualizzare le configurazioni per tutti i progetti all'interno di una cartella specifica.
    • RESOURCE_ID: l'identificatore numerico dell'organizzazione o della cartella in cui vuoi visualizzare le configurazioni Autokey effettive.
  2. Utilizza il comando gcloud asset query per eseguire la query.

    gcloud asset query \
        --organization="${ORG_ID}" \
        --statement="
    WITH ProjectConfigs AS (
      SELECT
        p.name AS project_name,
        ARRAY_AGG(
          STRUCT(
            ancestor AS config_source,
            c.resource.data.state AS state,
            c.resource.data.keyProjectResolutionMode AS resolution_mode,
            c.resource.data.keyProject AS key_project
          )
          ORDER BY offset
          LIMIT 1
        )[SAFE_OFFSET(0)] AS effective_config
      FROM
        STANDARD_METADATA p
      CROSS JOIN
        UNNEST(p.ancestors) AS ancestor WITH OFFSET AS offset
      JOIN
        cloudkms_googleapis_com_AutokeyConfig c
      ON
        ancestor = REGEXP_REPLACE(c.name, r'^//cloudkms\.googleapis\.com/([^/]+/\d+)/autokeyConfig$', r'\1')
      WHERE
        p.assetType = 'cloudresourcemanager.googleapis.com/Project'
      GROUP BY
        p.name
    )
    SELECT
      REPLACE(r.name, '//cloudresourcemanager.googleapis.com/', '') AS project_name,
      p.resource.data.projectId AS project_id,
      COALESCE(rc.effective_config.config_source, 'No Autokey') AS effective_config_source,
      rc.effective_config.state AS autokey_config_state,
      rc.effective_config.resolution_mode AS resolution_mode,
      CASE 
        WHEN rc.effective_config.resolution_mode = 'RESOURCE_PROJECT' THEN p.resource.data.projectId
        ELSE COALESCE(REPLACE(rc.effective_config.key_project, 'projects/', ''), 'No Key Project')
      END AS key_project
    FROM
      STANDARD_METADATA r
    LEFT JOIN
      ProjectConfigs rc
    ON
      r.name = rc.project_name
    LEFT JOIN
      cloudresourcemanager_googleapis_com_Project p
    ON
      r.name = p.name
    WHERE
      r.assetType = 'cloudresourcemanager.googleapis.com/Project'
      AND '${TARGET_SCOPE}' IN UNNEST(r.ancestors)
    "
    

    L'output include i seguenti campi:

    • project_number: l'identificatore numerico completo di ogni risorsa progetto, ad esempio projects/PROJECT_NUMBER.
    • project_id: l'identificatore di ogni progetto, ad esempio PROJECT_ID.
    • effective_config_source: l'identificatore della risorsa in cui è impostata la configurazione Autokey del progetto, ad esempio folders/FOLDER_NUMBER se la configurazione viene ereditata da una cartella padre o projects/PROJECT_NUMBER se la configurazione è impostata nel progetto. Se il progetto non ha o non eredita un AutokeyConfig, questo campo mostra No Autokey.
    • autokey_config_state: indica se una configurazione Autokey è ACTIVE nella cartella, anche se la configurazione è DISABLED. Se il progetto non ha o non eredita un AutokeyConfig, questo campo è vuoto.
    • resolution_mode: la modalità di risoluzione del progetto chiave della configurazione Autokey effettiva nel progetto.
    • key_project: indica dove Autokey crea le chiavi per le risorse nel progetto, ad esempio projects/KEY_PROJECT_ID quando il progetto utilizza l'archiviazione delle chiavi in un progetto dedicato o RESOURCE_PROJECT_ID quando il progetto utilizza l'archiviazione delle chiavi nello stesso progetto. Quando Autokey non è abilitato nel progetto, questo campo mostra No key project.

Disattivare Autokey

Gli stessi ruoli che possono attivare Autokey possono disattivarla. Per disattivare Autokey, puoi deselezionare AutokeyConfig o impostare feedbackKeyProjectResolutionMode su DISABLED. Puoi disattivare Autokey in una cartella o in un progetto. Puoi anche disabilitare Autokey per singoli progetti all'interno di una cartella in cui Autokey è abilitato.

Dopo aver disattivato Autokey per una cartella o un progetto, il service agent Cloud KMS non può più creare chiavi per gli sviluppatori quando creano risorse in quella cartella o in quel progetto.

Se vuoi disattivare completamente Autokey, ti consigliamo di rimuovere anche i binding IAM per i ruoli roles/cloudkms.autokeyAdmin e roles/cloudkms.autokeyUser.

La disattivazione di Autokey non influisce sulle chiavi esistenti nel progetto di chiavi. Puoi continuare a utilizzare queste chiavi per proteggere le tue risorse.

Disattivare Autokey per una cartella o un progetto

Console

  1. Nella console Google Cloud , vai alla pagina Controlli di gestione delle chiavi.

    Vai ai controlli di gestione delle chiavi

  2. Nel selettore di contesto, seleziona la cartella o il progetto in cui vuoi disattivare Autokey.
  3. Nella sezione Autokey, fai clic su Gestisci.
  4. Fai clic su Configura.
  5. In Origine configurazione, seleziona Configura per cartella o Configura per progetto.
  6. In Configurazione, seleziona Disabilita Autokey per la cartella o Disabilita Autokey per il progetto.
  7. Fai clic su Invia.

    Viene visualizzato un messaggio che ti chiede di confermare che vuoi disattivare Autokey.

  8. Per disattivare Autokey, fai clic su Conferma.

    Un messaggio conferma che Cloud KMS Autokey è disattivato.

gcloud

  1. Crea un file YAML che contenga quanto segue AutokeyConfig:

    name: RESOURCE_TYPE/RESOURCE_ID/autokeyConfig
    keyProjectResolutionMode: DISABLED
    keyProject:
    

    Sostituisci quanto segue:

    • RESOURCE_TYPE: il tipo di risorsa in cui vuoi disattivare Autokey. Da impostare su folders o projects.
    • RESOURCE_ID: l'identificatore della cartella in cui vuoi disattivare Autokey con l'archiviazione delle chiavi nello stesso progetto.
  2. Applica AutokeyConfig alla cartella o al progetto:

    gcloud kms autokey-config update AUTOKEY_CONFIG_PATH
    

    Sostituisci AUTOKEY_CONFIG_PATH con il percorso del file YAML che hai creato nel passaggio precedente.

REST

Aggiorna AutokeyConfig per la cartella o il progetto in cui vuoi disattivare Autokey:

curl "https://cloudkms.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/autokeyConfig?updateMask:keyProjectResolutionMode,keyProject" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{"keyProjectResolutionMode": "DISABLED", "keyProject": ""}'

Sostituisci quanto segue:

  • RESOURCE_TYPE: il tipo di risorsa in cui vuoi disattivare Autokey. Da impostare su folders o projects.
  • RESOURCE_ID: l'identificatore della cartella in cui vuoi disattivare Autokey con l'archiviazione delle chiavi nello stesso progetto.

Terraform

# Clear AutokeyConfig for the folder
resource "google_kms_autokey_config" "autokey_config" {
  provider    = google-beta
  folder      = google_folder.autokey_folder.folder_id
  key_project = ""
  key_project_resolution_mode = "DISABLED"
}

Revocare i ruoli Autokey

La disattivazione di Autokey tramite l'aggiornamento di AutokeyConfig impedisce all'agente di servizio Cloud KMS di eseguire il provisioning di nuove chiavi nel progetto o nella cartella interessati. Tuttavia, se vuoi disattivare completamente Autokey, ti consigliamo di rimuovere anche i binding IAM per i ruoli roles/cloudkms.autokeyAdmin e roles/cloudkms.autokeyUser.

  1. (Facoltativo) Revoca il ruolo roles/cloudkms.autokeyAdmin:

    gcloud resource-manager folders remove-iam-policy-binding \
        FOLDER_ID --role=roles/cloudkms.autokeyAdmin \
        --member=user:USER_EMAIL
    

    Sostituisci quanto segue:

    • FOLDER_ID: l'ID della cartella in cui hai disattivato Autokey.
    • USER_EMAIL: l'indirizzo email dell'utente a cui vuoi revocare l'autorizzazione per gestire Autokey.
  2. (Facoltativo) Revoca il ruolo roles/cloudkms.autokeyUser a livello di cartella:

    gcloud resource-manager folders remove-iam-policy-binding \
        FOLDER_ID --role=roles/cloudkms.autokeyUser \
        --member=user:USER_EMAIL
    

    Sostituisci quanto segue:

    • FOLDER_ID: l'ID della cartella in cui hai disattivato Autokey.
    • USER_EMAIL: l'indirizzo email dell'utente a cui vuoi revocare l'autorizzazione a utilizzare Autokey.
  3. (Facoltativo) Revoca il ruolo roles/cloudkms.autokeyUser a livello di progetto:

    gcloud projects remove-iam-policy-binding \
        RESOURCE_PROJECT_NUMBER \
        --role=roles/cloudkms.autokeyUser \
        --member=user:USER_EMAIL
    

    Sostituisci quanto segue:

    • RESOURCE_PROJECT_NUMBER: il numero di progetto di un progetto di risorse all'interno della cartella in cui hai disattivato Autokey.
    • USER_EMAIL: l'indirizzo email dell'utente a cui vuoi revocare l'autorizzazione a utilizzare Autokey.
  4. (Facoltativo) Se non prevedi di continuare a utilizzare il progetto chiave per Autokey per altre cartelle, revoca il ruolo roles/cloudkms.admin per il service agent Cloud KMS:

    gcloud projects remove-iam-policy-binding \
        KEY_PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
    

    Sostituisci KEY_PROJECT_NUMBER con l'ID numerico del progetto chiave.

  5. (Facoltativo) Se non prevedi di continuare a utilizzare le chiavi create all'interno del progetto di chiavi, revoca il ruolo roles/cloudkms.admin per l'amministratore Cloud KMS:

    gcloud projects remove-iam-policy-binding \
        KEY_PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=user:KEY_ADMIN_EMAIL
    

    Sostituisci quanto segue:

    • KEY_PROJECT_NUMBER: il numero del progetto chiave.
    • KEY_ADMIN_EMAIL: l'indirizzo email dell'utente per cui vuoi revocare l'autorizzazione a configurare Autokey.

Passaggi successivi