Esta página mostra como ativar e configurar a chave automática do Cloud KMS em uma pasta de recursos. Para mais informações sobre as chaves automáticas, consulte Visão geral das chaves automáticas. As etapas desta página precisam ser concluídas por um administrador de segurança.
Antes de começar
Antes de ativar o Cloud KMS Autokey, você precisa ter o seguinte:
- Um recurso da organização que contém uma pasta em que você quer ativar a chave automática. Se você não tiver uma pasta em que quer ativar a chave automática, crie uma nova pasta de recursos. Ativar a chave automática nessa pasta ativa a chave automática para todos os projetos de recursos na pasta.
- Se você tiver projetos de recursos em que quer usar a chave automática, mas eles não estiverem em uma pasta em que você vai ativar a chave automática, mude os projetos de recursos para novas pastas.
Funções exigidas
Para receber as permissões necessárias para ativar e configurar a chave automática, peça ao administrador para conceder a você os seguintes papéis do IAM na organização ou pasta:
-
Administrador do Autokey do Cloud KMS (
roles/cloudkms.autokeyAdmin
) -
Administrador de pastas do IAM (
roles/resourcemanager.folderIamAdmin
) -
Usuário da conta de faturamento (
roles/billing.user
)
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 chave automática. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As permissões a seguir são necessárias para ativar e configurar a chave automática:
-
cloudkms.autokeyConfigs.*
-
cloudkms.projects.showEffectiveAutokeyConfig
-
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.
Decida como você quer ativar a chave automática
É possível ativar a chave automática como parte da estratégia de infraestrutura como código usando o Terraform para fazer as mudanças de configuração necessárias. Se você quer ativar a chave automática usando o Terraform, consulte Ativar a chave automática 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 projeto principal
Recomendamos criar um novo projeto de chave para conter os recursos do Cloud KMS criados pelo Autokey. Crie o projeto de chave no recurso da organização. Se você já tem 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 a chave automática. Não crie outros recursos no projeto principal. Se você tentar criar recursos protegidos pelo Autokey no projeto chave, o Autokey vai rejeitar a solicitação de uma nova chave.
Se você quiser migrar para o Assured Workloads no futuro, crie o projeto de chaves na mesma pasta dos recursos protegidos por essas chaves.
Se a organização usar a restrição de política da organização constraints/gcp.restrictCmekCryptoKeyProjects
para garantir que todas as CMEKs sejam de projetos de chaves especificados, adicione o projeto de chave à lista de projetos permitidos. Para
mais informações sobre a política da organização CMEK, consulte Políticas da organização
CMEK.
Criar um projeto principal
Console
- No console do 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 o nome do projeto 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 que seja o pai do seu 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_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. Insiraorganization
para criar o novo projeto de chave em uma determinada organização oufolder
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.
Preparar o projeto da chave Autokey
Console
Ative a API Cloud KMS no seu projeto principal.
Se você estiver usando um novo projeto de chave, conceda permissões de administrador do Cloud KMS no projeto. Repita as etapas a seguir para conceder o papel de Administrador do Cloud KMS a você e a cada usuário administrador do Cloud KMS:
No console do Google Cloud, abra 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 seu projeto principal:
gcloud services enable cloudkms.googleapis.com
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 todos os 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.
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, selecione a pasta em que você quer ativar a 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 a
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 a chave automática.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íticas 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_NUMBER
Substitua
PROJECT_NUMBER
pelo número do projeto da chave.O resultado será assim:
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í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.com
Substitua
PROJECT_NUMBER
pelo número do projeto da chave.
Conceder papéis de usuário da Autokey
Antes que os desenvolvedores possam usar a chave automática, é necessário conceder a função necessária a eles. É possível conceder o papel no nível da pasta ou do projeto. Com essa função, os desenvolvedores podem solicitar chaves do agente de serviço do Cloud KMS ao criar recursos nessa pasta ou projeto.
Escolha uma ou ambas as etapas a seguir:
Conceda o papel
roles/cloudkms.autokeyUser
no nível da pasta:gcloud resource-manager folders add-iam-policy-binding \ FOLDER_ID --role=roles/cloudkms.autokeyUser \ --member=user:USER_EMAIL
Substitua:
FOLDER_ID
: o ID da pasta em que você quer ativar a chave automática.USER_EMAIL
: o endereço de e-mail do usuário a quem você quer conceder permissão para usar a Autokey.
Conceda o papel
roles/cloudkms.autokeyUser
no nível do projeto:gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/cloudkms.autokeyUser \ --member=user:USER_EMAIL
Substitua:
PROJECT_ID
: o ID do projeto de recurso.USER_EMAIL
: o endereço de e-mail do usuário a quem você quer conceder permissão para usar a Autokey.
Agora os desenvolvedores do Autokey podem criar chaves sob demanda. Para saber como criar recursos protegidos usando chaves criadas sob demanda pelo Autokey, consulte Criar recursos protegidos usando o Autokey.
Ativar a chave automática usando o Terraform
O exemplo do Terraform a seguir automatiza as seguintes etapas de configuração:
- Criar uma pasta de recursos
- Criar um projeto principal
- Conceder permissões de usuário
- Configurar o agente de serviço do Cloud KMS
- Ativar a chave automática
É necessário criar projetos de recursos separadamente 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 admin 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 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}"
}
Substitua:
BILLING_ACCOUNT_ID
: o ID da conta de faturamento do Google Cloud. O ID da conta de faturamento é um valor alfanumérico de 18 caracteres separados por hifens, 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çãoroles/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 precisam ter a funçãoroles/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 precisam ter a funçãoroles/cloudkms.admin
, por exemplo,"Sasha@example.com", "Nur@example.com"
.KEY_PROJECT_ID
: o ID a ser usado para o projeto chave, por exemplo,autokey-key-project
.
Aplicar o uso da chave automática
Se você quiser aplicar o uso da Autokey em uma pasta, faça isso combinando os controles de acesso do IAM com as políticas da organização da CMEK. Isso funciona removendo as permissões de criação de chaves de principais que não sejam o agente de serviço do Cloud KMS e exigindo que todos os recursos sejam protegidos por CMEK usando o projeto de chave Autokey.
Para forçar o uso da chave automática 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, só será possível criar chaves pelo Autokey neste 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 CMEK.Defina uma política da organização na pasta para exigir que as chaves usadas para CMEK precisam ser do projeto de chave Autokey usando a restrição
constraints/gcp.restrictCmekCryptoKeyProjects
. Para mais informações, consulte Limitar o uso de chaves do Cloud KMS para CMEK.
Desativar a chave automática
O Cloud KMS Autokey é ativado e desativado no nível da pasta. As mesmas
funções que podem ativar a chave automática para uma pasta podem desativá-la
para essa pasta. Para desativar a chave automática em uma pasta, limpe o
AutokeyConfig
para remover a associação entre a pasta e o
projeto de chave da chave automática.
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. A remoção da vinculação entre a pasta e o projeto de chave desativa a chave automática na pasta. No entanto, recomendamos que você também remova as vinculações do IAM para os papéis roles/cloudkms.autokeyAdmin
e roles/cloudkms.autokeyUser
.
A desativação do Autokey não afeta as chaves atuais no projeto. 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, selecione a pasta em que você quer desativar a Autokey.
Clique em Desativar.
Uma mensagem vai aparecer solicitando que você confirme a desativação da chave automática.
Para desativar a chave automática, clique em Confirmar.
Uma mensagem confirma que o Cloud KMS Autokey está desativado na pasta.
API
Limpe o AutokeyConfig
da pasta em que você quer desativar a
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 '{}'
Substitua:
FOLDER_ID
: o ID da pasta em que você quer desativar a chave automática.
Revogar papéis da 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_EMAIL
Substitua:
FOLDER_ID
: o ID da pasta em que você desativou a chave automática.USER_EMAIL
: o endereço de e-mail do usuário para quem você quer revogar a permissão de gerenciamento da chave automática.
Opcional: revogue o papel
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 a chave automática.USER_EMAIL
: o endereço de e-mail do usuário para quem você quer revogar a permissão de usar a Autokey.
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 de um projeto de recurso na pasta em que você desativou a chave automática.USER_EMAIL
: o endereço de e-mail do usuário para quem você quer revogar a permissão de usar a Autokey.
Opcional: se você não pretende continuar usando o projeto de chave para a Autokey em outras pastas, revogue o papel
roles/cloudkms.admin
para o 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 principal.Opcional: se você não pretende continuar usando as chaves criadas no projeto de chaves, revogue a função
roles/cloudkms.admin
para o 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.USER_EMAIL
: o endereço de e-mail do usuário para quem você quer revogar a permissão de usar a Autokey.
A seguir
- Saiba quando usar a Autokey.
- Saiba como a chave automática funciona.
- Agora, os desenvolvedores do Autokey podem criar recursos protegidos usando o Autokey.