Criptografe recursos facilmente com o Autokey do Cloud KMS

1. Introdução

O Autokey do Cloud KMS simplifica a criação e o uso de chaves de criptografia gerenciadas pelo cliente (CMEKs) ao automatizar o provisionamento e a atribuição. Com o Autokey, não é preciso planejar e provisionar keyrings, chaves e contas de serviço antes que sejam necessários. Em vez disso, o Autokey gera suas chaves sob demanda à medida que os recursos são criados, dependendo de permissões delegadas em vez de administradores do Cloud KMS.

O uso das chaves geradas pelo Autokey pode ajudar você a se alinhar de maneira consistente aos padrões do setor e às práticas recomendadas de segurança de dados, incluindo o nível de proteção de HSM, a separação de tarefas, a rotação de chaves, a localização e a especificidade da chave. O Autokey cria chaves que seguem diretrizes gerais e específicas para o tipo de recurso dos serviços do Google Cloud que se integram ao Autokey do Cloud KMS. Depois de criadas, as chaves solicitadas usando a função Autokey funcionam de maneira idêntica a outras chaves do Cloud HSM com as mesmas configurações.

O que você vai criar

Neste codelab, você vai iniciar recursos protegidos usando a autokey do Cloud KMS ao criar:

  • um recurso de pasta
  • um projeto que vai conter suas chaves
  • um agente de serviço para atuar como seu assistente de gerenciamento de chaves
  • um projeto que vai hospedar seus recursos protegidos
  • Conjuntos de dados do BigQuery, discos permanentes e buckets do Cloud Storage criptografados com a chave automática do Cloud KMS

O que é necessário

2. Criar uma pasta

As pastas são nós na hierarquia de recursos do Cloud Platform. Uma pasta pode conter projetos, outras pastas ou uma combinação de ambos. Os recursos da organização podem usar pastas para agrupar projetos no nó de recurso da organização em uma hierarquia. Para criar uma pasta:

  1. Acesse a página Gerenciar recursos no console do Google Cloud.
  2. Verifique se o nome do recurso da sua organização está selecionado na lista suspensa de organizações na parte de cima da página.
  3. Clique em "Criar pasta".

9328ef3bd4840817.png

  1. Selecione "Pasta padrão"

20a094fe0c7a0924.png

  1. Na caixa "Nome da pasta", insira o nome da nova pasta. Para este laboratório, considere "Autokey-Folder".
  2. Em "Destino", clique em "Procurar" e selecione o recurso ou a pasta da organização em que você quer criar a nova pasta.
  3. Clique em "Criar".

3. Criar um projeto de recursos

É importante criar um projeto de recursos para conter os recursos que você quer criptografar com o Autokey do Cloud KMS, como conjuntos de dados do BigQuery, discos permanentes e buckets do Cloud Storage. Se você tentar criar recursos protegidos pelo Autokey no projeto de chave, o Autokey vai rejeitar o pedido de uma nova chave. Para criar o projeto de recursos:

  1. Acesse a página Gerenciar recursos no console do Google Cloud.
  2. Clique em "Criar projeto".

93e4e224322c68a7.png

  1. Na lista suspensa "Selecionar organização" na parte de cima da página, selecione a pasta "Autokey-Folder".
  2. Na janela "Novo projeto" que será exibida, insira o nome do projeto e selecione uma conta de faturamento, conforme aplicável. Para este laboratório, considere "Recursos criptografados com Autokey".
  3. Na caixa "Local", selecione a pasta "Autokey-Folder". Esse recurso vai ser o pai hierárquico do novo projeto. As configurações vão ficar parecidas com esta:

187ece37daf50835.png

  1. Copie o ID do projeto. No exemplo acima, o ID é "causal-hour-43319-m4", mas o seu será diferente. Cole no editor de texto de sua escolha.
  2. Clique em Criar
  3. Selecione o ícone do Cloud Shell no canto superior direito da tela.

16c8476c4991f448.png

  1. Quando o Cloud Shell estiver ativo, salve o ID do projeto do Autokey como uma variável executando o seguinte comando:
export RESOURCE_PROJECT=<paste your Resource Project ID>

Como o ID do meu projeto é "key-management-433319", meu comando fica assim:

export AUTOKEY_PROJECT=causal-hour-43319-m4
  1. Execute o comando a seguir para executar comandos do seu projeto de chave:
gcloud config set project $RESOURCE_PROJECT

Quando solicitado, autorize o Cloud Shell clicando em "Autorizar".

a6c755d4921bc728.png

  1. Como esse projeto vai conter recursos, precisamos ativar as APIs dos serviços que o Autokey vai proteger. Execute este comando:
gcloud services enable storage.googleapis.com bigquery.googleapis.com compute.googleapis.com

4. Criar um projeto de chave

Recomendamos criar um projeto para conter os recursos do Cloud KMS criados pelo Autokey. Esse será chamado de "projeto principal" daqui em diante. 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. Para criar o projeto de chave:

  1. Acesse a página Gerenciar recursos no console do Google Cloud.
  2. Clique em "Criar projeto".

93e4e224322c68a7.png

  1. Na lista suspensa "Selecionar organização" na parte de cima da página, selecione a pasta "Autokey-Folder".
  2. Na janela "Novo projeto" que será exibida, insira o nome do projeto e selecione uma conta de faturamento, conforme aplicável. Para este laboratório, considere "Gerenciamento de chaves".
  3. Na caixa "Local", selecione a pasta "Autokey-Folder". Esse recurso vai ser o pai hierárquico do novo projeto. As configurações vão ficar parecidas com esta:

157894b5c9048c06.png

  1. Copie o ID do projeto (no exemplo acima, "key-management-433319", mas o seu será diferente) para o editor de texto de sua escolha.
  2. Clique em "Criar".

5. Preparar o projeto de chave do Autokey

Agora que cada projeto foi criado, é hora de configurar o projeto de chaves para usar a chave automática do Cloud KMS.

  1. Selecione o ícone do Cloud Shell no canto superior direito da tela.

16c8476c4991f448.png

  1. Quando o Cloud Shell estiver ativo, salve o ID do projeto do Autokey como uma variável executando o seguinte comando:
export AUTOKEY_PROJECT=<paste your Autokey Project ID>

Como o ID do meu projeto é "key-management-433319", meu comando fica assim:

export AUTOKEY_PROJECT=key-management-433319
  1. Execute o comando a seguir para executar comandos do seu projeto de chave:
gcloud config set project $AUTOKEY_PROJECT

Quando solicitado, autorize o Cloud Shell clicando em "Autorizar".

a6c755d4921bc728.png

  1. Ative a API Cloud KMS executando o seguinte comando:
gcloud services enable cloudkms.googleapis.com  kmsinventory.googleapis.com
  1. Execute o comando a seguir para salvar o número do projeto como uma variável chamada AUTOKEY_PROJECT_NUMBER
export AUTOKEY_PROJECT_NUMBER=$(gcloud projects list \
--filter="$(gcloud config get-value project)" \
--format="value(PROJECT_NUMBER)")
  1. Salve o e-mail do principal como uma variável executando o seguinte comando:
export KEY_ADMIN_EMAIL=<paste your Principal's email>
  1. Conceda permissões de administrador do Cloud KMS no projeto de chaves aos usuários administradores do Cloud KMS.
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
    --role=roles/cloudkms.admin \
    --member=user:$KEY_ADMIN_EMAIL

6. Configurar os agentes 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.

  1. Encontre o ID da organização com o seguinte comando:
gcloud organizations list | grep -P -i 'ID:' | grep -i '[0-9]'
  1. Copie o ID da organização, que é o resultado numérico destacado em vermelho.
  2. Salve o ID da organização como uma variável chamada ORG_ID:
export ORG_ID=<paste your Organization ID>
  1. Crie o agente de serviço do Cloud KMS executando o seguinte comando:
gcloud beta services identity create --service=cloudkms.googleapis.com \
    --project=$AUTOKEY_PROJECT_NUMBER
  1. Conceda o papel de administrador do Cloud KMS ao agente de serviço:
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
    --role=roles/cloudkms.admin \
    --member=serviceAccount:service-$AUTOKEY_PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
  1. Adicione uma vinculação de política do IAM para poder ver o uso da chave do Cloud KMS. O uso de chaves fornece informações sobre cada chave, incluindo o número de recursos protegidos, projetos e produtos exclusivos do Google Cloud que usam a chave. Esse nível de detalhes está disponível para qualquer pessoa com a função de leitor do Cloud KMS na chave. Execute este comando:
gcloud organizations add-iam-policy-binding $ORGANIZATION_ID \
    --member="serviceAccount:service-org-$ORGANIZATION_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
    --role='roles/cloudkms.orgServiceAgent'
  1. Conceda à sua conta de serviço do Cloud KMS o papel de agente de serviço da organização do Cloud KMS (cloudkms.orgServiceAgent) no recurso da organização.
