De forma predeterminada, Backup for GKE cifra el contenido del cliente en reposo. Backup for GKE se encarga del cifrado sin que tengas que hacer nada más. Esta opción se llama Cifrado predeterminado de Google.
Si quieres controlar tus claves de cifrado, puedes usar claves de cifrado gestionadas por el cliente (CMEKs) en Cloud KMS con servicios integrados con CMEK, como Backup para GKE. Si usas claves de Cloud KMS, tendrás control sobre su nivel de protección, ubicación, calendario de rotación, permisos de uso y acceso, y límites criptográficos. Además, Cloud KMS te permite ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google sea el propietario y gestione las claves de cifrado de claves (KEKs) simétricas que protegen tus datos, tú controlas y gestionas estas claves en Cloud KMS.
Una vez que hayas configurado tus recursos con claves de cifrado gestionadas por el cliente, la experiencia de acceso a tus recursos de Backup for GKE será similar a la de usar el cifrado predeterminado de Google. Para obtener más información sobre las opciones de encriptado, consulta Claves de encriptado gestionadas por el cliente (CMEK).
Información general
La función de copia de seguridad de GKE produce y almacena dos tipos de artefactos de datos de usuario:
- Copia de seguridad de la configuración: conjunto de descripciones de recursos de Kubernetes extraídas del servidor de la API del clúster que se está copiando para registrar el estado del clúster.
- Copias de seguridad de volúmenes: conjunto de copias de seguridad de volúmenes que corresponden a los recursos de
PersistentVolumeClaim
que se encuentran en la copia de seguridad de la configuración.
De forma predeterminada, todos los artefactos de copia de seguridad que genera Backup for GKE se encriptan en reposo con una clave proporcionada por Google.
Sin embargo, puedes cifrar estos artefactos con una clave de encriptado gestionada por el cliente (CMEK) gestionada con Cloud Key Management Service.
Habilitar el cifrado con CMEK
Para habilitar el cifrado con CMEK, debes seguir dos pasos:
Designa una clave para cifrar las copias de seguridad creadas para un
BackupPlan
.Concede acceso a las claves adecuadas a las cuentas de servicio correspondientes.
En cualquier situación de copia de seguridad, puede haber tres claves CMEK implicadas:
bplan_key
: esta es la clave a la que haces referencia al crear o actualizar elBackupPlan
. Cuando sea posible, esta clave se usará para cifrar todos los artefactos de copia de seguridad. Esta clave debe estar en la misma región que elBackupPlan
(consulta Información sobre las ubicaciones de los recursos).orig_disk_key
: Si has cifrado tus volúmenes de disco persistente con una clave CMEK, las copias de seguridad de los volúmenes que cree Backup for GKE se cifrarán con esta clave, aunque haya otra clave registrada enBackupPlan
.new_disk_key
: es la clave CMEK que quieres usar para cifrar los volúmenes que has restaurado a partir de una copia de seguridad. ElStorageClass
hace referencia a esto en el clúster de destino de la restauración.
Hay cuatro cuentas de servicio diferentes que pueden requerir acceso a claves CMEK:
agent_robot
: debe concederse acceso a esta cuenta de servicio abplan_key
. Esta cuenta de servicio tendrá el siguiente formato:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com
, dondePROJECT_NUMBER
es el número de tu proyecto Google Cloud .non_cmek_service_agent
: Cuando se hace una copia de seguridad de volúmenes no cifrados con CMEK, esta cuenta de servicio debe tener acceso abplan_key
. Esta cuenta de servicio tendrá el siguiente formato:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com
, dondePROJECT_NUMBER
es el número de tu proyecto Google Cloud .cmek_service_agent
: Al crear copias de seguridad de volúmenes cifrados con CMEK, se debe conceder acceso a esta cuenta de servicio aorig_disk_key
. Esta cuenta de servicio tendrá el siguiente formato:service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
, dondeTENANT_PROJECT_NUMBER
es el número del proyecto de arrendatario asignado a tuBackupPlan
.compute_service_agent
: esta cuenta de servicio se usa al crear volúmenes cifrados para un clúster y debe tener acceso anew_disk_key
. Esta cuenta de servicio tendrá el siguiente formato:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
, dondePROJECT_NUMBER
es el número de tu proyecto Google Cloud .
Si se ha definido diskEncryptionKey.kmsKeyServiceAccount para los discos, deberás seguir estos pasos antes de crear una copia de seguridad:
Inhabilita la política de organización
iam.disableCrossProjectServiceAccountUsage
para habilitar la suplantación de cuentas de servicio en todos los proyectos:gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage --project=PROJECT_ID
Asigna a
cmek_service_agent
el rolroles/iam.serviceAccountTokenCreator
para crear credenciales de duración reducida:gcloud iam service-accounts add-iam-policy-binding \ # Replace the email with the value from # `diskEncryptionKey.kmsKeyServiceAccount` your-kms-key-service-acount@PROJECT_ID.iam.gserviceaccount.com \ --member=service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Si vas a realizar una operación de copia de seguridad o restauración entre proyectos, debes indicar tres nombres de proyecto:
cluster_project
: el proyecto que contiene el clúster del que quieres crear una copia de seguridad.backup_project
: el proyecto en el que quieres que se almacenen tus copias de seguridad.restore_project
: el proyecto que contiene el clúster de destino de la restauración.
En la siguiente tabla se resume a qué cuentas de servicio se debe conceder acceso a qué claves en diferentes situaciones:
Artefacto | Cuenta de servicio | Número de proyecto | Clave |
---|---|---|---|
config backup cluster | agent_robot |
|
bplan_key |
copia de seguridad de un volumen cifrado con CMEK | cmek_service_agent | backup_project | orig_disk_key |
copia de seguridad de un volumen cifrado con Google | non_cmek_service_agent | backup_project | bplan_key |
Se ha creado un nuevo volumen cifrado con CMEK durante la restauración | compute_service_agent | restore_project | new_disk_key |
Puede conceder acceso a las claves a nivel de proyecto, lo que permite acceder a todas las claves de ese proyecto, o bien a la clave individual.
Conceder acceso a nivel de proyecto
Puedes conceder acceso a las claves a nivel de proyecto, lo que permite acceder a todas las claves de ese proyecto.
Sigue estas instrucciones para conceder acceso a nivel de proyecto.
Consola
En la consola, ve a la página Gestión de identidades y accesos. Google Cloud
Haz clic en Conceder acceso.
En el campo Nuevos principales, introduce la dirección de correo de la cuenta de servicio.
En la lista Seleccionar un rol, selecciona el rol Encargado del encriptado y desencriptado de la clave criptográfica Cloud KMS.
Haz clic en Guardar.
gcloud
Concede acceso a nivel de proyecto.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto al que quieres dar acceso.PROJECT_NUMBER
: el número del proyecto al que quieres conceder acceso.
Terraform
Concede acceso a nivel de proyecto.
resource "google_project_iam_member" "example_iam_member" { project = "PROJECT_ID" role = "roles/cloudkms.cryptoKeyEncrypterDecrypter" member = "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto al que quieres dar acceso.PROJECT_NUMBER
: el número del proyecto al que quieres conceder acceso.
Conceder acceso a nivel de clave
Sigue estas instrucciones para conceder acceso a nivel de clave individual.
Consola
En la Google Cloud consola, ve a la página Gestión de claves.
Haz clic en el nombre del conjunto de claves.
Haz clic en el nombre de la clave.
Haz clic en la pestaña Permisos.
Haz clic en Conceder acceso.
En el campo Nuevos principales, introduce la dirección de correo de la cuenta de servicio.
En la lista Seleccionar un rol, selecciona el rol Encargado del encriptado y desencriptado de la clave criptográfica Cloud KMS.
Haz clic en Guardar.
gcloud
Concede acceso a nivel de clave individual.
gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Haz los cambios siguientes:
KEY_NAME
: el nombre de la clave.KEY_RING
: el nombre del conjunto de claves que contiene la clave.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.PROJECT_NUMBER
: el número del proyecto al que quieres conceder acceso.
Terraform
Concede acceso a nivel de clave individual.
resource "google_kms_crypto_key_iam_member" "crypto_key_iam_member" { crypto_key_id = "projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME" role = "roles/cloudkms.cryptoKeyEncrypterDecrypter" member = "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto al que quieres dar acceso.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.KEY_RING
: el nombre del conjunto de claves que contiene la clave.KEY_NAME
: el nombre de la clave.PROJECT_NUMBER
: el número del proyecto al que quieres conceder acceso.
Consideraciones y limitaciones de uso
Si quieres crear una copia de seguridad de un volumen cifrado con CMEK, debes conceder acceso a la clave de ese disco, aunque no habilites el cifrado con CMEK en tu
BackupPlan
.Las claves de CMEK deben estar en la misma región que el
BackupPlan
para asegurarse de que una interrupción regional no elimine el acceso a la clave mientras se pueda acceder a las copias de seguridad. Sin embargo, esta restricción no se puede aplicar a las claves compartidas con volúmenes cifrados. Cuando hay volúmenes cifrados, es posible que se produzca un error en la restauración aunque haya una copia de seguridad disponible, ya que la clave de cifrado del disco puede no estar almacenada en la misma región que la copia de seguridad.
Usar y gestionar claves externas
Puedes usar Cloud External Key Manager (Cloud EKM) para crear y gestionar claves externas. Las claves externas son punteros a claves que residen fuera de Google Cloud. Estas claves se encuentran en un partner de gestión de claves externas compatible. Para obtener más información, consulta Cloud External Key Manager.
Después de crear una clave externa con Cloud EKM, puedes aplicarla a un nuevo plan de copias de seguridad proporcionando el ID de esa clave al crear un nuevo plan de copias de seguridad. Este procedimiento es el mismo que el que se sigue para aplicar una clave de Cloud KMS a un nuevo plan de copias de seguridad.
Puedes usar Justificaciones de Acceso a Claves como parte de Cloud EKM. Justificaciones de Acceso a Claves te permite ver el motivo de cada solicitud de Cloud EKM. Además, en función de la justificación proporcionada, puedes aprobar o rechazar una solicitud automáticamente. Para obtener más información, consulta la descripción general.