Criar recursos protegidos usando o Autokey do Cloud KMS

Nesta página, mostramos como criar recursos protegidos usando chaves criadas pela autokey do Cloud KMS para criptografia. Para mais informações sobre as chaves automáticas, consulte Visão geral das chaves automáticas.

Antes de começar

Antes de criar recursos protegidos usando a autochave, é necessário concluir as etapas a seguir para se preparar:

  1. Se você ainda não tem um projeto de recursos na pasta Autokey, crie um projeto para armazenar os recursos que você planeja criar.
  2. Para receber as permissões necessárias para usar a Autokey para criar recursos protegidos, peça ao administrador para conceder a você o Papel do IAM de usuário da Autokey do Cloud KMS (roles/cloudkms.autokeyUser) na pasta ou no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

    Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

  3. Você também precisa de permissões de criação de recursos na pasta Autokey ou em um projeto de recurso dentro dela. Para mais informações sobre as permissões necessárias para criar cada recurso, consulte a documentação específica do serviço. Para encontrar essa documentação, localize o serviço na tabela de integrações do CMEK e acesse o link para o tipo de recurso que você quer criar.

Como usar a Autokey com recursos do Compute Engine

A chave automática cria uma nova chave para cada disco, imagem e imagem da máquina no mesmo local do recurso que está sendo criado.

O Autokey não cria novas chaves para snapshots. Os snapshots precisam usar a mesma chave usada para criptografar o disco. Se você criar um snapshot usando o console do Google Cloud, a chave de criptografia usada pelo disco será aplicada automaticamente ao snapshot. Se você criar um snapshot usando a CLI gcloud, o Terraform ou a API Compute Engine, vai precisar identificar a chave usada para criptografar o disco e usar essa chave para criptografar o snapshot.

Para mais informações sobre como usar a CMEK com snapshots, consulte Criar um snapshot de um disco criptografado com a CMEK.

Criar um recurso protegido do Compute Engine

Console

Para criar um disco, siga estas etapas:

  1. No console do Google Cloud, acesse a página Discos.

    Acessar "Discos"

  2. Clique em Novo disco e insira as propriedades do novo disco.

  3. Em Criptografia, selecione Chave do Cloud KMS.

  4. Em Tipo de chave, selecione Cloud KMS com Autokey e clique em Solicitar uma nova chave. Uma mensagem indica quando a chave foi criada e está pronta para uso.

  5. Para concluir a criação do disco, clique em Criar.

Siga um processo semelhante para criar recursos de instância, imagem e imagem de máquina de VM protegidos.

Terraform

O exemplo do Terraform a seguir cria um handle de chave e usa a chave retornada para proteger um novo recurso de disco permanente:

resource "google_kms_key_handle" "my_key_handle" {
  provider               = google-beta
  project                = "RESOURCE_PROJECT_ID"
  name                   = "KEY_HANDLE"
  location               = "LOCATION"
  resource_type_selector = "compute.googleapis.com/Disk"
}

resource "google_compute_disk" "persistent_disk" {
  project = "RESOURCE_PROJECT_ID"
  name    = "DISK_NAME"
  type    = "pd-ssd"
  zone    = "ZONE"
  size    = 30
  physical_block_size_bytes = 4096
  disk_encryption_key {
    kms_key_self_link = google_kms_key_handle.my_key_handle.kms_key
  }
}

Substitua:

  • RESOURCE_PROJECT_ID: o ID do projeto de recurso na pasta Autokey em que você quer criar um recurso protegido.
  • KEY_HANDLE: um ID a ser usado para o identificador de chave.
  • LOCATION: o local em que você quer criar o recurso protegido.
  • DISK_NAME: o nome do novo disco.
  • ZONE: a zona do recurso protegido. Precisa ser uma zona no local em que você está criando o recurso. Por exemplo, se você estiver criando o recurso no local us-central1, a zona poderá ser us-central1-a.

