Ativar o Autokey do Cloud KMS

Nesta página, mostramos como ativar e configurar o Autokey do Cloud KMS em uma na pasta de recursos. Para mais informações sobre o Autokey, consulte Visão geral do Autokey. Etapas nesta página deve ser realizada por um administrador de segurança.

Antes de começar

Antes de ativar o Autokey do Cloud KMS, você precisa ter:

  • Um recurso da organização que contém uma pasta onde você quer ativar Autokey. Se você não tiver uma pasta em que quer ativar Autokey, é possível criar um novo recurso ou pasta. Ativar o Autokey nesta pasta ativa Autokey para todos os projetos de recursos na pasta.
  • Se você tem projetos de recursos em que quer usar o Autokey, mas não estão dentro de uma pasta onde você ativará o Autokey, pode mover projetos de recursos existentes para novas pastas.

Funções exigidas

Para ter as permissões necessárias para ativar e configurar o Autokey, peça ao administrador para conceder a você seguintes papéis do IAM na organização ou pasta:

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Esses papéis predefinidos têm as permissões necessárias para ativar e configurar o Autokey. Para conferir 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
  • 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 o Autokey

É possível ativar o Autokey como parte da sua infraestrutura como código usando o Terraform para fazer as mudanças necessárias na configuração. 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, comece seguindo as instruções da próxima seção.

Configurar o projeto principal

Recomendamos criar um novo projeto de chave para conter os recursos do Cloud KMS criado pelo Autokey. Crie o projeto de chave recurso da organização. Se você já tiver um projeto principal que queira 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 principal pode ser criado dentro da mesma pasta em que você planeja ativar Autokey. Não crie outros recursos dentro do projeto principal. Se você tentar criar recursos protegidos pelo Autokey na chave projeto, a Autokey rejeita a solicitação de uma nova chave.

Se você quiser migrar para o Assured Workloads No futuro, crie o projeto de chave dentro da mesma pasta que os recursos protegidas por essas chaves.

Caso sua organização use o constraints/gcp.restrictCmekCryptoKeyProjects de política da organização para garantir que todas as CMEKs sejam de chaves adicione o projeto de chave à lista de projetos permitidos. Para Saiba mais sobre a política da organização de CMEK em Organização de CMEK ..

Criar um projeto principal

Console

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

    Acessar "Gerenciar recursos"

  2. Em Selecionar organização, escolha o recurso da organização quer criar um projeto.
  3. Clique em Criar projeto.
  4. Na janela Novo projeto que é exibida, insira um nome para o projeto e, selecione uma conta de faturamento. Um nome de projeto só pode conter letras, números, aspas simples, hifens, espaços ou pontos de exclamação, e devem ter entre 4 e 30 caracteres.
  5. Em Local, selecione o recurso que você quer que seja pai seu 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 do recurso em que em que você quer criar o novo projeto de chave. Digite organization para criar o novo projeto de chave em uma determinada organização ou inserir folder para criar o novo projeto de chave em uma determinada pasta.
    • PARENT_ID: o ID da organização ou em que você quer criar o projeto principal.

Prepare o projeto de chave do Autokey

Console

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

    Ativar a API

  2. Se você estiver usando um novo projeto de chave, conceda ao Cloud KMS as permissões de administrador no projeto principal usuários administradores:

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

      Ir para o IAM

    2. Selecione o projeto principal.

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

    4. Selecione o papel Administrador do Cloud KMS.

    5. Clique em Salvar.

gcloud

  1. Ative a API Cloud KMS no projeto principal:

    gcloud services enable cloudkms.googleapis.com
    
  2. Conceder permissões de administrador do Cloud KMS no projeto principal aos 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. projeto.
    • KEY_ADMIN_EMAIL: o endereço de e-mail do usuário responsável por gerenciar as chaves do Cloud KMS.

Ativar o Autokey do Cloud KMS em uma pasta de recursos

Console

  1. No console do Google Cloud, acesse a página Controles do KMS.

    Ir aos controles do KMS

  2. No seletor de contexto, escolha a pasta em que você quer ativar Autokey.

  3. Clique em Ativar.

  4. Selecione o projeto principal e clique em Enviar.

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

API

Crie o AutokeyConfig para a pasta em que você quer ativar 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 principal.

Configurar o agente de serviço do Cloud KMS

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

  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. projeto.

  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. projeto.

Conceder papéis de usuário do Autokey

Antes que seus desenvolvedores possam usar o Autokey, você precisa conceder a eles a permissão e o papel necessário. É possível conceder o papel no nível da pasta ou do projeto nível Com esse papel, os desenvolvedores podem solicitar chaves do agente de serviço ao criar recursos nessa pasta ou projeto.

