Compartir a través de


Acceso a recursos compartidos de archivos Azure mediante Microsoft Entra ID con Azure Files OAuth a través de REST

✔️ Se aplica a: Recursos compartidos de archivos clásicos creados con el proveedor de recursos Microsoft.Storage

✖️ No se aplica a: Recursos compartidos de archivos creados con el proveedor de recursos Microsoft.FileShares (versión preliminar)

Mediante Azure Files OAuth a través de REST, los usuarios y las aplicaciones pueden obtener acceso de lectura y escritura de nivel de administrador a los recursos compartidos de archivos Azure a través del protocolo de autenticación OAuth. Este método de acceso usa Entra ID para el acceso basado en la API REST. Los usuarios, grupos, servicios de primera entidad, como Azure portal, y aplicaciones y servicios y aplicaciones de terceros que usan interfaces REST ahora pueden usar la autenticación y autorización de OAuth con una cuenta de Microsoft Entra para acceder a los datos de Azure Files. Los cmdlets de PowerShell y los comandos Azure CLI que llaman a las API REST también pueden usar OAuth para acceder a Azure Files. Debe llamar a la API REST mediante un encabezado explícito para indicar la intención de usar el privilegio adicional. Este requisito también se aplica al acceso Azure PowerShell y Azure CLI.

Importante

En este artículo se explica cómo habilitar el acceso de nivel de administrador a recursos compartidos de archivos de Azure para casos de uso específicos de clientes. Para obtener un artículo más general sobre la autenticación basada en identidades para los usuarios finales, consulte Información general sobre Azure Files la autenticación basada en identidades.

Limitaciones

La autorización de operaciones de datos de archivos mediante Microsoft Entra ID solo se admite para las versiones de la API REST 2022-11-02 y versiones posteriores.

Azure Files ofrece compatibilidad con OAuth sobre REST para las APIs de REST del plano de datos de Azure Files que administran los recursos FileService y FileShare. Esta funcionalidad está disponible en las versiones de la API REST 2024-11-04 y posteriores.

Consulte Versionamiento de Azure Storage.

Casos de uso de clientes

La autenticación y autorización de OAuth con Azure Files a través de la interfaz de la API REST pueden beneficiar a los clientes en los siguientes escenarios.

Integración del servicio y desarrollo de aplicaciones

La autenticación y autorización de OAuth permiten a los desarrolladores crear aplicaciones que accedan a Azure Storage API REST mediante identidades de usuario o aplicación de Microsoft Entra ID.

Los clientes y asociados también pueden habilitar servicios propios y de terceros para configurar el acceso necesario de forma segura y transparente a una cuenta de almacenamiento del cliente.

Las herramientas de DevOps, como el portal de Azure, PowerShell, la CLI, AzCopy y Storage Explorer pueden administrar datos mediante la identidad del usuario, lo que elimina la necesidad de administrar o distribuir claves de acceso de almacenamiento.

Identidades administradas

Los clientes con aplicaciones e identidades administradas que requieren acceso a los datos del recurso compartido de archivos para fines de copia de seguridad, restauración o auditoría pueden beneficiarse de la autenticación y autorización de OAuth. La aplicación de permisos de nivel de archivo y directorio para cada identidad agrega complejidad y podría no ser compatible con determinadas cargas de trabajo. Por ejemplo, es posible que los clientes quieran otorgar autorización a una solución de copia de seguridad para acceder a los recursos compartidos de archivos de Azure con acceso de solo lectura a todos los archivos, sin tener en cuenta los permisos específicos del archivo.

Reemplazo de la clave de la cuenta de almacenamiento

Microsoft Entra ID proporciona mayor seguridad y facilidad de uso a través del acceso a claves compartidas. Reemplazar el acceso a la clave de la cuenta de almacenamiento mediante la autenticación y autorización de OAuth para acceder a las comparticiones de archivos de Azure con privilegios de lectura completa/escritura completa. Este enfoque también ofrece una mejor auditoría y seguimiento del acceso específico de los usuarios.

Permisos de acceso y acceso con privilegios para las operaciones de datos

Para usar la característica OAuth sobre REST de Azure Files, incluya permisos adicionales en el rol de RBAC que asigne al usuario, grupo o principal de servicio. Esta característica presenta dos nuevas acciones de datos:

Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action

Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action

