Crie recursos protegidos com a chave automática do Cloud KMS

Esta página mostra-lhe como criar recursos protegidos através de chaves criadas pela chave automática do Cloud KMS para encriptação. Para mais informações sobre o Autokey, consulte o artigo Vista geral do Autokey.

Antes de começar

Antes de poder criar recursos protegidos com o Autokey, tem de concluir os seguintes passos de preparação:

  1. Se ainda não tiver um projeto de recursos na pasta Autokey, tem de criar um projeto para conter os recursos que planeia criar.
  2. Para receber as autorizações de que precisa para usar a chave automática para criar recursos protegidos, peça ao seu administrador para lhe conceder a função de IAM Utilizador da chave automática do Cloud KMS (roles/cloudkms.autokeyUser) na pasta ou no projeto. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

    Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

  3. Também precisa de autorizações de criação de recursos na pasta Autokey ou num projeto de recursos na pasta. Para mais informações sobre as autorizações necessárias para criar cada recurso, consulte a documentação específica do serviço. Pode encontrar esta documentação localizando o serviço na tabela de integrações da CMEKe acedendo ao link para o tipo de recurso que quer criar.

Usar o Autokey com recursos do Compute Engine

A chave automática cria uma nova chave para cada disco, imagem e imagem da máquina na mesma localização que o recurso que está a ser criado.

O Autokey não cria novas chaves para capturas de ecrã. As capturas de ecrã devem usar a mesma chave usada para encriptar o disco. Se criar uma captura de ecrã através da Google Cloud consola, a chave de encriptação usada pelo disco é automaticamente aplicada à captura de ecrã. Se criar uma captura de ecrã com a CLI gcloud, o Terraform ou a API Compute Engine, tem de identificar a chave usada para encriptar o disco e usar essa chave para encriptar a captura de ecrã.

Para mais informações sobre a utilização das CMEK com instantâneos, consulte o artigo Crie um instantâneo a partir de um disco encriptado com CMEK.

Crie um recurso do Compute Engine protegido

Consola

Para criar um disco, conclua os seguintes passos:

  1. Na Google Cloud consola, aceda à página Discos.

    Aceda a Discos

  2. Clique em Criar disco e introduza as propriedades do novo disco.

  3. Em Encriptação, selecione Chave do Cloud KMS.

  4. Para Tipo de chave, selecione Cloud KMS com chave automática e, de seguida, clique em Pedir uma nova chave. Uma mensagem indica quando a chave foi criada com êxito e está pronta a usar.

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

Pode seguir um processo semelhante para criar recursos de instâncias de VMs protegidas, imagens e imagens da máquina.

Terraform

O exemplo do Terraform seguinte cria um identificador de chave e usa a chave devolvida para proteger um novo recurso de disco persistente:

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 o seguinte:

  • RESOURCE_PROJECT_ID: o ID do projeto do projeto de recursos na pasta Autokey onde quer criar um recurso protegido.
  • KEY_HANDLE: um ID a usar para o identificador da chave.
  • LOCATION: a localização onde quer criar o recurso protegido.
  • DISK_NAME: o nome do novo disco.
  • ZONE: a zona do recurso protegido. Tem de ser uma zona na localização onde está a criar o recurso. Por exemplo, se estiver a criar o recurso na localização us-central1, a zona pode ser us-central1-a.

O Cloud KMS não permite eliminar recursos KeyHandle. Se estiver a usar um padrão de criação e destruição, a tentativa de recriar um KeyHandle produz um erro ALREADY_EXISTS. Para evitar este problema, pode importar um KeyHandle criado anteriormente. Para mais informações, consulte Crie e destrua padrões no Terraform nesta página.

