Attivare Autokey di Cloud KMS

Questa pagina illustra come attivare e configurare Cloud KMS Autokey in una cartella delle risorse. Per ulteriori informazioni su Autokey, consulta la panoramica di Autokey. I passaggi descritti in questa pagina devono essere completati da un amministratore della sicurezza.

Prima di iniziare

Prima di poter attivare Cloud KMS Autokey, devi disporre di quanto segue:

  • Una risorsa dell'organizzazione contenente una cartella in cui vuoi attivare Autokey. Se non hai una cartella in cui attivare la funzionalità Autokey, puoi creare una nuova cartella di risorse. L'attivazione di Autokey in questa cartella attiva la funzionalità per tutti i progetti di risorse all'interno della cartella.
  • Se hai progetti di risorse in cui vuoi utilizzare la funzionalità Autokey, ma non si trovano in una cartella in cui la attiverai, puoi spostare i progetti di risorse esistenti in nuove cartelle.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per attivare e configurare Autokey, chiedi all'amministratore di concederti i seguenti ruoli IAM nell'organizzazione o nella cartella:

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

Questi ruoli predefiniti contengono le autorizzazioni necessarie per attivare e configurare Autokey. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per attivare e configurare la funzionalità Autokey sono necessarie le seguenti autorizzazioni:

  • cloudkms.autokeyConfigs.*
  • cloudkms.projects.showEffectiveAutokeyConfig
  • resourcemanager.folders.get
  • resourcemanager.folders.getIamPolicy
  • resourcemanager.folders.setIamPolicy
  • billing.resourceAssociations.create

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

Decidi come attivare la funzionalità Autokey

Puoi attivare Autokey nell'ambito della tua strategia Infrastructure as Code utilizzando Terraform per apportare le modifiche di configurazione necessarie. Se vuoi utilizzare Terraform per attivare Autokey, consulta Attivare Autokey con Terraform in questa pagina. Se non vuoi utilizzare Terraform, inizia seguendo le istruzioni riportate nella sezione successiva.

Configura il progetto principale

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

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

Se in futuro potresti voler eseguire la migrazione ad Assured Workloads, crea il progetto di chiavi nella stessa cartella delle risorse protette da queste chiavi.

Se la tua organizzazione utilizza il constraints/gcp.restrictCmekCryptoKeyProjects vincolo della policy dell'organizzazione per assicurarsi che tutte le CMEK provengano da progetti chiave specificati, devi aggiungere il progetto chiave all'elenco dei progetti consentiti. Per maggiori informazioni sul criterio dell'organizzazione CMEK, consulta i criteri dell'organizzazione CMEK.

Creare un progetto chiave

Console

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

    Vai a Gestisci risorse

  2. In Seleziona organizzazione, seleziona la risorsa dell'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. In Località, seleziona la risorsa che vuoi che sia la principale per il tuo progetto principale.
  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 la chiave automatizzata.
    • PARENT_TYPE: il tipo di risorsa in cui vuoi creare il nuovo progetto chiave. Inserisci organization per creare il nuovo progetto chiave in una determinata organizzazione oppure folder per crearlo in una determinata cartella.
    • PARENT_ID: l'ID dell'organizzazione o della cartella in cui vuoi creare il progetto principale.

Prepara il progetto chiave Autokey

Console

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

    Abilitare l'API

  2. Se utilizzi un nuovo progetto di chiavi, concedi le autorizzazioni di amministratore Cloud KMS al progetto di chiavi. Ripeti i seguenti passaggi per concedere il ruolo Amministratore Cloud KMS a te e a tutti gli altri utenti 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 accesso e 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 della chiave:

    gcloud services enable cloudkms.googleapis.com
    
  2. Concedi le autorizzazioni di amministratore Cloud KMS al progetto della chiave. Ripeti il seguente comando per concedere il ruolo roles/cloudkms.admin a te stesso e a tutti gli altri utenti amministratore di 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 principale.
    • KEY_ADMIN_EMAIL: l'indirizzo email dell'utente responsabile della gestione delle chiavi Cloud KMS.

Abilita Cloud KMS Autokey in una cartella delle risorse

