Modelo de control de acceso de Azure Data Lake Storage Gen2Access control model in Azure Data Lake Storage Gen2

Data Lake Storage Gen2 admite los mecanismos de autorización siguientes:Data Lake Storage Gen2 supports the following authorization mechanisms:

  • Autorización de clave compartidaShared Key authorization
  • Autorización de firma de acceso compartido (SAS)Shared access signature (SAS) authorization
  • Control de acceso basado en roles (RBAC de Azure)Role-based access control (Azure RBAC)
  • Listas de control de acceso (ACL)Access control lists (ACL)

La autorización de clave compartida y de SAS concede acceso a un usuario (o una aplicación) sin necesidad de que tenga una identidad en Azure Active Directory (Azure AD).Shared Key and SAS authorization grants access to a user (or application) without requiring them to have an identity in Azure Active Directory (Azure AD). Con estas dos formas de autenticación, RBAC de Azure y las listas de control de acceso no tienen ningún efecto.With these two forms of authentication, Azure RBAC and ACLs have no effect.

Tanto RBAC de Azure como las listas de control de acceso requieren que el usuario (o la aplicación) tenga una identidad en Azure AD.Azure RBAC and ACL both require the user (or application) to have an identity in Azure AD. RBAC de Azure le permite conceder acceso más "general" a los datos de las cuentas de almacenamiento, como acceso de lectura o escritura a todos los datos de una cuenta de almacenamiento, mientras que las listas de control de acceso le permiten conceder acceso más "específico", como acceso de escritura en un directorio o archivo específico.Azure RBAC lets you grant "coarse-grain" access to storage account data, such as read or write access to all of the data in a storage account, while ACLs let you grant "fine-grained" access, such as write access to a specific directory or file.

Este artículo se centra en RBAC de Azure y las listas de control de acceso y en cómo el sistema los evalúa en conjunto para tomar decisiones relacionadas con la autorización para los recursos de cuentas de almacenamiento.This article focuses on Azure RBAC and ACLs, and how the system evaluates them together to make authorization decisions for storage account resources.

Control de acceso basado en roles (RBAC de Azure)Role-based access control (Azure RBAC)

RBAC de Azure usa las asignaciones de roles para aplicar conjuntos de permisos a entidades de seguridad.Azure RBAC uses role assignments to apply sets of permissions to security principals. Una entidad de seguridad es un objeto que representa a un usuario, un grupo, una entidad de servicio o una identidad administrada que está definido en Azure Active Directory (AD).A security principal is an object that represents a user, group, service principal, or managed identity that is defined in Azure Active Directory (AD). Un conjunto de permisos puede dar a una entidad de seguridad un nivel de acceso más "general", como acceso de lectura o escritura a todos los datos de una cuenta de almacenamiento o a todos los datos de un contenedor.A permission set can give a security principal a "coarse-grain" level of access such as read or write access to all of the data in a storage account or all of the data in a container.

Los roles siguientes permiten que una entidad de seguridad acceda a los datos de una cuenta de almacenamiento.The following roles permit a security principal to access data in a storage account.

RolRole DescripciónDescription
Propietario de datos de blobs de almacenamientoStorage Blob Data Owner Acceso total a datos y contenedores de Blob Storage.Full access to Blob storage containers and data. Este acceso permite que la entidad de seguridad establezca el propietario de un elemento y modifique las listas de control de acceso de todos los elementos.This access permits the security principal to set the owner an item, and to modify the ACLs of all items.
Colaborador de datos de blobs de almacenamientoStorage Blob Data Contributor Acceso de lectura, escritura y eliminación a blobs y contenedores de Blob Storage.Read, write, and delete access to Blob storage containers and blobs. Este acceso no permite que la entidad de seguridad establezca la propiedad de un elemento, pero puede modificar la lista de control de acceso de los elementos que pertenecen a la entidad de seguridad.This access does not permit the security principal to set the ownership of an item, but it can modify the ACL of items that are owned by the security principal.
Lector de datos de blobs de almacenamientoStorage Blob Data Reader Lee y enumera blobs y contenedores de Blob Storage.Read and list Blob storage containers and blobs.