O Cloud KMS não permite que você exclua recursos KeyHandle. Se você estiver usando um padrão de criação e destruição, a tentativa de recriar um KeyHandle produzirá um erro ALREADY_EXISTS. Para evitar esse problema, importe um KeyHandle criado anteriormente. Para mais informações, consulte Criar e destruir padrões no Terraform nesta página.

API

  1. Solicite uma nova chave do Cloud KMS criando um KeyHandle:

    curl -H "Content-Type: application/json" \
        -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \
        -d '{"resource_type_selector": "RESOURCE_TYPE"}'
    

    Substitua:

    • USER_PROJECT: o projeto a ser faturado com as cobranças associadas a essa solicitação.
    • RESOURCE_PROJECT_ID: o ID do projeto de recurso na pasta Autokey em que você quer criar um recurso protegido.
    • LOCATION: o local em que você quer criar o recurso protegido.
    • RESOURCE_TYPE: o tipo de recurso que você quer criar, por exemplo, compute.googleapis.com/Disk.

    O resultado será assim:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Anote o OPERATION_ID na saída. Você precisa desse valor para receber o ID do recurso da chave criada.

  2. Encontre a chave do Cloud KMS associada ao identificador de chave:

    curl -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
    

    Substitua:

    • USER_PROJECT: o projeto a ser faturado com as cobranças associadas a essa solicitação.
    • RESOURCE_PROJECT_ID: o ID do projeto de recurso na pasta Autokey em que você quer criar um recurso protegido.
    • LOCATION: o local em que você quer criar o recurso protegido.
    • OPERATION_ID: o identificador da operação de solicitação de identificador de chave da saída da etapa anterior.

    O resultado será assim:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle",
        "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE",
        "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME",
        "resourceTypeSelector": "RESOURCE_TYPE"
      }
    }
    

    O valor do elemento kmsKey na saída é o ID completo do recurso da chave criada pelo Autokey para esse recurso. Você pode usar esse ID do recurso da mesma forma que usaria o ID do recurso para qualquer outro recurso do Cloud KMS.

  3. Crie um disco criptografado usando o comando gcloud compute disks create com a flag --kms-key:

    gcloud compute disks create DISK_NAME \
      --kms-key projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME
    

    Substitua:

    • DISK_NAME: o nome do novo disco.
    • KEY_PROJECT_ID: o ID do projeto principal.
    • LOCATION: o local em que você quer criar o recurso.
    • KEY_NAME: o nome da chave retornada na saída da etapa anterior.

Como usar a chave automática com recursos do Cloud Storage

A chave automática cria uma nova chave no mesmo local do bucket. A chave criada pelo Autokey é atribuída como a chave padrão do bucket.

O Autokey não cria chaves para objetos. Por padrão, os objetos criados em um bucket usam a chave padrão do bucket. Se você quiser criptografar um objeto usando uma chave diferente da padrão do bucket, crie manualmente uma CMEK e use essa chave ao criar o objeto.

Se você quiser mudar a chave padrão atribuída a um bucket, use qualquer CMEK existente, incluindo chaves criadas pelo Autokey.

Criar um recurso protegido do Cloud Storage

Console

  1. No Console do Google Cloud, acesse a página Criar um bucket.

    Acessar "Criar um bucket"

  2. Siga as instruções para Criar um novo bucket até chegar em Escolha como proteger os dados do objeto.

  3. Em Escolha como proteger os dados do objeto, expanda a seção Criptografia de dados e selecione Chave do Cloud KMS.

  4. Em Tipo de chave, selecione Cloud KMS com Autokey e clique em Solicitar uma nova chave. Uma mensagem indica quando a chave foi criada e está pronta para uso.

  5. Para concluir a criação do bucket, clique em Criar.

Terraform

O exemplo do Terraform a seguir cria um handle de chave e usa a chave retornada para proteger um novo bucket de armazenamento:

