Uzyskiwanie dostępu do udziałów plików platformy Azure przy użyciu identyfikatora Entra firmy Microsoft za pomocą protokołu OAuth usługi Azure Files za pośrednictwem interfejsu REST

Protokół OAuth usługi Azure Files za pośrednictwem interfejsu REST umożliwia dostęp do odczytu i zapisu na poziomie administratora do udziałów plików platformy Azure dla użytkowników i aplikacji za pośrednictwem protokołu uwierzytelniania OAuth przy użyciu identyfikatora Microsoft Entra ID dla dostępu opartego na interfejsie API REST. Użytkownicy, grupy, usługi pierwszej firmy, takie jak Witryna Azure Portal, usługi i aplikacje innych firm korzystające z interfejsów REST mogą teraz używać uwierzytelniania OAuth i autoryzacji z kontem Firmy Microsoft Entra w celu uzyskania dostępu do danych w udziałach plików platformy Azure. Polecenia cmdlet programu PowerShell i polecenia interfejsu wiersza polecenia platformy Azure wywołujące interfejsy API REST mogą również używać protokołu OAuth do uzyskiwania dostępu do udziałów plików platformy Azure.

Ważne

Aby wskazać zamiar użycia dodatkowych uprawnień, musisz wywołać interfejs API REST przy użyciu jawnego nagłówka. Dotyczy to również programu Azure PowerShell i dostępu do interfejsu wiersza polecenia platformy Azure.

Ograniczenia

Protokół OAuth usługi Azure Files za pośrednictwem interfejsu REST obsługuje tylko interfejsy API danych FileREST, które obsługują operacje na plikach i katalogach. Protokół OAuth nie jest obsługiwany w interfejsach API płaszczyzny danych FilesREST, które zarządzają zasobami FileService i FileShare. Te interfejsy API zarządzania są wywoływane przy użyciu klucza konta magazynu lub tokenu SAS i są udostępniane za pośrednictwem płaszczyzny danych ze starszych powodów. Zalecamy używanie interfejsów API płaszczyzny sterowania (dostawcy zasobów magazynu — Microsoft.Storage), które obsługują protokół OAuth dla wszystkich działań zarządzania związanych z zasobami FileService i FileShare.

Autoryzowanie operacji danych plików za pomocą identyfikatora Entra firmy Microsoft jest obsługiwane tylko w przypadku interfejsu API REST w wersji 2022-11-02 i nowszych. Zobacz Przechowywanie wersji dla usługi Azure Storage.

Przypadki użycia klienta

Uwierzytelnianie OAuth i autoryzacja za pomocą usługi Azure Files za pośrednictwem interfejsu API REST mogą przynieść korzyści klientom w następujących scenariuszach.

Tworzenie aplikacji i integracja usług

Uwierzytelnianie OAuth i autoryzacja umożliwiają deweloperom tworzenie aplikacji, które uzyskują dostęp do interfejsów API REST usługi Azure Storage przy użyciu tożsamości użytkowników lub aplikacji z identyfikatora Entra firmy Microsoft.

Klienci i partnerzy mogą również włączyć usługi innych firm i innych firm w celu bezpiecznego i przejrzystego konfigurowania niezbędnego dostępu do konta magazynu klienta.

Narzędzia DevOps, takie jak witryna Azure Portal, program PowerShell i interfejs wiersza polecenia, narzędzie AzCopy i Eksplorator usługi Storage mogą zarządzać danymi przy użyciu tożsamości użytkownika, eliminując konieczność zarządzania lub dystrybucji kluczy dostępu do magazynu.

Tożsamości zarządzane

Klienci z aplikacjami i tożsamościami zarządzanymi, którzy wymagają dostępu do danych udziału plików na potrzeby tworzenia kopii zapasowych, przywracania lub inspekcji, mogą korzystać z uwierzytelniania i autoryzacji OAuth. Wymuszanie uprawnień na poziomie plików i katalogów dla każdej tożsamości zwiększa złożoność i może nie być zgodne z określonymi obciążeniami. Na przykład klienci mogą chcieć autoryzować usługę rozwiązania do tworzenia kopii zapasowych w celu uzyskania dostępu do udziałów plików platformy Azure z dostępem tylko do odczytu do wszystkich plików bez względu na uprawnienia specyficzne dla plików.

Wymiana klucza konta magazynu

