Autoryzowanie przy użyciu Azure Active Directory

Usługa Azure Storage zapewnia integrację z usługami Azure Active Directory (Azure AD) na potrzeby autoryzacji opartej na tożsamościach żądań do usług obiektów blob, kolejek i tabel. Za pomocą Azure AD można użyć kontroli dostępu opartej na rolach (RBAC) w celu udzielenia dostępu do zasobów obiektów blob, kolejek i tabel użytkownikom, grupom lub aplikacjom. Możesz udzielić uprawnień, które są ograniczone do poziomu pojedynczego kontenera, kolejki lub tabeli.

Aby dowiedzieć się więcej na temat integracji Azure AD w usłudze Azure Storage, zobacz Autoryzowanie dostępu do obiektów blob i kolejek platformy Azure przy użyciu Azure Active Directory.

Aby uzyskać więcej informacji na temat zalet korzystania z Azure AD w aplikacji, zobacz Integrowanie z Azure Active Directory.

Porada

Autoryzowanie dostępu do danych obiektów blob, kolejek i tabel przy użyciu Azure AD zapewnia doskonałe zabezpieczenia i łatwość użycia w innych opcjach autoryzacji. Jeśli używasz Azure AD do autoryzowania żądań wysyłanych z aplikacji, nie musisz przechowywać klucza dostępu do konta przy użyciu kodu, tak jak w przypadku autoryzacji klucza współdzielonego. Mimo że możesz nadal używać autoryzacji klucza współdzielonego w aplikacjach obiektów blob, kolejek i tabel, firma Microsoft zaleca przejście do Azure AD tam, gdzie to możliwe. Aby uzyskać więcej informacji na temat integracji Azure AD w usłudze Azure Storage, zobacz Autoryzowanie dostępu do obiektów blob i kolejek platformy Azure przy użyciu Azure Active Directory.

Używanie tokenów dostępu OAuth na potrzeby uwierzytelniania

Usługa Azure Storage akceptuje tokeny dostępu OAuth 2.0 z dzierżawy Azure AD skojarzonej z subskrypcją zawierającą konto magazynu. Usługa Azure Storage akceptuje tokeny dostępu dla:

  • Użytkownicy
  • Jednostki usługi
  • Tożsamości zarządzane dla zasobów platformy Azure
  • Aplikacje korzystające z uprawnień delegowanych przez użytkowników

Usługa Azure Storage uwidacznia pojedynczy zakres delegowania o nazwieuser_impersonation, który umożliwia aplikacjom podejmowanie wszelkich działań dozwolonych przez użytkownika.

Aby zażądać tokenów dla usługi Azure Storage, określ wartość https://storage.azure.com/ identyfikatora zasobu.

Aby uzyskać więcej informacji na temat żądania tokenów dostępu z Azure AD dla użytkowników i jednostek usługi, zobacz Scenariusze uwierzytelniania dla Azure AD.

Aby uzyskać więcej informacji na temat żądania tokenów dostępu dla zasobów skonfigurowanych przy użyciu tożsamości zarządzanych, zobacz Jak używać tożsamości zarządzanych dla zasobów platformy Azure na maszynie wirtualnej platformy Azure w celu uzyskania tokenu dostępu.

Wywoływanie operacji magazynowania przy użyciu tokenów OAuth

Aby wywołać operacje usługi Blob, Queue and Table przy użyciu tokenów dostępu OAuth, przekaż token dostępu w nagłówku Autoryzacja przy użyciu schematu elementu nośnego i określ wersję usługi 2017-11-09 lub nowszej, jak pokazano w poniższym przykładzie:

Request:
GET /container/file.txt
x-ms-version: 2017-11-09
Authorization: Bearer eyJ0eXAiO...V09ccgQ
User-Agent: PostmanRuntime/7.6.0
Accept: */*
Host: sampleoautheast2.blob.core.windows.net
accept-encoding: gzip, deflate

Response:
HTTP/1.1 200
status: 200
Content-Length: 28
Content-Type: text/plain
Content-MD5: dxG7IgOBzApXPcGHxGg5SA==
Last-Modified: Wed, 30 Jan 2019 07:21:32 GMT
Accept-Ranges: bytes
ETag: "0x8D686838F9E8BA7"
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 09f31964-e01e-00a3-8066-d4e6c2000000
x-ms-version: 2017-11-09
x-ms-creation-time: Wed, 29 Aug 2018 04:22:47 GMT
x-ms-lease-status: unlocked
x-ms-lease-state: available
x-ms-blob-type: BlockBlob
x-ms-server-encrypted: true
Date: Wed, 06 Mar 2019 21:50:50 GMT
Welcome to Azure Storage!!

Wyzwanie elementu nośnego

Wyzwanie elementu nośnego jest częścią protokołu OAuth RFC 6750 i jest używane do odnajdywania urzędu. W przypadku żądań anonimowych lub żądań z nieprawidłowym tokenem elementu nośnego OAuth serwer zwróci kod stanu 401 (Brak autoryzacji) z dostawcą tożsamości i informacjami o zasobie. Zapoznaj się z linkiem, aby dowiedzieć się, jak używać tych wartości podczas uwierzytelniania za pomocą Azure AD.

Usługi azure Storage Blob i Queue zwracają wyzwanie elementu nośnego dla wersji 2019-12-12 i nowszych. Usługa Azure Storage Table zwraca wyzwanie elementu nośnego z wersji 2020-12-06. Azure Data Lake Storage Gen2 zwraca wyzwanie elementu nośnego dla wersji 2017-11-09 i nowszej.

Poniżej przedstawiono przykład odpowiedzi żądania elementu nośnego, gdy żądanie klienta nie zawiera tokenu elementu nośnego w anonimowym żądaniu pobierania obiektu blob:

Request:
GET /container/file.txt
x-ms-version: 2019-12-12
Host: sampleoautheast2.blob.core.windows.net

Response:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer authorization_uri=https://login.microsoftonline.com/<tenant_id>/oauth2/authorize resource_uri=https://storage.azure.com

<?xml version="1.0" encoding="utf-8"?>
<Error>
    <Code>NoAuthenticationInformation</Code>
    <Message>Server failed to authenticate the request. Please refer to the information in the www-authenticate header.
RequestId:ec4f02d7-1003-0006-21f9-c55bc8000000
Time:2020-01-08T08:01:46.2063459Z</Message>
</Error>
Parametr Opis
authorization_uri Identyfikator URI (fizyczny punkt końcowy) serwera autoryzacji. Ta wartość jest również używana jako klucz odnośnika, aby uzyskać więcej informacji o serwerze z punktu końcowego odnajdywania. Klient musi sprawdzić, czy serwer autoryzacji jest zaufany. Gdy zasób jest chroniony przez Azure AD, wystarczy sprawdzić, czy adres URL zaczyna się od https://login.microsoftonline.com lub innej nazwy hosta obsługiwanej przez Azure AD. Zasób specyficzny dla dzierżawy powinien zawsze zwracać identyfikator URI autoryzacji specyficzny dla dzierżawy.
resource_id Zwraca unikatowy identyfikator zasobu. Aplikacja kliencka może użyć tego identyfikatora jako wartości parametru zasobu, gdy żąda tokenu dostępu dla zasobu. Ważne jest, aby aplikacja kliencka zweryfikowała tę wartość. W przeciwnym razie złośliwa usługa może być w stanie wywołać atak z podniesieniem uprawnień. Zalecaną strategią zapobiegania atakowi jest sprawdzenie, czy resource_id jest zgodna z bazą internetowego adresu URL interfejsu API, do którego uzyskuje się dostęp. https://storage.azure.comjest zazwyczaj używanym identyfikatorem zasobu usługi Azure Storage.

Zarządzanie uprawnieniami dostępu przy użyciu kontroli dostępu opartej na rolach

Azure AD obsługuje autoryzację dostępu do zabezpieczonych zasobów za pośrednictwem kontroli dostępu opartej na rolach. Przy użyciu kontroli dostępu opartej na rolach można przypisywać role do użytkowników, grup lub jednostek usługi. Każda rola obejmuje zestaw uprawnień dla zasobu. Po przypisaniu roli do użytkownika, grupy lub jednostki usługi mają dostęp do tego zasobu. Prawa dostępu można przypisać przy użyciu Azure Portal, narzędzi wiersza polecenia platformy Azure i interfejsów API usługi Azure Management. Aby uzyskać więcej informacji na temat kontroli dostępu opartej na rolach, zobacz Wprowadzenie z Role-Based Access Control.

W przypadku usługi Azure Storage można udzielić dostępu do danych w kontenerze lub kolejce na koncie magazynu. Usługa Azure Storage oferuje te wbudowane role RBAC do użycia z Azure AD:

Aby uzyskać więcej informacji na temat sposobu definiowania wbudowanych ról dla usługi Azure Storage, zobacz Omówienie definicji ról dla zasobów platformy Azure.

Role niestandardowe można również definiować do użycia z usługami Blob Storage i Azure Queues. Aby uzyskać więcej informacji, zobacz Tworzenie ról niestandardowych dla usługi Azure Role-Based Access Control.

Uprawnienia do wywoływania operacji danych

W poniższych tabelach opisano uprawnienia niezbędne dla użytkownika Azure AD, grupy lub jednostki usługi w celu wywołania określonych operacji usługi Azure Storage. Aby umożliwić klientowi wywołanie określonej operacji, upewnij się, że przypisana rola RBAC klienta oferuje wystarczające uprawnienia dla tej operacji.

Uprawnienia do operacji usługi Blob Service

Operacja usługi Blob Service Akcja RBAC
Wyświetlanie listy kontenerów Microsoft. Storage/storageAccounts/blobServices/containers/read (ograniczone do konta magazynu lub nowszego)
Ustawianie właściwości usługi Blob Service Microsoft. Storage/storageAccounts/blobServices/write
Pobieranie właściwości usługi Blob Service Microsoft. Storage/storageAccounts/blobServices/read
Żądanie wstępnego obiektu blob Anonimowe
Pobieranie statystyk usługi Blob Service Microsoft. Storage/storageAccounts/blobServices/read
Pobieranie informacji o koncie Nieobsługiwane
Uzyskiwanie klucza delegowania użytkownika Microsoft. Storage/storageAccounts/blobServices/generateUserDelegationKey/action
Tworzenie kontenera Microsoft. Storage/storageAccounts/blobServices/containers/write
Pobieranie właściwości kontenera Microsoft. Storage/storageAccounts/blobServices/containers/read
Pobieranie metadanych kontenera Microsoft. Storage/storageAccounts/blobServices/containers/read
Ustawianie metadanych kontenera Microsoft. Storage/storageAccounts/blobServices/containers/write
Uzyskiwanie listy ACL kontenerów Nieobsługiwane
Ustawianie listy ACL kontenerów Nieobsługiwane
Kontener dzierżawy Microsoft. Storage/storageAccounts/blobServices/containers/write
Usuwanie kontenera Microsoft. Storage/storageAccounts/blobServices/containers/delete
Przywracanie kontenera Microsoft. Storage/storageAccounts/blobServices/containers/write
Wyświetlanie listy obiektów blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
Znajdowanie obiektów blob według tagów w kontenerze Microsoft. Storage/storageAccounts/blobServices/containers/blobs/filter/action
Wstawianie obiektu blob Aby utworzyć lub zastąpić: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Aby utworzyć nowy obiekt blob: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/add/action
Umieść obiekt blob z adresu URL Aby utworzyć lub zastąpić: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Aby utworzyć nowy obiekt blob: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/add/action
Uzyskiwanie obiektu blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
Pobieranie właściwości obiektu blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
Ustawianie właściwości obiektu blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Pobieranie metadanych obiektu blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
Ustawianie metadanych obiektu blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Pobieranie tagów obiektów blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/tags/read
Ustawianie tagów obiektów blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/tags/write
Znajdowanie obiektu blob według tagów Microsoft. Storage/storageAccounts/blobServices/containers/blobs/filter/action
Dzierżawienie obiektu blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Wykonywanie migawki obiektu blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write lub
Microsoft. Storage/storageAccounts/blobServices/containers/blobs/add/action
Kopiowanie obiektu blob W przypadku docelowego obiektu blob: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write lub Microsoft. Storage/storageAccounts/blobServices/containers/blobs/add/action (podczas zapisywania nowego obiektu blob w miejscu docelowym)
W przypadku źródłowego obiektu blob na tym samym koncie magazynu: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
W przypadku źródłowego obiektu blob na innym koncie magazynu: dostępne jako anonimowe lub zawierają prawidłowy token SAS
Kopiowanie obiektu blob z adresu URL W przypadku docelowego obiektu blob: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write lub Microsoft. Storage/storageAccounts/blobServices/containers/blobs/add/action (podczas zapisywania nowego obiektu blob w miejscu docelowym)
W przypadku źródłowego obiektu blob na tym samym koncie magazynu: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
W przypadku źródłowego obiektu blob na innym koncie magazynu: dostępne jako anonimowe lub zawierają prawidłowy token SAS
Przerwanie kopiowania obiektu blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Usuwanie obiektu blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/delete
Cofanie usunięcia obiektu blob Microsoft. Storage/storageAccounts/blobServices/containers/write
Ustawianie warstwy obiektu blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Blob Batch Żądanie nadrzędne: Microsoft. Storage/storageAccounts/blobServices/containers/write
Żądania podrzędne: zobacz uprawnienia dla tego typu żądania.
Ustawianie zasad niezmienności Microsoft. Storage/storageAccounts/blobServices/containers/write
Usuwanie zasad niezmienności Microsoft. Storage/storageAccounts/blobServices/containers/write
Ustawianie blokady prawnej obiektu blob Microsoft. Storage/storageAccounts/blobServices/containers/write
Umieść blok Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Umieść blok z adresu URL Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Umieść listę bloków Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Pobieranie listy bloków Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
Zawartość obiektu blob kwerendy Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
Umieść stronę Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Umieść stronę z adresu URL Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Pobieranie zakresów stron Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
Przyrostowe kopiowanie obiektu blob W przypadku docelowego obiektu blob: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Dla źródłowego obiektu blob: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
W przypadku nowego obiektu blob: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/add/action
Blok dołączania Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write lub Microsoft. Storage/storageAccounts/blobServices/containers/blobs/add/action
Dołączanie bloku z adresu URL Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write lub Microsoft. Storage/storageAccounts/blobServices/containers/blobs/add/action
Ustawianie wygaśnięcia obiektu blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write

Uprawnienia do operacji usługi kolejki

Operacja usługi kolejki Akcja RBAC
Wyświetlanie listy kolejek Microsoft. Storage/storageAccounts/queueServices/queues/read (zakres do konta magazynu lub nowszego)
Ustawianie właściwości usługi kolejki Microsoft. Storage/storageAccounts/queueServices/read
Pobieranie właściwości usługi kolejki Microsoft. Storage/storageAccounts/queueServices/read
Żądanie kolejki wstępnej Anonimowe
Pobieranie statystyk usługi kolejki Microsoft. Storage/storageAccounts/queueServices/read
Tworzenie kolejki Microsoft. Storage/storageAccounts/queueServices/queues/write
Usuwanie kolejki Microsoft. Storage/storageAccounts/queueServices/queues/delete
Pobieranie metadanych kolejki Microsoft. Storage/storageAccounts/queueServices/queues/read
Ustawianie metadanych kolejki Microsoft. Storage/storageAccounts/queueServices/queues/write
Uzyskiwanie listy ACL kolejek Niedostępne za pośrednictwem protokołu OAuth
Ustawianie listy ACL kolejek Niedostępne za pośrednictwem protokołu OAuth
Umieść wiadomość Microsoft. Storage/storageAccounts/queueServices/queues/messages/add/action lub Microsoft. Storage/storageAccounts/queueServices/queues/messages/write
Pobieranie komunikatów Microsoft. Storage/storageAccounts/queueServices/queues/messages/process/action lub (Microsoft.Storage /storageAccounts/queueServices/queues/messages/delete i Microsoft. Storage/storageAccounts/queueServices/queues/messages/read)
Podgląd komunikatów Microsoft. Storage/storageAccounts/queueServices/queues/messages/read
Usuń wiadomość Microsoft. Storage/storageAccounts/queueServices/queues/messages/process/action lub Microsoft. Storage/storageAccounts/queueServices/queues/messages/delete
Wyczyść komunikaty Microsoft. Storage/storageAccounts/queueServices/queues/messages/delete
Aktualizacja wiadomości Microsoft. Storage/storageAccounts/queueServices/queues/messages/write

Uprawnienia do operacji usługi Table Service

Operacja usługi Table Service Akcja RBAC
Ustawianie właściwości usługi Table Service Microsoft. Storage/storageAccounts/tableServices/write
Pobieranie właściwości usługi Table Service Microsoft. Storage/storageAccounts/tableServices/read
Wstępne żądanie tabeli Anonimowe
Pobieranie statystyk usługi Table Service Microsoft. Storage/storageAccounts/tableServices/read
Performing Entity Group Transactions (Wykonywanie transakcji w grupach jednostek) Operacja podrzędna autoryzuje się oddzielnie
Tabele zapytań Microsoft. Storage/storageAccounts/tableServices/tables/read (w zakresie konta magazynu lub powyżej)
Create Table Microsoft. Storage/storageAccounts/tableServices/tables/write
Usuń tabelę Microsoft. Storage/storageAccounts/tableServices/tables/delete
Uzyskiwanie listy ACL tabel Niedostępne za pośrednictwem protokołu OAuth
Ustawianie listy ACL tabel Niedostępne za pośrednictwem protokołu OAuth
Wykonywanie zapytań o jednostki Microsoft. Storage/storageAccounts/tableServices/tables/entities/read
Wstaw jednostkę Microsoft. Storage/storageAccounts/tableServices/tables/entities/write lub Microsoft. Storage/storageAccounts/tableServices/tables/entities/add/action
Wstawianie lub scalanie jednostki Microsoft. Storage/storageAccounts/tableServices/tables/entities/write lub (Microsoft.Storage /storageAccounts/tableServices/tables/entities/add/action i Microsoft. Storage/storageAccounts/tableServices/tables/entities/update/action)
Wstawianie lub zastępowanie jednostki Microsoft. Storage/storageAccounts/tableServices/tables/entities/write lub (Microsoft.Storage /storageAccounts/tableServices/tables/entities/add/action i Microsoft. Storage/storageAccounts/tableServices/tables/entities/update/action)
Aktualizowanie jednostki Microsoft. Storage/storageAccounts/tableServices/tables/entities/write lub Microsoft. Storage/storageAccounts/tableServices/tables/entities/update/action
Scal jednostkę Microsoft. Storage/storageAccounts/tableServices/tables/entities/write lub Microsoft. Storage/storageAccounts/tableServices/tables/entities/update/action
Usuwanie jednostki Microsoft. Storage/storageAccounts/tableServices/tables/entities/delete

Zobacz też