Compartir a través de


Configuración de claves administradas por el cliente entre inquilinos para la cuenta de Azure Cosmos DB con Azure Key Vault

SE APLICA A: NoSQL MongoDB Cassandra Gremlin Tabla

Los datos almacenados en la cuenta de Azure Cosmos DB se cifran de forma automática y sin problemas con claves administradas por el servicio administradas por Microsoft. Sin embargo, puede optar por agregar una segunda capa de cifrado con claves administradas por usted. Estas claves se conocen como claves administradas por el cliente (o CMK). Las claves administradas por el cliente se almacenan en una instancia de Azure Key Vault.

En este artículo, se describe cómo configurar el cifrado con claves administradas por el cliente en el momento en el que se crea una cuenta de Azure Cosmos DB. En este escenario entre inquilinos de ejemplo, la cuenta de Azure Cosmos DB reside en un inquilino administrado por un proveedor de software independiente (ISV) al que se hace referencia como el proveedor de servicios. La clave que se usa para el cifrado de la cuenta de Azure Cosmos DB reside en un almacén de claves en un inquilino diferente que administra el cliente.

Información sobre las claves administradas por el cliente entre inquilinos

Muchos proveedores de servicios que crean ofertas de software como servicio (SaaS) en Azure quieren ofrecer a sus clientes la opción de administrar sus propias claves de cifrado. Las claves administradas por el cliente permiten a un proveedor de servicios cifrar los datos del cliente mediante una clave de cifrado administrada por el cliente del proveedor de servicios y a la que no puede acceder el proveedor de servicios. En Azure, el cliente del proveedor de servicios puede usar Azure Key Vault para administrar sus claves de cifrado en su propio inquilino y suscripción de Microsoft Entra.

Los servicios y recursos de la plataforma Azure que pertenecen al proveedor de servicios y que residen en el inquilino del proveedor de servicios requieren acceso a la clave del inquilino del cliente para realizar las operaciones de cifrado y descifrado.

En la imagen siguiente se muestra un cifrado de datos en reposo con identidad federada en un flujo de trabajo de CMK multicliente que abarca un proveedor de servicios y su cliente.

Recorte de pantalla en el que se muestra un CMK entre inquilinos con una identidad federada.

En el ejemplo anterior, hay dos inquilinos de Microsoft Entra: el inquilino de un proveedor de servicios independiente (Inquilino 1) y el inquilino de un cliente (Inquilino 2). Inquilino 1 hospeda los servicios de la plataforma Azure y Inquilino 2 hospeda el almacén de claves del cliente.

El proveedor de servicios crea un registro de aplicación multicliente en el Tenant 1. Se crea una credencial de identidad federada en esta aplicación utilizando una identidad administrada asignada por el usuario. A continuación, el nombre y el identificador de la aplicación se comparten con el cliente.

Un usuario con los permisos adecuados instala la aplicación del proveedor de servicios en el inquilino del cliente Inquilino 2. A continuación, un usuario concede a la entidad de servicio asociada a la aplicación instalada acceso al almacén de claves del cliente. El cliente también almacena la clave de cifrado, o la clave administrada por el cliente, en el almacén de claves. El cliente comparte la ubicación de la clave (la dirección URL de la clave) con el proveedor de servicios.

El proveedor de servicios ahora tiene lo siguiente:

  • Un ID de aplicación de una aplicación multitenant instalada en el tenant del cliente, a la cual se le ha concedido acceso a la clave administrada por el cliente.
  • Una identidad administrada configurada como credencial en la aplicación multicliente.
  • La ubicación de la clave en el almacén de claves del cliente.

Con estos tres parámetros, el proveedor de servicios aprovisiona recursos de Azure en Inquilino 1 que se pueden cifrar con la clave administrada por el cliente en Inquilino 2.

Vamos a dividir la solución de un extremo a otro anterior en tres fases:

  1. El proveedor de servicios configura identidades.
  2. El cliente concede a la aplicación multiinquilino del proveedor de servicios acceso a una clave de cifrado en Azure Key Vault.
  3. El proveedor de servicios cifra los datos de un recurso de Azure mediante la CMK.

Las operaciones de la fase 1 serán una configuración única para la mayoría de las aplicaciones del proveedor de servicios. Las operaciones de las fases 2 y 3 se repetirán para cada cliente.

Fase 1: El proveedor de servicios configura una aplicación de Microsoft Entra