gcloud organizations add-iam-policy-binding $ORG_ID \
    --member="serviceAccount:service-org-$ORG_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
    --role='roles/cloudkms.orgServiceAgent'
  1. Conceda o papel de Leitor de recursos protegidos do Cloud KMS no recurso da organização a qualquer pessoa que precise ver detalhes de uso da chave.
gcloud organizations add-iam-policy-binding $ORG_ID \
    --member="user:$KEY_ADMIN_EMAIL" \
    --role='roles/cloudkms.protectedResourcesViewer'

7. Conceder papéis de usuário do Autokey

Antes que os desenvolvedores possam usar o Autokey, você precisa conceder a eles a função necessária. É 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.

A primeira etapa para conceder a função é salvar o ID da pasta.

  1. Encontre o ID da pasta com o seguinte comando:
gcloud projects describe $AUTOKEY_PROJECT | grep 'id' | grep -P -i '[0-9]+'
  1. Copie o ID da pasta, que é a parte destacada em vermelho.
  2. Salve o ID da pasta como uma variável chamada FOLDER_ID.
export FOLDER_ID=<paste the folder ID>

Para os fins deste laboratório, vamos definir o administrador da chave como o usuário do Autokey. No entanto, em casos de uso de produção e em organizações com mais de uma pessoa, o administrador principal precisa ser diferente do desenvolvedor que usa o Autokey.

  1. 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:$KEY_ADMIN_EMAIL

8. Ativar o Autokey do Cloud KMS em uma pasta de recursos

Nesta etapa, você vai habilitar o Autokey do Cloud KMS em uma pasta de recursos e identificar o projeto do Cloud KMS que vai conter os recursos do Autokey para essa pasta. Ao ativar o Autokey nessa pasta, você o ativa para todos os projetos de recursos nela.

  1. No console do Google Cloud, acesse a página de controles do KMS.
  2. Clique em "Selecionar pasta".

785f338e1860029c.png

  1. No seletor de contexto, escolha a pasta em que você quer ativar o Autokey. Essa é a mesma pasta que você criou antes e que contém o projeto de recursos e o projeto de gerenciamento de chaves. Ele será parecido com o seguinte:

f0ee5141dc6fa40e.png

  1. Clique em "Ativar".
  2. Clique em "Procurar" para selecionar o projeto principal.
  3. Selecione o projeto de gerenciamento de chaves e clique em "Enviar".

5acd9e68eb972e15.png

Uma mensagem vai confirmar que o Autokey do Cloud KMS está ativado na pasta. A página "Controles do KMS" vai ficar assim:

8bddb3d688ba842d.png

9. Criar recursos protegidos usando o Autokey do Cloud KMS

Persistent Disks do Compute Engine

O Autokey cria uma chave para cada disco, imagem e imagem de máquina no mesmo local do recurso que está sendo criado.

Para criar um disco, siga estas etapas:

  1. No console do Google Cloud, acesse a página "Discos".
  2. Clique em "Criar disco" e insira as propriedades do novo disco.
  3. Em "Criptografia", selecione "Chave do Cloud KMS".

dcc63e9ae03c5fbe.png

  1. Em "Tipo de chave", selecione "Cloud KMS com Autokey" e clique em "Solicitar uma nova chave". Uma mensagem indica quando a chave foi criada e está pronta para uso.

4b2283a0d52cc98d.png

  1. Para concluir a criação do disco, clique em "Criar".

Você pode seguir um processo semelhante para criar recursos de instância de VM, imagem e imagem de máquina protegidos.

Buckets do Google Cloud Storage

O Autokey cria uma nova chave no mesmo local do bucket. A chave criada pelo Autokey é atribuída como a chave padrão do bucket.

O Autokey não cria chaves para objetos. Por padrão, os objetos criados em um bucket usam a chave padrão do bucket. Se você quiser criptografar um objeto usando uma chave diferente da padrão do bucket, crie manualmente uma CMEK e use-a ao criar o objeto.

  1. No console do Google Cloud, acesse a página Criar um bucket.
  2. Escolha um nome permanente e exclusivo globalmente.
  3. Escolha um local para os dados.
  4. Acesse a seção "Escolher como proteger os dados do objeto"

e31bbeff5c7aabdf.png

  1. Clique em "Escolher como proteger os dados do objeto" para expandir a seção.

