Nesta página, mostramos como criar recursos protegidos usando chaves criadas pela autokey do Cloud KMS para criptografia. Para mais informações sobre a chave automática, consulte Visão geral da chave automática.
Antes de começar
Antes de criar recursos protegidos usando o Autokey, faça o seguinte:
- Se você ainda não tiver um projeto de recursos na pasta do Autokey, crie um projeto para armazenar os recursos que você planeja criar.
-
Para receber as permissões necessárias para usar o Autokey e criar recursos protegidos, peça ao administrador para conceder a você o papel Usuário do Cloud KMS Autokey (
roles/cloudkms.autokeyUser
) do IAM 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.
- Você também precisa de permissões de criação de recursos na pasta Autokey ou em um projeto de recursos dentro da pasta. 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 do tipo de recurso que você quer criar.
Como usar o Autokey com recursos do Compute Engine
O Autokey cria uma chave para cada disco, imagem e imagem de 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 consoleGoogle 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, identifique a chave usada para criptografar o disco e use 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:
No console Google Cloud , acesse a página Discos.
Clique em Novo disco e insira as propriedades do novo disco.
Em Criptografia, selecione Chave do Cloud KMS.
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.
Para concluir a criação do disco, clique em Criar.
Você pode seguir um processo semelhante para criar recursos de instância de VM protegida, imagem e imagem de máquina.
Terraform
O exemplo do Terraform a seguir cria um identificador 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 recursos na pasta Autokey em que você quer criar um recurso protegido.KEY_HANDLE
: um ID a ser usado para o identificador da chave.LOCATION
: o local onde 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 localus-central1
, a zona poderá serus-central1-a
.
O Cloud KMS não permite excluir recursos
KeyHandle
. Se você estiver usando um padrão de criação e destruição, tentar
recriar um KeyHandle
vai gerar 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
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 esta solicitação.RESOURCE_PROJECT_ID
: o ID do projeto de recursos 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
da saída. Você precisa desse valor para receber o ID do recurso da chave criada.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 esta solicitação.RESOURCE_PROJECT_ID
: o ID do projeto de recursos 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 da mesma forma que usaria o ID de qualquer outro recurso do Cloud KMS.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 da chave.LOCATION
: o local onde 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 Cloud Storage
O Autokey 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 atual, incluindo chaves criadas pela chave automática.
Criar um recurso protegido do Cloud Storage
Console
No console Google Cloud , acesse a página Criar um bucket.
Siga as instruções para Criar um bucket até chegar em Escolher como proteger dados de objetos.
Em Escolha como proteger os dados do objeto, expanda a seção Criptografia de dados e selecione Chave do Cloud KMS.
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.
Para concluir a criação do bucket, clique em Criar.
Terraform
O exemplo do Terraform a seguir cria um identificador 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 recursos na pasta Autokey em que você quer criar um recurso protegido.KEY_HANDLE
: um ID a ser usado para o identificador da chave.LOCATION
: o local onde você quer criar o recurso protegido.BUCKET_NAME
: o nome do novo bucket.
O Cloud KMS não permite excluir recursos
KeyHandle
. Se você estiver usando um padrão de criação e destruição, tentar
recriar um KeyHandle
vai gerar 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
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 esta solicitação.RESOURCE_PROJECT_ID
: o ID do projeto de recursos 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.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 esta solicitação.RESOURCE_PROJECT_ID
: o ID do projeto de recursos 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 da mesma forma que usaria o ID de qualquer outro recurso do Cloud KMS.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 da chave.LOCATION
: o local onde você quer criar o recurso.KEY_NAME
: o nome da chave retornada na saída da etapa anterior.
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 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, o Autokey cria uma 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 do conjunto de dados, crie manualmente uma CMEK e use-a ao criar o recurso.
Para consultas e tabelas temporárias que não estão em um conjunto de dados, use 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 como usar 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 o 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.
No console Google Cloud , acesse a página BigQuery.
Siga as instruções para Criar um conjunto de dados até chegar em Opções avançadas > Criptografia.
Em Criptografia, selecione Chave do Cloud KMS.
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.
Para terminar de criar o 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 recursos na pasta Autokey em que você quer criar um recurso protegido.LOCATION
: o local onde 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 para o novo conjunto de dados.
O Cloud KMS não permite excluir recursos
KeyHandle
. Se você estiver usando um padrão de criação e destruição, tentar
recriar um KeyHandle
vai gerar 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
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 esta solicitação.RESOURCE_PROJECT_ID
: o ID do projeto de recursos 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.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 esta solicitação.RESOURCE_PROJECT_ID
: o ID do projeto de recursos 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 da mesma forma que usaria o ID de qualquer outro recurso do Cloud KMS.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 da chave.KEY_NAME
: o nome da chave retornada na saída da etapa anterior.TABLE_EXPIRATION
: a vida útil padrão para novas tabelas neste conjunto de dados, em segundos.DATASET_DESCRIPTION
: uma descrição para o novo conjunto de dados.RESOURCE_PROJECT_ID
: o ID do projeto de recursos 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 Explorar a ferramenta de linha de comando bq.
Como usar o Autokey com recursos do Secret Manager
O Autokey cria uma única chave para proteger todos os secrets no mesmo projeto e local. Quando a chave é rotacionada, os novos secrets adicionados ao projeto usam a nova versão principal da chave.
O Secret Manager só é compatível 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 secret com 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 recursos 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 já existe um identificador de chave, uma mensagem de erro vai retornar os
detalhes do identificador de chave atual. Se isso acontecer, verifique se você tem apenas um bloco criando o identificador de chave. É possível reutilizar o identificador da chave usando
o ID dela (KEY_HANDLE
) para criar outros secrets que devem
compartilhar a chave.
O Cloud KMS não permite excluir recursos
KeyHandle
. Se você estiver usando um padrão de criação e destruição, tentar
recriar um KeyHandle
vai gerar 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
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 esta solicitação.RESOURCE_PROJECT_ID
: o ID do projeto de recursos 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 secreto no mesmo projeto e local em que já existe um identificador de chave, 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.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 esta solicitação.RESOURCE_PROJECT_ID
: o ID do projeto de recursos 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 da mesma forma que usaria o ID de qualquer outro recurso do Cloud KMS.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 da chave.KEY_NAME
: o nome da chave retornada na saída da etapa anterior.RESOURCE_PROJECT_ID
: o ID do projeto de recursos na pasta Autokey em que você quer criar um recurso protegido.
Como usar o Autokey com recursos do Dataflow
O Autokey pode ser usado para criar uma única chave para cada job do Dataflow.
API
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": "dataflow.googleapis.com/Job"}'
Substitua:
USER_PROJECT
: o projeto a ser faturado com as cobranças associadas a esta solicitação.RESOURCE_PROJECT_ID
: o ID do projeto de recursos na pasta Autokey em que você quer criar um recurso protegido.LOCATION
: o local em que você quer criar o recurso protegido.
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.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 esta solicitação.RESOURCE_PROJECT_ID
: o ID do projeto de recursos 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 da mesma forma que usaria o ID de qualquer outro recurso do Cloud KMS.
Padrões de criação e destruição no Terraform
O Cloud KMS não permite excluir recursos KeyHandle
. Se você estiver usando o
Terraform e um padrão de criação e destruição, tentar recriar um KeyHandle
produzirá um erro ALREADY_EXISTS
. Para evitar esse problema, use um bloco
import
. Insira o bloco a seguir antes do
bloco 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
- Saiba quando usar a Autokey.
- Saiba mais sobre como o Autokey funciona.