Los usuarios, grupos o entidades de servicio que llaman a la API REST mediante OAuth deben tener asignada la acción readFileBackupSemantics o la acción writeFileBackupSemantics al rol que concede acceso a los datos. Este es un requisito para usar esta característica. Para obtener más información sobre los permisos necesarios para llamar a operaciones específicas del servicio de archivos, consulte Permisos para llamar a operaciones de datos.

Esta característica proporciona dos roles integrados que incluyen estas acciones.

Función Acciones de datos
Lector privilegiado de datos de archivos de almacenamiento Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read
Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action
Colaborador con privilegios de datos de archivos de Storage Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/delete
Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action

Estos roles son similares a los Lector de datos de archivo de almacenamiento en recursos compartidos SMB y Colaborador elevado de datos de archivo de almacenamiento en recursos compartidos SMB integrados, pero hay algunas diferencias:

  • Los nuevos roles contienen las acciones de datos adicionales que requiere el acceso de OAuth.

  • Cuando el usuario, grupo o entidad de servicio a la que se le han asignado los roles Lector con privilegios de datos de archivos de almacenamiento o Colaborador con privilegios de datos de archivos de almacenamiento llama a la API de datos FilesREST mediante OAuth, el usuario, grupo o entidad de servicio tiene:

    • Lector con privilegios de datos de archivos de almacenamiento: Acceso de lectura completo en todos los datos de los recursos compartidos para todas las cuentas de almacenamiento configuradas, independientemente de los permisos NTFS de nivel de archivo o directorio establecidos.
    • Colaborador con privilegios de datos de archivos de almacenamiento: Lectura completa, escritura, modificación de ACL, eliminación del acceso a todos los datos de los recursos compartidos de todas las cuentas de almacenamiento configuradas independientemente de los permisos NTFS de nivel de archivo o directorio establecidos.
  • Al usar estos permisos y roles especiales, el sistema omite los permisos de nivel de archivo o directorio y concede acceso a los datos del recurso compartido de archivos.

Mediante el uso de los nuevos roles y acciones de datos, esta característica proporciona privilegios para toda la cuenta de almacenamiento que reemplazan todos los permisos de archivos y carpetas en todos los recursos compartidos de archivos de la cuenta de almacenamiento. Sin embargo, los nuevos roles solo contienen permisos para acceder a los servicios de datos. No incluyen ningún permiso para acceder a los servicios de administración de recursos compartidos de archivos (acciones en recursos compartidos de archivos). Para usar esta característica, asegúrese de que tiene permisos para acceder:

  • La cuenta de almacenamiento
  • Servicios de administración de recursos compartidos de archivos
  • Data Services (los datos del recurso compartido de archivos)

Muchos roles integrados proporcionan acceso a los servicios de administración. También puede crear roles personalizados con los permisos adecuados. Para obtener más información sobre el control de acceso basado en rol, consulte Azure RBAC. Para más información sobre cómo se definen los roles integrados, consulte Descripción de definiciones de roles.

Para el tipo de recurso del recurso compartido de archivos, el ámbito RBAC correspondiente usa shares en el plano de control (operaciones de administración), pero usa fileshares en el plano de datos (operaciones de datos). Si intenta usar un identificador de recurso de un recurso compartido de archivos que contiene shares en ámbito de RBAC o cadenas de acción de datos, no funciona. Debe usar fileshares en el ámbito de las asignaciones de RBAC, por ejemplo:

  • /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/fileServices/default/fileshares/<share-name>

Importante