resource "google_kms_key_handle" "my_key_handle" {
  provider               = google-beta
  project                = "RESOURCE_PROJECT_ID"
  name                   = "KEY_HANDLE"
  location               = "LOCATION"
  resource_type_selector = "storage.googleapis.com/Bucket"
}

resource "google_storage_bucket" "simple_bucket_name" {
  name                        = "BUCKET_NAME"
  location                    = "LOCATION"
  force_destroy               = true
  project                     = "RESOURCE_PROJECT_ID"
  uniform_bucket_level_access = true
  encryption {
    default_kms_key_name      = google_kms_key_handle.my_key_handle.kms_key
  }
}

Substitua:

  • RESOURCE_PROJECT_ID: o ID do projeto de recurso na pasta Autokey em que você quer criar um recurso protegido.
  • KEY_HANDLE: um ID a ser usado para o identificador de chave.
  • LOCATION: o local em que você quer criar o recurso protegido.
  • BUCKET_NAME: o nome do novo bucket.

O Cloud KMS não permite que você exclua recursos KeyHandle. Se você estiver usando um padrão de criação e destruição, a tentativa de recriar um KeyHandle produzirá um erro ALREADY_EXISTS. Para evitar esse problema, importe um KeyHandle criado anteriormente. Para mais informações, consulte Criar e destruir padrões no Terraform nesta página.

API

  1. Solicite uma nova chave do Cloud KMS criando um KeyHandle:

    curl -H "Content-Type: application/json" \
        -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \
        -d '{"resource_type_selector": "RESOURCE_TYPE"}'
    

    Substitua:

    • USER_PROJECT: o projeto a ser faturado com as cobranças associadas a essa solicitação.
    • RESOURCE_PROJECT_ID: o ID do projeto de recurso na pasta Autokey em que você quer criar um recurso protegido.
    • LOCATION: o local em que você quer criar o recurso protegido.
    • RESOURCE_TYPE: o tipo de recurso que você quer criar, por exemplo, storage.googleapis.com/Bucket.

    O resultado será assim:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Anote o OPERATION_ID da saída. Você precisa desse valor para receber o ID do recurso da chave criada.

  2. Encontre a chave do Cloud KMS associada ao identificador de chave:

    curl -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
    

    Substitua:

    • USER_PROJECT: o projeto a ser faturado com as cobranças associadas a essa solicitação.
    • RESOURCE_PROJECT_ID: o ID do projeto de recurso na pasta Autokey em que você quer criar um recurso protegido.
    • LOCATION: o local em que você quer criar o recurso protegido.
    • OPERATION_ID: o identificador da operação de solicitação de identificador de chave da saída da etapa anterior.

    O resultado será assim:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle",
        "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE",
        "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME",
        "resourceTypeSelector": "RESOURCE_TYPE"
      }
    }
    

    O valor do elemento kmsKey na saída é o ID completo do recurso da chave criada pelo Autokey para esse recurso. É possível usar esse ID do recurso da mesma forma que você usaria o ID do recurso para qualquer outro recurso do Cloud KMS.

  3. Crie um bucket criptografado usando o comando gcloud storage buckets create com a flag --default-encryption-key:

    gcloud storage buckets create gs://BUCKET_NAME \
        --location=LOCATION \
        --default-encryption-key=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME
    

    Substitua:

    • BUCKET_NAME: o nome do novo bucket. O nome do bucket precisa seguir os requisitos de nomenclatura de bucket.
    • LOCATION: o local em que você quer criar o bucket.
    • KEY_PROJECT_ID: o ID do projeto principal.
    • LOCATION: o local em que você quer criar o recurso.
    • KEY_NAME: o nome da chave retornada na saída da etapa anterior.

Como usar o Autokey com recursos do BigQuery

O Cloud KMS está disponível em várias edições do BigQuery. Verifique se a edição do BigQuery que você está usando é compatível com o Cloud KMS antes de tentar usar o Autokey para proteger os recursos do BigQuery. Para mais informações sobre as edições do BigQuery, consulte Noções básicas sobre as edições do BigQuery.

