Nesta página, mostramos como ativar e configurar a chave automática do Cloud KMS para gerenciamento centralizado de chaves em uma pasta de recursos ou para gerenciamento delegado de chaves em projetos (pré-lançamento). Para mais informações sobre a chave automática, consulte Visão geral da chave automática. Este documento é destinado a administradores.
Antes de começar
Antes de ativar o Autokey do Cloud KMS para gerenciamento centralizado de chaves usando um projeto de chave dedicado para todos os projetos em 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 onde quer ativar o Autokey, crie uma pasta de recursos. Ao ativar o Autokey nessa pasta, ele é ativado para todos os projetos de recursos nela.
Se você tiver projetos de recursos em que quer usar o gerenciamento centralizado de chaves com o Autokey, 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 para projetos (prévia) e habilitar o gerenciamento delegado de chaves e as chaves do 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 é 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 principal:
-
Administrador do Autokey do Cloud KMS (
roles/cloudkms.autokeyAdmin) -
Administrador do Service Usage (
roles/serviceusage.serviceUsageAdmin) -
Para ativar o Autokey centralizado:
-
Administrador de pastas do IAM (
roles/resourcemanager.folderIamAdmin) -
Usuário da conta de faturamento (
roles/billing.user)
-
Administrador de pastas do IAM (
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 o 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:
-
cloudkms.autokeyConfigs.* -
cloudkms.projects.showEffectiveAutokeyConfig -
serviceusage.services.enable -
Para ativar o Autokey centralizado:
-
resourcemanager.folders.get -
resourcemanager.folders.getIamPolicy -
resourcemanager.folders.setIamPolicy -
billing.resourceAssociations.create
-
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Decidir como ativar o Autokey
É possível ativar o Autokey como parte da sua estratégia de infraestrutura como código usando o Terraform para fazer as mudanças de configuração necessárias. Se você quiser usar o Terraform para ativar o Autokey, consulte Ativar o Autokey usando o Terraform nesta página. Se você não quiser usar o Terraform, siga as instruções na próxima seção.
Configurar o Autokey para gerenciamento de chaves centralizado
Ao usar o Autokey para gerenciamento centralizado de chaves 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 modelo de gerenciamento de chaves delegado (prévia), não será necessário um projeto de chaves dedicado. Continue em Ativar o Autokey para gerenciamento de chaves delegado.
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 aparece, insira um nome e selecione uma conta de faturamento. O nome de um projeto só pode conter 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 ser o 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 oufolderpara 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.
Preparar o projeto de chave do Autokey
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 do 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.
Ativar o Cloud KMS Autokey em uma pasta de recursos
Console
No console do Google Cloud , acesse a página Controles do KMS.
No seletor de contexto, escolha a pasta em que você quer ativar o Autokey.
Clique em Ativar.
Selecione o projeto principal e clique em Enviar.
Uma mensagem vai confirmar que o Cloud KMS Autokey está ativado na pasta.
API
Crie o AutokeyConfig para a pasta em que você quer ativar o
Autokey:
curl "https://cloudkms.googleapis.com/v1/folders/FOLDER_ID/autokeyConfig?updateMask=keyProject" \
--request "PATCH" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"key_project": "projects/PROJECT_ID"}'
Substitua:
FOLDER_ID: o ID da pasta em que você quer ativar o Autokey.PROJECT_ID: o ID do projeto da chave.
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.
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 usado mais adiante 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.
Ativar o Autokey para gerenciamento de chaves delegado
Quando você usa o Autokey para gerenciamento delegado de chaves, ele cria as chaves no mesmo projeto dos recursos que elas protegem. Os projetos que oferecem suporte ao gerenciamento delegado de chaves com o Autokey podem estar em pastas em que o Autokey está ativado para gerenciamento centralizado de chaves. Quando o Autokey está ativado em um projeto, a configuração no nível do projeto substitui a configuração na pasta mãe.
Para ativar o Autokey em um projeto específico, siga estas etapas:
Usando a API REST, crie o
AutokeyConfigpara o projeto em que você quer ativar o Autokey:curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/autokeyConfig?updateMask=key_project_resolution_mode" \ --request "PATCH" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data '{"key_project_resolution_mode": "RESOURCE_PROJECT"}'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
Para ativar o Autokey em todos os projetos de uma pasta, siga estas etapas:
Usando a API REST, crie o
AutokeyConfigpara a pasta em que você quer ativar o Autokey para usar o gerenciamento de chaves delegado:curl "https://cloudkms.googleapis.com/v1/folders/FOLDER_ID/autokeyConfig?updateMask=key_project_resolution_mode" \ --request "PATCH" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data '{"key_project_resolution_mode": "RESOURCE_PROJECT"}'Substitua
FOLDER_IDpelo ID da pasta em que você quer ativar o Autokey. Esse comando ativa a Autokey 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 a Autokey para gerenciamento de chaves delegadas:
gcloud services enable cloudkms.googleapis.comÉ possível ativar a API Cloud KMS em todos os projetos de uma só vez ou 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.
Ativar o Autokey usando o Terraform
Gerenciamento de chaves centralizado com o Terraform
O exemplo do Terraform a seguir automatiza as etapas de configuração:
- Criar uma pasta de recursos
- Criar um projeto principal
- Conceder permissões aos usuários
- Configurar o agente de serviço do Cloud KMS
- Ativar o Autokey
É necessário criar projetos de recursos separados na pasta de recursos.
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]
}
/* The project ID to use for the 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 Key Management Project. This project will contain the Key Rings and Keys generated by Cloud KMS Autokey"
type = string
default = "KEY_PROJECT_ID"
}
# Create a new folder
resource "google_folder" "autokey_folder" {
parent = "organizations/${var.organization_ID}"
display_name = "autokey_folder"
}
# 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
}
# 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
}
# Grant role for Cloud KMS admins to use Autokey in the 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 ]
}
# 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]
}
# Create 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"
}
/* Enable AutokeyConfig for centralized key management in this 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, 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.
}
Substitua:
BILLING_ACCOUNT_ID: o ID da sua conta de faturamento do 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 devem ter o papelroles/cloudkms.autokeyAdmin, por exemplo,"Ariel@example.com", "Charlie@example.com".AUTOKEY_DEVELOPER_USER_IDS: uma lista de endereços de e-mail de usuários que devem ter o papelroles/cloudkms.autokeyUser, por exemplo,"Kalani@example.com", "Mahan@example.com".KEY_PROJECT_ADMIN_USER_IDS: uma lista de endereços de e-mail de usuários que devem ter o papelroles/cloudkms.admin, por exemplo,"Sasha@example.com", "Nur@example.com".KEY_PROJECT_ID: o ID a ser usado para o projeto de chave dedicada. Por exemplo,autokey-key-project. Se você especificar um projeto de chave, okey_project_resolution_modeprecisará serDEDICATED_KEY_PROJECT.
Gerenciamento delegado de chaves com o Terraform
Para ativar o Autokey em todos os projetos de uma pasta para gerenciamento delegado de chaves, 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, 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.
}
Para ativar o Autokey em projetos individuais para gerenciamento delegado de chaves, 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, DISABLED
}
Aplicar o uso do Autokey
Se você quiser aplicar o uso do Autokey em uma pasta, combine os controles de acesso do IAM com as políticas da organização de CMEK. Isso funciona removendo as permissões de criação de chaves de principais diferentes do agente de serviço do Cloud KMS e exigindo que todos os recursos sejam protegidos por CMEK usando o projeto de chave do Autokey.
Para aplicar o uso do Autokey em uma pasta, siga estas etapas:
Remova o acesso para criar chaves manualmente no projeto de chave. Se não for possível criar chaves manualmente, apenas as chaves criadas pelo Autokey poderão ser criadas nesse projeto. Para mais informações sobre como controlar o acesso, consulte Controle de acesso com o IAM.
Defina uma política da organização na pasta para exigir que os recursos sejam protegidos com uma CMEK usando a restrição
constraints/gcp.restrictNonCmekServices. Para mais informações, consulte Exigir proteção da CMEK.Defina uma política da organização na pasta para exigir que as chaves usadas para CMEK sejam do projeto de chave do Autokey usando a restrição
constraints/gcp.restrictCmekCryptoKeyProjects. Para mais informações, consulte Limitar o uso de chaves do Cloud KMS para CMEK.
Desativar o Autokey
O Cloud KMS Autokey é ativado e desativado no nível da pasta. As mesmas
funções que podem ativar a Autokey para uma pasta também podem desativá-la
para essa pasta. Para desativar o Autokey em uma pasta, limpe a
AutokeyConfig para remover a associação entre a pasta e o
projeto de chave do Autokey.
Depois que a configuração do Autokey na pasta for removida, o
agente de serviço do Cloud KMS não poderá mais criar chaves para desenvolvedores quando
eles criarem recursos na pasta. Remover o link entre a pasta e o projeto de chave desativa o Autokey na pasta. No entanto, recomendamos que você também remova as vinculações do IAM para as funções roles/cloudkms.autokeyAdmin e roles/cloudkms.autokeyUser.
A desativação do Autokey não afeta as chaves atuais no projeto de chaves. Você pode continuar usando essas chaves para proteger seus recursos.
Limpar AutokeyConfig
Console
No console do Google Cloud , acesse a página Controles do KMS.
No seletor de contexto, escolha a pasta em que você quer desativar a Autochave.
Clique em Desativar.
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 Cloud KMS Autokey está desativado na pasta.
API
Desmarque a opção AutokeyConfig na pasta em que você quer desativar a Autochave:
curl "https://cloudkms.googleapis.com/v1/folders/FOLDER_ID/autokeyConfig?updateMask=keyProject" \
--request "PATCH" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{}'
Substitua:
FOLDER_ID: o ID da pasta em que você quer desativar o Autokey.
Revogar papéis do Autokey
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 principal.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.USER_EMAIL: o endereço de e-mail do usuário para quem você quer revogar a permissão de usar o Autokey.
A seguir
- Saiba quando usar a Autokey.
- Saiba como o Autokey funciona.
- Agora, os desenvolvedores do Autokey podem criar recursos protegidos usando o Autokey.