Microsoft Entra ID zapewnia doskonałe zabezpieczenia i łatwość użycia za pośrednictwem dostępu do klucza współdzielonego. Możesz zastąpić dostęp do klucza konta magazynu uwierzytelnianiem OAuth i autoryzacją w celu uzyskania dostępu do udziałów plików platformy Azure przy użyciu uprawnień do odczytu/zapisu wszystkich. Takie podejście oferuje również lepszą inspekcję i śledzenie dostępu określonego użytkownika.

Uprzywilejowany dostęp i uprawnienia dostępu dla operacji danych

Aby korzystać z funkcji OAuth usługi Azure Files za pośrednictwem interfejsu REST, istnieją dodatkowe uprawnienia, które muszą zostać uwzględnione w roli RBAC przypisanej do użytkownika, grupy lub jednostki usługi. Dwie nowe akcje danych są wprowadzane w ramach tej funkcji:

Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action

Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action

Użytkownicy, grupy lub jednostki usługi wywołujące interfejs API REST za pomocą protokołu OAuth muszą mieć przypisaną readFileBackupSemantics akcję lub writeFileBackupSemantics do roli, która zezwala na dostęp do danych. Jest to wymagane do korzystania z tej funkcji. Aby uzyskać szczegółowe informacje na temat uprawnień wymaganych do wywoływania określonych operacji usługi plików, zobacz Uprawnienia do wywoływania operacji danych.

Ta funkcja udostępnia dwie nowe wbudowane role, które obejmują te nowe akcje.

Rola Akcje danych
Uprzywilejowany czytelnik danych plików magazynu Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read
Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action
Uprzywilejowany współautor danych plików magazynu 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

Te nowe role są podobne do istniejących ról wbudowanych współautora udziału SMB danych plików magazynu SMB i udziału plików magazynu, ale istnieją pewne różnice:

  • Nowe role zawierają dodatkowe akcje danych wymagane do uzyskania dostępu do protokołu OAuth.

  • Gdy użytkownik, grupa lub jednostka usługi, która ma przypisane dane pliku magazynu Uprzywilejowany czytelnik lub współautor danych plików magazynu, wywołuje interfejs API danych FilesREST przy użyciu protokołu OAuth, użytkownika, grupy lub jednostki usługi:

    • Czytelnik uprzywilejowany danych plików magazynu: pełny dostęp do odczytu dla wszystkich danych w udziałach dla wszystkich skonfigurowanych kont magazynu niezależnie od ustawionych uprawnień NTFS na poziomie pliku/katalogu.
    • Współautor uprzywilejowany danych plików magazynu: pełny odczyt, zapis, modyfikowanie list ACL, usuwanie dostępu do wszystkich danych w udziałach dla wszystkich skonfigurowanych kont magazynu niezależnie od ustawionych uprawnień NTFS na poziomie pliku/katalogu.
  • Dzięki tym specjalnym uprawnieniam i rolam system pomija wszelkie uprawnienia na poziomie pliku/katalogu i zezwala na dostęp do danych udziału plików.

W przypadku nowych ról i akcji danych ta funkcja zapewni uprawnienia dla całego konta magazynu, które zastępują wszystkie uprawnienia do plików i folderów we wszystkich udziałach plików na koncie magazynu. Jednak nowe role zawierają tylko uprawnienia dostępu do usług danych. Nie zawierają żadnych uprawnień dostępu do usług zarządzania udziałami plików (akcje w udziałach plików). Aby użyć tej funkcji, upewnij się, że masz uprawnienia dostępu:

  • konto magazynu
  • usługi zarządzania udziałami plików
  • usługi danych (dane w udziale plików)

Istnieje wiele wbudowanych ról , które zapewniają dostęp do usług zarządzania. Możesz również utworzyć role niestandardowe z odpowiednimi uprawnieniami. Aby dowiedzieć się więcej na temat kontroli dostępu opartej na rolach, zobacz Kontrola dostępu oparta na rolach na platformie Azure. Aby uzyskać więcej informacji na temat sposobu definiowania ról wbudowanych, zobacz Omówienie definicji ról.

Ważne

