Cifrado de discos administrados con claves administradas por el cliente entre inquilinos

En este artículo se describe la compilación de una solución en la que se cifran discos administrados con claves administradas por el cliente mediante Azure Key Vaults almacenados en otro inquilino de Microsoft Entra. Esta configuración puede ser ideal para varios escenarios; por ejemplo, para el soporte técnico de Azure que usan los proveedores de servicios que quieren ofrecer claves de cifrado de tipo "bring-your-own" a sus clientes donde los recursos del inquilino del proveedor de servicios se cifran con claves del inquilino del cliente.

Un conjunto de cifrado de disco con identidad federada en un flujo de trabajo de CMK entre inquilinos abarca los recursos de inquilino del proveedor de servicios o ISV (conjunto de cifrado de disco, identidades administradas y registros de aplicaciones) y los recursos de inquilino del cliente (aplicaciones empresariales, asignaciones de roles de usuario y almacén de claves). En este caso, el recurso de Azure de origen es el conjunto de cifrado de disco del proveedor de servicios.

Si tiene alguna pregunta sobre las claves administradas por el cliente entre inquilinos con discos administrados, envíe un correo electrónico a crosstenantcmkvteam@service.microsoft.com.

Limitaciones

  • Managed Disks y la Key Vault del cliente deben estar en la misma región de Azure, pero pueden estar en suscripciones diferentes.
  • Esta característica no admite discos Ultra ni discos administrados SSD prémium v2 de Azure.
  • Esta característica no está disponible en Microsoft Azure operado por nubes 21Vianet o Government.

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 entre inquilinos que abarca un proveedor de servicios y su cliente.

Screenshot showing a cross-tenant CMK with a federated identity.

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 multiinquilino en el Inquilino 1. El proveedor de servicios configura una credencial de identidad federada en esta aplicación mediante 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 identificador de aplicación de una aplicación multiinquilino instalada en el inquilino del cliente, a la que se le ha concedido acceso a la clave administrada por el cliente.
  • Una identidad administrada configurada como credencial en la aplicación multiinquilino.
  • 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 multiinquilino de Microsoft Entra o comience con 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. None 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