Escolha uma das etapas a seguir ou ambas:

  • 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 do em que você quer ativar o Autokey.
    • USER_EMAIL: o endereço de e-mail do usuário para quem você quer conceder permissão para usar o Autokey.
  • Conceda o papel roles/cloudkms.autokeyUser no nível do projeto:

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

    Substitua:

    • PROJECT_ID: o ID do projeto de recursos.
    • USER_EMAIL: o endereço de e-mail do usuário para quem você quer conceder permissão para usar o Autokey.

Agora os desenvolvedores do Autokey podem criar chaves sob demanda. Para saber como para criar recursos protegidos usando chaves criadas sob demanda pelo Autokey, consulte Criar recursos protegidos usando o Autokey.

Ativar o Autokey 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 ao usuário
  • Configurar o agente de serviço do Cloud KMS
  • Ativar Autokey

Você precisa criar projetos de recursos separados na pasta correspondente.

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 = google_project.key_management_project.project_id
}

Substitua:

  • BILLING_ACCOUNT_ID: seu faturamento do Google Cloud ID da conta de serviço. O ID da conta de faturamento é um valor alfanumérico de 18 caracteres separados 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 o papel roles/cloudkms.autokeyAdmin, 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 o papel roles/cloudkms.autokeyUser, 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 o papel roles/cloudkms.admin, por exemplo, "Sasha@example.com", "Nur@example.com"
  • KEY_PROJECT_ID: o ID a ser usado para a chave. projeto, por exemplo, autokey-key-project.

Aplicar o uso do Autokey

Se você quiser exigir o uso do Autokey em uma pasta, poderá fazer isso combinando controles de acesso do IAM com políticas da organização CMEK. Isso funciona removendo permissões de criação de chaves dos principais agente de serviço do Cloud KMS e exigindo que todos os recursos sejam protegidas pela CMEK usando o projeto de chave do Autokey.

Para aplicar o uso do Autokey em uma pasta, siga estas etapas:

  1. Remover o acesso para criar chaves manualmente no projeto principal. Se não for possível usar as chaves criadas manualmente, somente as chaves criadas pelo Autokey poderão ser criadas neste projeto. Para mais informações sobre como controlar o acesso, consulte Controle de acesso com o IAM.

  2. Defina uma política da organização na pasta para exigir que os recursos sejam protegida com uma CMEK usando o constraints/gcp.restrictNonCmekServices restrição. Para mais informações, consulte Exigir proteção CMEK.

  3. Defina uma política da organização na pasta para exigir que as chaves sejam usadas para a CMEK precisa ser do projeto de chave do Autokey usando o constraints/gcp.restrictCmekCryptoKeyProjects. Para mais informações, consulte Limite o uso de chaves do Cloud KMS para CMEK.

Desativar Autokey

O Autokey do Cloud KMS está ativado e desativado no nível da pasta. O mesmo que podem ativar o Autokey para uma pasta podem desativar o Autokey da 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 O agente de serviço do Cloud KMS não pode mais criar chaves para desenvolvedores ao eles criam recursos na pasta. Remover o link entre a pasta e o projeto principal desativa o Autokey na pasta; No entanto, remova também as vinculações do IAM das papéis roles/cloudkms.autokeyAdmin e roles/cloudkms.autokeyUser.

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

Limpar AutokeyConfig

Console

  1. No console do Google Cloud, acesse a página Controles do KMS.

    Ir aos controles do KMS

  2. No seletor de contexto, selecione a pasta em que você quer desativar Autokey.

  3. Clique em Desativar.

    Uma mensagem será exibida solicitando que você confirme a desativação. Autokey.

  4. Para desativar o Autokey, clique em Confirmar.

    Uma mensagem confirma que o Autokey do Cloud KMS está desativado na pasta.

API

Limpe o AutokeyConfig da pasta que você quer desativar. 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 o Autokey.

Revogar papéis do Autokey

  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 do na qual você desativou o Autokey.
    • USER_EMAIL: o endereço de e-mail do usuário para quem você quer revogar a permissão para gerenciar o Autokey.
  2. 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 do na qual você desativou o Autokey.
    • USER_EMAIL: o endereço de e-mail do usuário para quem você quer revogar a permissão para 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 dentro 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 para usar o Autokey.
  4. Opcional: se você não pretende continuar usando o projeto principal para Autokey para 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.

  5. Opcional: se você não planeja continuar usando chaves criadas dentro da chave projeto, revogue o papel roles/cloudkms.admin para o serviço do Cloud KMS administrador:

    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 do em um projeto-chave.
    • USER_EMAIL: o endereço de e-mail do usuário para quem você quer revogar a permissão para usar o Autokey.

A seguir