Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial se proporciona un ejemplo práctico de implementación del control de acceso para HSM administrado de Azure Key Vault. Aprenderá a implementar la separación de tareas mediante RBAC de Azure y RBAC local de HSM administrado a través de un escenario realista.
Importante
Antes de continuar con este tutorial, asegúrese de comprender el modelo de control de acceso de HSM administrado, incluidas las diferencias entre el plano de administración y el acceso al plano de datos. Para conocer esta base conceptual, consulte Control de acceso de HSM administrado.
Prerrequisitos
- Una suscripción a Microsoft Azure. Si no tiene una, puede registrarse para una evaluación gratuita.
- La CLI de Azure, versión 2.25.0 o posterior. Ejecute
az --version
para encontrar la versión. Si necesita instalarla o actualizarla, consulte Instalación de la CLI de Azure. - Un HSM administrado en la suscripción. Consulte Quickstart: Aprovisionamiento y activación de un HSM administrado mediante la CLI de Azure para aprovisionar y activar un HSM administrado.
Azure Cloud Shell
Azure hospeda Azure Cloud Shell, un entorno de shell interactivo que puede usar a través del explorador. Puede usar Bash o PowerShell con Cloud Shell para trabajar con servicios de Azure. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo, sin tener que instalar nada en el entorno local.
Para iniciar Azure Cloud Shell:
Opción | Ejemplo o vínculo |
---|---|
Seleccione Pruébelo en la esquina superior derecha de un bloque de código o de comandos. Solo con seleccionar Pruébelo no se copia automáticamente el código o comando en Cloud Shell. | ![]() |
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador. | ![]() |
Seleccione el botón Cloud Shell en la barra de menús en la parte superior derecha del Azure portal. | ![]() |
Para usar Azure Cloud Shell:
Inicie Cloud Shell.
Seleccione el botón Copiar en un bloque de código (o bloque de comandos) para copiar el código o comando.
Pegue el código o comando en la sesión de Cloud Shell seleccionando Ctrl+Mayús+V en Windows y Linux o seleccionando Cmd+Mayús+V en macOS.
Seleccione Escriba para ejecutar el código o comando.
Inicio de sesión en Azure
Para iniciar sesión en Azure mediante la CLI puede escribir:
az login
Para más información sobre las opciones de inicio de sesión mediante la CLI, consulte Inicio de sesión con la CLI de Azure.
Descripción del escenario de ejemplo
En este ejemplo, se desarrolla una aplicación que utiliza una clave RSA de 2048 bits para las operaciones de firma. La aplicación se ejecuta en una máquina virtual de Azure con una identidad administrada. La clave RSA usada para la firma se almacena en nuestro HSM administrado.
Definición de roles y responsabilidades
Hemos identificado los siguientes roles que administran, implementan y auditan la aplicación:
- Equipo de seguridad: el personal de TI de la oficina del CSO (director de seguridad) o colaboradores equivalentes. El equipo de seguridad es responsable de la protección adecuada de las claves. Las claves incluyen claves RSA o EC para la firma y claves RSA o AES para el cifrado de datos.
- Desarrolladores y operadores: personal que desarrolla la aplicación y la implementa en Azure. Los miembros de este equipo no forman parte del personal de seguridad. No deben tener acceso a información confidencial, como las claves RSA. Solo la aplicación que implementan debe tener acceso a esta información confidencial.
- Auditores: este rol es para los colaboradores que no sean miembros del personal de TI general o de desarrollo. Deben revisar el uso y mantenimiento de los certificados, las claves y los secretos para garantizar el cumplimiento de los estándares de seguridad.
Hay otro rol que está fuera del ámbito de la aplicación: el administrador de la suscripción o del grupo de recursos. El administrador de la suscripción configura los permisos de acceso iniciales del equipo de seguridad. Conceden acceso al equipo de seguridad mediante el uso de un grupo de recursos que tiene los recursos requeridos por la aplicación.
Definición de las operaciones necesarias por rol
Es necesario autorizar las siguientes operaciones para nuestros roles.
Equipo de seguridad
- Creación del HSM administrado
- Descargar el dominio de seguridad del HSM administrado (para la recuperación ante desastres)
- Activar el registro
- Generar o importar las claves.
- Crear las copias de seguridad del HSM administrado para la recuperación ante desastres
- Establecer RBAC local del HSM administrado para conceder permisos a usuarios y aplicaciones para operaciones específicas
- Rotar las claves periódicamente
Desarrolladores y operadores
- Obtén la referencia (URI de clave) de la clave RSA utilizada para firmar del equipo de seguridad.
- Desarrollo e implementación de la aplicación que accede a la clave mediante programación
Auditores
- Revisar las fechas de expiración de las claves para asegurarse de que las claves están actualizadas.
- Supervisar las asignaciones de roles para asegurarse de que solo los usuarios o las aplicaciones autorizados pueden acceder a las claves.
- Revise los registros de HSM administrados para confirmar el uso adecuado de las claves de conformidad con los estándares de seguridad de datos.
Asignación de roles adecuados
En la tabla siguiente se resumen las asignaciones de roles a equipos y recursos para acceder al HSM administrado.
Rol | Rol del plano de administración | Rol del plano de datos |
---|---|---|
Equipo de seguridad | Colaborador de HSM administrado | Administrador de HSM administrado |
Desarrolladores y operadores | Ninguno | Ninguno |
Auditores | Ninguno | Auditor criptográfico de HSM administrado |
Identidad administrada de la máquina virtual usada por la aplicación | Ninguno | Usuario criptográfico de HSM administrado |
Identidad administrada de la cuenta de almacenamiento utilizada por la aplicación | Ninguno | Cifrado de servicio criptográfico de HSM administrado |
Los tres roles del equipo necesitan acceder a otros recursos, además de disponer de permisos del HSM administrado. Para implementar las máquinas virtuales o la característica Web Apps de Azure App Service, los desarrolladores y operadores también necesitan acceso Contributor
a dichos tipos de recursos. Los auditores necesitan acceso de lectura a la cuenta de almacenamiento donde se almacenan los registros del HSM administrado.
Implementación con la CLI de Azure
Para asignar los roles del plano de administración (RBAC de Azure), puede usar Azure Portal o cualquiera de las otras interfaces de administración, como la CLI de Azure o Azure PowerShell. Para asignar roles de plano de datos de HSM administrados, debe usar la CLI de Azure o la API REST de Azure.
Para obtener más información sobre los roles del plano de administración, consulte Roles integrados de Azure. Para más información sobre los roles del plano de datos de HSM administrado, consulte Roles integrados de RBAC local para HSM administrado.
Los fragmentos de código de la CLI de Azure siguientes muestran cómo implementar las asignaciones de roles descritas anteriormente:
Supuestos
- El administrador de Microsoft Entra ha creado grupos de seguridad para representar los tres roles: Equipo de Seguridad de Contoso, DevOps de Aplicación de Contoso y Auditores de Aplicación de Contoso. El administrador ha agregado usuarios a sus respectivos grupos.
- Todos los recursos se encuentran en el grupo de recursos ContosoAppRG.
- Los registros del HSM administrado se almacenan en la cuenta de almacenamiento contosologstorage.
- El HSM administrado ContosoMHSM y la cuenta de almacenamiento contosologstorage están en la misma ubicación de Azure.
Asignación de roles del plano de administración
El administrador de la suscripción asigna el Managed HSM Contributor
rol al equipo de seguridad. Este rol permite al equipo de seguridad administrar los HSM administrados existentes y crear otros nuevos.
# This role assignment allows Contoso Security Team to create new Managed HSMs
az role assignment create --assignee-object-id $(az ad group show -g 'Contoso Security Team' --query 'id' -o tsv) --assignee-principal-type Group --role "Managed HSM Contributor"
Asignación de roles de plano de datos
En el caso de los HSM administrados existentes, el equipo de seguridad debe tener asignado el rol "Administrador de HSM administrado" para administrarlos:
# This role assignment allows Contoso Security Team to become administrator of existing managed HSM
az keyvault role assignment create --hsm-name ContosoMHSM --assignee $(az ad group show -g 'Contoso Security Team' --query 'id' -o tsv) --scope / --role "Managed HSM Administrator"
Configuración del registro y asignación de roles adicionales
El equipo de seguridad configura el registro y asigna roles a los auditores y a la aplicación de máquina virtual:
# Enable logging
hsmresource=$(az keyvault show --hsm-name ContosoMHSM --query id -o tsv)
storageresource=$(az storage account show --name contosologstorage --query id -o tsv)
az monitor diagnostic-settings create --name MHSM-Diagnostics --resource $hsmresource --logs '[{"category": "AuditEvent","enabled": true}]' --storage-account $storageresource
# Assign the "Crypto Auditor" role to Contoso App Auditors group. It only allows them to read.
az keyvault role assignment create --hsm-name ContosoMHSM --assignee $(az ad group show -g 'Contoso App Auditors' --query 'id' -o tsv) --scope / --role "Managed HSM Crypto Auditor"
# Grant the "Crypto User" role to the VM's managed identity. It allows to use keys.
az keyvault role assignment create --hsm-name ContosoMHSM --assignee $(az vm identity show --name "vmname" --resource-group "ContosoAppRG" --query principalId -o tsv) --scope / --role "Managed HSM Crypto User"
# Assign "Managed HSM Crypto Service Encryption User" role to the Storage account identity
storage_account_principal=$(az storage account show --id $storageresource --query identity.principalId -o tsv)
# (if no identity exists), then assign a new one
[ "$storage_account_principal" ] || storage_account_principal=$(az storage account update --assign-identity --id $storageresource --query identity.principalId -o tsv)
az keyvault role assignment create --hsm-name ContosoMHSM --role "Managed HSM Crypto Service Encryption User" --assignee $storage_account_principal
Consideraciones para entornos de producción
En este tutorial se muestra un escenario simplificado para ilustrar la implementación del control de acceso.
Ajuste los permisos al HSM administrado en función de sus requisitos específicos. En este ejemplo, se supone que el equipo de seguridad proporciona referencias clave y secretas (URI y huellas digitales) al personal de DevOps para su uso en sus aplicaciones. Los desarrolladores y operadores no requieren acceso directo al plano de datos. Aunque este tutorial se centra en proteger el HSM administrado, aplique medidas de seguridad similares a otros recursos de Azure, como máquinas virtuales, cuentas de almacenamiento y otras.
Pasos siguientes
- Para una comprensión conceptual del modelo de control de acceso de HSM administrado, consulte Control de acceso de HSM administrado.
- Para ver un tutorial de introducción para un administrador, consulte ¿Qué es HSM administrado?
- Para más información sobre el registro de uso del registro de HSM administrado, consulte el documento sobre el registro de HSM administrado
- Para obtener más información acerca de la administración de roles en Managed HSM, consulte RBAC local de Managed HSM.
- Documentación de Azure RBAC
- RBAC de Azure: roles integrados
- Administración de RBAC de Azure con la CLI de Azure