Paso Descripción Rol mínimo en RBAC de Azure Rol mínimo en RBAC de Microsoft Entra
1. Cree un nuevo registro de aplicación multicliente de Microsoft Entra o utilice un registro de aplicación existente. Anote el id. de la aplicación (id. de cliente) del registro de la aplicación mediante Azure Portal, Microsoft Graph API, Azure PowerShell o la CLI de Azure. Ninguno Desarrollador de aplicaciones
2. Cree una identidad administrada asignada por el usuario (que se usará como credencial de identidad federada).
Azure Portal / CLI de Azure / Azure PowerShell/ Plantillas de Azure Resource Manager
Colaborador de identidad administrada Ninguno
3. Configure la identidad administrada asignada por el usuario como credencial de identidad federada en la aplicación para que pueda suplantar la identidad de la aplicación.
Referencia de Graph API / Azure Portal/ CLI de Azure/ Azure PowerShell
Ninguno Propietario de la aplicación
4. Comparta el nombre y el id. de la aplicación con el cliente para que pueda instalar y autorizar la aplicación. Ninguno Ninguno

Consideraciones para proveedores de servicio

  • No se recomiendan las plantillas de Azure Resource Manager (ARM) para crear aplicaciones de Microsoft Entra.
  • Se puede usar la misma aplicación multiinquilino para acceder a las claves en diversos inquilinos, como Inquilino 2, Inquilino 3, Inquilino 4, etc. En cada cliente, se crea una instancia independiente de la aplicación que tiene el mismo ID de aplicación, pero un ID de objeto diferente. Por lo tanto, cada instancia de esta aplicación se autoriza de forma independiente. Considere cómo se utiliza el objeto de aplicación para esta característica a fin de particionar su aplicación entre todos los clientes.
  • En raras ocasiones, un proveedor de servicios puede utilizar un único objeto de aplicación por cliente, pero esto requiere importantes costos de mantenimiento para administrar las aplicaciones a gran escala en todos los clientes.
  • En el inquilino del proveedor de servicios, no es posible automatizar la comprobación del publicador.

Fase 2: el cliente autoriza el acceso a la bóveda de claves

