Ative a chave automática do Cloud KMS

Esta página mostra como ativar e configurar a chave automática do Cloud KMS numa pasta de recursos. Para mais informações sobre a Autokey, consulte a vista geral da Autokey. Os passos nesta página devem ser concluídos por um administrador de segurança.

Antes de começar

Antes de poder ativar a chave automática do Cloud KMS, tem de ter o seguinte:

  • Um recurso de organização que contém uma pasta onde quer ativar o Autokey. Se não tiver uma pasta onde queira ativar a chave automática, pode criar uma nova pasta de recursos. A ativação da chave automática nesta pasta ativa a chave automática para todos os projetos de recursos na pasta.
  • Se tiver projetos de recursos nos quais quer usar o Autokey, mas que não estão numa pasta onde vai ativar o Autokey, pode mover os projetos de recursos existentes para novas pastas.

Funções necessárias

Para receber as autorizações de que precisa para ativar e configurar o Autokey, peça ao seu administrador para lhe conceder as seguintes funções do IAM na organização ou na pasta:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Estas funções predefinidas contêm as autorizações necessárias para ativar e configurar a Autokey. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações 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

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Decida como quer ativar a chave automática

Pode ativar a Autokey como parte da sua estratégia de infraestrutura como código usando o Terraform para fazer as alterações de configuração necessárias. Se quiser usar o Terraform para ativar a chave automática, consulte o artigo Ative a chave automática com o Terraform nesta página. Se não quiser usar o Terraform, comece por seguir as instruções na secção seguinte.

Configure o projeto principal

Recomendamos que crie um novo projeto de chaves para conter os recursos do Cloud KMS criados pela chave automática. Deve criar o projeto principal no recurso da sua organização. Se já tiver um projeto de chave que queira usar para chaves criadas pelo Autokey, pode ignorar a secção Crie um projeto de chave e continuar a partir de Configure o projeto de chave do Autokey nesta página.

O projeto da chave pode ser criado na mesma pasta onde planeia ativar a chave automática. Não deve criar outros recursos no projeto principal. Se tentar criar recursos protegidos pela Autokey no projeto de chaves, a Autokey rejeita o pedido de uma nova chave.

Se quiser migrar para o Assured Workloads no futuro, crie o projeto principal na mesma pasta que os recursos protegidos por essas chaves.

Se a sua organização usar a restrição da política da organização para garantir que todas as CMEKs são de projetos de chaves especificados, tem de adicionar o seu projeto de chaves à lista de projetos permitidos.constraints/gcp.restrictCmekCryptoKeyProjects Para mais informações sobre a política da organização de CMEK, consulte as políticas da organização de CMEK.

Crie um projeto principal

Consola

  1. Na Google Cloud consola, aceda à página Gerir recursos.

    Aceda a Gerir recursos

  2. Em Selecionar organização, selecione o recurso da organização onde quer criar um projeto.
  3. Clique em Criar projeto.
  4. Na janela Novo projeto apresentada, introduza um nome do projeto e selecione uma conta de faturação. Um nome de projeto só pode conter letras, números, aspas, hífenes, espaços ou pontos de exclamação, e tem de ter entre 4 e 30 carateres.
  5. Para Localização, selecione o recurso que quer que seja o principal do projeto da chave.
  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 o seguinte:

    • PROJECT_ID: o ID do projeto que contém o conjunto de chaves.
    • PARENT_TYPE: o tipo de recurso onde quer criar o novo projeto de chave. Introduza organization para criar o novo projeto de chaves numa determinada organização ou introduza folder para criar o novo projeto de chaves numa determinada pasta.
    • PARENT_ID: o ID da organização ou da pasta onde quer criar o projeto principal.

Prepare o projeto da chave do Autokey

Consola

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

    Ative a API

  2. Se estiver a usar um novo projeto de chaves, conceda autorizações de administrador do Cloud KMS no projeto de chaves. Repita os seguintes passos para conceder a função de administrador do Cloud KMS a si próprio e a cada um dos outros utilizadores administradores do Cloud KMS:

    1. Na Google Cloud consola, aceda à página IAM.

      Aceda ao IAM

    2. Selecione o projeto principal.

    3. Clique em Conceder acesso e, de seguida, introduza o endereço de email do utilizador.

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

    5. Clique em Guardar.

gcloud

  1. Ative a API Cloud KMS no projeto da chave:

    gcloud services enable cloudkms.googleapis.com
    
  2. Conceda autorizações de administrador do Cloud KMS no projeto da chave. Repita o seguinte comando para conceder a função roles/cloudkms.admin a si próprio e a todos os outros utilizadores administradores do Cloud KMS:

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

    Substitua o seguinte:

    • PROJECT_NUMBER: o número do projeto do projeto principal.
    • KEY_ADMIN_EMAIL: o endereço de email do utilizador responsável pela gestão das chaves do Cloud KMS.

Ative a chave automática do Cloud KMS numa pasta de recursos

Consola

  1. Na Google Cloud consola, aceda à página Controlos do KMS.

    Aceda aos controlos do KMS

  2. No selecionador de contexto, selecione a pasta onde quer ativar o Autokey.

  3. Clique em Ativar.

  4. Selecione o seu projeto principal e, de seguida, clique em Enviar.

    Uma mensagem confirma que a chave automática do Cloud KMS está ativada na pasta.

API

Crie o ficheiro AutokeyConfig para a pasta onde quer ativar a funcionalidade 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 o seguinte:

  • FOLDER_ID: o ID da pasta onde quer ativar a chave automática.
  • PROJECT_ID: o ID do projeto principal.

Configure o agente do serviço Cloud KMS

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

  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 do projeto de chaves.

    O resultado é semelhante ao seguinte:

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

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

  2. Conceda autorizaçõ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.
    

    Substitua PROJECT_NUMBER pelo número do projeto do projeto de chaves.

Conceda funções de utilizador do Autokey

Antes de os programadores poderem usar o Autokey, tem de lhes conceder a função necessária. Pode conceder a função ao nível da pasta ou ao nível do projeto. Esta função permite que os programadores peçam chaves ao agente do serviço Cloud KMS enquanto criam recursos nessa pasta ou projeto.

Escolha um ou ambos os seguintes passos:

  • Conceda a função roles/cloudkms.autokeyUser ao nível da pasta:

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

    Substitua o seguinte:

    • FOLDER_ID: o ID da pasta onde quer ativar a chave automática.
    • USER_EMAIL: o endereço de email do utilizador ao qual quer conceder autorização para usar o Autokey.
  • Conceda a função roles/cloudkms.autokeyUser ao nível do projeto:

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

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto de recursos.
    • USER_EMAIL: o endereço de email do utilizador ao qual quer conceder autorização para usar o Autokey.

Os seus programadores da Autokey já podem criar chaves a pedido. Para saber como criar recursos protegidos através de chaves criadas a pedido pelo Autokey, consulte o artigo Crie recursos protegidos através do Autokey.

Ative a chave automática através do Terraform

O exemplo do Terraform seguinte automatiza os seguintes passos de configuração:

  • Crie uma pasta de recursos
  • Crie um projeto principal
  • Conceda autorizações do utilizador
  • Configure o agente do serviço Cloud KMS
  • Ative a funcionalidade Autokey

Tem de 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."
}