Console

  1. Nella console Google Cloud, vai alla pagina Controlli KMS.

    Vai ai controlli KMS

  2. Dal selettore di contesto, seleziona la cartella in cui vuoi attivare Autokey.

  3. Fai clic su Attiva.

  4. Seleziona il progetto principale e fai clic su Invia.

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

API

Crea AutokeyConfig per la cartella in cui vuoi attivare Autokey:

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

Sostituisci quanto segue:

  • FOLDER_ID: l'ID della cartella dove vuoi attivare la funzionalità Autokey.
  • PROJECT_ID: l'ID del progetto principale.

Configurare l'agente di servizio Cloud KMS

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

  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 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 l'agente di servizio Cloud KMS (con il sottodominio gcp-sa-cloudkms), che è l'agente di servizio che utilizzerai in seguito in queste istruzioni.

  2. Concedi all'agente di servizio le autorizzazioni di amministratore Cloud KMS:

    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 del progetto chiave.

Concedi i ruoli utente di Autokey

Prima che gli sviluppatori possano utilizzare Autokey, devi concedere loro il ruolo richiesto. Puoi concedere il ruolo a livello di cartella o di progetto. Questo ruolo consente agli sviluppatori di richiedere chiavi all'agente di servizio Cloud KMS durante la creazione di risorse nella cartella o nel progetto.

Scegli uno o entrambi i seguenti passaggi:

  • Concedi il ruolo roles/cloudkms.autokeyUser a livello di cartella:

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

    Sostituisci quanto segue:

    • FOLDER_ID: l'ID della cartella in cui vuoi attivare la funzionalità Autokey.
    • USER_EMAIL: l'indirizzo email dell'utente a cui vuoi concedere l'autorizzazione per utilizzare Autokey.
  • Concedi il ruolo roles/cloudkms.autokeyUser a livello di progetto:

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto della risorsa.
    • USER_EMAIL: l'indirizzo email dell'utente a cui vuoi concedere l'autorizzazione per utilizzare Autokey.

Ora gli sviluppatori di Autokey possono creare chiavi su richiesta. Per scoprire come creare risorse protette utilizzando le chiavi create su richiesta da Autokey, consulta Creare risorse protette utilizzando Autokey.

Attivare Autokey utilizzando Terraform

Il seguente esempio di Terraform automatizza i seguenti passaggi di configurazione:

  • Creare una cartella di risorse
  • Creare un progetto chiave
  • Concedere le autorizzazioni utente
  • Configurare l'agente di servizio Cloud KMS
  • Attivare la funzionalità Autokey

Devi creare separatamente i progetti di risorse all'interno della cartella delle risorse.

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]
}