None 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. None None

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 inquilino, 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. Tenga en cuenta cómo se usa el objeto de aplicación para esta característica a fin de crear particiones de la aplicación en 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 al almacén 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.
  • Use Microsoft Graph, Microsoft Graph PowerShell, Azure PowerShell o la CLI de Azure para crear la entidad 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.
  • None 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.
    None
    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 del cifrado del servicio de cifrado de Key Vault. Para asignar el rol Usuario del cifrado del servicio de cifrado de Key Vault a la aplicación, debe tener asignado el rol Administrador de acceso de usuario. None
    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. None None

    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 la 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 del inquilino del cliente y el recurso de Azure del inquilino 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 del registro de aplicación y seleccione Cuenta en cualquier directorio organizativo (cualquier directorio de Microsoft Entra: multiinquilino).

    5. Seleccione Registrar.

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

      Screen shot showing how to create a new multi-tenant application registration.

    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 (+ Crear).

    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

      Screen shot showing how to create a resource group and a user-assigned managed identity.

    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 > su aplicación.

    2. Seleccione Certificados y secretos.

    3. Seleccione Credenciales federadas.

      Screen shot showing how to navigate to Certificate and secrets.

    4. Seleccione + Agregar credencial.

    5. En Escenario de credencial federada, seleccione Claves administradas por el cliente.

    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.

      Screen shot showing how to select a managed identity.

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

      Screen shot showing how to add a credential.

    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 concede a la aplicación del proveedor de servicios acceso a la clave en el almacén de claves.

    El cliente realiza los pasos siguientes en el inquilino Tenant2 del cliente. 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 maneras siguientes:

    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.

      Screen shot showing how to create a key vault.

    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 a la aplicación del proveedor de servicios acceso al almacén de claves.

    Asigne el rol de RBAC de Azure Usuario del cifrado del servicio de cifrado 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 del cifrado del servicio de cifrado de Key Vault.
    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 claves administradas por el cliente con el URI y la clave del almacén de claves.

    Creación de un conjunto de cifrado de disco

    Ahora que ha creado Azure Key Vault y ha realizado las configuraciones necesarias de Microsoft Entra, implemente un conjunto de cifrado de disco configurado para trabajar entre inquilinos y asociarlo a una clave en el almacén de claves. Para ello, puede usar Azure Portal, Azure PowerShell o la CLI de Azure. También puede usar una plantilla de ARM o una API REST.

    Para usar Azure Portal, inicie sesión en el portal y siga estos pasos.

    1. Seleccione + Crear un recurso, busque Conjunto de cifrado de disco y seleccione Crear > conjunto de cifrado de disco.

    2. En Detalles del proyecto, seleccione la suscripción y el grupo de recursos donde se va a crear el conjunto de cifrado de disco.

    3. En Detalles de la instancia, proporcione un nombre para el conjunto de cifrado de disco.

      Screenshot showing how to enter the project and instance details to create a new disk encryption set.

    4. Seleccione la región en la que se va a crear el conjunto de cifrado de disco.

    5. En Tipo de cifrado, seleccione Cifrado en reposo con una clave administrada por el cliente.

    6. En Clave de cifrado, seleccione el botón de radio Enter key from URI (Escribir la clave de URI) y, luego, escriba el URI de clave de la clave creada en el inquilino del cliente.

    7. En User-assigned identity (Identidad asignada por el usuario), seleccione Seleccionar una identidad.

    8. Seleccione la identidad administrada asignada por el usuario que creó anteriormente en el inquilino del ISV y, luego, seleccione Agregar.

    9. En Multi-tenant application (Aplicación multiinquilino), seleccione Seleccionar una aplicación.

    10. Seleccione la aplicación registrada multiinquilino que creó anteriormente en el inquilino del ISV y haga clic en Seleccionar.

    11. Seleccione Revisar + crear.

    Uso de una plantilla de Resource Manager

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "desname": {
          "defaultValue": "<Enter ISV disk encryption set name>",
          "type": "String"
        },
        "region": {
          "defaultValue": "WestCentralUS",
          "type": "String"
        },
        "userassignedmicmk": {
          "defaultValue": "/subscriptions/<Enter ISV Subscription Id>/resourceGroups/<Enter ISV resource group name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<Enter ISV User Assigned Identity Name>",
          "type": "String"
        },
        "cmkfederatedclientId": {
          "defaultValue": "<Enter ISV Multi-Tenant App Id>",
          "type": "String"
        },
        "keyVaultURL": {
          "defaultValue": "<Enter Client Key URL>",
          "type": "String"
        },
        "encryptionType": {
          "defaultValue": "EncryptionAtRestWithCustomerKey",
          "type": "String"
        }
      },
      "variables": {},
      "resources": [
        {
          "type": "Microsoft.Compute/diskEncryptionSets",
          "apiVersion": "2021-12-01",
          "name": "[parameters('desname')]",
          "location": "[parameters('region')]",
          "identity": {
            "type": "UserAssigned",
            "userAssignedIdentities": {
              "[parameters('userassignedmicmk')]": {}
            }
          },
          "properties": {
            "activeKey": {
              "keyUrl": "[parameters('keyVaultURL')]"
            },
            "federatedClientId": "[parameters('cmkfederatedclientId')]",
            "encryptionType": "[parameters('encryptionType')]"
          }
        }
      ]
    }
    

    Use la API de REST

    Utilice el token de portador como encabezado de autorización y la aplicación o archivo JSON como tipo de contenido en el campo BODY. (Pestaña Red, filtrar según el valor de management.azure mientras se realiza cualquier solicitud de ARM en el portal).

    PUT https://management.azure.com/subscriptions/<Enter ISV Subscription Id>/resourceGroups/<Enter ISV Resource Group Name>/providers/Microsoft.Compute/diskEncryptionSets/<Enter ISV Disk Encryption Set Name>?api-version=2021-12-01
    Authorization: Bearer ...
    Content-Type: application/json
    
    {
      "name": "<Enter ISV disk encryption set name>",
      "id": "/subscriptions/<Enter ISV Subscription Id>/resourceGroups/<Enter ISV resource group name>/providers/Microsoft.Compute/diskEncryptionSets/<Enter ISV disk encryption set name>/",
      "type": "Microsoft.Compute/diskEncryptionSets",
      "location": "westcentralus",
      "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
    "/subscriptions/<Enter ISV Subscription Id>/resourceGroups/<Enter ISV resource group name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<Enter ISV User Assigned Identity Name>
    ": {}
        }
      },
      "properties": {
        "activeKey": {
          "keyUrl": "<Enter Client Key URL>"
        },
        "encryptionType": "EncryptionAtRestWithCustomerKey",
        "federatedClientId": "<Enter ISV Multi-Tenant App Id>"
      }
    }
    

    Pasos siguientes

    Consulte también: