Ativar o Autokey do Cloud KMS

Este documento mostra como ativar e configurar a chave automática do Cloud KMS usando o Google Cloud console, a Google Cloud CLI, a API Cloud KMS ou o Terraform. É possível ativar o Autokey com armazenamento de chaves em projeto dedicado para uma pasta ou com armazenamento de chaves no mesmo projeto para um projeto individual ou para todos os projetos em uma pasta. Para mais informações sobre a chave automática, consulte a visão geral da chave automática.

Este documento é destinado a administradores.

Herança de configuração do Autokey

Quando você configura o Autokey em uma pasta, as pastas e os projetos filhos dela herdam a configuração do Autokey da pasta pai. Ao configurar o Autokey em uma pasta ou projeto filho, você decide se quer herdar a configuração do recurso pai ou criar uma nova configuração do Autokey para esse recurso. As configurações do Autokey aplicadas aos recursos filhos substituem a configuração da pasta mãe.

A tabela a seguir mostra os casos de uso compatíveis da configuração do Autokey:

Tipo de recurso Configuração do Autokey Descrição
Organização Não relevante Não é possível ativar o Autokey para organizações. Os recursos filhos em uma organização herdam um recurso AutokeyConfig vazio. No console Google Cloud , esses recursos mostram um Status do Autokey como Não ativado. Se você quiser restringir o uso do Autokey na sua organização ou desativá-lo completamente, use as políticas da organização. Para mais informações, consulte Controlar o uso da chave automática.
Pasta DEDICATED_KEY_PROJECT O Autokey com armazenamento de chaves em projeto dedicado está ativado para projetos de recursos na pasta. Para projetos de recursos que herdam essa configuração, o Autokey cria chaves no projeto de chaves dedicado.
Pasta RESOURCE_PROJECT O Autokey com armazenamento de chaves no mesmo projeto está ativado para projetos de recursos na pasta. Para projetos de recursos que herdam essa configuração, o Autokey cria chaves no mesmo projeto que os recursos protegidos.
Pasta DISABLED O Autokey é desativado na pasta, mas as pastas e os projetos filhos ainda podem substituir essa configuração. Se quiser restringir ou desativar completamente a Autokey na sua pasta, use as políticas da organização. Para mais informações, consulte Controlar o uso da chave automática.
Pasta KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED A pasta herda a configuração do Autokey da pasta ou organização principal.
Projeto RESOURCE_PROJECT O Autokey com armazenamento de chaves no mesmo projeto está ativado para o projeto de recurso. Para recursos criados nesse projeto, o Autokey cria chaves no mesmo projeto.
Projeto DISABLED O Autokey está desativado para o projeto de recurso. Os desenvolvedores que criam recursos nesse projeto precisam criar e provisionar chaves manualmente se quiserem usar a CMEK para os recursos criados.
Projeto KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED O projeto herda a configuração do Autokey da pasta mãe.

Antes de começar

Antes de ativar o Autokey com armazenamento de chaves em projeto dedicado para uma pasta, você precisa ter o seguinte:

  • Um recurso de organização que contém uma pasta em que você quer ativar o Autokey. Se você não tiver uma pasta em que quer ativar o Autokey, crie uma pasta de recursos. Ativar o Autokey nessa pasta ativa o recurso para todos os projetos de recursos nela.

  • Se você tiver projetos de recursos em que quer usar o Autokey com armazenamento de chaves de projeto dedicado, mas eles não estiverem em uma pasta em que você vai ativar o Autokey, mova os projetos de recursos atuais para novas pastas.

Antes de ativar o Autokey com armazenamento de chaves no mesmo projeto, você precisa ter uma das seguintes opções:

  • Um projeto do Google Cloud em que você quer ativar o Autokey e em que a permissão keyHandles.create não é bloqueada por uma política de negação do IAM.
  • Uma pasta Google Cloud em que você quer ativar o Autokey, que contém pelo menos um projeto em que a permissão keyHandles.create não está bloqueada por uma política de negação do IAM.

Funções exigidas

Para receber as permissões necessárias para ativar e configurar o Autokey, peça ao administrador para conceder a você os seguintes papéis do IAM na pasta, no projeto ou em um recurso pai:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esses papéis predefinidos contêm as permissões necessárias para ativar e configurar a Autokey. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para ativar e configurar o Autokey:

  • Para ativar o Autokey:
    • cloudkms.autokeyConfigs.*
    • serviceusage.services.enable
  • Para ativar o Autokey com armazenamento de chaves em projeto dedicado:
    • resourcemanager.folders.get
    • resourcemanager.folders.getIamPolicy
    • resourcemanager.folders.setIamPolicy
    • billing.resourceAssociations.create
  • Para ver a configuração do Autokey:
    • cloudkms.folders.showEffectiveAutokeyConfig
    • cloudkms.projects.showEffectiveAutokeyConfig
  • Para conferir todas as configurações efetivas do Autokey:
    • cloudasset.assets.query
    • serviceusage.services.use

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Configuração do Terraform