API

  1. Peça 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 o seguinte:

    • USER_PROJECT: o projeto ao qual as cobranças associadas a este pedido vão ser faturadas.
    • RESOURCE_PROJECT_ID: o ID do projeto do projeto do recurso na pasta Autokey onde quer criar um recurso protegido.
    • LOCATION: a localização onde quer criar o recurso protegido.
    • RESOURCE_TYPE: o tipo de recurso que quer criar. Por exemplo, compute.googleapis.com/Disk.

    O resultado é semelhante ao seguinte:

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

    Tome nota do OPERATION_ID da saída. Precisa deste valor para obter o ID do recurso da chave criada.

  2. Encontre a chave do Cloud KMS associada ao identificador da 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 o seguinte:

    • USER_PROJECT: o projeto ao qual as cobranças associadas a este pedido vão ser faturadas.
    • RESOURCE_PROJECT_ID: o ID do projeto do projeto do recurso na pasta Autokey onde quer criar um recurso protegido.
    • LOCATION: a localização onde quer criar o recurso protegido.
    • OPERATION_ID: O identificador da operação de pedido de identificador da chave a partir do resultado do passo anterior.

    O resultado é semelhante ao seguinte:

    {
      "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 do recurso completo da chave criada pela Autokey para este recurso. Pode usar este ID de recurso da mesma forma que usaria o ID de recurso de qualquer outro recurso do Cloud KMS.

  3. Crie um disco encriptado com 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 o seguinte:

    • DISK_NAME: o nome do novo disco.
    • KEY_PROJECT_ID: o ID do projeto principal.
    • LOCATION: a localização onde quer criar o recurso.
    • KEY_NAME: o nome da chave devolvida no resultado do passo anterior.

Usar o Autokey com recursos do Cloud Storage

A chave automática cria uma nova chave na mesma localização que o contentor. A chave criada pelo Autokey é atribuída como a chave predefinida do contentor.

O Autokey não cria chaves para objetos. Por predefinição, os objetos criados num contentor usam a chave predefinida do contentor. Se quiser encriptar um objeto com uma chave diferente da chave predefinida do contentor, pode criar manualmente uma CMEK e usar essa chave quando criar o objeto.

Se quiser alterar a chave predefinida atribuída a um contentor, pode usar qualquer CMEK existente, incluindo chaves criadas pelo Autokey.

Crie um recurso do Cloud Storage protegido

Consola

  1. Na Google Cloud consola, aceda à página Criar um contentor.

    Aceda a Crie um contentor

  2. Siga as instruções para criar um novo contentor até chegar a Escolha como proteger os dados de objetos.

  3. Em Escolha como proteger os dados de objetos, expanda a secção Encriptação de dados e, de seguida, selecione Chave do Cloud KMS.

  4. Para Tipo de chave, selecione Cloud KMS com chave automática e, de seguida, clique em Pedir uma nova chave. Uma mensagem indica quando a chave foi criada com êxito e está pronta a usar.

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

Terraform

O exemplo do Terraform seguinte cria um identificador de chave e usa a chave devolvida para proteger um novo contentor 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 o seguinte:

  • RESOURCE_PROJECT_ID: o ID do projeto do projeto de recursos na pasta Autokey onde quer criar um recurso protegido.
  • KEY_HANDLE: um ID a usar para o identificador da chave.
  • LOCATION: a localização onde quer criar o recurso protegido.
  • BUCKET_NAME: o nome do novo contentor.

O Cloud KMS não permite eliminar recursos KeyHandle. Se estiver a usar um padrão de criação e destruição, a tentativa de recriar um KeyHandle produz um erro ALREADY_EXISTS. Para evitar este problema, pode importar um KeyHandle criado anteriormente. Para mais informações, consulte Crie e destrua padrões no Terraform nesta página.

API

  1. Peça 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 o seguinte:

    • USER_PROJECT: o projeto ao qual as cobranças associadas a este pedido vão ser faturadas.
    • RESOURCE_PROJECT_ID: o ID do projeto do projeto do recurso na pasta Autokey onde quer criar um recurso protegido.
    • LOCATION: a localização onde quer criar o recurso protegido.
    • RESOURCE_TYPE: o tipo de recurso que quer criar. Por exemplo, storage.googleapis.com/Bucket.

    O resultado é semelhante ao seguinte:

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

    Tome nota do OPERATION_ID da saída. Precisa deste valor para obter o ID do recurso da chave criada.

  2. Encontre a chave do Cloud KMS associada ao identificador da 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 o seguinte:

    • USER_PROJECT: o projeto ao qual as cobranças associadas a este pedido vão ser faturadas.
    • RESOURCE_PROJECT_ID: o ID do projeto do projeto do recurso na pasta Autokey onde quer criar um recurso protegido.
    • LOCATION: a localização onde quer criar o recurso protegido.
    • OPERATION_ID: O identificador da operação de pedido de identificador da chave a partir do resultado do passo anterior.

    O resultado é semelhante ao seguinte:

    {
      "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 no resultado é o ID do recurso completo da chave criada pelo Autokey para este recurso. Pode usar este ID de recurso da mesma forma que usaria o ID de recurso de qualquer outro recurso do Cloud KMS.

  3. Crie um contentor encriptado com 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 o seguinte:

    • BUCKET_NAME: o nome do novo contentor. O nome do contentor tem de seguir os requisitos de nomenclatura de contentores.
    • LOCATION: a localização onde quer criar o contentor.
    • KEY_PROJECT_ID: o ID do projeto principal.
    • LOCATION: a localização onde quer criar o recurso.
    • KEY_NAME: o nome da chave devolvida no resultado do passo anterior.

Usar o Autokey com recursos do BigQuery

O Cloud KMS está disponível em várias edições do BigQuery. Certifique-se de que a edição do BigQuery que está a usar é 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 o artigo Compreender as edições do BigQuery.

Para cada novo conjunto de dados, o Autokey cria uma nova chave na mesma localização que o próprio recurso, que se torna a chave predefinida do conjunto de dados.

A funcionalidade Autokey não cria chaves para tabelas, consultas, tabelas temporárias nem modelos. Por predefinição, estes recursos estão protegidos pela chave predefinida do conjunto de dados. Se quiser proteger um recurso num conjunto de dados com uma chave que não seja a chave predefinida do conjunto de dados, pode criar manualmente uma CMEK e usar essa chave quando criar o recurso.

Para consultas e tabelas temporárias que não estejam num conjunto de dados, use chaves predefinidas do projeto. Use uma chave predefinida do projeto diferente para cada localização no projeto que contém recursos do BigQuery. Para mais informações sobre a utilização de chaves predefinidas do projeto, consulte o artigo Defina uma chave predefinida do projeto.

Para mais informações sobre a utilização de CMEK com o BigQuery, consulte o artigo Chaves do Cloud KMS geridas pelo cliente.

Crie um recurso do BigQuery protegido

Consola

Antes de tentar criar um conjunto de dados do BigQuery com o Autokey, certifique-se de que tem as autorizações necessárias. Para mais informações sobre como criar conjuntos de dados, consulte o artigo Crie conjuntos de dados.

  1. Na Google Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. Siga as instruções para criar um conjunto de dados até aceder a Opções avançadas > Encriptação.

  3. Em Encriptação, selecione Chave do Cloud KMS.

  4. Para Tipo de chave, selecione Cloud KMS com chave automática e, de seguida, clique em Pedir uma nova chave. Uma mensagem indica quando a chave foi criada com êxito e está pronta a usar.

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

Terraform

O exemplo do Terraform seguinte cria um identificador de chave e usa a chave devolvida 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 o seguinte:

  • RESOURCE_PROJECT_ID: o ID do projeto do projeto de recursos na pasta Autokey onde quer criar um recurso protegido.
  • LOCATION: a localização onde quer criar o recurso protegido.
  • DATASET_ID: o ID a usar para o novo conjunto de dados.
  • DATASET_NAME: um nome simples para o novo conjunto de dados.
  • DATASET_DESCRIPTION: uma descrição para o novo conjunto de dados.

O Cloud KMS não permite eliminar recursos KeyHandle. Se estiver a usar um padrão de criação e destruição, a tentativa de recriar um KeyHandle produz um erro ALREADY_EXISTS. Para evitar este problema, pode importar um KeyHandle criado anteriormente. Para mais informações, consulte Crie e destrua padrões no Terraform nesta página.

API

  1. Peça 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 o seguinte:

    • USER_PROJECT: o projeto ao qual as cobranças associadas a este pedido vão ser faturadas.
    • RESOURCE_PROJECT_ID: o ID do projeto do projeto do recurso na pasta Autokey onde quer criar um recurso protegido.
    • LOCATION: a localização onde quer criar o recurso protegido.
    • RESOURCE_TYPE: o tipo de recurso que quer criar. Por exemplo, bigquery.googleapis.com/Dataset.

    O resultado é semelhante ao seguinte:

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

    Tome nota do OPERATION_ID da saída. Precisa deste valor para obter o ID do recurso da chave criada.

  2. Encontre a chave do Cloud KMS associada ao identificador da 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 o seguinte:

    • USER_PROJECT: o projeto ao qual as cobranças associadas a este pedido vão ser faturadas.
    • RESOURCE_PROJECT_ID: o ID do projeto do projeto do recurso na pasta Autokey onde quer criar um recurso protegido.
    • LOCATION: a localização onde quer criar o recurso protegido.
    • OPERATION_ID: O identificador da operação de pedido de identificador da chave a partir do resultado do passo anterior.

    O resultado é semelhante ao seguinte:

    {
      "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 no resultado é o ID do recurso completo da chave criada pelo Autokey para este recurso. Pode usar este ID de recurso da mesma forma que usaria o ID de recurso de qualquer outro recurso do Cloud KMS.

  3. Crie um conjunto de dados encriptado 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 o seguinte:

    • LOCATION: a localização onde quer criar o conjunto de dados.
    • KEY_PROJECT_ID: o ID do projeto principal.
    • KEY_NAME: o nome da chave devolvida no resultado do passo anterior.
    • TABLE_EXPIRATION: o tempo de vida predefinido 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 do projeto do recurso na pasta Autokey onde quer criar um recurso protegido.
    • DATASET_ID: o ID do conjunto de dados que está a criar.

    Para mais informações sobre a ferramenta bq, consulte o artigo Explore a ferramenta de linha de comandos bq.

Usar o Autokey com recursos do Secret Manager

A chave automática cria uma única chave para proteger todos os segredos no mesmo projeto e localização. Quando a chave é rodada, os novos segredos adicionados ao projeto usam a nova versão principal da chave.

O Secret Manager só é compatível com a chave automática do Cloud KMS quando cria recursos através do Terraform ou da API REST.

Crie um recurso do Secret Manager protegido

Terraform

O exemplo do Terraform seguinte cria um identificador de chave e usa a chave devolvida para proteger um novo segredo 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 o seguinte:

  • RESOURCE_PROJECT_ID: o ID do projeto do projeto de recursos na pasta Autokey onde quer criar um recurso protegido.
  • SECRET_ID: o ID a usar para o novo segredo.

Se tentar criar um identificador de chave para um segredo no mesmo projeto e localização para os quais já existe um identificador de chave, é devolvida uma mensagem de erro com os detalhes do identificador de chave existente. Se isto acontecer, certifique-se de que tem apenas um bloco a criar o identificador da chave. Pode reutilizar o identificador da chave através do respetivo ID (KEY_HANDLE) para criar segredos adicionais que devem partilhar a chave.

O Cloud KMS não permite eliminar recursos KeyHandle. Se estiver a usar um padrão de criação e destruição, a tentativa de recriar um KeyHandle produz um erro ALREADY_EXISTS. Para evitar este problema, pode importar um KeyHandle criado anteriormente. Para mais informações, consulte Crie e destrua padrões no Terraform nesta página.

API

  1. Peça 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 o seguinte:

    • USER_PROJECT: o projeto ao qual as cobranças associadas a este pedido vão ser faturadas.
    • RESOURCE_PROJECT_ID: o ID do projeto do projeto do recurso na pasta Autokey onde quer criar um recurso protegido.
    • LOCATION: a localização onde quer criar o recurso protegido.
    • RESOURCE_TYPE: o tipo de recurso que quer criar. Por exemplo, secretmanager.googleapis.com/Secret.

    O resultado é semelhante ao seguinte:

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

    Tome nota do OPERATION_ID da saída. Precisa deste valor para obter o ID do recurso da chave criada.

    Se tentar criar um identificador de chave para um segredo no mesmo projeto e localização para os quais já existe um identificador de chave, é devolvida uma mensagem de erro com os detalhes do identificador de chave existente. Neste caso, ignore o passo seguinte e use o ID do recurso da chave no campo existingKmsKey para proteger o seu novo segredo.

  2. Encontre a chave do Cloud KMS associada ao identificador da 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 o seguinte:

    • USER_PROJECT: o projeto ao qual as cobranças associadas a este pedido vão ser faturadas.
    • RESOURCE_PROJECT_ID: o ID do projeto do projeto do recurso na pasta Autokey onde quer criar um recurso protegido.
    • LOCATION: a localização onde quer criar o recurso protegido.
    • OPERATION_ID: O identificador da operação de pedido de identificador da chave a partir do resultado do passo anterior.

    O resultado é semelhante ao seguinte:

    {
      "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 no resultado é o ID do recurso completo da chave criada pelo Autokey para este recurso. Pode usar este ID de recurso da mesma forma que usaria o ID de recurso de qualquer outro recurso do Cloud KMS.

  3. Crie um segredo encriptado com replicação automática através do 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 o seguinte:

    • SECRET_ID: o ID a usar para o novo segredo.
    • KEY_PROJECT_ID: o ID do projeto principal.
    • KEY_NAME: o nome da chave devolvida no resultado do passo anterior.
    • RESOURCE_PROJECT_ID: o ID do projeto do projeto do recurso na pasta Autokey onde quer criar um recurso protegido.

Usar o Autokey com recursos do Dataflow

A chave automática pode ser usada para criar uma única chave para cada tarefa do Dataflow.

API

  1. Peça 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 o seguinte:

    • USER_PROJECT: o projeto ao qual as cobranças associadas a este pedido vão ser faturadas.
    • RESOURCE_PROJECT_ID: o ID do projeto do projeto do recurso na pasta Autokey onde quer criar um recurso protegido.
    • LOCATION: a localização onde quer criar o recurso protegido.

    O resultado é semelhante ao seguinte:

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

    Tome nota do OPERATION_ID da saída. Precisa deste valor para obter o ID do recurso da chave criada.

  2. Encontre a chave do Cloud KMS associada ao identificador da 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 o seguinte:

    • USER_PROJECT: o projeto ao qual as cobranças associadas a este pedido vão ser faturadas.
    • RESOURCE_PROJECT_ID: o ID do projeto do projeto do recurso na pasta Autokey onde quer criar um recurso protegido.
    • LOCATION: a localização onde quer criar o recurso protegido.
    • OPERATION_ID: O identificador da operação de pedido de identificador da chave a partir do resultado do passo anterior.

    O resultado é semelhante ao seguinte:

    {
      "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 do recurso completo da chave criada pela Autokey para este recurso. Pode usar este ID de recurso da mesma forma que usaria o ID de recurso de qualquer outro recurso do Cloud KMS.

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

O Cloud KMS não permite eliminar recursos KeyHandle. Se estiver a usar o Terraform e um padrão de criação e destruição, a tentativa de recriar um KeyHandle produz um erro ALREADY_EXISTS. Pode evitar este problema usando um bloco de import. Insira o seguinte bloco 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"
}

O que se segue?