Доступ к общим папкам Azure с помощью идентификатора Microsoft Entra с Файлы Azure OAuth по протоколу REST

Файлы Azure OAuth через REST обеспечивает доступ на уровне администратора для чтения и записи к общим папкам Azure для пользователей и приложений через Протокол проверки подлинности OAuth с помощью идентификатора Microsoft Entra для доступа на основе REST API. Пользователи, группы, сторонние службы, такие как портал Azure, и сторонние службы и приложения, использующие интерфейсы REST, теперь могут использовать проверку подлинности OAuth и авторизацию с учетной записью Microsoft Entra для доступа к данным в общих папках Azure. Командлеты PowerShell и команды Azure CLI, вызывающие REST API, также могут использовать OAuth для доступа к общим папкам Azure.

Важно!

Необходимо вызвать REST API с помощью явного заголовка, чтобы указать намерение использовать дополнительные привилегии. Это также верно для доступа к Azure PowerShell и Azure CLI.

Ограничения

Файлы Azure OAuth по протоколу REST поддерживает только API данных FileREST, поддерживающие операции с файлами и каталогами. OAuth не поддерживается в API плоскости данных FilesREST, которые управляют ресурсами FileService и FileShare. Эти API управления вызываются с помощью ключа учетной записи служба хранилища или маркера SAS и предоставляются через плоскость данных по устаревшим причинам. Мы рекомендуем использовать API плоскости управления (поставщик ресурсов хранилища — Microsoft.служба хранилища), которые поддерживают OAuth для всех действий управления, связанных с ресурсами FileService и FileShare.

Авторизация операций с данными файлов с идентификатором Microsoft Entra поддерживается только для REST API версий 2022-11-02 и более поздних версий. См. раздел "Управление версиями" для служба хранилища Azure.

Варианты использования клиента

Проверка подлинности и авторизация OAuth с Файлы Azure через интерфейс REST API может воспользоваться клиентами в следующих сценариях.

Интеграция разработки приложений и служб

Проверка подлинности и авторизация OAuth позволяют разработчикам создавать приложения, которые обращаются служба хранилища Azure REST API с помощью удостоверений пользователей или приложений из идентификатора Microsoft Entra.

Клиенты и партнеры также могут предоставить сторонним и сторонним службам возможность безопасного и прозрачного доступа к учетной записи хранения клиента.

Средства DevOps, такие как портал Azure, PowerShell и CLI, AzCopy и Обозреватель службы хранилища могут управлять данными с помощью удостоверения пользователя, устраняя необходимость управления ключами доступа к хранилищу или распространения.

Управляемые удостоверения

Клиенты с приложениями и управляемыми удостоверениями, которым требуется доступ к данным общей папки для резервного копирования, восстановления или аудита, могут воспользоваться проверкой подлинности и авторизацией OAuth. Применение разрешений на уровне файлов и каталогов для каждого удостоверения повышает сложность и может быть несовместимо с определенными рабочими нагрузками. Например, клиентам может потребоваться авторизовать службу решения резервного копирования для доступа к общим папкам Azure с доступом только для чтения ко всем файлам без разрешения для определенных файлов.

замена ключа учетной записи служба хранилища

Идентификатор Microsoft Entra обеспечивает более высокую безопасность и удобство использования при доступе к общему ключу. Вы можете заменить доступ к ключу учетной записи хранения проверкой подлинности OAuth и авторизацией для доступа к общим папкам Azure с правами чтения и записи. Этот подход также обеспечивает более удобный аудит и отслеживание доступа конкретных пользователей.

Разрешения привилегированного доступа и доступа для операций с данными

Чтобы использовать функцию OAuth Файлы Azure через REST, существуют дополнительные разрешения, необходимые для включения в роль RBAC, назначенной пользователю, группе или субъекту-службе. В рамках этой функции представлены два новых действия с данными:

Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action

Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action

Пользователи, группы или субъекты-службы, которые вызывают REST API с OAuth, должны readFileBackupSemantics иметь роль или writeFileBackupSemantics действие, которое разрешает доступ к данным. Это требование для использования этой функции. Дополнительные сведения о разрешениях, необходимых для вызова определенных операций службы файлов, см. в разделе "Разрешения для вызова операций с данными".

Эта функция предоставляет две новые встроенные роли, которые включают эти новые действия.

Роль Действия с данными
Привилегированный участник файловых данных хранилища Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read
Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action
Привилегированный участник файловых данных хранилища 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

Эти новые роли похожи на существующие служба хранилища file Data S МБ Общий доступ к средству чтения и служба хранилища файловых данных S МБ совместно использовать встроенные роли участника с повышенными привилегиями, но существуют некоторые различия:

  • Новые роли содержат дополнительные действия с данными, необходимые для доступа К OAuth.

  • Если пользователь, группа или субъект-служба, назначенные служба хранилища привилегированным читателем файловых данных, или роли привилегированного участника файловых данных служба хранилища вызывают API данных FilesREST с помощью OAuth, пользователя, группы или субъекта-службы:

    • служба хранилища средства чтения с привилегированными данными файлов: Полный доступ на чтение всех данных в общих папках для всех настроенных учетных записей хранения независимо от заданных разрешений NTFS на уровне файла или каталога.
    • служба хранилища участник привилегированных данных файлов: Полный доступ для чтения, записи, изменения списков управления доступом ко всем данным в общих папках для всех настроенных учетных записей хранения независимо от заданных разрешений NTFS на уровне файла или каталога.
  • С этими специальными разрешениями и ролями система будет обходить любые разрешения на уровне файлов и каталогов и разрешать доступ к данным общей папки.