Esta seção contém exemplos de variáveis e recursos do Terraform que são pré-requisitos para o restante das amostras do Terraform neste documento. Se você não estiver usando o Terraform para criar ou gerenciar as configurações do Autokey, pule esta seção.

Clique aqui para mostrar ou ocultar o exemplo de configuração do Terraform

Este exemplo conclui as seguintes etapas de configuração:

  1. Defina as variáveis usadas nas amostras subsequentes do Terraform.
  2. Crie uma pasta de recursos. Pule esta etapa se você planeja usar apenas o armazenamento de chaves do mesmo projeto em projetos individuais.
  3. Conceda funções de administrador e usuário do Autokey.
  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]
  }

  # Create a new folder
  resource "google_folder" "autokey_folder" {
    parent       = "organizations/${var.organization_ID}"
    display_name = "autokey_folder"
  }
  /* To use a folder that already exists, omit this block and instead create a
     variable for the folder ID instead, and then update subsequent resources
     to use the variable. */

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

Substitua:

  1. BILLING_ACCOUNT_ID: o ID da sua conta de faturamento Google Cloud . O ID da conta de faturamento é um valor alfanumérico de 18 caracteres separado por traços, por exemplo, 010101-F0FFF0-10XX01.
  2. AUTOKEY_ADMIN_USER_IDS: uma lista de endereços de e-mail de usuários que precisam ter a função "roles/cloudkms.autokeyAdmin". Por exemplo, "Ariel@example.com", "Charlie@example.com".
  3. AUTOKEY_DEVELOPER_USER_IDS: uma lista de endereços de e-mail para usuários que precisam ter a função `roles/cloudkms.autokeyUser` —por exemplo, "Kalani@example.com", "Mahan@example.com".
  4. KEY_PROJECT_ADMIN_USER_IDS: uma lista de endereços de e-mail para usuários que precisam ter a função `roles/cloudkms.admin`. Por exemplo, "Sasha@example.com", "Nur@example.com".

Configurar o Autokey com armazenamento de chaves em projeto dedicado

Ao usar o Autokey com armazenamento de chaves em um projeto dedicado em uma pasta, você precisa escolher um único projeto de chave para conter todas as chaves criadas pelo Autokey nessa pasta. Se você estiver usando o armazenamento de chaves no mesmo projeto, não vai precisar de um projeto de chave dedicado. Continue em Ativar o Autokey com armazenamento de chaves no mesmo projeto.

Recomendamos criar um projeto de chave para conter os recursos do Cloud KMS criados pelo Autokey. Crie o projeto de chave no recurso da sua organização. Se você já tiver um projeto de chave que quer usar para chaves criadas pelo Autokey, pule a seção Criar um projeto de chave e continue em Configurar o projeto de chave do Autokey nesta página.

O projeto de chave pode ser criado na mesma pasta em que você planeja ativar o Autokey. Não crie outros recursos no projeto de chave. Se você tentar criar recursos protegidos pelo Autokey no projeto de chave, o Autokey vai rejeitar o pedido de uma nova chave.

Se você quiser migrar para o Assured Workloads no futuro, crie o projeto de chave na mesma pasta dos recursos protegidos por essas chaves.

Se a organização usa a restrição de política da organização constraints/gcp.restrictCmekCryptoKeyProjects para garantir que todas as CMEKs sejam de projetos de chave especificados, adicione seu projeto de chave à lista de projetos permitidos. Para mais informações sobre a política da organização de CMEK, consulte Políticas da organização de CMEK.

Criar um projeto principal

Console

  1. No console Google Cloud , acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Em Selecionar organização, escolha o recurso da organização em que você quer criar um projeto.
  3. Clique em Criar projeto.
  4. Na janela Novo projeto que vai aparecer, insira um nome e selecione uma conta de faturamento. O nome de um projeto só pode ser composto por letras, números, aspas simples, hifens, espaços ou pontos de exclamação e precisa ter entre 4 e 30 caracteres.
  5. Em Local, selecione o recurso que você quer como pai do projeto principal.
  6. Para concluir a criação do projeto, clique em Criar.

gcloud

  • Crie um novo projeto:

    gcloud projects create PROJECT_ID \
        --PARENT_TYPE=PARENT_ID
    

    Substitua:

    • PROJECT_ID: o ID do projeto que contém o keyring.
    • PARENT_TYPE: o tipo de recurso em que você quer criar o novo projeto de chave. Insira organization para criar o novo projeto de chave em uma determinada organização ou insira folder para criar o novo projeto de chave em uma determinada pasta.
    • PARENT_ID: o ID da organização ou pasta em que você quer criar o projeto principal.

