Abilita Cloud KMS Autokey

Questa pagina mostra come abilitare e configurare Cloud KMS Autokey su una nella cartella delle risorse. Per ulteriori informazioni su Autokey, vedi Panoramica di Autokey. I passaggi in questa pagina deve essere completato da un amministratore della sicurezza.

Prima di iniziare

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

  • Una risorsa organizzazione contenente una cartella in cui vuoi abilitare Autokey. Se non hai una cartella in cui vuoi abilitare Autokey, puoi creare una nuova risorsa cartella. L'abilitazione di Autokey in questa cartella abilita Autokey per tutti i progetti di risorse all'interno della cartella.
  • Se hai progetti di risorse in cui vuoi usare Autokey non si trovano all'interno di una cartella in cui abiliti Autokey, puoi spostare i progetti di risorse esistenti in nuove cartelle.

Ruoli obbligatori

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

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questi ruoli predefiniti le autorizzazioni necessarie per abilitare e configurare Autokey. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per abilitare e configurare 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 riuscire a ottenere queste autorizzazioni con ruoli personalizzati altri ruoli predefiniti.

Decidi come attivare Autokey

Puoi abilitare Autokey all'interno del tuo framework Infrastructure as Code di fatturazione utilizzando Terraform per apportare le modifiche necessarie alla configurazione. Se vuoi utilizzare Terraform per abilitare Autokey, consulta Abilitare Autokey utilizzando Terraform in questa pagina. Se non vuoi usare Terraform, inizia seguendo le istruzioni nella sezione successiva.

Configura il progetto chiave

Consigliamo di creare un nuovo progetto chiave per contenere le risorse Cloud KMS creato da Autokey. Devi creare il progetto chiave all'interno risorsa dell'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 da Configurare il progetto chiave Autokey in questa pagina.

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

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

Se la tua organizzazione utilizza constraints/gcp.restrictCmekCryptoKeyProjects vincolo del criterio dell'organizzazione per garantire che tutte le CMEK provengano da una chiave specificata devi aggiungere il progetto chiave all'elenco dei progetti consentiti. Per Per saperne di più sul criterio dell'organizzazione CMEK, vedi Organizzazione CMEK .

Crea 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 quando vogliamo creare un progetto.
  3. Fai clic su Create project (Crea progetto).
  4. Nella finestra Nuovo progetto che viene visualizzata, inserisci un nome per il progetto e seleziona un account di fatturazione. Il nome di un progetto può contenere solo lettere, numeri, virgolette singole, trattini, spazi o punti esclamativi, inoltre devono essere tra 4 e 30 caratteri.
  5. In Località, seleziona la risorsa che vuoi impostare come padre il tuo progetto 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 il keyring.
    • PARENT_TYPE: il tipo di risorsa in cui in cui vuoi creare il nuovo progetto chiave. Inserisci organization per crea il nuovo progetto chiave in una determinata organizzazione oppure inserisci folder per creare il nuovo progetto chiave in una determinata cartella.
    • PARENT_ID: l'ID dell'organizzazione o cartella in cui vuoi creare il progetto chiave.

prepara il progetto chiave Autokey

Console

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

    Abilitare l'API

  2. Se utilizzi un nuovo progetto chiave, concedi a Cloud KMS le autorizzazioni di amministratore per il progetto chiave utenti amministratore:

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

      Vai a IAM

    2. Seleziona il progetto chiave.

    3. Fai clic su Concedi Accedi 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 chiave:

    gcloud services enable cloudkms.googleapis.com
    
  2. Concedi le autorizzazioni di amministratore di Cloud KMS al progetto chiave agli utenti amministratori 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 della chiave progetto.
    • KEY_ADMIN_EMAIL: l'indirizzo email dell'utente responsabile della gestione delle chiavi Cloud KMS.

Abilita Cloud KMS Autokey su una cartella di 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 abilitare Autokey.

  3. Fai clic su Attiva.

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

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

API

Crea il 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 in cui vuoi abilitare Autokey.
  • PROJECT_ID: l'ID del progetto chiave.

Configura l'agente di servizio Cloud KMS

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

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

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

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

Concedi ruoli utente ad Autokey

