En este artículo se proporcionan instrucciones prácticas para administrar roles y asignaciones de roles para un HSM administrado. Implementa el modelo de control de acceso basado en rol descrito en Control de acceso para HSM administrado mediante los roles integrados documentados en Roles integrados de RBAC local para HSM administrado.
Para obtener información general sobre HSM administrado, consulte ¿Qué es HSM administrado? Si no tiene una suscripción de Azure, cree una cuenta free antes de comenzar.
Para permitir que una entidad de seguridad (como un usuario, una entidad de servicio, un grupo o una identidad administrada) realice operaciones administradas del plano de datos de HSM, asígneles un rol que permita esas operaciones. Por ejemplo, si desea permitir que una aplicación realice una operación de firma mediante una clave, asígnele un rol que contenga el Microsoft.KeyVault/managedHSM/keys/sign/action como una de las acciones de datos. Asigne un rol en un ámbito específico. El RBAC local de Managed HSM admite dos ámbitos: a nivel de HSM (/ o /keys) y por clave (/keys/<key-name>).
Para obtener una lista de todos los roles integrados de HSM administrado y las operaciones que permiten, consulte Roles integrados de HSM administrado.
Prerrequisitos
Se requiere una suscripción Azure. Si no tienes una, crea una cuenta gratuita antes de empezar.
También necesita lo siguiente:
Creación de una nueva asignación de roles
En el portal Azure, vaya al recurso HSM administrado.
En el menú de la izquierda, en Configuración, seleccione RBAC local.
Seleccione Agregar asignación de roles, elija el rol, el ámbito y la entidad de seguridad, y luego guarde.
Asignación de roles para todas las claves
Use el comando az keyvault role assignment create para asignar un rol de Managed HSM Crypto User al usuario identificado por el nombre principal de usuario <user-principal-name> para todas las claves (ámbito /keys) de <hsm-name>.
az keyvault role assignment create --hsm-name <hsm-name> --role "Managed HSM Crypto User" --assignee <user-principal-name> --scope /keys
Asignar rol para una clave específica
Use el comando az keyvault role assignment create para asignar un rol de usuario criptográfico de HSM administrado al usuario identificado por el nombre principal de usuario <user-principal-name> para una clave específica denominada <key-name>.
az keyvault role assignment create --hsm-name <hsm-name> --role "Managed HSM Crypto User" --assignee <user-principal-name> --scope /keys/<key-name>
Asignación de roles para todas las claves
Use el New-AzKeyVaultRoleAssignment cmdlet para asignar un rol de usuario criptográfico de HSM administrado a un usuario para todas las claves (ámbito /keys).
New-AzKeyVaultRoleAssignment -HsmName <hsm-name> -RoleDefinitionName "Managed HSM Crypto User" -SignInName <user-principal-name> -Scope /keys
Asignar rol para una clave específica
New-AzKeyVaultRoleAssignment -HsmName <hsm-name> -RoleDefinitionName "Managed HSM Crypto User" -SignInName <user-principal-name> -Scope /keys/<key-name>
Enumeración de las asignaciones de roles existentes
En el portal Azure, vaya al recurso HSM administrado.
En el menú de la izquierda, en Configuración, seleccione RBAC local.
El portal muestra todas las asignaciones de roles para el HSM administrado. Puede filtrar por principal o ámbito.
Todas las asignaciones de roles del ámbito / (opción predeterminada cuando no se especifica --scope) para todos los usuarios (opción predeterminada cuando no se especifica --assignee)
az keyvault role assignment list --hsm-name <hsm-name>
Todas las asignaciones de roles en nivel de HSM para un usuario específico <user-principal-name>.
az keyvault role assignment list --hsm-name <hsm-name> --assignee <user-principal-name>
Nota:
Cuando el ámbito es / (o /keys), el comando list enumera únicamente todas las asignaciones de roles en el nivel superior y no muestra las asignaciones de roles en el nivel de clave individual.
Todas las asignaciones de roles para un usuario <user-principal-name> específico para una clave <key-name>específica.
az keyvault role assignment list --hsm-name <hsm-name> --assignee <user-principal-name> --scope /keys/<key-name>
Una asignación de rol específica para el rol Managed HSM Crypto Officer asignada a un usuario <user-principal-name>, para una clave <key-name> específica.
az keyvault role assignment list --hsm-name <hsm-name> --assignee <user-principal-name> --scope /keys/<key-name> --role "Managed HSM Crypto Officer"
Enumere todas las asignaciones de roles para el HSM administrado:
Get-AzKeyVaultRoleAssignment -HsmName <hsm-name>
Enumere todas las asignaciones de roles para un usuario específico:
Get-AzKeyVaultRoleAssignment -HsmName <hsm-name> -SignInName <user-principal-name>
Enumerar asignaciones de roles para un usuario específico en un ámbito de clave específico:
Get-AzKeyVaultRoleAssignment -HsmName <hsm-name> -SignInName <user-principal-name> -Scope /keys/<key-name>
Eliminación de una asignación de roles
En el portal Azure, vaya al recurso HSM administrado.
En el menú de la izquierda, en Configuración, seleccione RBAC local.
Busque la asignación de roles que desea quitar.
Seleccione el icono Eliminar (papelera) junto a la tarea.
Confirme la eliminación cuando se le solicite.
Use el comando az keyvault role assignment delete para eliminar un rol de Managed HSM Crypto Officer asignado al usuario <user-principal-name> para la clave <key-name>.
az keyvault role assignment delete --hsm-name <hsm-name> --role "Managed HSM Crypto Officer" --assignee <user-principal-name> --scope /keys/<key-name>
Use el Remove-AzKeyVaultRoleAssignment cmdlet para eliminar una asignación de roles:
Remove-AzKeyVaultRoleAssignment -HsmName <hsm-name> -RoleDefinitionName "Managed HSM Crypto Officer" -SignInName <user-principal-name> -Scope /keys/<key-name>
Enumeración de todas las definiciones de roles disponibles
En el portal Azure, vaya al recurso HSM administrado.
En el menú de la izquierda, en Configuración, seleccione RBAC local.
Seleccione la pestaña Roles para ver todas las definiciones de roles integradas y personalizadas disponibles.
Use el comando az keyvault role definition list para enumerar todas las definiciones de roles.
az keyvault role definition list --hsm-name <hsm-name>
Use el Get-AzKeyVaultRoleDefinition cmdlet para enumerar todas las definiciones de roles:
Get-AzKeyVaultRoleDefinition -HsmName <hsm-name>
Creación de una nueva definición de roles
Nota:
Las definiciones de roles personalizados solo se pueden administrar mediante CLI de Azure o Azure PowerShell.
HSM administrado tiene varios roles integrados (predefinidos) que son útiles para los escenarios de uso más comunes. Puede definir su propio rol con una lista de acciones específicas que el rol puede realizar. A continuación, puede asignar este rol a las entidades de seguridad a fin de concederles el permiso para las acciones especificadas.
La creación de roles personalizados no está disponible actualmente en el portal de Azure. Use el CLI de Azure o el Azure PowerShell.
Use el comando az keyvault role definition create para un rol denominado My Custom Role (Mi rol personalizado) mediante una cadena JSON.
az keyvault role definition create --hsm-name <hsm-name> --role-definition '{
"roleName": "My Custom Role",
"description": "The description of the custom rule.",
"actions": [],
"notActions": [],
"dataActions": [
"Microsoft.KeyVault/managedHsm/keys/read/action"
],
"notDataActions": []
}'
Use el comando az keyvault role definition create para un rol de un archivo denominado my-custom-role-definition.jsen que contenga la cadena JSON para una definición de rol. Vea el ejemplo anterior.
az keyvault role definition create --hsm-name <hsm-name> --role-definition @my-custom-role-definition.json
Use el New-AzKeyVaultRoleDefinition cmdlet para crear un rol personalizado a partir de un archivo JSON:
New-AzKeyVaultRoleDefinition -HsmName <hsm-name> -InputFile ./my-custom-role-definition.json
Mostrar detalles de una definición de rol
La visualización de detalles de definición de roles personalizados no está disponible actualmente en el portal de Azure. Use el CLI de Azure o el Azure PowerShell.
Use el comando az keyvault role definition show para ver los detalles de una definición de rol específica mediante el nombre (un GUID).
az keyvault role definition show --hsm-name <hsm-name> --name xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Use el Get-AzKeyVaultRoleDefinition cmdlet para ver las definiciones de roles. Para ver un rol personalizado específico por nombre:
Get-AzKeyVaultRoleDefinition -HsmName <hsm-name> -RoleDefinitionName "My Custom Role"
Actualización de una definición de rol personalizado
La actualización de definiciones de roles personalizadas no está disponible actualmente en el portal de Azure. Use el CLI de Azure o el Azure PowerShell.
Use el comando az keyvault role definition update para actualizar un rol denominado My Custom Role (Mi rol personalizado) mediante una cadena JSON.
az keyvault role definition create --hsm-name <hsm-name> --role-definition '{
"roleName": "My Custom Role",
"name": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"id": "Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/xxxxxxxx-
xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"description": "The description of the custom rule.",
"actions": [],
"notActions": [],
"dataActions": [
"Microsoft.KeyVault/managedHsm/keys/read/action",
"Microsoft.KeyVault/managedHsm/keys/write/action",
"Microsoft.KeyVault/managedHsm/keys/backup/action",
"Microsoft.KeyVault/managedHsm/keys/create"
],
"notDataActions": []
}'
Para actualizar un rol personalizado, modifique el objeto de rol y vuelva a crearlo:
$role = Get-AzKeyVaultRoleDefinition -HsmName <hsm-name> -RoleDefinitionName "My Custom Role"
$role.Permissions[0].DataActions = @("Microsoft.KeyVault/managedHsm/keys/read/action", "Microsoft.KeyVault/managedHsm/keys/write/action", "Microsoft.KeyVault/managedHsm/keys/backup/action", "Microsoft.KeyVault/managedHsm/keys/create")
New-AzKeyVaultRoleDefinition -HsmName <hsm-name> -Role $role
Eliminación de definiciones de roles personalizadas
La eliminación de definiciones de roles personalizados no está disponible actualmente en el portal de Azure. Use el CLI de Azure o el Azure PowerShell.
Use el comando CLI de Azure az keyvault role definition delete para eliminar una definición de rol personalizada mediante el nombre (GUID).
az keyvault role definition delete --hsm-name <hsm-name> --name xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Use el Remove-AzKeyVaultRoleDefinition cmdlet para eliminar una definición de rol personalizada:
Remove-AzKeyVaultRoleDefinition -HsmName <hsm-name> -RoleName "My Custom Role"
Nota:
Los roles integrados no se pueden eliminar. Cuando se eliminan los roles personalizados, todas las asignaciones de roles que utilizan ese rol personalizado quedan inactivas.
Pasos siguientes