Protege tus datos con una autoridad certificadora (AC) administrada por el cliente

Puedes encriptar de forma segura todos los datos que se mueven entre tus aplicaciones cliente y Memorystore for Redis Cluster. Esto se denomina encriptación en tránsito. Cuando se usa la encriptación en tránsito, todo el tráfico de Redis se encripta a través del protocolo de seguridad de la capa de transporte (TLS). Esto garantiza que todos los datos que se mueven entre tus aplicaciones y Memorystore for Redis Cluster permanezcan confidenciales y sin alteraciones.

Cuando se habilita la encriptación en tránsito, los clientes de Redis se comunican exclusivamente a través de una conexión segura. Se bloquean los clientes de Redis que no están configurados para TLS. Si eliges usar la encriptación en tránsito, eres responsable de garantizar que tu cliente de Redis pueda usar el protocolo TLS.

Los clústeres que usan la encriptación en tránsito tienen autoridades certificadoras (AC). Usas las AC para autenticar los certificados de las máquinas en tus clústeres.

Un modo de AC que puedes usar es una AC administrada por el cliente. Puedes usar AC administradas por el cliente para tus clústeres en Memorystore for Redis Cluster. Si necesitas administrar tus propias AC por motivos de cumplimiento, puedes usar este modo de AC. Como parte del uso de este modo, debes configurar tu propio grupo de AC alojado en Certificate Authority Service.

Antes de configurar un clúster para usar AC administradas por el cliente, debes crear un grupo de AC en la misma región que tu clúster y al menos una AC en ese grupo con el servicio de CA. La AC puede ser una AC raíz o una AC subordinada. También puedes crear una AC subordinada en el servicio de CA y, luego, encadenar la AC subordinada a una AC raíz externa.

Cuando creas el clúster, especificas el grupo de AC. Como parte de esta configuración, la cuenta de servicio de Memorystore for Redis Cluster específica del proyecto tiene permisos para usar el grupo de AC. La cuenta de servicio solicita una AC del grupo y Memorystore for Redis Cluster usa esa AC para firmar el certificado del servidor del clúster.

Antes de comenzar

Antes de usar el modo de AC administrada por el cliente, asegúrate de cumplir con los siguientes requisitos.

Roles obligatorios

Para obtener los permisos que necesitas para crear un grupo de AC y una AC, pídele a tu administrador que te otorgue el rol de IAM de administrador de operaciones del servicio de CA (roles/privateca.caManager) en el servicio de CA.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Flujo de trabajo para usar una AC administrada por el cliente

Para usar una AC administrada por el cliente, el flujo de trabajo es el siguiente:

  1. Crea un grupo de CA. Antes de configurar un clúster para usar una AC administrada por el cliente, debes crear un grupo de AC en el servicio de CA. Este grupo debe estar en la misma región que tu clúster.
  2. Crea una CA en el grupo de CA. Después de crear el grupo de CA, debes usar el servicio de CA para crear al menos una CA en el grupo.
  3. Delega permiso a la cuenta de servicio de Memorystore for Redis Cluster para emitir certificados de servidor con AC del grupo de AC que crees.
  4. Crea un clúster para usar la AC administrada por el cliente.

Crear grupo de CA

Puedes crear un grupo de CA en el servicio de CA en el mismo proyecto en el que planeas crear tus clústeres en Memorystore for Redis Cluster, o puedes crear el grupo de CA en un proyecto diferente. Sin embargo, si creas el grupo de CA en un proyecto diferente, es posible que los Controles del servicio de VPC te impidan crear clústeres, según las políticas de tu organización. Para solucionar el problema, asegúrate de que el proyecto que aloja el grupo de CA y la CA, y el proyecto que aloja Memorystore for Redis Cluster pertenezcan al mismo perímetro de servicio. Para obtener más información, consulta Configuración y detalles del perímetro de servicio y Administra perímetros de servicio.

Para crear un grupo de CA, sigue las instrucciones en Crea grupos de CA. Puedes aceptar los valores predeterminados para el grupo de CA, con los siguientes parámetros de configuración obligatorios:

  • Crea el grupo de CA en la misma región en la que planeas crear tu clúster. Para obtener una lista de las regiones que admite Memorystore for Redis Cluster, consulta Ubicaciones de Memorystore for Redis Cluster.
  • Permite solicitudes de certificados basadas en la configuración.
  • Permite nombres de DNS en nombres alternativos de entidad (SAN). Cuando configures las restricciones de identidad del grupo de CA, no establezcas ninguna restricción sobre el formato de los nombres de DNS que puedan entrar en conflicto con lo que Memorystore for Redis Cluster podría agregar al SAN.

Crea una CA en el grupo de CA

Crea al menos una CA en el grupo de CA que creaste.

Puedes crear una CA raíz o una CA subordinada.

Para crear una CA raíz, sigue las instrucciones en Crea una CA raíz. Puedes aceptar los valores predeterminados para la CA, pero asegúrate de crear la CA en el estado Habilitado.