/* The project ID to use for the 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 Key Management Project. This project will contain the Key Rings and Keys generated by Cloud KMS Autokey"
  type        = string
  default     = "KEY_PROJECT_ID"
}

# Create a new folder
resource "google_folder" "autokey_folder" {
  parent       = "organizations/${var.organization_ID}"
  display_name = "autokey_folder"
}

# 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
}

# 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
}

# Grant role for Cloud KMS admins to use Autokey in the 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 ]
}

# 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]
}

# Create 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 admin 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"
}

/* Enable AutokeyConfig in this 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}"
}

Sostituisci quanto segue:

  • BILLING_ACCOUNT_ID: il tuo ID account di fatturazione Google Cloud. L'ID account di fatturazione è un valore alfanumerico di 18 caratteri separato da trattini, ad esempio 010101-F0FFF0-10XX01.
  • AUTOKEY_ADMIN_USER_IDS: un elenco di indirizzi email per gli utenti che devono avere il ruolo roles/cloudkms.autokeyAdmin, ad esempio "Ariel@example.com", "Charlie@example.com".
  • AUTOKEY_DEVELOPER_USER_IDS: un elenco di indirizzi email per gli utenti che devono avere il ruolo roles/cloudkms.autokeyUser, ad esempio "Kalani@example.com", "Mahan@example.com".
  • KEY_PROJECT_ADMIN_USER_IDS: un elenco di indirizzi email per gli utenti che devono avere il ruolo roles/cloudkms.admin, ad esempio "Sasha@example.com", "Nur@example.com".
  • KEY_PROJECT_ID: l'ID da utilizzare per il progetto chiave, ad esempio autokey-key-project.

Applicare l'utilizzo di Autokey

Se vuoi applicare l'utilizzo di Autokey all'interno di una cartella, puoi farlo combinando i controlli dell'accesso IAM con i criteri dell'organizzazione CMEK. Questo avvienerimuovendo le autorizzazioni di creazione delle chiavi da entità diverse dall'agente di servizio Cloud KMS e richiedendo poi che tutte le risorse siano protette da CMEK utilizzando il progetto di chiavi Autokey.

Per applicare l'utilizzo di Autokey all'interno di una cartella:

  1. Rimuovi l'accesso per creare manualmente le chiavi nel progetto di chiavi. Se le chiavi non possono essere create manualmente, in questo progetto possono essere create solo le chiavi create da Autokey. Per ulteriori informazioni sul controllo dell'accesso, consulta Controllo dell'accesso con IAM.

  2. Imposta un criterio dell'organizzazione sulla cartella per richiedere che le risorse debbano essere protette con una CMEK utilizzando il vincolo constraints/gcp.restrictNonCmekServices. Per ulteriori informazioni, consulta Requisire la protezione CMEK.

  3. Imposta un criterio dell'organizzazione sulla cartella per richiedere che le chiavi utilizzate per la CMEK devano provenire dal progetto di chiavi Autokey utilizzando il vincolo constraints/gcp.restrictCmekCryptoKeyProjects. Per ulteriori informazioni, consulta Limitare l'utilizzo delle chiavi Cloud KMS per CMEK.

Disattivare la funzionalità Autokey

Cloud KMS Autokey viene attivato e disattivato a livello di cartella. Gli stessi ruoli che possono attivare Autokey per una cartella possono disattivare Autokey per quella cartella. Per disattivare Autokey in una cartella, devi deselezionare AutokeyConfig per rimuovere l'associazione tra la cartella e il progetto di chiavi Autokey.

Dopo la rimozione della configurazione di Autokey nella cartella, l'agente di servizio Cloud KMS non può più creare chiavi per gli sviluppatori quando creano risorse nella cartella. La rimozione del collegamento tra la cartella e il progetto principale disattiva Autokey nella cartella. Tuttavia, ti consigliamo di rimuovere anche le associazioni 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.

Cancellare AutokeyConfig

Console

  1. Nella console Google Cloud, vai alla pagina Controlli KMS.

    Vai ai controlli KMS

  2. Dal selettore contestuale, seleziona la cartella in cui vuoi disattivare Autokey.

  3. Fai clic su Disattiva.

    Viene visualizzato un messaggio che ti chiede di confermare che vuoi disattivare la funzionalità Autochiave.

  4. Per disattivare la funzionalità Autochiave, fai clic su Conferma.

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

API

Deseleziona AutokeyConfig per la cartella in cui vuoi disattivare la funzionalità Autokey:

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

Sostituisci quanto segue:

  • FOLDER_ID: l'ID della cartella in cui vuoi disattivare la funzionalità Autokey.

Revocare i ruoli di Autokey

  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 la funzionalità Autokey.
    • USER_EMAIL: l'indirizzo email dell'utente per cui vuoi revocare l'autorizzazione a gestire Autochiave.
  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 la funzionalità Autokey.
    • USER_EMAIL: l'indirizzo email dell'utente per cui vuoi revocare l'autorizzazione all'utilizzo di Autochiave.
  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 un progetto di risorse all'interno della cartella in cui hai disattivato la funzionalità Autokey.
    • USER_EMAIL: l'indirizzo email dell'utente per cui vuoi revocare l'autorizzazione all'utilizzo di Autochiave.
  4. (Facoltativo) Se non prevedi di continuare a utilizzare il progetto di chiavi per Autokey per altre cartelle, revoca il ruolo roles/cloudkms.admin per l'agente di servizio 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 principale.

  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 di 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 principale.
    • USER_EMAIL: l'indirizzo email dell'utente per cui vuoi revocare l'autorizzazione all'utilizzo di Autochiave.

Passaggi successivi