Los roles como Propietario, Colaborador, Lector y Colaborador de la cuenta de almacenamiento permiten que una entidad de seguridad administre una cuenta de almacenamiento, pero no proporcionan acceso a los datos dentro de esa cuenta.Roles such as Owner, Contributor, Reader, and Storage Account Contributor permit a security principal to manage a storage account, but do not provide access to the data within that account. Sin embargo, estos roles (excepto el rol Lector) pueden obtener acceso a claves de almacenamiento que se pueden usar en diversas herramientas de cliente para acceder a los datos.However, these roles (excluding Reader) can obtain access to the storage keys, which can be used in various client tools to access the data.

Listas de control de acceso (ACL)Access control lists (ACLs)

Las ACL le ofrecen la posibilidad de aplicar un nivel de acceso más "específico" a los directorios y archivos.ACLs give you the ability to apply "finer grain" level of access to directories and files. Una ACL es una construcción de permisos que contiene una serie de entradas de ACL.An ACL is a permission construct that contains a series of ACL entries. Cada entrada de ACL asocia una entidad de seguridad a un nivel de acceso.Each ACL entry associates security principal with an access level. Para más información, consulte Listas de control de acceso (ACL) en Azure Data Lake Storage Gen2.To learn more, see Access control lists (ACLs) in Azure Data Lake Storage Gen2.

Evaluación de los permisosHow permissions are evaluated

Durante la autorización basada en la entidad de seguridad, los permisos se evalúan en este orden.During security principal-based authorization, permissions are evaluated in the following order.

1️⃣   Las asignaciones de roles de Azure se evalúan primero y tienen prioridad sobre cualquier otra asignación de ACL.   Azure role assignments are evaluated first and take priority over any ACL assignments.

2️⃣   Si la operación está totalmente autorizada en función de la asignación de roles de Azure, las ACL no se evalúan en absoluto.   If the operation is fully authorized based on Azure role assignment, then ACLs are not evaluated at all.

3️⃣   Si la operación no está totalmente autorizada, se evalúan las ACL.   If the operation is not fully authorized, then ACLs are evaluated.

Flujo de permisos de Data Lake Storagedata lake storage permission flow

Debido a la manera en que el sistema evalúa los permisos de acceso, no es posible usar una ACL para restringir un acceso ya concedido por una asignación de roles.Because of the way that access permissions are evaluated by the system, you cannot use an ACL to restrict access that has already been granted by a role assignment. Esto se debe a que el sistema evalúa primero las asignaciones de roles de Azure y si la asignación concede permisos de acceso suficientes, las ACL se omiten.That's because the system evaluates Azure role assignments first, and if the assignment grants sufficient access permission, ACLs are ignored.

En el diagrama siguiente se muestra el flujo de permisos para tres operaciones comunes: enumerar el contenido de un directorio, leer un archivo y escribir un archivo.The following diagram shows the permission flow for three common operations: listing directory contents, reading a file, and writing a file.

Ejemplo de flujos de permisos de Data Lake Storagedata lake storage permission flow example

Tabla de permisos: combinación de RBAC de Azure y ACLPermissions table: Combining Azure RBAC and ACL

