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

Puedes encriptar de forma segura todos los datos que se transfieren entre tus aplicaciones cliente y Memorystore for Redis Cluster. Esto se conoce como encriptación en tránsito. Con 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 transfieran entre tus aplicaciones y el clúster de Memorystore para Redis sigan siendo confidenciales y no se alteren.

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, serás 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 (CA). Usas las AC para autenticar los certificados de las máquinas en tus clústeres.

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

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

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

Antes de comenzar

Antes de usar el modo de CA 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 CA administrada por el cliente

Para usar una CA 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 CA administrada por el cliente, debes crear un grupo de CA 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 las AC del grupo de AC que crees.
  4. Crea un clúster para usar la CA administrada por el cliente.

Crear grupo de CA

Puedes crear un grupo de CA en CA Service en el mismo proyecto en el que planeas crear tus clústeres en Memorystore for Redis Cluster, o bien 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 la organización. Para solucionar el problema, asegúrate de que el proyecto que aloja el grupo de AC y la AC, 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 un grupo 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. Si deseas obtener una lista de las regiones compatibles con 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 sujeto (SAN). Cuando configures las restricciones de identidad del grupo de AC, no establezcas ninguna restricción en 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 crearla en el estado Habilitada.

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

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 AC 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 proyecto deGoogle Cloud .

gcloud

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

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 AC que creaste.
  • PROJECT_ID: ID del proyecto Google Cloud en el que deseas crear tus clústeres.
  • REGION_ID: Es la región en la que se encuentra el grupo de AC.
  • 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 PROJECT_ID.

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

Console

Sigue los pasos que se indican en Crea instancias.

gcloud

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

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 crearás. El ID del clúster debe tener entre 1 y 63 caracteres, y solo debe usar letras en minúscula, 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 tu 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 uses 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 de 0 a 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 el nodo.

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

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

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

El parámetro server-ca-mode representa el modo de la CA para el clúster. En el caso de 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 del servidor de todas las máquinas de un clúster, usa el comando gcloud redis clusters update.

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 del 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 CAs 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 del 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, los certificados del servidor no se podrán rotar y caducará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 entidades certificadoras administradas por el cliente y se incluyen sugerencias para solucionar problemas relacionados con estos mensajes.

Mensaje de error Causa Solucionar 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 la CA. Para obtener los certificados de la 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 del servidor para 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 ubicado en una región diferente a la 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 proyecto Google Cloud 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 de modo 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 para Redis Cluster no tiene el rol roles/privateca.certificateRequester para el grupo de AC. 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 Cómo proporcionar a la cuenta de servicio acceso al grupo de AC.
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 ACs habilitadas en el grupo de AC. 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 Habilitada.
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 proyecto Google Cloud 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. Estás intentando crear un clúster que usa el modo de AC 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. Estás intentando crear un clúster que usa el modo de CA compartido o por instancia. Estos modos de CA no usan el parámetro server_ca_pool. No puedes usar este parámetro a menos que el modo de CA sea administrado por el cliente.