Благодаря новым ролям и действиям с данными эта функция обеспечит привилегии на уровне учетной записи хранения, которые заменяют все разрешения на файлы и папки во всех общих папках в учетной записи хранения. Однако новые роли содержат только разрешения на доступ к службам данных. Они не включают какие-либо разрешения на доступ к службам управления общими папками (действия в общих папках). Чтобы использовать эту функцию, убедитесь, что у вас есть разрешения на доступ:

  • учетной записи хранения
  • Службы управления общими папками
  • службы данных (данные в общей папке)

Существует множество встроенных ролей , которые предоставляют доступ к службам управления. Вы также можете создавать пользовательские роли с соответствующими разрешениями. Дополнительные сведения об управлении доступом на основе ролей см. в статье Azure RBAC. Дополнительные сведения об определении встроенных ролей см. в разделе Общие сведения об определениях ролей.

Важно!

Любые варианты использования диких карта, определенные для пути Microsoft.Storage/storageAccounts/fileServices/* или более поздней область, автоматически наследуют дополнительный доступ и разрешения, предоставленные этим новым действием данных. Чтобы предотвратить непреднамеренное или чрезмерно привилегированное доступ к Файлы Azure, мы реализовали дополнительные проверка, требующие явного указания пользователей и приложений на использование дополнительных привилегий. Кроме того, мы настоятельно рекомендуем клиентам просматривать назначения ролей пользователей RBAC и заменять любые дикие карта использование явными разрешениями, чтобы обеспечить надлежащее управление доступом к данным.

Авторизация доступа к данным файла в коде приложения

Клиентская библиотека удостоверений Azure упрощает процесс получения маркера доступа OAuth 2.0 для авторизации с помощью идентификатора Microsoft Entra с помощью пакета SDK Azure. Последние версии клиентских библиотек служба хранилища Azure для .NET, Java, Python, Java, JavaScript и Go интегрируются с библиотеками удостоверений Azure для каждого из этих языков, чтобы предоставить простые и безопасные средства для получения маркера доступа для авторизации запросов из файловой службы Azure.

Преимущество клиентских библиотек удостоверений Azure заключается в том, что они позволяют использовать один и тот же код для получения маркера доступа независимо от того, выполняется приложение в среде разработки или в Azure. Клиентская библиотека удостоверений Azure возвращает маркер доступа для субъекта безопасности. Когда ваш код работает в Azure, основным лицом системы безопасности может быть управляемое удостоверение для ресурсов Azure, основной службы, пользователь или группа. В среде разработки клиентская библиотека предоставляет маркер доступа для пользователя или директора службы в целях тестирования.

Маркер доступа, возвращенный клиентской библиотекой удостоверений Azure, инкапсулируется в учетные данные маркера. Затем можно использовать учетные данные маркера для получения объекта клиента службы для выполнения авторизованных операций в службе Файлы Azure.

Ниже приведен пример кода.

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 aadEndpoint = "";
            string accountUri = "";
            string connectionString = "";
            string shareName = "test-share";
            string directoryName = "testDirectory";
            string fileName = "testFile"; 

            ShareClient sharedKeyShareClient = new ShareClient(connectionString, shareName); 
            await sharedKeyShareClient.CreateIfNotExistsAsync(); 

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

            ShareClientOptions clientOptions = new ShareClientOptions(ShareClientOptions.ServiceVersion.V2023_05_03);

            // Set Allow Trailing Dot and Source Allow Trailing Dot.
            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();
            await sharedKeyShareClient.DeleteIfExistsAsync();
        }
    }
}

Авторизация доступа с помощью API плоскости данных FileREST

Вы также можете авторизовать доступ к данным файла с помощью портал Azure или Azure PowerShell.

Портал Azure может использовать учетную запись Microsoft Entra или ключ доступа к учетной записи хранения для доступа к данным файлов в учетной записи хранения Azure. Схема авторизации, используемая порталом Azure, зависит от назначенных вам ролей Azure.

При попытке доступа к данным файла портал Azure сначала проверка, с которым вы назначили роль Microsoft.Storage/storageAccounts/listkeys/actionAzure. Если вы назначили роль с этим действием, портал Azure использует ключ учетной записи для доступа к данным файла через авторизацию общего ключа. Если вы не назначили роль с этим действием, портал Azure пытается получить доступ к данным с помощью учетной записи Microsoft Entra.

Чтобы получить доступ к данным файлов из портал Azure с помощью учетной записи Microsoft Entra, вам потребуется разрешение на доступ к данным файла, а также необходимы разрешения для перехода по ресурсам учетной записи хранения в портал Azure. Встроенные роли, предоставляемые Azure, предоставляют доступ к файлам, но не предоставляют разрешения ресурсам учетной записи хранения. По этой причине доступ к порталу также требует назначения роли Azure Resource Manager (ARM), например роли читателя, область уровня учетной записи хранения или более поздней версии. Роль читателя предоставляет самые строгие разрешения, но любая роль ARM, которая предоставляет доступ к ресурсам управления учетными записями хранения, является приемлемым.

Портал Azure указывает, какая схема авторизации используется при переходе к контейнеру. Дополнительные сведения о доступе к данным на портале см. в статье "Выбор авторизации доступа к данным файлов в портал Azure".

См. также