Wszystkie przypadki użycia symboli wieloznacznych zdefiniowane dla ścieżki Microsoft.Storage/storageAccounts/fileServices/* lub wyższego zakresu będą automatycznie dziedziczyć dodatkowy dostęp i uprawnienia przyznane za pomocą tej nowej akcji danych. Aby zapobiec niezamierzonemu lub nadmiernie uprzywilejowanemu dostępowi do usługi Azure Files, zaimplementowaliśmy dodatkowe kontrole, które wymagają od użytkowników i aplikacji jawnego wskazania ich zamiaru korzystania z dodatkowych uprawnień. Ponadto zdecydowanie zalecamy, aby klienci przeglądali przypisania ról RBAC użytkowników i zastępowali dowolne użycie symboli wieloznacznych jawnymi uprawnieniami w celu zapewnienia odpowiedniego zarządzania dostępem do danych.

Autoryzowanie dostępu do danych plików w kodzie aplikacji

Biblioteka klienta tożsamości platformy Azure upraszcza proces uzyskiwania tokenu dostępu OAuth 2.0 do autoryzacji przy użyciu identyfikatora Entra firmy Microsoft za pośrednictwem zestawu Azure SDK. Najnowsze wersje bibliotek klienckich usługi Azure Storage dla platformy .NET, Java, Python, JavaScript i Go są zintegrowane z bibliotekami tożsamości platformy Azure dla każdego z tych języków w celu zapewnienia prostego i bezpiecznego sposobu uzyskiwania tokenu dostępu do autoryzacji żądań z usługi plików platformy Azure.

Zaletą biblioteki klienta tożsamości platformy Azure jest możliwość użycia tego samego kodu w celu uzyskania tokenu dostępu niezależnie od tego, czy aplikacja działa w środowisku deweloperów, czy na platformie Azure. Biblioteka klienta usługi Azure Identity zwraca token dostępu dla podmiotu zabezpieczeń. Gdy kod jest uruchomiony na platformie Azure, jednostka zabezpieczeń może być tożsamością zarządzaną dla zasobów platformy Azure, jednostki usługi lub użytkownika lub grupy. W środowisku projektowym biblioteka klienta udostępnia token dostępu dla użytkownika lub jednostki usługi na potrzeby testowania.

Token dostępu zwrócony przez bibliotekę klienta tożsamości platformy Azure jest hermetyzowany w poświadczeniach tokenu. Następnie możesz użyć poświadczeń tokenu, aby uzyskać obiekt klienta usługi do użycia w wykonywaniu autoryzowanych operacji względem usługi Azure Files.

Oto przykładowy kod:

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();
        }
    }
}

Autoryzowanie dostępu przy użyciu interfejsu API płaszczyzny danych FileREST

Możesz również autoryzować dostęp do danych plików przy użyciu witryny Azure Portal lub programu Azure PowerShell.

Witryna Azure Portal może użyć konta Microsoft Entra lub klucza dostępu konta magazynu w celu uzyskania dostępu do danych plików na koncie usługi Azure Storage. Który schemat autoryzacji używany w witrynie Azure Portal zależy od przypisanych ról platformy Azure.

Podczas próby uzyskania dostępu do danych plików witryna Azure Portal najpierw sprawdza, czy przypisano ci rolę platformy Azure za pomocą Microsoft.Storage/storageAccounts/listkeys/actionpolecenia . Jeśli przypisano ci rolę z tą akcją, witryna Azure Portal używa klucza konta do uzyskiwania dostępu do danych plików za pośrednictwem autoryzacji klucza współdzielonego. Jeśli nie przypisano ci roli z tą akcją, witryna Azure Portal próbuje uzyskać dostęp do danych przy użyciu konta Microsoft Entra.

Aby uzyskać dostęp do danych plików z witryny Azure Portal przy użyciu konta microsoft Entra, musisz mieć uprawnienia dostępu do danych plików, a także uprawnienia do nawigowania po zasobach konta magazynu w witrynie Azure Portal. Wbudowane role udostępniane przez platformę Azure udzielają dostępu do zasobów plików, ale nie udzielają uprawnień do zasobów konta magazynu. Z tego powodu dostęp do portalu wymaga również przypisania roli usługi Azure Resource Manager (ARM), takiej jak rola czytelnika , o określonym zakresie na poziomie konta magazynu lub wyższym. Rola Czytelnik przyznaje najbardziej restrykcyjne uprawnienia, ale każda rola usługi ARM, która udziela dostępu do zasobów zarządzania kontami magazynu, jest akceptowalna.

Witryna Azure Portal wskazuje, który schemat autoryzacji jest w użyciu podczas przechodzenia do kontenera. Aby uzyskać więcej informacji na temat dostępu do danych w portalu, zobacz Wybieranie sposobu autoryzowania dostępu do danych plików w witrynie Azure Portal.

Zobacz też