Para cada novo conjunto de dados, a Autokey cria uma nova chave no mesmo local do recurso, que se torna a chave padrão do conjunto de dados.

O Autokey não cria chaves para tabelas, consultas, tabelas temporárias ou modelos. Por padrão, esses recursos são protegidos pela chave padrão do conjunto de dados. Se você quiser proteger um recurso em um conjunto de dados usando uma chave diferente da padrão, crie manualmente uma CMEK e use essa chave ao criar o recurso.

Para consultas e tabelas temporárias que não estão em um conjunto de dados, use as chaves padrão do projeto. Use uma chave padrão de projeto diferente para cada local no projeto que contém recursos do BigQuery. Para mais informações sobre o uso de chaves padrão de projeto, consulte Definir uma chave padrão de projeto.

Para mais informações sobre o uso do CMEK com o BigQuery, consulte Chaves do Cloud KMS gerenciadas pelo cliente.

Criar um recurso protegido do BigQuery

Console

Antes de tentar criar um conjunto de dados do BigQuery usando a Autokey, verifique se você tem as permissões necessárias. Para mais informações sobre como criar conjuntos de dados, consulte Criar conjuntos de dados.

  1. No Console do Google Cloud, acesse a página BigQuery.

    Acessar o BigQuery

  2. Siga as instruções para Criar um conjunto de dados até chegar a Opções avançadas > Criptografia.

  3. Em Criptografia, selecione Chave do Cloud KMS.

  4. Em Tipo de chave, selecione Cloud KMS com Autokey e clique em Solicitar uma nova chave. Uma mensagem indica quando a chave foi criada e está pronta para uso.

  5. Para concluir a criação do conjunto de dados, clique em Criar conjunto de dados.

Terraform

O exemplo do Terraform a seguir cria um identificador de chave e usa a chave retornada para proteger um novo conjunto de dados:

resource "google_kms_key_handle" "my_key_handle" {
  provider               = google-beta
  project                = "RESOURCE_PROJECT_ID"
  name                   = "test-key-handle"
  location               = "LOCATION"
  resource_type_selector = "bigquery.googleapis.com/Dataset"
}

resource "google_bigquery_dataset" "dataset" {
  project                     = "RESOURCE_PROJECT_ID"
  dataset_id                  = "DATASET_ID"
  friendly_name               = "DATASET_NAME"
  description                 = "DATASET_DESCRIPTION"
  location                    = "LOCATION"
  default_table_expiration_ms = 3600000

  default_encryption_configuration {
    kms_key_name = google_kms_key_handle.my_key_handle.kms_key
  }
}

Substitua:

  • RESOURCE_PROJECT_ID: o ID do projeto de recurso na pasta Autokey em que você quer criar um recurso protegido.
  • LOCATION: o local em que você quer criar o recurso protegido.
  • DATASET_ID: o ID a ser usado para o novo conjunto de dados.
  • DATASET_NAME: um nome legível para o novo conjunto de dados.
  • DATASET_DESCRIPTION: uma descrição do novo conjunto de dados.

O Cloud KMS não permite que você exclua recursos KeyHandle. Se você estiver usando um padrão de criação e destruição, a tentativa de recriar um KeyHandle produzirá um erro ALREADY_EXISTS. Para evitar esse problema, importe um KeyHandle criado anteriormente. Para mais informações, consulte Criar e destruir padrões no Terraform nesta página.