En la tabla siguiente se muestra cómo combinar roles de Azure y entradas de ACL para que una entidad de seguridad pueda realizar las operaciones que se muestran en la columna Operación.The following table shows you how to combine Azure roles and ACL entries so that a security principal can perform the operations listed in the Operation column. En esta tabla se muestra una columna que representa cada nivel de una jerarquía de directorios ficticia.This table shows a column that represents each level of a fictitious directory hierarchy. Hay una columna para el directorio raíz del contenedor (/), un subdirectorio denominado Oregón, un subdirectorio del directorio Oregón denominado Portland y un archivo de texto en el directorio Portland denominado Data.txt.There's a column for the root directory of the container (/), a subdirectory named Oregon, a subdirectory of the Oregon directory named Portland, and a text file in the Portland directory named Data.txt. En esas columnas se muestran representaciones abreviadas de la entrada de ACL que se necesita para conceder permisos.Appearing in those columns are short form representations of the ACL entry required to grant permissions. En la columna aparece N/A (No aplicable) si no se necesita ninguna entrada de ACL para realizar la operación.N/A (Not applicable) appears in the column if an ACL entry is not required to perform the operation.

OperaciónOperation Rol de Azure asignadoAssigned Azure role / Oregón/Oregon/ Portland/Portland/ Data.txtData.txt
Leer Data.txtRead Data.txt Propietario de datos de blobs de almacenamientoStorage Blob Data Owner N/DN/A N/DN/A N/DN/A N/DN/A
Colaborador de datos de blobs de almacenamientoStorage Blob Data Contributor N/DN/A N/DN/A N/DN/A N/DN/A
Lector de datos de blobs de almacenamientoStorage Blob Data Reader N/DN/A N/DN/A N/DN/A N/DN/A
NoneNone --X --X --X R--
Anexar a Data.txtAppend to Data.txt Propietario de datos de blobs de almacenamientoStorage Blob Data Owner N/DN/A N/DN/A N/DN/A N/DN/A
Colaborador de datos de blobs de almacenamientoStorage Blob Data Contributor N/DN/A N/DN/A N/DN/A N/DN/A
Lector de datos de blobs de almacenamientoStorage Blob Data Reader --X --X --X -W-
NingunoNone --X --X --X RW-
Eliminar Data.txtDelete Data.txt Propietario de datos de blobs de almacenamientoStorage Blob Data Owner N/DN/A N/DN/A N/DN/A N/DN/A
Colaborador de datos de blobs de almacenamientoStorage Blob Data Contributor N/DN/A N/DN/A N/DN/A N/DN/A
Lector de datos de blobs de almacenamientoStorage Blob Data Reader --X --X -WX N/DN/A
NoneNone --X --X -WX N/DN/A
Crear Data.txtCreate Data.txt Propietario de datos de blobs de almacenamientoStorage Blob Data Owner N/DN/A N/DN/A N/DN/A N/DN/A
Colaborador de datos de blobs de almacenamientoStorage Blob Data Contributor N/DN/A N/DN/A N/DN/A N/DN/A
Lector de datos de blobs de almacenamientoStorage Blob Data Reader --X --X -WX N/DN/A
NoneNone --X --X -WX N/DN/A
Enumerar /List / Propietario de datos de blobs de almacenamientoStorage Blob Data Owner N/DN/A N/DN/A N/DN/A N/DN/A
Colaborador de datos de blobs de almacenamientoStorage Blob Data Contributor N/DN/A N/DN/A N/DN/A N/DN/A
Lector de datos de blobs de almacenamientoStorage Blob Data Reader N/DN/A N/DN/A N/DN/A N/DN/A
NoneNone R-X N/DN/A N/DN/A N/DN/A
Enumerar /Oregón/List /Oregon/ Propietario de datos de blobs de almacenamientoStorage Blob Data Owner N/DN/A N/DN/A N/DN/A N/DN/A
Colaborador de datos de blobs de almacenamientoStorage Blob Data Contributor N/DN/A N/DN/A N/DN/A N/DN/A
Lector de datos de blobs de almacenamientoStorage Blob Data Reader N/DN/A N/DN/A N/DN/A N/DN/A
NoneNone --X R-X N/DN/A N/DN/A
Enumerar /Oregón/Portland/List /Oregon/Portland/ Propietario de datos de blobs de almacenamientoStorage Blob Data Owner N/DN/A N/DN/A N/DN/A N/DN/A
Colaborador de datos de blobs de almacenamientoStorage Blob Data Contributor N/DN/A N/DN/A N/DN/A N/DN/A
Lector de datos de blobs de almacenamientoStorage Blob Data Reader N/DN/A N/DN/A N/DN/A N/DN/A
NoneNone --X --X R-X N/DN/A