/* 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 o seguinte:

  • BILLING_ACCOUNT_ID: o ID da sua conta de Google Cloud faturação. O ID da conta de faturação é um valor alfanumérico de 18 carateres separado por traços, por exemplo, 010101-F0FFF0-10XX01.
  • AUTOKEY_ADMIN_USER_IDS: uma lista de endereços de email de utilizadores que devem 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 email de utilizadores que devem 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 email de utilizadores que devem ter a função roles/cloudkms.admin, por exemplo, "Sasha@example.com", "Nur@example.com".
  • KEY_PROJECT_ID: o ID a usar para o projeto principal, por exemplo, autokey-key-project.

Aplique a utilização da chave automática

Se quiser aplicar a utilização do Autokey numa pasta, pode fazê-lo combinando os controlos de acesso do IAM com as políticas da organização da CMEK. Isto funciona através da remoção das autorizações de criação de chaves de diretores que não sejam o agente de serviço do Cloud KMS e, em seguida, exigindo que todos os recursos sejam protegidos pela CMEK através do projeto de chaves Autokey.

Para aplicar a utilização do Autokey numa pasta, conclua os seguintes passos:

  1. Remova o acesso para criar chaves manualmente no projeto de chaves. Se não for possível criar chaves manualmente, só é possível criar chaves geradas pelo Autokey neste projeto. Para mais informações sobre o controlo de acesso, consulte o artigo Controlo de acesso com a IAM.

  2. Defina uma política da organização na pasta para exigir que os recursos sejam protegidos com uma CMEK através da restrição constraints/gcp.restrictNonCmekServices. Para mais informações, consulte o artigo Exija a proteção CMEK.

  3. Defina uma política da organização na pasta para exigir que as chaves usadas para CMEK tenham de ser do projeto de chaves Autokey através da restrição constraints/gcp.restrictCmekCryptoKeyProjects. Para mais informações, consulte o artigo Limite a utilização de chaves do Cloud KMS para CMEK.

Desative a tecla automática

A chave automática do Cloud KMS é ativada e desativada ao nível da pasta. As mesmas funções que podem ativar a chave automática para uma pasta podem desativar a chave automática para essa pasta. Para desativar a chave automática numa pasta, tem de limpar o AutokeyConfig para remover a associação entre a pasta e o projeto de chave automática.

Depois de remover a configuração da chave automática na pasta, o agente de serviço do Cloud KMS deixa de poder criar chaves para os programadores quando estes criam recursos na pasta. A remoção da associação entre a pasta e o projeto principal desativa a chave automática na pasta. No entanto, recomendamos que também remova as associações da IAM para as funções roles/cloudkms.autokeyAdmin e roles/cloudkms.autokeyUser.

A desativação da chave automática não afeta as chaves existentes no projeto de chaves. Pode continuar a usar estas chaves para proteger os seus recursos.

Limpe o AutokeyConfig

Consola

  1. Na Google Cloud consola, aceda à página Controlos do KMS.

    Aceda aos controlos do KMS

  2. No selecionador de contexto, selecione a pasta onde quer desativar o Autokey.

  3. Clique em Desativar.

    É apresentada uma mensagem a pedir-lhe que confirme que quer desativar o Autokey.

  4. Para desativar o Autokey, clique em Confirmar.

    Uma mensagem confirma que a chave automática do Cloud KMS está desativada na pasta.

API

Desmarque a opção AutokeyConfig para a pasta onde quer desativar a funcionalidade 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 o seguinte:

  • FOLDER_ID: o ID da pasta onde quer desativar a chave automática.

Revogue funções da chave automática

  1. Opcional: revogue a função roles/cloudkms.autokeyAdmin:

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

    Substitua o seguinte:

    • FOLDER_ID: o ID da pasta onde desativou a chave automática.
    • USER_EMAIL: o endereço de email do utilizador para o qual quer revogar a autorização para gerir a chave automática.
  2. Opcional: revogue a função roles/cloudkms.autokeyUser ao nível da pasta:

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

    Substitua o seguinte:

    • FOLDER_ID: o ID da pasta onde desativou a chave automática.
    • USER_EMAIL: o endereço de email do utilizador para o qual quer revogar a autorização para usar o Autokey.
  3. Opcional: revogue a função roles/cloudkms.autokeyUser ao nível do projeto:

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

    Substitua o seguinte:

    • RESOURCE_PROJECT_NUMBER: o número do projeto de um projeto de recursos na pasta onde desativou a chave automática.
    • USER_EMAIL: o endereço de email do utilizador para o qual quer revogar a autorização para usar o Autokey.
  4. Opcional: se não planeia continuar a usar o projeto de chaves para a chave automática para outras pastas, revogue a função roles/cloudkms.admin para o agente do serviço Cloud KMS:

    gcloud projects remove-iam-policy-binding KEY_PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-cloudkms.
    

    Substitua KEY_PROJECT_NUMBER pelo ID numérico do projeto principal.

  5. Opcional: se não planeia continuar a usar 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 o seguinte:

    • KEY_PROJECT_NUMBER: o número do projeto do projeto principal.
    • USER_EMAIL: o endereço de email do utilizador para o qual quer revogar a autorização para usar o Autokey.

O que se segue?