REST

  • Crie um novo projeto:

    curl "https://cloudresourcemanager.googleapis.com/v3/projects/"
        --request "POST" \
        --header "authorization: Bearer TOKEN" \
        --header "content-type: application/json" \
        --data '{ "projectId": "PROJECT_ID", "name": "PROJECT_NAME", "parent": "PARENT_TYPE/PARENT_ID" }'
    

    Substitua:

    • PROJECT_ID: o identificador que você quer usar para o projeto de chave dedicada.
    • PROJECT_NAME: o nome que você quer usar para seu projeto de chave dedicada.
    • PARENT_TYPE: o tipo de recurso do recurso pai em que você quer criar o projeto de chave dedicada, por exemplo, organizations ou folders.
    • PARENT_ID": o identificador do recurso principal em que você quer criar o projeto de chave dedicada.

Terraform

O exemplo do Terraform a seguir cria um projeto de chave dedicado na pasta criada anteriormente.

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

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

Substitua KEY_PROJECT_ID pelo ID a ser usado no projeto de chave dedicada, por exemplo, autokey-key-project.

Configurar uma garantia em um projeto

Depois de criar o projeto do Cloud KMS, recomendamos que você proteja o projeto com uma garantia (prévia) para evitar a exclusão acidental. Quando uma garantia de projeto é aplicada, o projeto do Cloud KMS fica bloqueado para exclusão até que a garantia seja removida.

Preparar o projeto de chave dedicada

Console

  1. Ative a API Cloud KMS no projeto de chaves.

    Ativar a API

  2. Se você estiver usando um novo projeto de chave, conceda permissões de administrador do Cloud KMS a ele. Repita as etapas a seguir para conceder o papel de Administrador do Cloud KMS a você e a cada um dos outros usuários administradores do Cloud KMS:

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

      Acessar IAM

    2. Selecione o projeto principal.

    3. Clique em Conceder acesso e insira o endereço de e-mail do usuário.

    4. Selecione a função Administrador do Cloud KMS.

    5. Clique em Salvar.

gcloud

  1. Ative a API Cloud KMS no projeto de chaves:

    gcloud services enable cloudkms.googleapis.com
    
  2. Conceda permissões de administrador do Cloud KMS no projeto da chave. Repita o comando a seguir para conceder o papel roles/cloudkms.admin a você e a cada um dos outros usuários administradores do Cloud KMS:

    gcloud projects add-iam-policy-binding PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=user:KEY_ADMIN_EMAIL
    

    Substitua:

    • PROJECT_NUMBER: o número do projeto da chave.
    • KEY_ADMIN_EMAIL: o endereço de e-mail do usuário responsável por gerenciar as chaves do Cloud KMS.

REST

  1. Ative a API Cloud KMS no projeto de chaves:

    curl "https://serviceusage.googleapis.com/v1/projects/PROJECT_ID/services/cloudkms.googleapis.com:enable" \
        --request "POST" \
        --header "authorization: Bearer TOKEN"
    

    Substitua PROJECT_ID pelo identificador do projeto de chave dedicada.

  2. Receba a política atual do IAM para o projeto de chave dedicada.

    curl "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy" \
        --request POST \
        --header "authorization: Bearer TOKEN"
        --header "Content-Type: application/json; charset=utf-8" \
        --data '{"options": {"requestedPolicyVersion": 3}}'
    

    A resposta contém a política de permissão atual do projeto.

  3. Modifique a política de permissão retornada para adicionar o papel roles/cloudkms.admin a cada usuário administrador do Cloud KMS, incluindo você, usando o exemplo de vinculação de papel a seguir como guia: json { "role": "roles/cloudkms.admin", "members": [ "PRINCIPAL_LIST" ], }

    Substitua PRINCIPAL_LIST por uma lista separada por vírgulas de principais de usuário, por exemplo, admin_1@example.com,admin_2@example.com.

    Essa mudança só vai entrar em vigor quando você definir a nova política.

  4. Defina a nova política de permissão.

    curl "https://cloudresourcemanager.googleapis.com/1/projects/PROJECT_ID:setIamPolicy" \
        --request POST \
        --header "authorization: Bearer TOKEN" \
        --header "Content-Type: application/json; charset=utf-8" \
        --data 'ALLOW_POLICY'
    

    Substitua:

    • PROJECT_ID: o identificador do projeto de chave dedicada.
    • ALLOW_POLICY: o JSON da política de permissão atualizada que você criou na etapa anterior, incluindo as concessões de função atuais e as que você acabou de adicionar.

Terraform

O exemplo do Terraform a seguir ativa a API Cloud KMS no projeto de chave dedicado e concede o papel roles/cloudkms.admin aos principais administradores do Cloud KMS identificados anteriormente.

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

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

Ativar o Autokey do Cloud KMS em uma pasta de recursos

Console

  1. No console do Google Cloud , acesse a página Controles de gerenciamento de chaves.

    Acessar Controles de gerenciamento de chaves

  2. No seletor de contexto, selecione a pasta em que você quer ativar o Autokey com armazenamento de chaves de projeto dedicado.
  3. Na seção Autokey, clique em Gerenciar.
  4. Clique em Configurar.
  5. Em Origem da configuração, selecione Configurar para pasta.
  6. Em Configuração, selecione Ativar o armazenamento de chaves em projeto dedicado.
  7. Selecione o projeto principal e clique em Enviar.

    Uma mensagem vai confirmar que o Autokey do Cloud KMS está ativado na pasta.