Cuando configures el algoritmo y el tamaño de la clave de CA, puedes seleccionar cualquier tamaño de clave y algoritmo.

Si creas una CA subordinada, primero debes crear y configurar tu CA raíz.

Proporciona a la cuenta de servicio acceso al grupo de CA

Para asegurarte de que tu cuenta de servicio de Memorystore for Redis Cluster tenga permisos para solicitar y firmar certificados para tus clústeres, otorga el rol roles/privateca.certificateRequester a la cuenta de servicio del grupo de CA que creaste.

Esta cuenta de servicio tiene el siguiente formato:
service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com. Reemplaza PROJECT_NUMBER por el número de proyecto de tu Google Cloud proyecto.

gcloud

Para otorgar a la cuenta de servicio acceso al grupo de CA, usa el gcloud privateca pools add-iam-policy-binding comando.

gcloud privateca pools add-iam-policy-binding CA_POOL_ID \
--project=PROJECT_ID \
--location=REGION_ID \
--member serviceAccount:SERVICE_ACCOUNT_NAME \
--role=roles/privateca.certificateRequester

Realiza los siguientes reemplazos:

  • CA_POOL_ID: Es el ID del grupo de CA que creaste.
  • PROJECT_ID: Es el ID del Google Cloud proyecto en el que deseas crear tus clústeres.
  • REGION_ID: Es la región en la que se encuentra el grupo de CA.
  • SERVICE_ACCOUNT_NAME: Es el nombre de la cuenta de servicio de Memorystore for Redis Cluster. El número de proyecto de esta cuenta de servicio es el mismo que el número de proyecto asociado con el PROJECT_ID.

Crea un clúster que use una CA administrada por el cliente

Console

Sigue los pasos en Crea instancias.

gcloud

Para crear un clúster que use una CA administrada por el cliente, usa el gcloud redis clusters create comando.

gcloud redis clusters create CLUSTER_ID \
--region=REGION_ID \
--network=NETWORK \
--replica-count=REPLICA_COUNT \
--node-type=NODE_TYPE \
--shard-count=SHARD_COUNT \
--transit-encryption-mode=server-authentication \
--server-ca-mode=customer-managed-cas-ca \
--server-ca-pool="projects/CA_POOL_PROJECT_ID/locations/REGION_ID/caPools/CA_POOL_ID"

Realiza los siguientes reemplazos:

  • CLUSTER_ID: Es el ID del clúster que estás creando. El ID del clúster debe tener entre 1 y 63 caracteres, y solo usar letras minúsculas, números o guiones. Debe comenzar con una letra minúscula y terminar con una letra minúscula o un número.

  • REGION_ID: Es la región en la que deseas que se ubique el clúster. Debes crear el clúster en la misma región que el grupo de CA que creaste.

  • NETWORK: Es la red que usas para crear el clúster. Debe usar este formato: projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID. El ID de red que usas debe coincidir con el ID de red que usa la política de conexión de servicio. De lo contrario, no podrás crear el clúster.

  • REPLICA_COUNT: Es la cantidad de réplicas (por fragmento). Los valores aceptados son 0-5.

  • NODE_TYPE: Es el tipo de nodo. Los valores aceptados son los siguientes:

    • redis-shared-core-nano
    • redis-standard-small
    • redis-highmem-medium
    • redis-highmem-xlarge
  • SHARD_COUNT: Es la cantidad de fragmentos en el clúster. La cantidad de fragmentos determina la capacidad total de memoria para almacenar datos del clúster. Para obtener más información sobre las especificaciones del clúster, consulta Especificaciones del clúster y del nodo.

  • CA_POOL_PROJECT_ID: Es el ID del grupo de CA que creaste.

  • REGION_ID: Es la región en la que se encuentra el grupo de CA. El clúster que estás creando y el grupo de CA deben estar ubicados en la misma región.

  • CA_POOL_ID: Es el ID del grupo de CA que creaste.

El parámetro server-ca-mode representa el modo de CA para el clúster. Para una CA administrada por el cliente, customer-managed-cas-ca es el valor del parámetro. Si no usas este parámetro, el modo de CA predeterminado es por instancia.

Por ejemplo:

gcloud redis clusters create my-cluster \
--region=us-central1 \
--network=projects/my-network-project/global/networks/default \
--replica-count=1 \
--node-type=redis-highmem-medium \
--shard-count=3 \
--transit-encryption-mode=server-authentication \
--server-ca-mode=customer-managed-cas-ca \
--server-ca-pool="projects/my-CA-pool-project/locations/us-central1/caPools/my-CA-pool"

Rota los certificados de servidor del clúster

Además de que Memorystore for Redis Cluster realiza una rotación semanal de certificados del servidor, puedes rotar los certificados a pedido.

gcloud

Para rotar los certificados de servidor de todas las máquinas de un clúster, usa el gcloud redis clusters update comando.

gcloud redis clusters update CLUSTER_ID \
--region=REGION_ID \
--rotate-server-certificate

