Neste tópico, você aprenderá como usar as chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) no Google Kubernetes Engine (GKE). Se você precisa controlar a gestão de suas chaves, use o Cloud Key Management Service e CMEK para proteger discos permanentes no seu cluster do GKE.
Visão geral
Por padrão, o Google Cloud Platform criptografa conteúdo de cliente em repouso, e o GKE administra a criptografia para você automaticamente.
Se você quiser controlar e gerenciar a rotação de chave de criptografia, use as chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês). Essas chaves são usadas para criptografar as chaves de criptografia que criptografam seus dados. Para mais informações, consulte Gerenciamento de chaves.
Discos criptografados por CMEK estão disponíveis no GKE como um PersistentVolume dinamicamente provisionado.
No GKE, CMEK pode proteger dados em discos permanentes anexados a nós no cluster. Discos de inicialização e discos de plano de controle não podem ser protegidos com CMEK.
Antes de começar
Conclua estas instruções para criptografar discos permanentes recém-criados. É possível ativar CMEK em um cluster novo ou atual, usando uma chave nova ou atual do Cloud KMS.
Essas instruções precisam ser concluídas uma vez por cluster do GKE. Elas criam o seguinte:
- Um novo cluster do GKE (se necessário).
- Um novo keyring, chave, e versão de chave do Cloud KMS (se necessário).
- O StorageClass (em inglês) que permite que discos provisionados pelo Kubernetes sejam automaticamente criptografados com a chave do Cloud KMS.
- Se necessário, crie um cluster do GKE.
- Implante o driver CSI de disco permanente do Compute Engine no cluster. (em inglês)
Preencha a seção "Antes de começar" em Como proteger os recursos com chaves do Cloud KMS para ativar a API Cloud KMS e criar uma chave. Siga os passos a seguir:
- Crie um keyring na mesma região do seu cluster do GKE.
- Atribua o papel de criptografador/descriptografador CryptoKey do Cloud KMS (
roles/cloudkms.cryptoKeyEncrypterDecrypter
) ao agente de serviço do Compute Engine(service-[PROJECT_NUMBER]@compute-system.iam.gserviceaccount.com)
. Isso permite que o GKE acesse a chave.
Criar um StorageClass que faça referência à nova chave KMS
Copie o conteúdo abaixo para um arquivo YAML. Para o restante desta página, vamos chamá-lo de
gcepd-sc.yaml
. Essa configuração permite o provisionamento dinâmico de volumes criptografados.apiVersion: storage.k8s.io/v1beta1 kind: StorageClass metadata: name: csi-gce-pd provisioner: pd.csi.storage.gke.io parameters: type: pd-standard disk-encryption-kms-key: projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]
disk-encryption-kms-key
precisa ser o identificador de recurso totalmente qualificado para a chave que será usada para criptografar discos novos. Substitua os itens entre colchetes conforme apropriado para fazer referência à chave KMS.- Os valores em
disk-encryption-kms-key
, comokeyRings
ecryptoKeys
, diferenciam maiúsculas e minúsculas. O provisionamento de um novo volume com valores incorretos resulta em um erroinvalidResourceUsage
. - Defina o StorageClass como padrão (em inglês).
Implante o
StorageClass
no cluster do GKE usandokubectl
:kubectl apply -f gcepd-sc.yaml
Por fim, verifique se o
StorageClass
usa o driver CSI de disco persistente do Compute Engine e inclui o ID da sua chave.
Na resposta ao comando, verifique:
- se o provisionador está definido como
pd.csi.storage.gke.io
; o ID da sua chave segue
disk-encryption-kms-key
.kubectl describe storageclass csi-gce-pd
Name: csi-gce-pd IsDefaultClass: No Annotations: None Provisioner: pd.csi.storage.gke.io Parameters: **disk-encryption-kms-key=projects/my-project/locations/my-location/keyRings/my-keyring/cryptoKeys/my-key,type=pd-standard** AllowVolumeExpansion: unset MountOptions: none ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: none
Criar um disco permanente criptografado no GKE
Nesta seção, você provisionará dinamicamente volumes de armazenamento criptografados do Kubernetes com o StorageClass
e a chave do Cloud KMS.
Provisionar dinamicamente um disco permanente criptografado do Compute Engine
- Copie o conteúdo abaixo em um novo arquivo chamado
pvc.yaml
e atualizestorageClassName
com o nome doStorageClass
recém-criado.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: csi-gce-pd resources: requests: storage: 6Gi
Aplique o
PersistentVolumeClaim
(PVC) no cluster do GKE usandokubectl
:kubectl apply -f pvc.yaml
Verifique se o PVC foi criado e vinculado a um
PersistentVolume
recém-provisionado. Basat atribuir o status dePersistentVolumeClaim
do seu cluster.kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE podpvc Bound pvc-e36abf50-84f3-11e8-8538-42010a800002 10Gi RWO csi-gce-pd 9s
Agora é possível usar o disco permanente protegido por CMEK com o cluster do GKE.
Como remover a proteção CMEK de um disco permanente
Para remover a proteção CMEK de um disco permanente, siga as instruções na documentação do Compute Engine.
A seguir
Para mais informações sobre CMEK, consulte: