Autoryzowanie za pomocą Azure Active Directory

Usługa Azure Storage zapewnia integrację z usługą Azure Active Directory (Azure AD) w celu autoryzacji opartej na tożsamości żądań do usług Blob, Queue i Table. Za pomocą usługi Azure AD można używać kontroli dostępu opartej na rolach (RBAC, role-based access control), aby udzielić dostępu do zasobów obiektów blob, kolejek i tabel użytkownikom, grupom lub aplikacjom. Możesz udzielić uprawnień ograniczonych do poziomu pojedynczego kontenera, kolejki lub tabeli.

Aby dowiedzieć się więcej na temat integracji usługi Azure AD w usłudze Azure Storage, zobacz Autoryzowaniedostę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 usługi Azure AD w aplikacji, zobacz Integrowanie z usługą Azure Active Directory.

Porada

Autoryzacja dostępu do danych obiektów blob, kolejek i tabel za pomocą usługi Azure AD zapewnia doskonałe zabezpieczenia i łatwość użycia w przypadku innych opcji autoryzacji. Jeśli używasz usługi Azure AD do autoryzowania żądań z aplikacji, unikasz konieczności przechowywania klucza dostępu do konta przy użyciu kodu, tak jak w przypadku autoryzacji klucza wspólnego. Mimo że możesz nadal używać autoryzacji klucza wspólnego z aplikacjami obiektów blob, kolejek i tabel, firma Microsoft zaleca przejście do usługi Azure AD tam, gdzie to możliwe. Aby uzyskać więcej informacji na temat integracji usługi Azure AD w usłudze Azure Storage, zobacz Autoryzowaniedostępu do obiektów blob i kolejek platformy Azure przy użyciu Azure Active Directory .

Używanie tokenów dostępu OAuth do uwierzytelniania

Usługa Azure Storage akceptuje tokeny dostępu OAuth 2.0 z dzierżawy usługi 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 nazwie , który umożliwia aplikacjom działanie dozwolone user_impersonation przez użytkownika.

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

Aby uzyskać więcej informacji na temat żądania tokenów dostępu z usługi Azure AD dla użytkowników i jednostki usługi, zobacz Scenariusze uwierzytelniania dla usługi 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.

Call storage operations with OAuth tokens (Wywołaj operacje magazynu przy użyciu tokenów OAuth)

Aby wywołać operacje usługi Blob, Queue i Table Przy użyciu tokenów dostępu OAuth, przekaż token dostępu w nagłówku autoryzacji przy użyciu schematu Bearer i określ wersję usługi 2017-11-09 lub nowszą, 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!!

Bearer Challenge

Wyzwanie bearer jest częścią protokołu OAuth RFC 6750 i służy do odnajdywania urzędu. W przypadku żądań anonimowych lub żądań z nieprawidłowym tokenem okaziciela OAuth serwer zwróci kod stanu 401 (Brak autoryzacji) z dostawcą tożsamości i informacjami o zasobie. Skorzystaj z linku, aby dowiedzieć się, jak używać tych wartości podczas uwierzytelniania w usłudze Azure AD.

Usługa Azure Storage Blob i Queue Services zwraca wyzwanie dla niedźwiedzia w wersji 2019-12-12 i nowszej. Usługa Azure Storage Table zwraca wyzwanie bearer z wersji 2020-12-06. Usługa Azure Data Lake Storage Gen2 zwraca wyzwanie dla użytkownika w wersji 2017-11-09 i nowszej.

Poniżej przedstawiono przykład odpowiedzi na żądanie użytkownika, gdy żądanie klienta nie zawiera tokenu obiektu bearer w anonimowym żądaniu obiektu blob pobierania:

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 URI (fizyczny punkt końcowy) serwera autoryzacji. Ta wartość jest również używana jako klucz wyszukiwania w celu uzyskania dodatkowych informacji o serwerze z punktu końcowego odnajdywania. Klient musi sprawdzić, czy serwer autoryzacji jest zaufany. Gdy zasób jest chroniony przez usługę Azure AD, wystarczy sprawdzić, czy adres URL zaczyna się od lub inną https://login.microsoftonline.com nazwę hosta, która obsługuje usługę Azure AD. Zasób specyficzny dla dzierżawy powinien zawsze zwracać URI autoryzacji specyficzny dla dzierżawy.
resource_id Zwraca unikatowy identyfikator zasobu. Aplikacja kliency może użyć tego identyfikatora jako wartości parametru zasobu, gdy żąda tokenu dostępu dla zasobu. Ważne jest, aby aplikacja kliency weryfikowała tę wartość. W przeciwnym razie złośliwa usługa może wywołać atak z podniesieniem uprawnień. Zalecaną strategią zapobiegania atakowi jest sprawdzenie, czy resource_id odpowiada bazie adresu URL internetowego interfejsu API, do którego uzyskuje się dostęp. https://storage.azure.comto zazwyczaj używany identyfikator zasobu Storage Azure.

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

Usługa Azure AD obsługuje autoryzację dostępu do zabezpieczonych zasobów za pomocą kontroli RBAC. Za pomocą kontroli RBAC można przypisywać role użytkownikom, grupom lub jednostkom usługi. Każda rola obejmuje zestaw uprawnień dla zasobu. Po przypisaniu roli do użytkownika, grupy lub jednostki usługi ma on dostęp do tego zasobu. Prawa dostępu można przypisywać 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 RBAC, zobacz Wprowadzenie do Role-Based Access Control.

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

Aby uzyskać więcej informacji na temat sposobu definiowania ról wbudowanych dla usługi Azure Storage, zobacz Understand role definitions for Azure resources (Informacje o definicjach ról dla zasobów platformy Azure).

Można również zdefiniować role niestandardowe 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 na danych

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

Uprawnienia do Blob service operacji

Blob service operacji Akcja kontroli RBAC
Lista kontenerów Microsoft. Storage/storageAccounts/blobServices/containers/read (w zakresie konta magazynu)
Ustawianie właściwości usługi Blob Service Microsoft. Storage/storageAccounts/blobServices/write
Uzyskiwanie właściwości usługi Blob Service Microsoft. Storage/storageAccounts/blobServices/read
Wstępne żądanie obiektu blob Anonimowe
Uzyskiwanie statystyk usługi Blob Service Microsoft. Storage/storageAccounts/blobServices/read
Uzyskiwanie klucza delegowania użytkownika Microsoft. Storage/storageAccounts/blobServices/generateUserDelegationKey
Tworzenie kontenera Microsoft. Storage/storageAccounts/blobServices/containers/write
Uzyskiwanie właściwości kontenera Microsoft. Storage/storageAccounts/blobServices/containers/read
Uzyskiwanie metadanych kontenera Microsoft. Storage/storageAccounts/blobServices/containers/read
Ustawianie metadanych kontenera Microsoft. Storage/storageAccounts/blobServices/containers/write
Uzyskiwanie listy ACL kontenerów Niedostępne za pośrednictwem protokołu OAuth
Ustawianie listy ACL kontenerów Niedostępne za pośrednictwem protokołu OAuth
Usuwanie kontenera Microsoft. Storage/storageAccounts/blobServices/containers/delete
Dzierżawa kontenera Microsoft. Storage/storageAccounts/blobServices/containers/write
Lista obiektów blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read (w zakresie kontenera)
Wstawianie obiektu blob W przypadku tworzenia lub zastępowania: 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
Uzyskiwanie metadanych obiektu blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
Ustawianie metadanych obiektu blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
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 Dla 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)
Dla źródłowego obiektu blob na tym samym koncie magazynu: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
Dla ź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
Umieść blok Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Umieść listę zablokowanych Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Uzyskiwanie listy zablokowanych Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
Umieść stronę Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Uzyskiwanie zakresów stron Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
Przyrostowy obiekt blob kopiowania Dla docelowego obiektu blob: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Dla źródłowego obiektu blob: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
Dla 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

Uprawnienia do operacji usługa kolejki użytkownika

usługa kolejki operacji Akcja kontroli RBAC
Lista kolejek Microsoft. Storage/storageAccounts/queueServices/queues/read (konto magazynu o zakresie)
Ustawianie właściwości usługi kolejki Microsoft. Storage/storageAccounts/queueServices/read
Uzyskiwanie właściwości usługi kolejki Microsoft. Storage/storageAccounts/queueServices/read
Wstępne żądanie kolejki Anonimowe
Uzyskiwanie 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
Uzyskiwanie metadanych kolejki Microsoft. Storage/storageAccounts/queueServices/queues/read
Ustawianie metadanych kolejki Microsoft. Storage/storageAccounts/queueServices/queues/write
Uzyskiwanie listy ACL kolejki Niedostępne za pośrednictwem protokołu OAuth
Ustawianie listy ACL kolejki Niedostępne za pośrednictwem protokołu OAuth
Umieść komunikat Microsoft. Storage/storageAccounts/queueServices/queues/messages/add/action lub Microsoft. Storage/storageAccounts/queueServices/queues/messages/write
Uzyskiwanie 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ń komunikat 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 tabel Akcja kontroli RBAC
Ustawianie właściwości usługi Table Service Microsoft. Storage/storageAccounts/tableServices/write
Uzyskiwanie właściwości usługi Table Service Microsoft. Storage/storageAccounts/tableServices/read
Wstępne żądanie tabeli Anonimowe
Uzyskiwanie 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 (konto magazynu o zakresie)
Create Table Microsoft. Storage/storageAccounts/tableServices/tables/write
Usuwanie tabeli 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
Scalanie jednostki 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ż