Realiza los siguientes reemplazos:

  • CLUSTER_ID: Es el ID del clúster que contiene las máquinas para las que deseas rotar los certificados de servidor.
  • REGION_ID: Es la región en la que se encuentra el clúster.

Por ejemplo:

gcloud redis clusters update my-cluster \
--region=us-central1 \
--rotate-server-certificate

Limitaciones

Se aplican las siguientes limitaciones cuando se usan AC administradas por el cliente con Memorystore for Redis Cluster:

  • Después de configurar una CA administrada por el cliente para un clúster, no puedes modificar la configuración. Por ejemplo, no puedes cambiar el ID del grupo de CA para el clúster.
  • No borres el grupo de CA administrado por el cliente ni revoques los permisos de la cuenta de servicio asociados con la CA. Si lo haces, no se podrán rotar los certificados de servidor y vencerán. Como resultado, tus aplicaciones cliente no podrán conectarse al clúster.

Solucionar problemas

En esta sección, se enumeran los mensajes de error que puedes recibir cuando usas AC administradas por el cliente y se incluyen sugerencias para solucionar estos mensajes.

Mensaje de error Causa Solución de problemas
FAILED_PRECONDITION: GetClusterCertificateAuthority not supported for customer-managed CAs Si usas una CA administrada por el cliente, no puedes usar Memorystore for Redis Cluster para recuperar los certificados de CA. Para obtener los certificados de CA de una CA administrada por el cliente, debes usar el servicio de CA.
Server certificate rotation can only be triggered for customer-managed CAs. Intentas rotar los certificados de servidor de un clúster, pero el modo de CA del clúster es por instancia o compartido. No puedes rotar los certificados de servidor a menos que el modo que uses para un clúster sea administrado por el cliente.
Invalid format for server CA pool: {CA pool resource}. Expected projects/{project}/locations/{location}/caPools/{caPool}. El grupo de CA que usas para crear el clúster tiene un formato no válido. Para el grupo de CA, usa este formato:
projects/CA_POOL_PROJECT_ID/locations/REGION_ID/ caPools/CA_POOL_ID
The instance/cluster's server CA pool must be in the same region as the instance/cluster. CA Pool region: {CA pool region}, Instance/cluster region: {cluster region}. Intentas crear un clúster que se encuentra en una región diferente del grupo de CA. Asegúrate de que el clúster que estás creando y tu grupo de CA estén en la misma región.
Request is prohibited by organization's policy for CA Pool {CA pool ID}. El Google Cloud proyecto que aloja el grupo de CA y el proyecto que aloja el clúster no están en el mismo perímetro de servicio. Configura los Controles del servicio de VPC para que los proyectos pertenezcan al mismo perímetro de servicio.
Permission privateca.certificates.create denied on {CA pool ID}. Make sure that you granted the roles/privateca.certificateRequester role to the service account {P4SA email}. La cuenta de servicio de Memorystore for Redis Cluster no tiene el roles/privateca.certificateRequester rol para el grupo de CA. Como resultado, Memorystore for Redis Cluster no puede generar certificados de servidor. Otorga el rol roles/privateca.certificateRequester a la cuenta de servicio. Para obtener más información, consulta Proporciona a la cuenta de servicio acceso al grupo de CA.
Resource {CA pool ID} not found. Memorystore for Redis Cluster no puede encontrar el grupo de CA que especificaste cuando intentaste crear el clúster. Verifica el ID del proyecto, la ubicación y el nombre del grupo de CA.
There are no enabled CAs in the CaPool {CA pool ID}. Please ensure that there is at least one enabled Certificate Authority to issue a certificate. No hay AC habilitadas en el grupo de CA. Memorystore for Redis Cluster no puede generar certificados de servidor para el clúster. Asegúrate de crear al menos una CA en el grupo de CA y de que la CA esté en el estado Habilitado.
Quota exhausted for CA Service. Check quotas for the project hosting the CA Pool: {CA pool ID}. Superaste la cuota del servicio de CA en el Google Cloud proyecto que aloja el grupo de CA. Memorystore for Redis Cluster no puede realizar operaciones que requieran este servicio. Verifica la cuota del servicio de CA en tu proyecto. Para obtener más información, consulta Cuotas y límites.
server_ca_pool must be provided when server_ca_mode is SERVER_CA_MODE_CUSTOMER_MANAGED_CAS_CA. Intentas crear un clúster que usa el modo de CA administrada por el cliente. Sin embargo, no proporcionaste información sobre el grupo de CA. Especifica el ID del proyecto, la ubicación y el nombre del grupo de CA.
server_ca_pool must not be provided when server_ca_mode is not SERVER_CA_MODE_CUSTOMER_MANAGED_CAS_CA. Intentas crear un clúster que usa el modo de CA por instancia o compartido. Estos modos de CA no usan el server_ca_pool parámetro. No puedes usar este parámetro a menos que el modo de CA sea administrado por el cliente.