1. Introdução
O Cloud KMS Autokey 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, os keyrings, as chaves e as contas de serviço não precisam ser planejados e provisionados antes de serem necessários. Em vez disso, o Autokey gera as chaves sob demanda conforme os recursos são criados, dependendo de permissões delegadas em vez de administradores do Cloud KMS.
O uso de chaves geradas pelo Autokey pode ajudar você a se alinhar de forma consistente com os padrões do setor e as práticas recomendadas para segurança de dados, incluindo o nível de proteção do HSM, a separação de tarefas, a rotação de chaves, o local e a especificidade da chave. O Autokey cria chaves que seguem as diretrizes gerais e as diretrizes específicas para o tipo de recurso dos serviços do Google Cloud que se integram ao Cloud KMS Autokey. Depois de criadas, as chaves solicitadas usando 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 o Cloud KMS Autokey criando:
- 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 hospedará seus recursos protegidos
- Conjuntos de dados do BigQuery, discos permanentes e buckets do Cloud Storage criptografados com o Cloud KMS Autokey
O que é necessário
- Organização do Google Cloud
- O diretor do Google Cloud precisa ter os seguintes papéis no nível da organização para concluir este laboratório:
- 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)
- Projetos do Google Cloud com faturamento ativado
- Experiência básica com Linux
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 recursos da organização em uma hierarquia. Para criar uma pasta:
- Acesse a página Gerenciar recursos no console do Google Cloud.
- Verifique se o nome do recurso da organização está selecionado na lista suspensa da organização na parte de cima da página.
- Clique em Criar pasta
- Selecionar pasta padrão
- Na caixa Nome da pasta, digite o nome da nova pasta. Neste laboratório, use "Autokey-Folder"
- Em "Destino", clique em "Procurar" e selecione o recurso da organização ou a pasta em que você quer criar a nova pasta.
- Clique em "Criar".
3. Criar um projeto de recursos
É importante criar um projeto que contenha os recursos que você quer criptografar com o Cloud KMS Autokey, como conjuntos de dados do BigQuery, discos permanentes e buckets do Cloud Storage. Se você tentar criar recursos protegidos pelo Autokey no projeto da chave, o Autokey rejeitará a solicitação de uma nova chave. Para criar o projeto de recurso:
- Acesse a página Gerenciar recursos no console do Google Cloud.
- Clique em "Criar projeto".
- Na lista suspensa Selecionar organização na parte superior da página, selecione "Autokey-Folder" do Compute Engine.
- 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, use "Recursos criptografados do Autokey"
- Na caixa Location, selecione a opção "Autokey-Folder". do Compute Engine. Esse recurso será o pai hierárquico do novo projeto. Suas configurações devem ser parecidas com estas:
- Copie o ID do projeto. No exemplo acima, o ID é "causal-hour-43319-m4" mas seu ID será diferente, no editor de texto de sua escolha.
- Clique em Criar
- Selecione o ícone do Cloud Shell no canto superior direito da tela
- 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 meu ID do projeto é "key-management-433319" meu comando vai ficar assim:
export AUTOKEY_PROJECT=causal-hour-43319-m4
- Use o seguinte comando para executar comandos no seu projeto principal:
gcloud config set project $RESOURCE_PROJECT
Quando solicitado, autorize o Cloud Shell clicando em "Autorizar".
- Como esse projeto vai conter recursos, precisamos ativar as APIs para os 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. Ele será chamado de "projeto principal". daqui para frente. O projeto principal pode ser criado na mesma pasta em que você planeja ativar o Autokey. Não crie outros recursos dentro do projeto principal. Se você tentar criar recursos protegidos pelo Autokey no projeto da chave, o Autokey rejeitará a solicitação de uma nova chave. Para criar o projeto principal:
- Acesse a página Gerenciar recursos no console do Google Cloud.
- Clique em "Criar projeto".
- Na lista suspensa Selecionar organização na parte superior da página, selecione "Autokey-Folder" do Compute Engine.
- Na janela "Novo projeto" que será exibida, insira o nome do projeto e selecione uma conta de faturamento, conforme aplicável. Neste laboratório, use "Gerenciamento de chaves"
- Na caixa Location, selecione a opção "Autokey-Folder". do Compute Engine. Esse recurso será o pai hierárquico do novo projeto. Suas configurações devem ser parecidas com estas:
- Copie o ID do projeto. No exemplo acima, o ID é "key-management-433319". mas seu ID será diferente, no editor de texto de sua escolha.
- Clique em "Criar".
5. Prepare o projeto de chave do Autokey
Agora que cada projeto foi criado, é hora de configurar o projeto principal para usar o Cloud KMS Autokey.
- Selecione o ícone do Cloud Shell no canto superior direito da tela
- 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 meu ID do projeto é "key-management-433319" meu comando vai ficar assim:
export AUTOKEY_PROJECT=key-management-433319
- Use o seguinte comando para executar comandos no seu projeto principal:
gcloud config set project $AUTOKEY_PROJECT
Quando solicitado, autorize o Cloud Shell clicando em "Autorizar".
- Execute o comando a seguir para ativar a API Cloud KMS
gcloud services enable cloudkms.googleapis.com kmsinventory.googleapis.com
- Execute o seguinte comando para salvar o número do seu 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)")
- Salve o e-mail do principal como uma variável executando o seguinte comando:
export KEY_ADMIN_EMAIL=<paste your Principal's email>
- Conceda permissões de administrador do Cloud KMS no projeto principal 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 importante 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.
- Encontre o ID da organização com o seguinte comando:
gcloud organizations list | grep -P -i 'ID:' | grep -i '[0-9]'
- Copie o ID da organização, que é o resultado numérico destacado em vermelho
- Salve o ID da organização como uma variável chamada ORG_ID:
export ORG_ID=<paste your Organization ID>
- 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
- 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
- Adicione uma vinculação de política do IAM para conferir o uso da chave do Cloud KMS. O uso da chave fornece informações para cada chave, incluindo o número de recursos protegidos, projetos e produtos exclusivos do Google Cloud que a utilizam. Esse nível de detalhamento está disponível para qualquer pessoa com o papel 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'
- 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'
- Conceda o papel Leitor de recursos protegidos do Cloud KMS no recurso da sua organização a qualquer pessoa que precise visualizar os 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 seus desenvolvedores possam usar o Autokey, você precisa conceder a eles o papel necessário. É possível conceder o papel no nível da pasta ou do projeto. Com esse papel, 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 o papel é salvar o ID da pasta.
- Encontre o ID da pasta com o seguinte comando:
gcloud projects describe $AUTOKEY_PROJECT | grep 'id' | grep -P -i '[0-9]+'
- Copie o ID da pasta, que é a parte destacada em vermelho
- Salve o ID da pasta como uma variável chamada FOLDER_ID
export FOLDER_ID=<paste the folder ID>
Neste laboratório, vamos definir o administrador de chaves 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 da chave precisa ser diferente do desenvolvedor que usa o Autokey.
- 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 ativar 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. Ativar o Autokey nesta pasta ativa o Autokey para todos os projetos de recursos dentro da pasta.
- No console do Google Cloud, acesse a página de controles do KMS.
- Clique em "Selecionar pasta"
- No seletor de contexto, escolha a pasta em que você quer ativar o Autokey. Essa será a mesma pasta que você criou anteriormente e contém o projeto de recurso e o projeto de gerenciamento de chaves. Ele será parecido com o seguinte:
- Clique em "Ativar".
- Clique em "Browse" para selecionar o projeto principal.
- Selecione o projeto de gerenciamento de chaves e clique em "Enviar".
Uma mensagem confirma que o Autokey do Cloud KMS está ativado na pasta. A página "Controles do KMS" vai ficar assim:
9. Criar recursos protegidos usando o Autokey do Cloud KMS
Discos permanentes do Compute Engine
O Autokey cria uma nova 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:
- No console do Google Cloud, acesse a página Discos.
- Clique em Criar disco e insira as propriedades do novo disco.
- Em "Criptografia", selecione a chave do Cloud KMS.
- Em "Tipo de chave", selecione "Cloud KMS com Autokey" e clique em "Solicitar uma nova chave". Uma mensagem indica quando a chave foi criada com sucesso e está pronta para uso.
- Para concluir a criação do disco, clique em "Criar".
Você pode seguir um processo semelhante para criar recursos protegidos de instância de VM, imagem e imagem de máquina.
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 chave padrão do bucket, crie manualmente uma CMEK e use essa chave ao criar o objeto.
- No console do Google Cloud, acesse a página Criar um bucket.
- Escolha um nome permanente e exclusivo globalmente.
- Escolha um local dos dados.
- Prossiga para "Escolher como proteger os dados de objetos" seção
- Clique em "Escolha como proteger os dados de objetos". para abrir a seção
- Expanda a seção "Criptografia de dados" e selecione a chave do Cloud KMS.
- Em "Tipo de chave", selecione "Cloud KMS com Autokey" e clique em "Solicitar uma nova chave". Uma mensagem indica quando a chave foi criada com sucesso e está pronta para uso.
- Para concluir a criação do bucket, clique em "Criar". Se aparecer uma caixa de diálogo explicando que "O acesso público será bloqueado" clique em "Confirmar".
Conjunto de dados do BigQuery
Para cada novo conjunto de dados, o Autokey cria uma nova chave, no mesmo local do próprio 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. 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 chave padrão do conjunto de dados, crie manualmente uma CMEK e use essa chave ao criar o recurso.
Para criar um conjunto de dados do BigQuery, é preciso ter o papel de usuário do BigQuery primeiro.
- Voltar para o Cloud Shell
- Configurar o Cloud Shell para executar comandos do projeto de recursos
gcloud config set project $RESOURCE_PROJECT
- Execute o seguinte comando para salvar o número do seu 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)")
- 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 o papel de usuário do BigQuery, pode criar um conjunto de dados e protegê-lo com o Autokey.
- No console do Google Cloud, acesse a página do BigQuery.
- Siga as instruções para criar um conjunto de dados até chegar em Opções avançadas > Criptografia.
- Em "Criptografia", selecione a chave do Cloud KMS.
- Em "Tipo de chave", selecione "Cloud KMS com Autokey" e clique em "Solicitar uma nova chave". Uma mensagem indica quando a chave foi criada com sucesso e está pronta para uso.
- Para concluir a criação do conjunto de dados, clique em Criar conjunto de dados.
10. Conheça suas chaves
Nesta etapa, você vai explorar as chaves que o Cloud KMS Autokey criou em seu nome acessando a página "Inventário de chaves". A página "Inventário de chaves" oferece informações abrangentes sobre as chaves criptográficas do seu projeto. Pode haver atraso nos dados. 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.
- No console do Google Cloud, acesse a página Inventário de chaves.
- Opcional: para filtrar a lista de chaves, digite os termos de pesquisa na caixa filter_list Filtro e pressione Enter. Por exemplo, é possível filtrar por local, keyring, status ou outras propriedades das chaves.
- Clique no nome da chave com as informações de uso que você quer visualizar.
- Clique em "Visão geral". Observe que você tem uma chave por recurso criado. Cada nome de chave inclui o nome do recurso que a chave está protegendo (por exemplo, "compute-disk" ou "storage-bucket"). O Cloud KMS Autokey garante que cada chave seja programada para rotação 365 dias após a criação e que cada chave receba o "HSM" nível de proteção.
- Clique na guia "Rastreamento de uso". Observe o nível de informações apresentadas: cada recurso que a chave está criptografando é mostrado aqui, ao lado do projeto, local e data de criação.
- Opcional: para filtrar a lista de recursos protegidos, digite os termos de pesquisa na caixa filter_list Filtro e pressione Enter.
11. Parabéns
Parabéns! Você criou os 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 o Autokey e usá-lo para criptografar automaticamente seus recursos com chaves do Cloud KMS.
12. A seguir
Fazer upload de dados para recursos criptografados por Autokey
- Crie uma instância do Google Compute Engine (GCE)
- Anexe o disco permanente protegido pelo Autokey à instância do GCE
- Fazer upload de dados para o conjunto de dados do BigQuery
- Faça upload de objetos em um bucket do Google Cloud Storage
- Carregar dados do Google Cloud Storage no BigQuery