gcloud

  1. Crie um arquivo YAML que contenha o seguinte AutokeyConfig:

    name: folders/FOLDER_NUMBER/autokeyConfig
    keyProjectResolutionMode: DEDICATED_KEY_PROJECT
    keyProject: projects/PROJECT_ID
    

    Substitua:

    • FOLDER_NUMBER: o número da pasta em que você quer ativar o Autokey com armazenamento de chaves em projeto dedicado.
    • PROJECT_ID: o identificador do projeto de chave dedicada.
  2. Aplique o AutokeyConfig à pasta:

    gcloud kms autokey-config update AUTOKEY_CONFIG_PATH
    

    Substitua AUTOKEY_CONFIG_PATH pelo caminho para o arquivo YAML criado na etapa anterior.

REST

Crie o AutokeyConfig para a pasta em que você quer ativar o Autokey com armazenamento de chaves em projeto dedicado:

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

Substitua:

  • FOLDER_ID: o ID da pasta em que você quer ativar o Autokey.
  • PROJECT_ID: o ID do projeto da chave.

Terraform

/* Enable AutokeyConfig for dedicated-project key storage in the
   folder */
resource "google_kms_autokey_config" "autokey_config" {
  provider    = google-beta
  folder      = google_folder.autokey_folder.folder_id
  key_project = "projects/${google_project.key_management_project.project_id}"
  key_project_resolution_mode = "DEDICATED_KEY_PROJECT"
  /* For folder scope, valid values are DEDICATED_KEY_PROJECT,
     RESOURCE_PROJECT, and DISABLED. With DEDICATED_KEY_PROJECT, define the
    key_project as well. With RESOURCE_PROJECT, omit key_project. Keys will
    be created in the same project as the protected resource. */
}

Configurar o agente de serviço do Cloud KMS

O agente de serviço do Cloud KMS para um projeto de chave cria chaves e aplica vinculações de política do IAM durante a criação de recursos em nome de um administrador humano do Cloud KMS. Para criar e atribuir chaves, o agente de serviço do Cloud KMS precisa de permissões de administrador do Cloud KMS.

gcloud

  1. Crie o agente de serviço do Cloud KMS:

    gcloud beta services identity create --service=cloudkms.googleapis.com \
        --project=PROJECT_NUMBER
    

    Substitua PROJECT_NUMBER pelo número do projeto da chave.

    O resultado será o seguinte:

    Service identity created: service-PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com
    

    A saída do comando indica que a conta de serviço do Cloud EKM (com o subdomínio gcp-sa-ekms) foi criada. No entanto, o comando também cria o agente de serviço do Cloud KMS (com o subdomínio gcp-sa-cloudkms), que é o agente de serviço que você vai usar mais tarde nestas instruções.

  2. Conceda permissões de administrador do Cloud KMS ao agente de serviço:

    gcloud projects add-iam-policy-binding PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
    

    Substitua PROJECT_NUMBER pelo número do projeto da chave.

Terraform

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

Ativar o Autokey com armazenamento de chaves no mesmo projeto

Quando você usa o Autokey com o armazenamento de chaves no mesmo projeto, o Autokey cria as chaves no mesmo projeto dos recursos que elas protegem. Os projetos que usam o armazenamento de chaves no mesmo projeto podem existir em pastas que usam o armazenamento de chaves em projeto dedicado. Quando o Autokey está ativado em um projeto, a configuração para envolvidos no projeto substitui a configuração na pasta mãe.

Para ativar o Autokey com armazenamento de chaves no mesmo projeto, siga estas etapas:

Console

  1. No console do Google Cloud , acesse a página Controles de gerenciamento de chaves.

    Acessar Controles de gerenciamento de chaves

  2. No seletor de contexto, escolha o projeto em que você quer ativar o Autokey com armazenamento de chaves no mesmo projeto.
  3. Na seção Autokey, clique em Gerenciar.
  4. Clique em Configurar.
  5. Em Origem da configuração, selecione Configurar para o projeto.
  6. Em Configuração, selecione Ativar armazenamento de chaves no mesmo projeto.
  7. Clique em Enviar.

    Uma mensagem confirma que o Autokey do Cloud KMS está ativado no projeto.

gcloud

  1. Crie um arquivo YAML que contenha o seguinte AutokeyConfig:

    name: projects/PROJECT_ID/autokeyConfig
    keyProjectResolutionMode: RESOURCE_PROJECT
    keyProject:
    

    Substitua PROJECT_ID pelo identificador do projeto em que você quer ativar o Autokey com armazenamento de chaves no mesmo projeto.

  2. Aplique o AutokeyConfig ao projeto:

    gcloud kms autokey-config update AUTOKEY_CONFIG_PATH
    

    Substitua AUTOKEY_CONFIG_PATH pelo caminho para o arquivo YAML criado na etapa anterior.

  3. Ative a API Cloud KMS no projeto:

    gcloud services enable cloudkms.googleapis.com
    