API

  1. Solicite uma nova chave do Cloud KMS criando um KeyHandle:

    curl -H "Content-Type: application/json" \
        -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \
        -d '{"resource_type_selector": "RESOURCE_TYPE"}'
    

    Substitua:

    • USER_PROJECT: o projeto a ser faturado com as cobranças associadas a essa solicitação.
    • RESOURCE_PROJECT_ID: o ID do projeto de recurso na pasta Autokey em que você quer criar um recurso protegido.
    • LOCATION: o local em que você quer criar o recurso protegido.
    • RESOURCE_TYPE: o tipo de recurso que você quer criar, por exemplo, bigquery.googleapis.com/Dataset.

    O resultado será assim:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Anote o OPERATION_ID da saída. Você precisa desse valor para receber o ID do recurso da chave criada.

  2. Encontre a chave do Cloud KMS associada ao identificador de chave:

    curl -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
    

    Substitua:

    • USER_PROJECT: o projeto a ser faturado com as cobranças associadas a essa solicitação.
    • RESOURCE_PROJECT_ID: o ID do projeto de recurso na pasta Autokey em que você quer criar um recurso protegido.
    • LOCATION: o local em que você quer criar o recurso protegido.
    • OPERATION_ID: o identificador da operação de solicitação de identificador de chave da saída da etapa anterior.

    O resultado será assim:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle",
        "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE",
        "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME",
        "resourceTypeSelector": "RESOURCE_TYPE"
      }
    }
    

    O valor do elemento kmsKey na saída é o ID completo do recurso da chave criada pelo Autokey para esse recurso. É possível usar esse ID do recurso da mesma forma que você usaria o ID do recurso para qualquer outro recurso do Cloud KMS.

  3. Crie um conjunto de dados criptografado usando o comando bq mk com a flag --destination_kms_key.

    bq --location=LOCATION mk \
        --dataset \
        --default_kms_key=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME \
        --default_table_expiration=TABLE_EXPIRATION \
        --description="DATASET_DESCRIPTION" \
        RESOURCE_PROJECT_ID:DATASET_ID
    

    Substitua:

    • LOCATION: o local em que você quer criar o conjunto de dados.
    • KEY_PROJECT_ID: o ID do projeto principal.
    • KEY_NAME: o nome da chave retornada na saída da etapa anterior.
    • TABLE_EXPIRATION: o tempo de vida padrão para novas tabelas neste conjunto de dados, em segundos.
    • DATASET_DESCRIPTION: uma descrição do novo conjunto de dados.
    • RESOURCE_PROJECT_ID: o ID do projeto de recurso na pasta Autokey em que você quer criar um recurso protegido.
    • DATASET_ID: o ID do conjunto de dados que você está criando.

    Para mais informações sobre a ferramenta bq, consulte Conhecer a ferramenta de linha de comando bq.

Como usar a chave automática com os recursos do Secret Manager

O Autokey cria uma única chave para proteger todos os segredos no mesmo projeto e local. Quando a chave é rotacionada, os novos segredos adicionados ao projeto usam a nova versão principal da chave.

O Secret Manager é compatível apenas com o Autokey do Cloud KMS ao criar recursos usando o Terraform ou a API REST.

Criar um recurso protegido do Secret Manager

Terraform

O exemplo do Terraform a seguir cria um identificador de chave e usa a chave retornada para proteger um novo segredo com a replicação automática:

resource "google_kms_key_handle" "my_key_handle" {
  provider               = google-beta
  project                = "RESOURCE_PROJECT_ID"
  name                   = "test-key-handle"
  location               = "global"
  resource_type_selector = "secretmanager.googleapis.com/Secret"
}

resource "google_secret_manager_secret" "my_secret" {
  project   = "RESOURCE_PROJECT_ID"
  secret_id = "SECRET_ID"

  replication {
    auto {
      customer_managed_encryption {
        kms_key_name = google_kms_key_handle.my_key_handle.kms_key
      }
    }
  }
}

Substitua:

  • RESOURCE_PROJECT_ID: o ID do projeto de recurso na pasta Autokey em que você quer criar um recurso protegido.
  • SECRET_ID: o ID a ser usado para o novo secret.