Prima che i tuoi sviluppatori possano utilizzare Autokey, devi concedere loro ruolo richiesto. Puoi concedere il ruolo a livello di cartella o a livello di progetto livello. Questo ruolo consente agli sviluppatori di richiedere chiavi a 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 del cartella in cui vuoi abilitare Autokey.
    • USER_EMAIL: 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_NUMBER \
        --role=roles/cloudkms.autokeyUser \
        --member=user:USER_EMAIL
    

    Sostituisci quanto segue:

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

I tuoi sviluppatori Autokey ora possono creare chiavi on demand. Per ulteriori informazioni per creare risorse protette mediante chiavi create on demand da Autokey, consulta Creare risorse protette utilizzando Autokey.

Abilita Autokey utilizzando Terraform

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

  • Crea una cartella di risorse
  • Crea un progetto chiave
  • Concedere autorizzazioni utente
  • Configura l'agente di servizio Cloud KMS
  • Abilita 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 = google_project.key_management_project.project_id
}

Sostituisci quanto segue:

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

Applica l'utilizzo di Autokey

Se vuoi applicare in modo forzato l'utilizzo di Autokey all'interno di una cartella, puoi farlo combinando i controlli dell'accesso IAM con i criteri dell'organizzazione CMEK. Questa operazione funziona rimuovendo le autorizzazioni di creazione delle chiavi da entità diverse da dell'agente di servizio Cloud KMS, richiedendo che tutte le risorse è protetta da CMEK usando il progetto chiave Autokey.

Per applicare l'utilizzo di Autokey all'interno di una cartella, completa i seguenti passaggi:

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

  2. Imposta un criterio dell'organizzazione sulla cartella per richiedere che le risorse siano protetta con una CMEK tramite constraints/gcp.restrictNonCmekServices di blocco. Per ulteriori informazioni, vedi Richiedi la protezione CMEK.

  3. Imposta un criterio dell'organizzazione sulla cartella per richiedere le chiavi utilizzate per CMEK deve provenire dal progetto chiave Autokey utilizzando Vincolo constraints/gcp.restrictCmekCryptoKeyProjects. Per ulteriori informazioni le informazioni, vedi Limita l'utilizzo delle chiavi Cloud KMS per CMEK.

Disattiva Autokey

Cloud KMS Autokey è abilitato e disabilitato a livello di cartella. Uguale i ruoli che possono abilitare Autokey per una cartella possono disabilitare Autokey per quella cartella. Per disattivare Autokey in una cartella, devi cancellare il AutokeyConfig per rimuovere l'associazione tra la cartella e Progetto chiave Autokey.

Una volta rimossa la configurazione Autokey nella cartella, L'agente di servizio Cloud KMS non può più creare chiavi per gli sviluppatori quando creano risorse nella cartella. Rimozione del collegamento tra la cartella e il progetto chiave disabilita Autokey nella cartella; tuttavia consigliamo di rimuovere anche le associazioni IAM per Ruoli roles/cloudkms.autokeyAdmin e roles/cloudkms.autokeyUser.

La disabilitazione di Autokey non influisce sulle chiavi esistenti nel progetto chiave. Tu puoi continuare a usare queste chiavi per proteggere le tue risorse.

Cancella AutokeyConfig

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 disabilitare Autokey.

  3. Fai clic su Disattiva.

    Viene visualizzato un messaggio che ti chiede di confermare la disattivazione Autokey.

  4. Per disattivare Autokey, fai clic su Conferma.

    Un messaggio conferma che Cloud KMS Autokey è disabilitato per la cartella.

API

Cancella AutokeyConfig per la cartella in cui vuoi disattivare 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 disabilitare Autokey.

Revoca ruoli 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 del in cui hai disabilitato Autokey.
    • USER_EMAIL: l'indirizzo email dell'utente per il quale 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 del in cui hai disabilitato Autokey.
    • USER_EMAIL: l'indirizzo email dell'utente per il quale vuoi revocare l'autorizzazione per 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 del progetto a un progetto di risorsa all'interno della cartella in cui hai disabilitato Autokey.
    • USER_EMAIL: l'indirizzo email dell'utente per il quale vuoi revocare l'autorizzazione per 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 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 chiave.

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

    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 progetto chiave.
    • USER_EMAIL: l'indirizzo email dell'utente per il quale vuoi revocare l'autorizzazione per utilizzare Autokey.

Passaggi successivi