REST

  1. Usando a API REST, crie o AutokeyConfig para o projeto em que você quer ativar o Autokey com armazenamento de chaves no mesmo projeto:

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

    Substitua PROJECT_ID pelo ID do projeto em que você quer ativar o Autokey.

  2. Na CLI gcloud, ative a API Cloud KMS no projeto:

    gcloud services enable cloudkms.googleapis.com
    

Terraform

Para ativar o Autokey com armazenamento de chaves no mesmo projeto em um projeto individual, use um recurso autokey_config_project semelhante ao seguinte:

/* To set autokey config for a project */
resource "google_kms_autokey_config" "autokey_config_project" {
  provider = google-beta
  project = "projects/${google_project.key_management_project.project_id}"
  key_project_resolution_mode = "RESOURCE_PROJECT"
  # For project scope, valid values are RESOURCE_PROJECT or DISABLED
}

Para ativar o Autokey com armazenamento de chaves no mesmo projeto para todos os projetos em uma pasta, siga estas etapas:

Console

  1. No console do Google Cloud , acesse a página Controles de gerenciamento de chaves.

    Acessar Controles de gerenciamento de chaves

  2. No seletor de contexto, selecione a pasta em que você quer ativar o Autokey com armazenamento de chaves no mesmo projeto.
  3. Clique em Configurar.
  4. Em Origem da configuração, selecione Configurar para pasta.
  5. Em Configuração, selecione Ativar armazenamento de chaves no mesmo projeto.
  6. Clique em Enviar.

    Uma mensagem vai confirmar que o Autokey do Cloud KMS está ativado na pasta.

gcloud

  1. Crie um arquivo YAML que contenha o seguinte AutokeyConfig:

    name: folders/FOLDER_NUMBER/autokeyConfig
    keyProjectResolutionMode: RESOURCE_PROJECT
    keyProject:
    

    Substitua FOLDER_NUMBER pelo número da pasta em que você quer ativar o Autokey com armazenamento de chaves no mesmo projeto.

  2. Aplique o AutokeyConfig à pasta:

    gcloud kms autokey-config update AUTOKEY_CONFIG_PATH
    

    Substitua AUTOKEY_CONFIG_PATH pelo caminho para o arquivo YAML criado na etapa anterior.

REST

  1. Usando a API REST, crie o AutokeyConfig para a pasta em que você quer ativar o Autokey com o armazenamento de chaves no mesmo projeto:

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

    Substitua FOLDER_ID pelo ID da pasta em que você quer ativar o Autokey. Esse comando ativa o Autokey com armazenamento de chaves no mesmo projeto para todos os projetos na pasta.

  2. Na CLI gcloud, ative a API Cloud KMS em cada projeto em que você quer usar o Autokey com armazenamento de chaves no mesmo projeto:

    gcloud services enable cloudkms.googleapis.com
    

    Você pode ativar a API Cloud KMS em todos os projetos de uma só vez ou ativar a API em projetos individuais conforme necessário. Os desenvolvedores não poderão usar o Autokey no projeto até que a API Cloud KMS seja ativada para ele.

Terraform

Para ativar o Autokey com armazenamento de chaves no mesmo projeto em todos os projetos de uma pasta, use um recurso folder_config semelhante a este:

/* Enable AutokeyConfig on a folder */
resource "google_kms_autokey_config" "folder_config" {
  provider    = google-beta
  folder      = google_folder.autokey_folder.name
  key_project_resolution_mode = "RESOURCE_PROJECT"
  /* For folder scope, valid values are DEDICATED_KEY_PROJECT,
     RESOURCE_PROJECT, or DISABLED. With DEDICATED_KEY_PROJECT, define the
     key_project as well. With RESOURCE_PROJECT, omit key_project. Keys will
     be created in the same project as the protected resource. */
}

Limpar a configuração do Autokey

É possível limpar a configuração do Autokey em uma pasta ou projeto para reverter ao uso da configuração da pasta mãe.

Console

  1. No console do Google Cloud , acesse a página Controles de gerenciamento de chaves.

    Acessar Controles de gerenciamento de chaves

  2. No seletor de contexto, selecione a pasta ou o projeto em que você quer limpar a configuração do Autokey.
  3. Na seção Autokey, clique em Gerenciar.
  4. Clique em Configurar.
  5. Em Origem da configuração, selecione Herda.
  6. Clique em Enviar.

gcloud

  1. Crie um arquivo YAML que contenha o seguinte AutokeyConfig:

    name: RESOURCE_TYPE/RESOURCE_ID/autokeyConfig
    keyProjectResolutionMode: KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED
    keyProject:
    

    Substitua:

    • RESOURCE_TYPE: o tipo de recurso em que você quer limpar a configuração do Autokey. Defina como folders ou projects.
    • RESOURCE_ID: o identificador da pasta em que você quer limpar a configuração do Autokey.
  2. Aplique o AutokeyConfig à pasta ou ao projeto:

    gcloud kms autokey-config update AUTOKEY_CONFIG_PATH
    

    Substitua AUTOKEY_CONFIG_PATH pelo caminho para o arquivo YAML criado na etapa anterior.