Se você tentar criar um identificador de chave para um secret no mesmo projeto e local em que um identificador de chave já existe, uma mensagem de erro vai retornar os detalhes do identificador de chave. Se isso acontecer, verifique se você tem apenas um bloco criando o identificador de chave. É possível reutilizar o identificador de chave usando o ID (KEY_HANDLE) para criar outros segredos que precisam compartilhar a chave.

O Cloud KMS não permite que você exclua recursos KeyHandle. Se você estiver usando um padrão de criação e destruição, a tentativa de recriar um KeyHandle produzirá um erro ALREADY_EXISTS. Para evitar esse problema, importe um KeyHandle criado anteriormente. Para mais informações, consulte Criar e destruir padrões no Terraform nesta página.

API

  1. Solicite uma nova chave do Cloud KMS criando um KeyHandle:

    curl -H "Content-Type: application/json" \
        -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \
        -d '{"resource_type_selector": "RESOURCE_TYPE"}'
    

    Substitua:

    • USER_PROJECT: o projeto a ser faturado com as cobranças associadas a essa solicitação.
    • RESOURCE_PROJECT_ID: o ID do projeto de recurso na pasta Autokey em que você quer criar um recurso protegido.
    • LOCATION: o local em que você quer criar o recurso protegido.
    • RESOURCE_TYPE: o tipo de recurso que você quer criar, por exemplo, secretmanager.googleapis.com/Secret.

    O resultado será assim:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Anote o OPERATION_ID da saída. Você precisa desse valor para receber o ID do recurso da chave criada.

    Se você tentar criar um identificador de chave para um segredo no mesmo projeto e local em que um identificador de chave já existe, uma mensagem de erro vai retornar os detalhes do identificador de chave atual. Nesse caso, pule a próxima etapa e use o ID do recurso da chave no campo existingKmsKey para proteger seu novo segredo.

  2. Encontre a chave do Cloud KMS associada ao identificador de chave:

    curl -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
    

    Substitua:

    • USER_PROJECT: o projeto a ser faturado com as cobranças associadas a essa solicitação.
    • RESOURCE_PROJECT_ID: o ID do projeto de recurso na pasta Autokey em que você quer criar um recurso protegido.
    • LOCATION: o local em que você quer criar o recurso protegido.
    • OPERATION_ID: o identificador da operação de solicitação de identificador de chave da saída da etapa anterior.

    O resultado será assim:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle",
        "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE",
        "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME",
        "resourceTypeSelector": "RESOURCE_TYPE"
      }
    }
    

    O valor do elemento kmsKey na saída é o ID completo do recurso da chave criada pelo Autokey para esse recurso. É possível usar esse ID do recurso da mesma forma que você usaria o ID do recurso para qualquer outro recurso do Cloud KMS.

  3. Crie um secret criptografado com replicação automática usando o comando gcloud secrets create com a flag --kms-key-name.

    gcloud secrets create "SECRET_ID" \
        --replication-policy "automatic" \
        --kms-key-name "projects/KEY_PROJECT_ID/locations/global/keyRings/autokey/cryptoKeys/KEY_NAME" \
        --project "RESOURCE_PROJECT_ID"
    

    Substitua:

    • SECRET_ID: o ID a ser usado para o novo secret.
    • KEY_PROJECT_ID: o ID do projeto principal.
    • KEY_NAME: o nome da chave retornada na saída da etapa anterior.
    • RESOURCE_PROJECT_ID: o ID do projeto de recurso na pasta Autokey em que você quer criar um recurso protegido.

Padrões de criação e destruição no Terraform

O Cloud KMS não permite que você exclua recursos KeyHandle. Se você estiver usando o Terraform e um padrão de criação e destruição, a tentativa de recriar um KeyHandle vai produzir um erro ALREADY_EXISTS. Para evitar esse problema, use um bloco import. Insira o bloco abaixo antes do resource para o recurso google_kms_key_handle:

import {
  to = google_kms_key_handle.KEY_HANDLE
  id = "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE"
}

A seguir