Nota

Para ver el contenido de un contenedor en el Explorador de Azure Storage, las entidades de seguridad deben iniciar sesión en el Explorador de Storage mediante Azure AD y (como mínimo) tener acceso de lectura (R--) a la carpeta raíz (\) de un contenedor.To view the contents of a container in Azure Storage Explorer, security principals must sign into Storage Explorer by using Azure AD, and (at a minimum) have read access (R--) to the root folder (\) of a container. Este nivel de permiso les permite mostrar el contenido de la carpeta raíz.This level of permission does give them the ability to list the contents of the root folder. Si no quiere que el contenido de la carpeta raíz esté visible, puede asignarles el rol Lector.If you don't want the contents of the root folder to be visible, you can assign them Reader role. Con ese rol, podrán enumerar los contenedores de la cuenta, pero no el contenido de cada contenedor.With that role, they'll be able to list the containers in the account, but not container contents. Después, puede conceder acceso a directorios y archivos específicos mediante las listas de control de acceso.You can then grant access to specific directories and files by using ACLs.

Grupos de seguridadSecurity groups

En las entradas de ACL, use siempre grupos de seguridad de Azure AD como entidad de seguridad asignada.Always use Azure AD security groups as the assigned principal in an ACL entry. Ofrece la oportunidad de asignar directamente usuarios individuales o entidades de servicio.Resist the opportunity to directly assign individual users or service principals. Con esta estructura, podrá agregar y quitar usuarios o entidades de servicio sin necesidad de volver a aplicar las ACL en una estructura de directorios completa.Using this structure will allow you to add and remove users or service principals without the need to reapply ACLs to an entire directory structure. En su lugar, puede agregar o quitar usuarios y entidades de servicio del grupo de seguridad de Azure AD adecuado.Instead, you can just add or remove users and service principals from the appropriate Azure AD security group.

Hay muchas maneras diferentes de configurar grupos.There are many different ways to set up groups. Por ejemplo, Imagine que tiene un directorio denominado /LogData que contiene los datos de registro generados por su servidor.For example, imagine that you have a directory named /LogData which holds log data that is generated by your server. Azure Data Factory (ADF) ingiere los datos en esa carpeta.Azure Data Factory (ADF) ingests data into that folder. Usuarios concretos del equipo de ingeniería de servicios cargarán los registros y administrarán a otros usuarios de esta carpeta y varios clústeres de Databricks de archivos analizarán los registros de esa carpeta.Specific users from the service engineering team will upload logs and manage other users of this folder, and various Databricks clusters will analyze logs from that folder.

Para habilitar estas actividades, puede crear un grupo LogsWriter y un grupo LogsReader.To enable these activities, you could create a LogsWriter group and a LogsReader group. Luego, puede asignar permisos como se indica a continuación:Then, you could assign permissions as follows:

  • Agregue el grupo LogsWriter a la lista de control de acceso del directorio /LogData con permisos de rwx.Add the LogsWriter group to the ACL of the /LogData directory with rwx permissions.
  • Agregue el grupo LogsReader a la lista de control de acceso del directorio /LogData con permisos de r-x.Add the LogsReader group to the ACL of the /LogData directory with r-x permissions.
  • Agregue el objeto de entidad de servicio o Managed Service Identity (MSI) para ADF al grupo LogsWriters.Add the service principal object or Managed Service Identity (MSI) for ADF to the LogsWriters group.
  • Agregue los usuarios del equipo de ingeniería de servicios al grupo LogsWriter.Add users in the service engineering team to the LogsWriter group.
  • Agregue el objeto de entidad de servicio o MSI para Databricks al grupo LogsReader.Add the service principal object or MSI for Databricks to the LogsReader group.

Si un usuario del equipo de ingeniería de servicios deja la empresa, puede quitarle del grupo LogsWriter.If a user in the service engineering team leaves the company, you could just remove them from the LogsWriter group. Si no agregó dicho usuario a un grupo, sino que en su lugar agregó una entrada de ACL dedicada para ese usuario, tendrá que quitar esa entrada del directorio /LogData.If you did not add that user to a group, but instead, you added a dedicated ACL entry for that user, you would have to remove that ACL entry from the /LogData directory. También tendría que quitar la entrada de todos los subdirectorios y archivos de toda la jerarquía de directorios del directorio /LogData.You would also have to remove the entry from all subdirectories and files in the entire directory hierarchy of the /LogData directory.

Para más información, consulte Creación de un grupo básico e incorporación de miembros con Azure Active Directory.To create a group and add members, see Create a basic group and add members using Azure Active Directory.

Límites en las asignación de roles de Azure y entradas de ACLLimits on Azure role assignments and ACL entries

Mediante el uso de los grupos, es menos probable que supere el número máximo de asignaciones de roles por suscripción y el número máximo de entradas de ACL por archivo o directorio.By using groups, you're less likely to exceed the maximum number of role assignments per subscription and the maximum number of ACL entries per file or directory. En la siguiente tabla se describen estos límites.The following table describes these limits.

MechanismMechanism ÁmbitoScope LímitesLimits Nivel de permiso admitidoSupported level of permission
Azure RBACAzure RBAC Cuentas de almacenamiento, contenedores.Storage accounts, containers.
Asignaciones de roles de Azure entre recursos en el nivel de suscripción o de grupo de recursos.Cross resource Azure role assignments at subscription or resource group level.
2000 asignaciones de roles de Azure en una suscripción2000 Azure role assignments in a subscription Roles de Azure (integrados o personalizados)Azure roles (built-in or custom)
ACLACL Directorio, archivoDirectory, file 32 entradas de ACL (realmente 28 entradas de ACL) por archivo y por directorio.32 ACL entries (effectively 28 ACL entries) per file and per directory. Las ACL de acceso y predeterminadas tienen su propio límite de 32 entradas de ACL.Access and default ACLs each have their own 32 ACL entry limit. Permiso de ACLACL permission

Autorización con clave compartida y firma de acceso compartido (SAS)Shared Key and Shared Access Signature (SAS) authorization

Azure Data Lake Storage Gen2 también admite los métodos de autenticación con clave compartida y SAS.Azure Data Lake Storage Gen2 also supports Shared Key and SAS methods for authentication. Una característica de estos métodos de autenticación es que no se asocia ninguna identidad con el autor de la llamada y, en consecuencia, no se puede realizar la autorización basada en permisos de la entidad de seguridad.A characteristic of these authentication methods is that no identity is associated with the caller and therefore security principal permission-based authorization cannot be performed.

En el caso de la clave compartida, el autor de la llamada obtiene acceso de "superusuario" de forma eficaz, lo que significa que puede acceder plenamente a todas las operaciones en todos los recursos, lo que incluye los datos, la configuración del propietario y el cambio de las ACL.In the case of Shared Key, the caller effectively gains 'super-user' access, meaning full access to all operations on all resources including data, setting owner, and changing ACLs.

Los tokens de SAS incluyen permisos permitidos como parte del token.SAS tokens include allowed permissions as part of the token. Los permisos incluidos en el token de SAS se aplican con eficacia a todas las decisiones de autorización, pero no se realizan comprobaciones de ACL adicionales.The permissions included in the SAS token are effectively applied to all authorization decisions, but no additional ACL checks are performed.

Pasos siguientesNext steps

Para más información sobre las listas de control de acceso, consulte Listas de control de acceso (ACL) en Azure Data Lake Storage Gen2.To learn more about access control lists, see Access control lists (ACLs) in Azure Data Lake Storage Gen2.