9c68ce19dac932de.png

  1. Expanda a seção "Criptografia de dados" e selecione "Chave do Cloud KMS". d8caca08891be9dc.png
  2. Em "Tipo de chave", selecione "Cloud KMS com Autokey" e clique em "Solicitar uma nova chave". Uma mensagem indica quando a chave foi criada e está pronta para uso.

a10d1ae243c44811.png

  1. Para concluir a criação do bucket, clique em "Criar". Se uma caixa de diálogo explicando que "O acesso público será bloqueado" aparecer, clique em "Confirmar".

Conjunto de dados do BigQuery

Para cada novo conjunto de dados, o Autokey cria uma chave no mesmo local do recurso, que se torna a chave padrão do conjunto de dados. O Autokey não cria chaves para tabelas, consultas, tabelas temporárias ou modelos. Por padrão, esses recursos são protegidos pela chave padrão do conjunto de dados. Se você quiser proteger um recurso em um conjunto de dados usando uma chave diferente da padrão, crie manualmente uma CMEK e use-a ao criar o recurso.

Para criar um conjunto de dados do BigQuery, primeiro você precisa ter a função de usuário do BigQuery.

  1. Volte ao Cloud Shell.
  2. Defina o Cloud Shell para executar comandos do projeto de recursos
gcloud config set project $RESOURCE_PROJECT
  1. Execute o comando a seguir para salvar o número do projeto como uma variável chamada RESOURCE_PROJECT_NUMBER
export RESOURCE_PROJECT_NUMBER=$(gcloud projects list --filter="$(gcloud config get-value project)" --format="value(PROJECT_NUMBER)")
  1. Conceda a si mesmo o papel de usuário do BigQuery
gcloud projects add-iam-policy-binding $RESOURCE_PROJECT_NUMBER \
    --role=roles/bigquery.user \
    --member=user:$KEY_ADMIN_EMAIL

Agora que você tem a função de usuário do BigQuery, é possível criar um conjunto de dados e protegê-lo com o Autokey.

  1. No console do Google Cloud, acesse a página do BigQuery.
  2. Siga as instruções para criar um conjunto de dados até chegar a "Opções avançadas > Criptografia".
  3. Em "Criptografia", selecione "Chave do Cloud KMS".
  4. Em "Tipo de chave", selecione "Cloud KMS com Autokey" e clique em "Solicitar uma nova chave". Uma mensagem indica quando a chave foi criada e está pronta para uso.
  5. Para concluir a criação do conjunto de dados, clique em "Criar conjunto de dados".

10. Conheça suas chaves

Nesta etapa, você vai conhecer as chaves que o Autokey do Cloud KMS criou em seu nome acessando a página "Inventário de chaves". A página "Inventário de chaves" oferece informações detalhadas sobre as chaves criptográficas do seu projeto. Os dados podem estar atrasados. Por exemplo, se você criar um novo recurso protegido, ele e a versão da chave associada não serão adicionados imediatamente à guia "Rastreamento de uso". Confira mais limitações aqui.

  1. No console do Google Cloud, acesse a página de inventário de chaves.
  2. Opcional: para filtrar a lista de chaves, insira seus termos de pesquisa na caixa de filtro filter_list e pressione Enter. Por exemplo, é possível filtrar por local, keyring, status ou outras propriedades das chaves.
  3. Clique no nome da chave para ver as informações de uso.
  4. Clique em "Visão geral". Você tem uma chave para cada recurso criado. Cada nome de chave inclui o nome do recurso que ela está protegendo (por exemplo, "compute-disk" ou "storage-bucket"). O Autokey do Cloud KMS garante que cada chave seja programada para rotação 365 dias após a criação e que cada chave receba o nível de proteção "HSM".

9acbce68acb653d4.png

  1. Clique na guia "Rastreamento de uso". Observe o nível de informações apresentadas: cada recurso que a chave está criptografando é mostrado aqui, junto com o projeto, o local e a data de criação.
  2. Opcional: para filtrar a lista de recursos protegidos, insira os termos de pesquisa na caixa de filtro filter_list e pressione "Enter".

7def6fe9a023d063.png

11. Parabéns

Parabéns! Você criou recursos do Google Cloud e os criptografou automaticamente sob demanda com o Autokey do Cloud KMS.

Agora você conhece as principais etapas necessárias para configurar e usar a chave automática para criptografar automaticamente seus recursos com chaves do Cloud KMS.

12. A seguir

Fazer upload de dados para seus recursos criptografados com Autokey

Documentos de referência