Los casos de uso de caracteres comodín definidos para la ruta de acceso Microsoft.Storage/storageAccounts/fileServices/* o un ámbito superior heredan automáticamente el acceso adicional y los permisos concedidos a través de esta nueva acción de datos. Para evitar el acceso no deseado o con privilegios excesivos a Azure Files, el sistema implementa comprobaciones adicionales que requieren que los usuarios y las aplicaciones indiquen explícitamente su intención de usar el privilegio adicional. Además, debe revisar las asignaciones de roles RBAC de los usuarios y sustituir cualquier uso de comodines por permisos explícitos para garantizar una gestión adecuada del acceso a los datos.

Autorización del acceso a los datos de archivo en el código de la aplicación

La biblioteca cliente de Azure Identity simplifica el proceso de obtención de un token de acceso de OAuth 2.0 para la autorización con Id. de Entra a través del Azure SDK. Las versiones más recientes de las bibliotecas cliente de Azure Storage para .NET, Java, Python, JavaScript y Go se integran con las bibliotecas de Azure Identity para cada uno de esos lenguajes para proporcionar un medio sencillo y seguro para adquirir un token de acceso para la autorización de solicitudes del servicio Azure Files.

Una ventaja de la biblioteca cliente de Azure Identity es que permite usar el mismo código para adquirir el token de acceso tanto si la aplicación se ejecuta en el entorno de desarrollo como en Azure. La biblioteca cliente de Azure Identity devuelve un token de acceso para una entidad de seguridad. Cuando el código se ejecuta en Azure, la entidad de seguridad puede ser una identidad administrada para recursos de Azure, una entidad de servicio o un usuario o grupo. En el entorno de desarrollo, la biblioteca cliente proporciona un token de acceso para un usuario o una entidad de servicio con fines de prueba.

La biblioteca cliente de Azure Identity encapsula el token de acceso en una credencial de token. Usa la credencial del token para obtener un objeto cliente de servicio para realizar operaciones autorizadas en el servicio de Azure Files.

En el ejemplo de código siguiente se muestra cómo autorizar un objeto de cliente mediante entra ID y realizar operaciones en el nivel de directorio y archivo. En este ejemplo se supone que la compartición de archivos ya existe.

using Azure.Core;
using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;

namespace FilesOAuthSample
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            string tenantId = "";
            string appId = "";
            string appSecret = "";
            string entraEndpoint = "";
            string accountUri = "https://<storage-account-name>.file.core.windows.net/";
            string shareName = "test-share";
            string directoryName = "test-directory";
            string fileName = "test-file";  

            TokenCredential tokenCredential = new ClientSecretCredential(
                tenantId,
                appId,
                appSecret,
                new TokenCredentialOptions()
                {
                    AuthorityHost = new Uri(entraEndpoint)
                });

            // Set client options
            ShareClientOptions clientOptions = new ShareClientOptions();
            clientOptions.AllowTrailingDot = true;
            clientOptions.AllowSourceTrailingDot = true;

            // x-ms-file-intent=backup will automatically be applied to all APIs
            // where it is required in derived clients
            clientOptions.ShareTokenIntent = ShareTokenIntent.Backup;

            ShareServiceClient shareServiceClient = new ShareServiceClient(
                new Uri(accountUri),
                tokenCredential,
                clientOptions);

            ShareClient shareClient = shareServiceClient.GetShareClient(shareName);
            ShareDirectoryClient directoryClient = shareClient.GetDirectoryClient(directoryName);
            await directoryClient.CreateAsync();

            ShareFileClient fileClient = directoryClient.GetFileClient(fileName);
            await fileClient.CreateAsync(maxSize: 1024);
            await fileClient.GetPropertiesAsync();
        }
    }
}

Autorización del acceso mediante la API del plano de datos FileREST

También puede autorizar el acceso a los datos de archivos mediante el portal de Azure, Azure PowerShell o Azure CLI.

El portal Azure puede usar tu cuenta Entra o la clave de acceso de la cuenta de almacenamiento para acceder a los datos de archivos de una cuenta de almacenamiento de Azure. El método de autorización que usa el portal de Azure depende de los roles de Azure asignados.

Al intentar acceder a los datos de archivos, el portal de Azure comprueba primero si tiene un rol de Azure con Microsoft.Storage/storageAccounts/listkeys/action. Si tiene un rol con esta acción, el portal de Azure usa la clave de cuenta de almacenamiento para acceder a los datos de archivo a través de la autorización de clave compartida. Si no dispone del rol requerido para esta acción, el portal de Azure intentará acceder a los datos mediante su cuenta de Entra.

Para acceder a los datos de archivos desde el portal de Azure mediante su cuenta de Entra, necesita permisos para acceder a los datos de archivo y también necesita permisos para navegar por los recursos de la cuenta de almacenamiento en el portal de Azure. Los roles integrados proporcionados por Azure conceden acceso a los recursos de archivos, pero no conceden permisos a los recursos de la cuenta de almacenamiento. Por este motivo, el acceso al portal también requiere asignar un rol de Azure Resource Manager (ARM), como el rol Reader, con ámbito al nivel de la cuenta de almacenamiento o superior. El rol Lector concede los permisos más restrictivos, pero cualquier rol de ARM que conceda acceso a los recursos de administración de cuentas de almacenamiento es aceptable.

Al navegar a un contenedor, el portal de Azure indica qué esquema de autorización está en uso. Para obtener más información sobre el acceso a datos en el portal, consulte Choose cómo autorizar el acceso a los datos de archivos en el portal de Azure.

Consulte también