Para asignar un rol de Azure a una entidad de seguridad mediante PowerShell, llame al comando New-AzRoleAssignment. Para ejecutar el comando, necesita un rol que incluya permisos de Microsoft.Authorization/roleAssignments/write asignados en el ámbito correspondiente o superior.
El formato del comando puede diferir en función del ámbito de la asignación, pero -ObjectId y -RoleDefinitionName son parámetros requeridos.
-Scope Aunque el parámetro no es necesario, inclúyelo para conservar el principio de privilegios mínimos. Al limitar los roles y los ámbitos, también se limitan los recursos en riesgo si la entidad de seguridad llegara a verse comprometida.
El parámetro -ObjectId es el identificador de objeto Microsoft Entra del usuario, grupo o entidad de servicio al que va a asignar el rol. Para obtener el identificador, use Get-AzADUser para realizar un filtro de usuarios de Microsoft Entra, como se muestra en el ejemplo siguiente.
Get-AzADUser -DisplayName '<Display Name>'
(Get-AzADUser -StartsWith '<substring>').Id
La primera respuesta devuelve la entidad de seguridad, y la segunda devuelve el ID de objeto de la entidad de seguridad.
UserPrincipalName : markpdaniels@contoso.com
ObjectType : User
DisplayName : Mark P. Daniels
Id : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
Type :
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
El valor del parámetro -RoleDefinitionName es el nombre del rol RBAC que debe asignarse al principal. Para acceder a los datos de blobs en el portal de Azure con las credenciales de Microsoft Entra, un usuario debe tener las siguientes asignaciones de roles.
- Un rol de acceso a datos, como el de Colaborador de datos de Storage Blob o Lector de datos de Storage Blob.
- El rol de Lector en Azure Resource Manager
Para asignar un rol con un ámbito a un contenedor de blobs o una cuenta de almacenamiento, especifique una cadena que contenga el ámbito del recurso para el parámetro -Scope. Esta acción se ajusta al principio de privilegio mínimo, que es un concepto de seguridad de la información en el que un usuario tiene el nivel mínimo de acceso requerido para realizar sus funciones laborales. Esta práctica reduce el riesgo potencial de daños accidentales o intencionados que pueden causar los privilegios innecesarios.
El ámbito de un contenedor tiene este formato:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>
El ámbito de una cuenta de almacenamiento tiene este formato:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>
Para asignar un rol cuyo ámbito es una cuenta de almacenamiento, especifique una cadena que contenga el ámbito del contenedor en el parámetro --scope.
En el ejemplo siguiente a un usuario se le asigna el rol Colaborador de datos de Storage Blob. La asignación de roles se limita al nivel del contenedor. Asegúrese de reemplazar los valores de ejemplo y los valores de marcador de posición entre corchetes angulares (<>) por los suyos propios:
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Storage Blob Data Contributor" `
-Scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>"
En el siguiente ejemplo se asigna el rol Lector de datos de Storage Blob a un usuario; para ello, se especifica el id. de objeto. La asignación de roles se limita al nivel de la cuenta de almacenamiento. Asegúrese de reemplazar los valores de ejemplo y los valores de marcador de posición entre corchetes angulares (<>) por los suyos propios:
New-AzRoleAssignment -ObjectID "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" `
-RoleDefinitionName "Storage Blob Data Reader" `
-Scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"
La salida debe ser similar a la siguiente:
RoleAssignmentId : /subscriptions/<subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.Storage/storageAccounts/<Storage Account>/providers/Microsoft.Authorization/roleAssignments/<Role Assignment ID>
Scope : /subscriptions/<subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.Storage/storageAccounts/<Storage Account>
DisplayName : Mark Patrick
SignInName : markpdaniels@contoso.com
RoleDefinitionName : Storage Blob Data Reader
RoleDefinitionId : <Role Definition ID>
ObjectId : <Object ID>
ObjectType : User
CanDelegate : False
Para obtener más información sobre cómo asignar roles con PowerShell en el ámbito de la suscripción o el grupo de recursos, consulte Asignación de roles de Azure mediante Azure PowerShell.
Para asignar un rol de Azure a una entidad de seguridad mediante CLI de Azure, use el comando az role assignment create. El formato del comando puede variar en función del ámbito de la asignación. Para ejecutar el comando, debe tener un rol que incluya permisos de Microsoft.Authorization/roleAssignments/write asignados a usted en el ámbito correspondiente o superior.
Para asignar un rol cuyo ámbito es un contenedor, especifique una cadena que contenga el ámbito del contenedor en el parámetro --scope. El ámbito de un contenedor tiene este formato:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>
En el ejemplo siguiente a un usuario se le asigna el rol Colaborador de datos de Storage Blob. La asignación de roles se limita al nivel del contenedor. Asegúrese de reemplazar los valores de ejemplo y los valores de marcador de posición entre corchetes angulares (<>) por los suyos propios:
az role assignment create \
--role "Storage Blob Data Contributor" \
--assignee <email> \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>"
En el siguiente ejemplo se asigna el rol Lector de datos de Storage Blob a un usuario; para ello, se especifica el id. de objeto. Para obtener más información sobre los parámetros --assignee-object-id y --assignee-principal-type, consulte az role assignment. En este ejemplo, la asignación de roles se limita al nivel de la cuenta de almacenamiento. Asegúrese de reemplazar los valores de ejemplo y los valores de marcador de posición entre corchetes angulares (<>) por los suyos propios:
az role assignment create \
--role "Storage Blob Data Reader" \
--assignee-object-id "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" \
--assignee-principal-type "User" \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"
Al asignar roles o quitar asignaciones de roles, los cambios pueden tardar hasta 10 minutos en aplicarse.
Para obtener información sobre cómo asignar roles con la CLI de Azure en el ámbito de la suscripción, el grupo de recursos o la cuenta de almacenamiento, consulte Asignación de roles de Azure mediante la CLI de Azure.