REST

Remova a AutokeyConfig da pasta ou do projeto em que você quer reverter para a configuração herdada do Autokey:

curl "https://cloudkms.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/autokeyConfig?updateMask:keyProjectResolutionMode,keyProject" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{"keyProjectResolutionMode": "KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED", "keyProject": ""}'

Substitua:

  • RESOURCE_TYPE: o tipo de recurso em que você quer desativar o Autokey. Defina como folders ou projects.
  • RESOURCE_ID: o identificador da pasta em que você quer desativar o Autokey com armazenamento de chaves no mesmo projeto.

Terraform

# Clear AutokeyConfig for the folder
resource "google_kms_autokey_config" "autokey_config" {
  provider    = google-beta
  folder      = google_folder.autokey_folder.folder_id
  key_project = ""
  key_project_resolution_mode = "KEY_PROJECT_RESOLUTION_MODE_UNSPECIFIED"
}

Conferir a configuração efetiva do Autokey

É possível conferir a configuração efetiva do Autokey de uma pasta ou projeto. A configuração efetiva do Autokey informa o seguinte:

  • Indica se o Autokey está ativado no recurso selecionado.
  • Se o Autokey estiver ativado, o recurso selecionado usará o armazenamento de chaves em projeto dedicado ou no mesmo projeto.
  • Se o recurso selecionado usar o armazenamento de chaves de projeto dedicado, o identificador do recurso do projeto de chave dedicada.
  • Se esta configuração do Autokey é herdada de uma pasta mãe ou configurada no recurso selecionado.

Console

  1. No console do Google Cloud , acesse a página Controles de gerenciamento de chaves.

    Acessar Controles de gerenciamento de chaves

  2. No seletor de contexto, selecione a pasta ou o projeto em que você quer ver as configurações do Autokey.
  3. Na seção Autokey, clique em Gerenciar.

gcloud

Confira o AutokeyConfig efetivo:

gcloud kms autokey-config show-effective-config \
    --RESOURCE_TYPE=RESOURCE_ID

Substitua:

  • RESOURCE_TYPE: o tipo de recurso em que você quer ver a configuração efetiva do Autokey. Defina como folder ou project.
  • RESOURCE_ID: o identificador do recurso em que você quer ver a configuração efetiva do Autokey.

O resultado será o seguinte:

keyProject: KEY_PROJECT
keyProjectResolutionMode: KEY_PROJECT_RESOLUTION_MODE
source:
  name: RESOURCE_IDENTIFIER

Esta saída inclui os seguintes valores:

  • KEY_PROJECT: o identificador do recurso do projeto principal, por exemplo, projects/PROJECT_ID. Se o Autokey estiver desativado ou se o recurso for uma pasta em que o armazenamento de chaves no mesmo projeto estiver ativado, esse campo será omitido.
  • KEY_PROJECT_RESOLUTION_MODE: o keyProjectResolutionMode do recurso, por exemplo, RESOURCE_PROJECT, DEDICATED_KEY_PROJECT ou DISABLED. Se o Autokey não estiver ativado no recurso ou em qualquer recurso principal, esse campo será omitido.
  • RESOURCE_IDENTIFIER: o identificador do recurso em que o AutokeyConfig está configurado. Assim, você pode determinar se o AutokeyConfig foi herdado de um recurso pai ou configurado no recurso consultado.

REST

Confira a AutokeyConfig efetiva de uma pasta ou projeto:

curl "https://cloudkms.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:showEffectiveAutokeyConfig" \
    --request "GET" \
    --header "authorization: Bearer TOKEN"
  ```

Replace the following:
  • RESOURCE_TYPE: o tipo de recurso em que você quer ver a configuração do Autokey. Defina como folders ou projects.
  • RESOURCE_ID: o identificador do recurso em que você quer ver a configuração do Autokey.

O resultado será o seguinte:

{
  "keyProject": KEY_PROJECT,
  "keyProjectResolutionMode": KEY_PROJECT_RESOLUTION_MODE,
  "source": {
    RESOURCE_IDENTIFIER
  }
}

Esta saída inclui os seguintes valores:

  • KEY_PROJECT: o identificador do recurso do projeto principal, por exemplo, projects/PROJECT_ID. Se o Autokey estiver desativado ou se o recurso for uma pasta em que o armazenamento de chaves no mesmo projeto estiver ativado, esse campo será omitido.
  • KEY_PROJECT_RESOLUTION_MODE: o keyProjectResolutionMode do recurso, por exemplo, RESOURCE_PROJECT, DEDICATED_KEY_PROJECT ou DISABLED. Se o Autokey não estiver ativado no recurso ou em qualquer recurso principal, esse campo será omitido.
  • RESOURCE_IDENTIFIER: o identificador do recurso em que o AutokeyConfig está configurado. Assim, você pode determinar se o AutokeyConfig foi herdado de um recurso pai ou configurado no recurso consultado.

SQL

É possível usar uma consulta SQL com o Inventário de recursos do Cloud para avaliar a configuração efetiva do Autokey em todos os projetos de uma pasta ou organização.

  1. Defina variáveis de ambiente bash para o ID da organização e o escopo da pesquisa.

    export ORG_ID="ORGANIZATION_ID"
    export TARGET_SCOPE="RESOURCE_TYPE/RESOURCE_ID" 
    

    Substitua:

    • ORGANIZATION_ID: o identificador numérico da sua organização.
    • RESOURCE_TYPE: o tipo de recurso em que você quer ver as configurações efetivas do Autokey. Defina como organizations para ver as configurações de todos os projetos na sua organização ou folders para ver as configurações de todos os projetos em uma pasta específica.
    • RESOURCE_ID: o identificador numérico da organização ou pasta em que você quer ver as configurações efetivas do Autokey.
  2. Use o comando gcloud asset query para executar a consulta.

    gcloud asset query \
        --organization="${ORG_ID}" \
        --statement="
    WITH ProjectConfigs AS (
      SELECT
        p.name AS project_name,
        ARRAY_AGG(
          STRUCT(
            ancestor AS config_source,
            c.resource.data.state AS state,
            c.resource.data.keyProjectResolutionMode AS resolution_mode,
            c.resource.data.keyProject AS key_project
          )
          ORDER BY offset
          LIMIT 1
        )[SAFE_OFFSET(0)] AS effective_config
      FROM
        STANDARD_METADATA p
      CROSS JOIN
        UNNEST(p.ancestors) AS ancestor WITH OFFSET AS offset
      JOIN
        cloudkms_googleapis_com_AutokeyConfig c
      ON
        ancestor = REGEXP_REPLACE(c.name, r'^//cloudkms\.googleapis\.com/([^/]+/\d+)/autokeyConfig$', r'\1')
      WHERE
        p.assetType = 'cloudresourcemanager.googleapis.com/Project'
      GROUP BY
        p.name
    )
    SELECT
      REPLACE(r.name, '//cloudresourcemanager.googleapis.com/', '') AS project_name,
      p.resource.data.projectId AS project_id,
      COALESCE(rc.effective_config.config_source, 'No Autokey') AS effective_config_source,
      rc.effective_config.state AS autokey_config_state,
      rc.effective_config.resolution_mode AS resolution_mode,
      CASE 
        WHEN rc.effective_config.resolution_mode = 'RESOURCE_PROJECT' THEN p.resource.data.projectId
        ELSE COALESCE(REPLACE(rc.effective_config.key_project, 'projects/', ''), 'No Key Project')
      END AS key_project
    FROM
      STANDARD_METADATA r
    LEFT JOIN
      ProjectConfigs rc
    ON
      r.name = rc.project_name
    LEFT JOIN
      cloudresourcemanager_googleapis_com_Project p
    ON
      r.name = p.name
    WHERE
      r.assetType = 'cloudresourcemanager.googleapis.com/Project'
      AND '${TARGET_SCOPE}' IN UNNEST(r.ancestors)
    "
    

    A saída inclui os seguintes campos:

    • project_number: o identificador numérico completo de cada projeto, por exemplo, projects/PROJECT_NUMBER.
    • project_id: o identificador de cada projeto, por exemplo, PROJECT_ID.
    • effective_config_source: o identificador do recurso em que a configuração do Autokey do projeto está definida. Por exemplo, folders/FOLDER_NUMBER se a configuração for herdada de uma pasta mãe ou projects/PROJECT_NUMBER se a configuração for definida no projeto. Se o projeto não tiver ou herdar um AutokeyConfig, este campo vai mostrar No Autokey.
    • autokey_config_state: indica se uma configuração do Autokey é ACTIVE na pasta, mesmo que essa configuração seja DISABLED. Se o projeto não tiver ou herdar um AutokeyConfig, esse campo vai ficar vazio.
    • resolution_mode: o modo de resolução do projeto de chave da configuração efetiva do Autokey no projeto.
    • key_project: indica onde o Autokey cria chaves para recursos no projeto, por exemplo, projects/KEY_PROJECT_ID quando o projeto usa armazenamento de chaves em projeto dedicado ou RESOURCE_PROJECT_ID quando o projeto usa armazenamento de chaves no mesmo projeto. Quando o Autokey não está ativado no projeto, esse campo mostra No key project.

Desativar o Autokey

As mesmas funções que podem ativar o Autokey também podem desativá-lo. Para desativar o Autokey, limpe o AutokeyConfig ou defina o feedbackKeyProjectResolutionMode como DISABLED. É possível desativar o Autokey em uma pasta ou um projeto. Também é possível desativar o Autokey para projetos individuais em uma pasta em que ele está ativado.

Depois que o Autokey é desativado em uma pasta ou projeto, o agente de serviço do Cloud KMS não pode mais criar chaves para desenvolvedores quando eles criam recursos nessa pasta ou projeto.

Se quiser desativar completamente o Autokey, recomendamos que você também remova as vinculações do IAM para as funções roles/cloudkms.autokeyAdmin e roles/cloudkms.autokeyUser.

Desativar o Autokey não afeta as chaves atuais no projeto de chaves. Você pode continuar usando essas chaves para proteger seus recursos.

Desativar o Autokey para uma pasta ou um projeto

Console

  1. No console do Google Cloud , acesse a página Controles de gerenciamento de chaves.

    Acessar Controles de gerenciamento de chaves

  2. No seletor de contexto, selecione a pasta ou o projeto em que você quer desativar o Autokey.
  3. Na seção Autokey, clique em Gerenciar.
  4. Clique em Configurar.
  5. Em Origem da configuração, selecione Configurar para pasta ou Configurar para projeto.
  6. Em Configuração, selecione Desativar o Autokey para a pasta ou Desativar o Autokey para o projeto.
  7. Clique em Enviar.

    Uma mensagem vai aparecer pedindo que você confirme a desativação do Autokey.

  8. Para desativar o Autokey, clique em Confirmar.

    Uma mensagem vai confirmar que o Autokey do Cloud KMS foi desativado.

gcloud

  1. Crie um arquivo YAML que contenha o seguinte AutokeyConfig:

    name: RESOURCE_TYPE/RESOURCE_ID/autokeyConfig
    keyProjectResolutionMode: DISABLED
    keyProject:
    

    Substitua:

    • RESOURCE_TYPE: o tipo de recurso em que você quer desativar o Autokey. Defina como folders ou projects.
    • RESOURCE_ID: o identificador da pasta em que você quer desativar o Autokey com armazenamento de chaves no mesmo projeto.
  2. Aplique o AutokeyConfig à pasta ou ao projeto:

    gcloud kms autokey-config update AUTOKEY_CONFIG_PATH
    

    Substitua AUTOKEY_CONFIG_PATH pelo caminho para o arquivo YAML criado na etapa anterior.

REST

Atualize o AutokeyConfig da pasta ou do projeto em que você quer desativar o Autokey:

curl "https://cloudkms.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/autokeyConfig?updateMask:keyProjectResolutionMode,keyProject" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{"keyProjectResolutionMode": "DISABLED", "keyProject": ""}'

Substitua:

  • RESOURCE_TYPE: o tipo de recurso em que você quer desativar o Autokey. Defina como folders ou projects.
  • RESOURCE_ID: o identificador da pasta em que você quer desativar o Autokey com armazenamento de chaves no mesmo projeto.

Terraform

# Clear AutokeyConfig for the folder
resource "google_kms_autokey_config" "autokey_config" {
  provider    = google-beta
  folder      = google_folder.autokey_folder.folder_id
  key_project = ""
  key_project_resolution_mode = "DISABLED"
}

Revogar papéis do Autokey

Desativar a chave automática atualizando o AutokeyConfig impede que o agente de serviço do Cloud KMS provisione novas chaves no projeto ou na pasta afetados. No entanto, se você quiser desativar totalmente o Autokey, recomendamos que remova também as vinculações do IAM para as funções roles/cloudkms.autokeyAdmin e roles/cloudkms.autokeyUser.

  1. Opcional: revogue o papel roles/cloudkms.autokeyAdmin:

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

    Substitua:

    • FOLDER_ID: o ID da pasta em que você desativou o Autokey.
    • USER_EMAIL: o endereço de e-mail do usuário para quem você quer revogar a permissão de gerenciar o Autokey.
  2. Opcional: revogue a função roles/cloudkms.autokeyUser no nível da pasta:

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

    Substitua:

    • FOLDER_ID: o ID da pasta em que você desativou o Autokey.
    • USER_EMAIL: o endereço de e-mail do usuário para quem você quer revogar a permissão de usar o Autokey.
  3. Opcional: revogue o papel roles/cloudkms.autokeyUser no nível do projeto:

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

    Substitua:

    • RESOURCE_PROJECT_NUMBER: o número do projeto de um projeto de recurso na pasta em que você desativou o Autokey.
    • USER_EMAIL: o endereço de e-mail do usuário para quem você quer revogar a permissão de usar o Autokey.
  4. Opcional: se você não planeja continuar usando o projeto de chave para o Autokey em outras pastas, revogue a função roles/cloudkms.admin do agente de serviço do 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
    

    Substitua KEY_PROJECT_NUMBER pelo ID numérico do projeto de chave.

  5. Opcional: se você não planeja continuar usando as chaves criadas no projeto de chaves, revogue a função roles/cloudkms.admin do administrador do Cloud KMS:

    gcloud projects remove-iam-policy-binding \
        KEY_PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=user:KEY_ADMIN_EMAIL
    

    Substitua:

    • KEY_PROJECT_NUMBER: o número do projeto da chave.
    • KEY_ADMIN_EMAIL: o endereço de e-mail do usuário para quem você quer revogar a permissão de configurar o Autokey.

A seguir