Paso Descripción Roles de RBAC de Azure con privilegios mínimos Roles de Microsoft Entra con privilegios mínimos
1.
  • Recomendado: envíe al usuario para iniciar sesión en la aplicación. Si el usuario puede iniciar sesión, existe una entidad de servicio para la aplicación en su inquilino.
  • Usa Microsoft Graph, Microsoft Graph PowerShell, Azure PowerShell o Azure CLI para crear el principal de servicio.
  • Construya una dirección URL de consentimiento del administrador y conceda consentimiento para todo el inquilino para crear la entidad de servicio mediante el id. de aplicación.
  • Ninguno Usuarios con permisos para instalar aplicaciones
    2. Cree una instancia de Azure Key Vault y una clave usada como clave administrada por el cliente. Se debe asignar a un usuario el rol Colaborador de Key Vault para crear el almacén de claves

    Se debe asignar a un usuario el rol Agente criptográfico de Key Vault para agregar una clave al almacén de claves.
    Ninguno
    3. Conceda a la identidad de la aplicación consentida acceso al almacén de claves de Azure mediante la asignación del rol Usuario de Encriptación del Servicio Criptográfico de Key Vault. Para asignar el rol de Usuario del servicio de cifrado de Key Vault a la aplicación, debe haber sido asignado el rol Administrador de administración de accesos. Ninguno
    4. Copie la dirección URL del almacén de claves y el nombre de la clave en la configuración de claves administradas por el cliente de la oferta de SaaS. Ninguno Ninguno

    Nota

    Para autorizar el acceso al HSM administrado para el cifrado mediante CMK, consulte el ejemplo de la Cuenta de almacenamiento aquí. Para más información sobre cómo administrar claves con HSM administrado, consulte Administración de un HSM administrado mediante la CLI de Azure.

    Consideraciones para clientes de proveedores de servicios

    • En el inquilino del cliente Inquilino 2 un administrador puede establecer directivas para impedir que los usuarios que no sean administradores instalen aplicaciones. Estas directivas pueden impedir que los usuarios que no sean administradores creen entidades de servicio. Si se configura una directiva de este tipo, los usuarios con permisos para crear entidades de servicio deberán participar.
    • El acceso a Azure Key Vault se puede autorizar mediante directivas de acceso o RBAC de Azure. Al conceder acceso a un almacén de claves, asegúrese de usar el mecanismo activo para el almacén de claves.
    • Un registro de aplicación de Microsoft Entra tiene un id. de aplicación (id. de cliente). Cuando la aplicación se instala en el inquilino, se crea una entidad de servicio. La entidad de servicio comparte el mismo id. de aplicación que el registro de aplicación, pero genera su propio id. de objeto. Al autorizar a la aplicación el acceso a los recursos, es posible que tenga que usar la entidad de servicio Name o la propiedad ObjectID.

    Fase 3: el proveedor de servicios cifra los datos de un recurso de Azure mediante la clave administrada por el cliente

    Una vez completadas las fases 1 y 2, el proveedor de servicios puede configurar el cifrado en el recurso de Azure con la clave y el almacén de claves en el entorno del cliente y el recurso de Azure en el entorno del ISV. El proveedor de servicios puede configurar claves administradas por el cliente entre inquilinos con las herramientas del cliente compatibles con ese recurso de Azure, con una plantilla de ARM o con la API REST.

    Configuración de claves administradas por el cliente entre inquilinos

    En esta sección se describe cómo configurar una clave administrada por el cliente (CMK) entre inquilinos y cifrar los datos de los clientes. Obtendrá información sobre cómo cifrar los datos de los clientes en un recurso de Tenant1 mediante una CMK almacenada en un almacén de claves en Tenant2. Puede usar Azure Portal, Azure PowerShell o la CLI de Azure.

    Inicie sesión en Azure Portal y siga los pasos siguientes.

    El proveedor de servicios configura identidades.

    El proveedor de servicios realiza los pasos siguientes en el inquilino Tenant1 del proveedor de servicios.

    El proveedor de servicios crea un registro de aplicaciones multiinquilino

    Puede crear un nuevo registro de aplicación multiinquilino de Microsoft Entra o comenzar con un registro de aplicación multiinquilino existente. Si comienza con un registro de aplicación existente, anote el id. de aplicación (id. de cliente) de la aplicación.

    Para crear un nuevo registro, siga estos pasos:

    1. Busque Microsoft Entra ID en el cuadro de búsqueda. Busque y seleccione la extensión Microsoft Entra ID.

    2. Seleccione Administrar > Registros de aplicaciones en el panel izquierdo.

    3. Seleccione + Nuevo registro.

    4. Proporcione el nombre para el registro de la aplicación y seleccione Cuenta en cualquier directorio organizativo (cualquier directorio de Microsoft Entra – multitenant).

    5. Seleccione Registrar.

    6. Anote el valor de applicationId/ClientId de la aplicación.

      Captura de pantalla que muestra cómo crear un nuevo registro de aplicación multiinquilino.

    El proveedor de servicios crea una identidad administrada asignada por el usuario.

    Cree una identidad administrada asignada por el usuario que se usará como credencial de identidad federada.

    1. Busque Identidades administradas en el cuadro de búsqueda. Busque y seleccione la extensión Identidades administradas.

    2. Seleccione + Create.

    3. Proporcione el grupo de recursos, la región y el nombre de la identidad administrada.

    4. Seleccione Revisar + crear.

    5. Si la implementación se realiza correctamente, anote el valor de resourceId de Azure de la identidad administrada asignada por el usuario, que está disponible en Propiedades. Por ejemplo:

      /subscriptions/tttttttt-0000-tttt-0000-tttt0000tttt/resourcegroups/XTCMKDemo/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ConsotoCMKDemoUA

      Captura de pantalla que muestra cómo crear un grupo de recursos y una identidad administrada asignada por el usuario.

    El proveedor de servicios configura la identidad administrada asignada por el usuario como una credencial federada en la aplicación.

    Configure una identidad administrada asignada por el usuario como credencial de identidad federada en la aplicación para que pueda suplantar la identidad de la aplicación.

    1. Vaya a Microsoft Entra ID > Registros de aplicaciones > la aplicación.

    2. Seleccione Certificados y secretos.

    3. Seleccione Credenciales federadas.

      Captura de pantalla que muestra cómo navegar hasta el Certificado y los secretos.

    4. Seleccione + Agregar credencial.

    5. En Escenario de credenciales federadas, seleccione Identidad administrada.

    6. Haga clic en Seleccionar una identidad administrada. En el panel, seleccione la suscripción. En Identidad administrada, seleccione Identidad administrada asignada por el usuario. En el cuadro Seleccionar, busque la identidad administrada que creó anteriormente y haga clic en Seleccionar en la parte inferior del panel.

      Captura de pantalla que muestra cómo seleccionar una identidad administrada.

    7. En Detalles de la credencial, proporcione un nombre y una descripción opcional para la credencial y seleccione Agregar.

      Captura de pantalla que muestra cómo agregar una credencial.

    El proveedor de servicios comparte el id. de aplicación con el cliente.

    Busque el identificador (identificador de cliente) de la aplicación multiinquilino y compártalo con el cliente.

    El cliente otorga a la aplicación del proveedor de servicios acceso a la clave en el repositorio de claves.

    Los siguientes pasos los realiza el cliente en el inquilino del cliente Inquilino2. El cliente puede usar Azure Portal, Azure PowerShell o la CLI de Azure.

    El usuario que ejecuta los pasos debe ser un administrador con un rol con privilegios, como Administrador de aplicaciones, Administrador de aplicaciones en la nube o Administrador global.

    Inicie sesión en Azure Portal y siga los pasos siguientes.

    El cliente instala la aplicación del proveedor de servicios en el inquilino del cliente

    Para instalar la aplicación registrada del proveedor de servicios en el inquilino del cliente, cree una entidad de servicio con el id. de aplicación de la aplicación registrada. Puede crear la entidad de servicio de cualquiera de las siguientes maneras:

    El cliente crea un almacén de claves

    Para crear el almacén de claves, a la cuenta del usuario se le debe asignar el rol Colaborador de Key Vault u otro rol que permita la creación de un almacén de claves.

    1. En el menú de Azure Portal o en la página principal, seleccione + Crear un recurso. En el cuadro de búsqueda, escriba Almacenes de claves. En la lista de resultados, seleccione Almacenes de claves. En la página Almacenes de claves, seleccione Crear.

    2. En la pestaña Aspectos básicos, elija una suscripción. En Grupo de recursos, seleccione Crear nuevo y escriba un nombre para el grupo de recursos.

    3. Introduzca un nombre único para el almacén de claves.

    4. Seleccione una región y un plan de tarifa.

    5. Habilite la protección de purgas para el nuevo almacén de claves.

    6. En la pestaña Directiva de acceso, seleccione Control de acceso basado en roles de Azure para Modelo de permisos.

    7. Seleccione Revisar y crear y, a continuación, Crear.

      Recorte de pantalla en la que se muestra cómo crear un almacén de claves.

    Anote el nombre y el identificador URI del almacén de claves. Las aplicaciones que acceden al almacén de claves deben usar este identificador URI.

    Para obtener más información, consulte Inicio rápido: Creación de un almacén de claves de Azure Key Vault con Azure Portal.

    El cliente asigna el rol de Agente criptográfico de Key Vault a una cuenta de usuario.

    Este paso garantiza que pueda crear claves de cifrado.

    1. Vaya al almacén de claves y seleccione Control de acceso (IAM) en el panel izquierdo.
    2. En Conceder acceso a este recurso seleccione Agregar asignación de rol.
    3. Busque y seleccione Agente criptográfico de Key Vault.
    4. En Miembros, seleccione Usuario, grupo o entidad de servicio.
    5. Seleccione Miembros y busque su cuenta de usuario.
    6. Seleccione Revisar y asignar.

    El cliente crea una clave de cifrado

    Para crear la clave de cifrado, a la cuenta del usuario se le debe asignar el rol Agente criptográfico de Key Vault u otro rol que permita la creación de una clave.

    1. En la página de propiedades de Key Vault, seleccione Claves.
    2. Seleccione Generar o importar.
    3. En la pantalla Crear una clave, especifique un nombre para la clave. Deje las restantes opciones con sus valores predeterminados.
    4. Seleccione Crear.
    5. Copie el URI de la clave.

    El cliente concede acceso al almacén de claves a la aplicación del proveedor de servicios

    Asigne el rol de RBAC de Azure Usuario de Encriptación del Servicio Criptográfico de Key Vault a la aplicación registrada del proveedor de servicios para que pueda acceder al almacén de claves.

    1. Vaya al almacén de claves y seleccione Control de acceso (IAM) en el panel izquierdo.
    2. En Conceder acceso a este recurso seleccione Agregar asignación de rol.
    3. Busque y seleccione Usuario de cifrado de Key Vault Crypto Service.
    4. En Miembros, seleccione Usuario, grupo o entidad de servicio.
    5. Seleccione Miembros y busque el nombre de la aplicación que instaló desde el proveedor de servicios.
    6. Seleccione Revisar y asignar.

    Ahora puede configurar las claves gestionadas por el cliente utilizando el URI y la clave del almacén de claves.

    Creación de una nueva cuenta de Azure Cosmos DB cifrada con una clave de otro inquilino

    Hasta este punto, ha configurado la aplicación multiinquilino en el inquilino del proveedor de servicios. También ha instalado la aplicación en el inquilino del cliente y ha configurado el almacén de claves y la clave en el inquilino del cliente. A continuación, puede crear una cuenta de Azure Cosmos DB en el inquilino del proveedor de servicios y configurar las claves administradas por el cliente con la clave del inquilino del cliente.

    Al crear una cuenta de Azure Cosmos DB con claves administradas por el cliente, debemos asegurarnos de que esta tenga acceso a las claves que ha utilizado el cliente. En escenarios de inquilino único, asigne acceso directo al almacén de claves a la entidad de seguridad de Azure Cosmos DB o use una identidad administrada específica. En un escenario de múltiples entidades, ya no podemos depender del acceso directo al almacén de claves, ya que se encuentra en otra entidad administrada por el cliente. Debido a esta restricción, en las secciones anteriores creamos una aplicación multicliente y registramos una identidad administrada dentro de la aplicación para otorgarle acceso al almacén de claves del cliente. Esta identidad administrada, junto con el id. de aplicación entre inquilinos, es lo que usaremos al crear la cuenta de Azure Cosmos DB con CMK entre inquilinos. Para más información, consulte la sección Fase 3: el proveedor de servicios cifra los datos de un recurso de Azure mediante la clave administrada por el cliente de este artículo.

    Cada vez que hay disponible una nueva versión de la clave en el almacén de claves, se actualiza automáticamente en la cuenta de Azure Cosmos DB.

    Uso de plantillas JSON de Azure Resource Manager

    Implemente una plantilla de ARM con los siguientes parámetros específicos:

    Nota

    Si estás recreando este ejemplo en una de tus plantillas de Azure Resource Manager, utiliza un apiVersion de 2022-05-15.

    Parámetro Descripción Valor de ejemplo
    keyVaultKeyUri Identificador de la clave administrada por el cliente que reside en el almacén de claves del proveedor de servicios. https://my-vault.vault.azure.com/keys/my-key
    identity Objeto que especifica que la identidad administrada se debe asignar a la cuenta de Azure Cosmos DB. "identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity":{}}}
    defaultIdentity Combinación del id. de recurso de la identidad administrada y el id. de aplicación de la aplicación multiinquilino de Microsoft Entra. UserAssignedIdentity=/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity&FederatedClientId=aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e

    Este es un ejemplo de un segmento de plantilla con los tres parámetros configurados:

    {
      "kind": "GlobalDocumentDB",
      "location": "East US 2",
      "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
          "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity": {}
        }
      },
      "properties": {
        "locations": [
          {
            "locationName": "East US 2",
            "failoverPriority": 0,
            "isZoneRedundant": false
          }
        ],
        "databaseAccountOfferType": "Standard",
        "keyVaultKeyUri": "https://my-vault.vault.azure.com/keys/my-key",
        "defaultIdentity": "UserAssignedIdentity=/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity&FederatedClientId=aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
      }
    }
    

    Importante

    Esta característica aún no se admite en Azure PowerShell, la CLI de Azure o Azure Portal.

    No se pueden configurar claves administradas por el cliente con una versión específica de la versión de clave al crear una nueva cuenta de Azure Cosmos DB. La propia clave se debe pasar sin versiones y sin barras diagonales inversas finales.

    Para revocar o deshabilitar las claves administradas por el cliente, consulte Configuración de claves administradas por el cliente para la cuenta de Azure Cosmos con Azure Key Vault.

    Preguntas más frecuentes

    ¿Cómo se migra una cuenta de Azure Cosmos DB con claves administradas por el cliente habilitadas a un grupo de recursos diferente o a otra suscripción?

    Como requisito previo, asegúrese de que la cuenta está en estado Activo. No se pueden migrar las cuentas que están en estado revocado.

    La guía general para migrar una cuenta de Cosmos DB a otro grupo de recursos o suscripción se describe en el artículo traslado de recursos de Azure a un nuevo grupo de recursos o suscripción .

    Después de mover correctamente la cuenta de Azure Cosmos DB según la guía general, se deben reasignar las identidades (System-Assigned o User-Assigned) asociadas a la cuenta. Esta reasignación es necesaria para asegurarse de que estas identidades siguen teniendo los permisos necesarios para acceder a la clave de Key Vault.

    ¿Cómo se migra una cuenta de Azure Cosmos DB a otro inquilino?

    Si la cuenta de Cosmos DB tiene habilitadas las claves administradas por el cliente, solo puede migrar la cuenta si es una cuenta de clave administrada por el cliente entre inquilinos. Para obtener más información, consulte la guía sobre la configuración de claves gestionadas por el cliente en un entorno multi-inquilino para su cuenta de Azure Cosmos DB con Azure Key Vault.

    Advertencia

    Después de migrar, es fundamental mantener la cuenta de Azure Cosmos DB y Azure Key Vault en entidades independientes para conservar la relación original entre entidades. Asegúrese de que la clave de Key Vault permanece en su lugar hasta que se complete la migración de la cuenta de Cosmos DB.

    Consulte también