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.createnã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.createnã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 ativar o Autokey:
- Administrador do Autokey do Cloud KMS (
roles/cloudkms.autokeyAdmin) - Administrador do Service Usage (
roles/serviceusage.serviceUsageAdmin)
- Administrador do Autokey do Cloud KMS (
-
Para ativar o Autokey com armazenamento de chaves em projeto dedicado:
- Administrador de pastas do IAM (
roles/resourcemanager.folderIamAdmin) - Usuário da conta de faturamento (
roles/billing.user)
- Administrador de pastas do IAM (
-
Para conferir a configuração do Autokey:
Leitor do Cloud KMS (
roles/cloudkms.viewer) -
Para conferir todas as configurações efetivas do Autokey:
- Leitor de recursos do Cloud (
roles/cloudasset.viewer) na organização - Consumidor do Service Usage (
roles/serviceusage.serviceUsageConsumer)
- Leitor de recursos do Cloud (
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:
- Defina as variáveis usadas nas amostras subsequentes do Terraform.
- Crie uma pasta de recursos. Pule esta etapa se você planeja usar apenas o armazenamento de chaves do mesmo projeto em projetos individuais.
- 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:
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.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".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".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
-
No console Google Cloud , acesse a página Gerenciar recursos.
- Em Selecionar organização, escolha o recurso da organização em que você quer criar um projeto.
- Clique em Criar projeto.
- 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.
- Em Local, selecione o recurso que você quer como pai do projeto principal.
- Para concluir a criação do projeto, clique em Criar.
gcloud
Crie um novo projeto:
gcloud projects create PROJECT_ID \ --PARENT_TYPE=PARENT_IDSubstitua:
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. Insiraorganizationpara criar o novo projeto de chave em uma determinada organização ou insirafolderpara 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,organizationsoufolders.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
Ative a API Cloud KMS no projeto de chaves.
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:
No console Google Cloud , acesse a página IAM.
Selecione o projeto principal.
Clique em Conceder acesso e insira o endereço de e-mail do usuário.
Selecione a função Administrador do Cloud KMS.
Clique em Salvar.
gcloud
Ative a API Cloud KMS no projeto de chaves:
gcloud services enable cloudkms.googleapis.comConceda permissões de administrador do Cloud KMS no projeto da chave. Repita o comando a seguir para conceder o papel
roles/cloudkms.admina 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_EMAILSubstitua:
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
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_IDpelo identificador do projeto de chave dedicada.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.
Modifique a política de permissão retornada para adicionar o papel
roles/cloudkms.admina 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_LISTpor 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.
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
-
No console do Google Cloud , acesse a página Controles de gerenciamento de chaves.
- No seletor de contexto, selecione a pasta em que você quer ativar o Autokey com armazenamento de chaves de projeto dedicado.
- Na seção Autokey, clique em Gerenciar.
- Clique em Configurar.
- Em Origem da configuração, selecione Configurar para pasta.
- Em Configuração, selecione Ativar o armazenamento de chaves em projeto dedicado.
Selecione o projeto principal e clique em Enviar.
Uma mensagem vai confirmar que o Autokey do Cloud KMS está ativado na pasta.
gcloud
Crie um arquivo YAML que contenha o seguinte
AutokeyConfig:name: folders/FOLDER_NUMBER/autokeyConfig keyProjectResolutionMode: DEDICATED_KEY_PROJECT keyProject: projects/PROJECT_IDSubstitua:
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.
Aplique o
AutokeyConfigà pasta:gcloud kms autokey-config update AUTOKEY_CONFIG_PATHSubstitua 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
Crie o agente de serviço do Cloud KMS:
gcloud beta services identity create --service=cloudkms.googleapis.com \ --project=PROJECT_NUMBERSubstitua
PROJECT_NUMBERpelo número do projeto da chave.O resultado será o seguinte:
Service identity created: service-PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.comA 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íniogcp-sa-cloudkms), que é o agente de serviço que você vai usar mais tarde nestas instruções.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.comSubstitua
PROJECT_NUMBERpelo 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
-
No console do Google Cloud , acesse a página Controles de gerenciamento de chaves.
- No seletor de contexto, escolha o projeto em que você quer ativar o Autokey com armazenamento de chaves no mesmo projeto.
- Na seção Autokey, clique em Gerenciar.
- Clique em Configurar.
- Em Origem da configuração, selecione Configurar para o projeto.
- Em Configuração, selecione Ativar armazenamento de chaves no mesmo projeto.
Clique em Enviar.
Uma mensagem confirma que o Autokey do Cloud KMS está ativado no projeto.
gcloud
Crie um arquivo YAML que contenha o seguinte
AutokeyConfig:name: projects/PROJECT_ID/autokeyConfig keyProjectResolutionMode: RESOURCE_PROJECT keyProject:Substitua
PROJECT_IDpelo identificador do projeto em que você quer ativar o Autokey com armazenamento de chaves no mesmo projeto.Aplique o
AutokeyConfigao projeto:gcloud kms autokey-config update AUTOKEY_CONFIG_PATHSubstitua AUTOKEY_CONFIG_PATH pelo caminho para o arquivo YAML criado na etapa anterior.
Ative a API Cloud KMS no projeto:
gcloud services enable cloudkms.googleapis.com
REST
Usando a API REST, crie o
AutokeyConfigpara 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_IDpelo ID do projeto em que você quer ativar o Autokey.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
-
No console do Google Cloud , acesse a página Controles de gerenciamento de chaves.
- No seletor de contexto, selecione a pasta em que você quer ativar o Autokey com armazenamento de chaves no mesmo projeto.
- Clique em Configurar.
- Em Origem da configuração, selecione Configurar para pasta.
- Em Configuração, selecione Ativar armazenamento de chaves no mesmo projeto.
Clique em Enviar.
Uma mensagem vai confirmar que o Autokey do Cloud KMS está ativado na pasta.
gcloud
Crie um arquivo YAML que contenha o seguinte
AutokeyConfig:name: folders/FOLDER_NUMBER/autokeyConfig keyProjectResolutionMode: RESOURCE_PROJECT keyProject:Substitua
FOLDER_NUMBERpelo número da pasta em que você quer ativar o Autokey com armazenamento de chaves no mesmo projeto.Aplique o
AutokeyConfigà pasta:gcloud kms autokey-config update AUTOKEY_CONFIG_PATHSubstitua AUTOKEY_CONFIG_PATH pelo caminho para o arquivo YAML criado na etapa anterior.
REST
Usando a API REST, crie o
AutokeyConfigpara 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_IDpelo 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.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.comVocê 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
-
No console do Google Cloud , acesse a página Controles de gerenciamento de chaves.
- No seletor de contexto, selecione a pasta ou o projeto em que você quer limpar a configuração do Autokey.
- Na seção Autokey, clique em Gerenciar.
- Clique em Configurar.
- Em Origem da configuração, selecione Herda.
- Clique em Enviar.
gcloud
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 comofoldersouprojects.RESOURCE_ID: o identificador da pasta em que você quer limpar a configuração do Autokey.
Aplique o
AutokeyConfigà pasta ou ao projeto:gcloud kms autokey-config update AUTOKEY_CONFIG_PATHSubstitua 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 comofoldersouprojects.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
-
No console do Google Cloud , acesse a página Controles de gerenciamento de chaves.
- No seletor de contexto, selecione a pasta ou o projeto em que você quer ver as configurações do Autokey.
- 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 comofolderouproject.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: okeyProjectResolutionModedo recurso, por exemplo,RESOURCE_PROJECT,DEDICATED_KEY_PROJECTouDISABLED. 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 oAutokeyConfigestá configurado. Assim, você pode determinar se oAutokeyConfigfoi 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 comofoldersouprojects.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: okeyProjectResolutionModedo recurso, por exemplo,RESOURCE_PROJECT,DEDICATED_KEY_PROJECTouDISABLED. 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 oAutokeyConfigestá configurado. Assim, você pode determinar se oAutokeyConfigfoi 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.
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 comoorganizationspara ver as configurações de todos os projetos na sua organização oufolderspara 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.
Use o comando
gcloud asset querypara 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_NUMBERse a configuração for herdada de uma pasta mãe ouprojects/PROJECT_NUMBERse a configuração for definida no projeto. Se o projeto não tiver ou herdar umAutokeyConfig, este campo vai mostrarNo Autokey.autokey_config_state: indica se uma configuração do Autokey éACTIVEna pasta, mesmo que essa configuração sejaDISABLED. Se o projeto não tiver ou herdar umAutokeyConfig, 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_IDquando o projeto usa armazenamento de chaves em projeto dedicado ouRESOURCE_PROJECT_IDquando o projeto usa armazenamento de chaves no mesmo projeto. Quando o Autokey não está ativado no projeto, esse campo mostraNo 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
-
No console do Google Cloud , acesse a página Controles de gerenciamento de chaves.
- No seletor de contexto, selecione a pasta ou o projeto em que você quer desativar o Autokey.
- Na seção Autokey, clique em Gerenciar.
- Clique em Configurar.
- Em Origem da configuração, selecione Configurar para pasta ou Configurar para projeto.
- Em Configuração, selecione Desativar o Autokey para a pasta ou Desativar o Autokey para o projeto.
Clique em Enviar.
Uma mensagem vai aparecer pedindo que você confirme a desativação do Autokey.
Para desativar o Autokey, clique em Confirmar.
Uma mensagem vai confirmar que o Autokey do Cloud KMS foi desativado.
gcloud
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 comofoldersouprojects.RESOURCE_ID: o identificador da pasta em que você quer desativar o Autokey com armazenamento de chaves no mesmo projeto.
Aplique o
AutokeyConfigà pasta ou ao projeto:gcloud kms autokey-config update AUTOKEY_CONFIG_PATHSubstitua 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 comofoldersouprojects.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.
Opcional: revogue o papel
roles/cloudkms.autokeyAdmin:gcloud resource-manager folders remove-iam-policy-binding \ FOLDER_ID --role=roles/cloudkms.autokeyAdmin \ --member=user:USER_EMAILSubstitua:
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.
Opcional: revogue a função
roles/cloudkms.autokeyUserno nível da pasta:gcloud resource-manager folders remove-iam-policy-binding \ FOLDER_ID --role=roles/cloudkms.autokeyUser \ --member=user:USER_EMAILSubstitua:
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.
Opcional: revogue o papel
roles/cloudkms.autokeyUserno nível do projeto:gcloud projects remove-iam-policy-binding \ RESOURCE_PROJECT_NUMBER \ --role=roles/cloudkms.autokeyUser \ --member=user:USER_EMAILSubstitua:
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.
Opcional: se você não planeja continuar usando o projeto de chave para o Autokey em outras pastas, revogue a função
roles/cloudkms.admindo 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.comSubstitua
KEY_PROJECT_NUMBERpelo ID numérico do projeto de chave.Opcional: se você não planeja continuar usando as chaves criadas no projeto de chaves, revogue a função
roles/cloudkms.admindo administrador do Cloud KMS:gcloud projects remove-iam-policy-binding \ KEY_PROJECT_NUMBER \ --role=roles/cloudkms.admin \ --member=user:KEY_ADMIN_EMAILSubstitua:
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
- Saiba quando usar a Autokey.
- Saiba como o Autokey funciona.
- Saiba como controlar o uso do Autokey.
- Agora, os desenvolvedores do Autokey podem criar recursos protegidos usando o Autokey.