Udostępnij za pomocą


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 strony, takie jak portal Azure, oraz usługi i aplikacje innych firm korzystające z interfejsów REST mogą teraz używać uwierzytelniania i autoryzacji OAuth z kontem Microsoft Entra do uzyskiwania dostępu do danych w udziałach plików na platformie Azure. Polecenia cmdlet programu PowerShell i polecenia Azure CLI wywołujące interfejsy API REST mogą również używać protokołu OAuth, aby uzyskać dostęp do udziałów plików Azure. 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.

Ważne

W tym artykule wyjaśniono, jak włączyć dostęp na poziomie administratora do udziałów plików usługi Azure dla określonych przypadków użycia przez klientów. Jeśli szukasz bardziej ogólnego artykułu na temat uwierzytelniania opartego na tożsamościach dla użytkowników końcowych, zobacz Omówienie uwierzytelniania opartego na tożsamościach usługi Azure Files na potrzeby dostępu SMB.

Odnosi się do

Model zarządzania Model rozliczania Poziom mediów Redundancja Małe i Średnie Przedsiębiorstwa (SMB) System plików sieciowych (NFS)
Microsoft.Storage Wersja 2 została przygotowana HDD (standardowa) Lokalna sieć (LRS) Tak Nie.
Microsoft.Storage Wersja 2 została przygotowana HDD (standardowa) Strefa (ZRS) Tak Nie.
Microsoft.Storage Wersja 2 została przygotowana HDD (standardowa) Geo (GRS) Tak Nie.
Microsoft.Storage Wersja 2 została przygotowana HDD (standardowa) Strefa geograficzna (GZRS) Tak Nie.
Microsoft.Storage Zaprovisionowana wersja 1 SSD klasy premium Lokalna sieć (LRS) Tak Tak
Microsoft.Storage Zaprovisionowana wersja 1 SSD klasy premium Strefa (ZRS) Tak Tak
Microsoft.Storage Płać według zużycia HDD (standardowa) Lokalna sieć (LRS) Tak Nie.
Microsoft.Storage Płać według zużycia HDD (standardowa) Strefa (ZRS) Tak Nie.
Microsoft.Storage Płać według zużycia HDD (standardowa) Geo (GRS) Tak Nie.
Microsoft.Storage Płać według zużycia HDD (standardowa) Strefa geograficzna (GZRS) Tak Nie.

Ograniczenia

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.

Usługa Azure Files OAuth za pośrednictwem interfejsu API REST dla interfejsów API płaszczyzny danych REST usługi Azure Files, które zarządzają zasobami FileService i FileShare, jest dostępna w interfejsie API REST w wersji 2024-11-04 i nowszych.

Zobacz Przechowywanie wersji dla usługi Azure Storage.

Przypadki użycia klientów

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 wewnętrzne i zewnętrzne, aby bezpiecznie i przejrzyście konfigurować niezbędny dostęp do konta magazynowego 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 zasobów plików potrzebnego do tworzenia kopii zapasowych, przywracania lub audytu, 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ę tworzenia kopii zapasowych w celu uzyskania dostęp do udziałów plików Azure z dostępem tylko do odczytu do wszystkich plików, niezależnie od indywidualnych uprawnień do 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 za pomocą klucza konta magazynu uwierzytelnianiem OAuth i autoryzacją, aby uzyskać dostęp do udziałów plików platformy Azure z pełnymi uprawnieniami do odczytu i zapisu. 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, które wywołują interfejs API REST za pomocą protokołu OAuth, muszą mieć przypisaną akcję readFileBackupSemantics lub writeFileBackupSemantics w ramach 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.

roli Akcje danych
Uprzywilejowany czytelnik danych plików magazynowych Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read
Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action
Uprzywilejowany współautor danych w plikach magazynowanych 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 wbudowanych ról Czytnik udziału danych plików magazynu SMB i Zaawansowany współtwórca udziału danych plików magazynu SMB, ale istnieją pewne różnice:

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

  • Kiedy użytkownik, grupa lub jednostka usługi, której przypisane zostały role Storage File Data Privileged Reader lub Storage File Data Privileged Contributor, wywołuje interfejs API Data FilesREST przy użyciu protokołu OAuth, użytkownik, grupa lub jednostka usługi będzie mieć:

    • Czytelnik uprzywilejowany danych plików magazynowych: Pełny dostęp do odczytu wszystkich danych w udziałach dla wszystkich skonfigurowanych kont magazynowych, niezależnie od poziomu uprawnień NTFS ustawionych na plikach/katalogach.
    • Uprzywilejowany współtwórca danych plików magazynowych: Pełny odczyt, zapisywanie, modyfikowanie list kontroli dostępu (ACL) oraz usuwanie danych w udziałach dla wszystkich skonfigurowanych kont magazynu, niezależnie od ustawionych uprawnień NTFS na poziomie pliku lub 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.

Dzięki nowym rolom i akcjom danych, ta funkcja zapewni uprawnienia w ramach konta przechowywania, które zastępują wszystkie uprawnienia do plików i folderów we wszystkich udostępnianych plikach na koncie przechowywania. Jednak nowe role zawierają tylko uprawnienia dostępu do usług danych. Nie obejmują żadnych uprawnień do korzystania z usług zarządzania udziałami plików (operacje na udziałach plików). Aby użyć tej funkcji, upewnij się, że masz uprawnienia dostępu:

  • konto magazynowe
  • 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.

Należy pamiętać, że w przypadku typu zasobu udziału plików odpowiedni zakres RBAC używa shares na płaszczyźnie sterowania (operacje zarządzania), ale używa fileshares na płaszczyźnie danych (operacje danych). Jeśli spróbujesz użyć identyfikatora zasobu udziału plików, który znajduje shares się w zakresie kontroli dostępu opartej na rolach lub ciągach akcji danych, nie będzie działać. Należy użyć fileshares w zakresie przypisań RBAC, na przykład:

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

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 dzięki nowej operacji na 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 Twój kod działa na platformie Azure, jednostka zabezpieczeń może mieć postać tożsamości zarządzanej dla zasobów Azure, konta usługi lub użytkownika bądź 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ę klientów tożsamości Azure jest zamknięty w poświadczeniu tokenu. Następnie możesz użyć poświadczenia tokenu, aby uzyskać obiekt klienta usługi do wykonywania autoryzowanych operacji dla usługi Azure Files.

Poniższy przykład kodu pokazuje, jak autoryzować obiekt klienta przy użyciu identyfikatora Entra firmy Microsoft i wykonywać operacje na poziomie katalogu i pliku. W tym przykładzie przyjęto założenie, że zasób sieciowy już istnieje.

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

Autoryzuj dostęp przy użyciu interfejsu API warstwy danych FileREST

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

Portal Azure może użyć konta Microsoft Entra lub klucza dostępu do konta magazynu w celu uzyskania dostępu do danych plików znajdujących się na koncie magazynu Azure. Który schemat autoryzacji portal Azure używa, zależy od przypisanych ról platformy Azure.

Podczas próby uzyskania dostępu do danych plików portal Azure najpierw sprawdza, czy przypisano ci rolę platformy Azure z Microsoft.Storage/storageAccounts/listkeys/action. 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 Czytelnik o określonym zakresie na poziomie konta magazynowego 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 kontem magazynowym, jest dopuszczalna.

Witryna Azure Portal wskazuje, który schemat autoryzacji jest używany 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ż