Permitir el acceso de lectura a blobs en función de etiquetas y atributos de seguridad personalizados
Artículo
En este artículo, aprenderá a permitir el acceso de lectura a blobs basado en etiquetas de índice de blobs y atributos de seguridad personalizados mediante condiciones de control de acceso basado en atributos (ABAC). Esto puede facilitar la administración del acceso a los blobs.
Requisitos previos
Para asignar atributos de seguridad personalizados y agregar condiciones de asignaciones de roles en el inquilino de Microsoft Entra, necesita:
De forma predeterminada, el rol Administrador global y otros roles de administrador no tienen permisos para leer, definir o asignar atributos de seguridad personalizados. Si no cumple estos requisitos previos, no verá los atributos de entidad de seguridad o usuario en el editor de condiciones.
Condición
En este artículo, permitirá el acceso de lectura a blobs si el usuario tiene un atributo de seguridad personalizado que coincide con la etiqueta de índice de blobs. Para lograrlo, agregue una condición a la asignación de roles.
Por ejemplo, si Brenda tiene el atributo Project=Baker, solo puede leer blobs con la etiqueta de índice de blobs Project=Baker. De forma similar, Chandra solo puede leer blobs con Project=Cascade.
Este es el aspecto de la condición en el código:
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>]
)
)
En la pestaña Miembros seleccione el grupo de seguridad que creó anteriormente.
(Opcional) En el cuadro Descripción, escriba Acceso de lectura a blobs si el usuario tiene un atributo de seguridad personalizado que coincide con la etiqueta de índice de blobs.
En la pestaña Condiciones (opcional) , haga clic en Agregar condición.
Aparece la página de condiciones de Agregar asignación de roles.
En la sección Agregar acción, haga clic en Agregar acción.
Se muestra el panel Selección de una acción. Este panel es una lista filtrada de acciones de datos basada en la asignación de roles que será el destino de la condición.
Haga clic en Leer un blob y, a continuación, en Seleccionar.
En la sección Build expression (Generar expresión), haga clic en Agregar.
Desplácese hacia arriba hasta Editor type (tipo de editor) y haga clic en Código.
La condición debe tener un aspecto similar al siguiente:
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>]
)
)
Haga clic en Guardar para guardar la condición.
En la pestaña Revisar y asignar, haga clic en Revisar y asignar para asignar el rol Lector de datos de Storage Blob con una condición.
Paso 5: Asignación del rol de lector
Repita los pasos anteriores para asignar el rol de lector del grupo de seguridad en el ámbito del grupo de recursos.
Nota
Normalmente no es necesario asignar el rol de lector. Sin embargo, esto se hace para que pueda probar la condición mediante Azure Portal.
Use el comando Conectar-AzAccount y siga las instrucciones que parecen iniciar sesión en el directorio como Control de acceso basado en rol Administración istrator.
PowerShell
Connect-AzAccount
Use Get-AzRoleAssignment para obtener la asignación de roles que asignó al grupo de seguridad.
Establezca la propiedad Condition del objeto de asignación de roles. Asegúrese de usar el nombre del conjunto de atributos.
PowerShell
$groupRoleAssignment.Condition="((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<`$key_case_sensitive`$>]))"
Establezca la propiedad ConditionVersion del objeto de asignación de roles.
NO debería poder leer el blob y se debería mostrar un mensaje de error de autorización.
PowerShell
Get-AzStorageBlob : This request is not authorized to perform this operation using this permission. HTTP Status Code:
403 - HTTP Error Message: This request is not authorized to perform this operation using this permission.
...
Get-AzStorageBlob -Container <containerName> -Blob <blobNameCascade> -Context$bearerCtx
You should be able to read the blob.
AccountName: <storageAccountName>, ContainerName: <containerName>
Name BlobType Length ContentType LastModified AccessTier SnapshotT
ime
---- -------- ------ ----------- ------------ ---------- ---------
CascadeFile.txt BlockBlob 7 text/plain 2021-04-2405:35:24Z Hot
Use el comando az login y siga las instrucciones que aparecen para iniciar sesión en el directorio como Role Based Access Control Administración istrator.
Azure CLI
az login
Use az role assignment list para obtener la asignación de roles que asignó al grupo de seguridad.
Azure CLI
az role assignment list --assignee<groupObjectId>--scope<scope>
Actualice la propiedad condition. Asegúrese de usar el nombre del conjunto de atributos.
Azure CLI
"condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>]))",
az storage blob show --account-name<storageAccountName>--container-name<containerName>--name<blobNameBaker>--auth-mode login
NO debería poder leer el blob y se debería mostrar un mensaje de error de autorización.
Azure CLI
You do not have the required permissions needed to perform this operation.
...
Use az storage blob show para intentar leer las propiedades del archivo Cascade.
Azure CLI
az storage blob show --account-name<storageAccountName>--container-name<containerName>--name<blobNameCascade>--auth-mode login
You should be able to read the blob.
{
"container": "<containerName>",
"content": "",
"deleted": false,
"encryptedMetadata": null,
"encryptionKeySha256": null,
"encryptionScope": null,
...
}
Muestre las características de Microsoft Entra ID para modernizar las soluciones de identidad, implementar soluciones híbridas e implementar la gobernanza de identidades.
Obtenga información general sobre el formato y la sintaxis de las condiciones de asignación de roles de Azure en el control de acceso basado en atributos de Azure (Azure ABAC).
Obtenga información sobre cómo agregar, editar, ver o eliminar condiciones de control de acceso basado en atributos (ABAC) en las asignaciones de roles de Azure mediante Azure Portal y el control de acceso basado en rol de Azure (Azure RBAC).
Escale la administración de asignaciones de roles de Azure mediante las condiciones de control de acceso basado en atributos (Azure ABAC) de Azure y los atributos de seguridad personalizados de Microsoft Entra para las entidades de seguridad.
Obtenga información acerca de las definiciones de roles de Azure en el control de acceso basado en roles de Azure (RBAC de Azure) para la administración de acceso específico de recursos de Azure.
Obtenga información sobre cómo agregar condiciones de control de acceso basado en atributos (ABAC) en las asignaciones de roles de Azure mediante plantillas de Azure Resource Manager y el control de acceso basado en roles de Azure (RBAC de Azure).