Tworzenie sygnatury dostępu współdzielonego delegowania użytkownika dla kontenera lub obiektu blob przy użyciu interfejsu wiersza polecenia platformy Azure

Sygnatura dostępu współdzielonego (SAS) umożliwia udzielanie ograniczonego dostępu do kontenerów i obiektów blob na koncie magazynu. Podczas tworzenia sygnatury dostępu współdzielonego określasz jego ograniczenia, w tym zasoby usługi Azure Storage, do których może uzyskiwać dostęp klient, jakie uprawnienia mają w tych zasobach i jak długo sygnatura dostępu współdzielonego jest prawidłowa.

Każda sygnatura dostępu współdzielonego jest podpisana przy użyciu klucza. Sygnaturę dostępu współdzielonego można podpisać na jeden z dwóch sposobów:

  • Za pomocą klucza utworzonego przy użyciu poświadczeń firmy Microsoft Entra. Sygnatura dostępu współdzielonego podpisana przy użyciu poświadczeń usługi Microsoft Entra to sygnatura dostępu współdzielonego delegowania użytkownika. Klient, który tworzy sygnaturę dostępu współdzielonego delegowania użytkownika, musi mieć przypisaną rolę RBAC platformy Azure obejmującą akcję Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey . Aby dowiedzieć się więcej, zobacz Tworzenie sygnatury dostępu współdzielonego delegowania użytkownika.
  • Przy użyciu klucza konta magazynu. Sygnatura dostępu współdzielonego usługi i sygnatura dostępu współdzielonego konta są podpisane przy użyciu klucza konta magazynu. Klient tworzący sygnaturę dostępu współdzielonego usługi musi mieć bezpośredni dostęp do klucza konta lub mieć przypisane uprawnienie Microsoft.Storage/storageAccounts/listkeys/action . Aby dowiedzieć się więcej, zobacz Tworzenie sygnatury dostępu współdzielonego usługi lub Tworzenie sygnatury dostępu współdzielonego konta.

Uwaga

Sygnatura dostępu współdzielonego delegowania użytkownika zapewnia doskonałe zabezpieczenia sygnatury dostępu współdzielonego podpisanej przy użyciu klucza konta magazynu. Firma Microsoft zaleca używanie sygnatury dostępu współdzielonego delegowania użytkowników, jeśli jest to możliwe. Aby uzyskać więcej informacji, zobacz Udzielanie ograniczonego dostępu do danych za pomocą sygnatur dostępu współdzielonego (SAS).

W tym artykule pokazano, jak za pomocą poświadczeń firmy Microsoft utworzyć sygnaturę dostępu współdzielonego delegowania użytkownika dla kontenera lub obiektu blob za pomocą interfejsu wiersza polecenia platformy Azure.

Informacje o sygnaturze dostępu współdzielonego delegowania użytkownika

Token SAS na potrzeby dostępu do kontenera lub obiektu blob może być zabezpieczony przy użyciu poświadczeń microsoft Entra lub klucza konta. Sygnatura dostępu współdzielonego zabezpieczona przy użyciu poświadczeń entra firmy Microsoft jest nazywana sygnaturą dostępu współdzielonego delegowania użytkownika, ponieważ token OAuth 2.0 używany do podpisywania sygnatury dostępu współdzielonego jest żądany w imieniu użytkownika.

Firma Microsoft zaleca korzystanie z poświadczeń firmy Microsoft, jeśli jest to możliwe jako najlepsze rozwiązanie w zakresie zabezpieczeń, zamiast używać klucza konta, co może być łatwiejsze w przypadku naruszenia zabezpieczeń. Jeśli projekt aplikacji wymaga sygnatur dostępu współdzielonego, użyj poświadczeń firmy Microsoft Entra, aby utworzyć sygnaturę dostępu współdzielonego delegowania użytkownika w celu zapewnienia najwyższej jakości zabezpieczeń. Aby uzyskać więcej informacji na temat sygnatury dostępu współdzielonego delegowania użytkownika, zobacz Tworzenie sygnatury dostępu współdzielonego delegowania użytkownika.

Uwaga

Każdy klient, który posiada prawidłową sygnaturę dostępu współdzielonego, może uzyskać dostęp do danych na koncie magazynu zgodnie z zezwoleniem na ten sygnaturę dostępu współdzielonego. Ważne jest, aby chronić sygnaturę dostępu współdzielonego przed złośliwym lub niezamierzonym użyciem. Użyj uznania w dystrybucji sygnatury dostępu współdzielonego i zaplanuj odwołanie naruszonej sygnatury dostępu współdzielonego.

Aby uzyskać więcej informacji na temat sygnatur dostępu współdzielonego, zobacz Udzielanie ograniczonego dostępu do zasobów usługi Azure Storage przy użyciu sygnatur dostępu współdzielonego (SAS).

Zainstalowanie najnowszej wersji interfejsu wiersza polecenia platformy Azure

Aby użyć interfejsu wiersza polecenia platformy Azure do zabezpieczenia sygnatury dostępu współdzielonego przy użyciu poświadczeń firmy Microsoft Entra, najpierw upewnij się, że zainstalowano najnowszą wersję interfejsu wiersza polecenia platformy Azure. Aby uzyskać więcej informacji na temat instalowania interfejsu wiersza polecenia platformy Azure, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Aby utworzyć sygnaturę dostępu współdzielonego delegowania użytkownika przy użyciu interfejsu wiersza polecenia platformy Azure, upewnij się, że zainstalowano wersję 2.0.78 lub nowszą. Aby sprawdzić zainstalowaną wersję, użyj az --version polecenia .

Logowanie się przy użyciu poświadczeń usługi Microsoft Entra

Zaloguj się do interfejsu wiersza polecenia platformy Azure przy użyciu poświadczeń usługi Microsoft Entra. Aby uzyskać więcej informacji, zobacz temat Logowanie się za pomocą interfejsu wiersza polecenia platformy Azure.

Przypisywanie uprawnień przy użyciu kontroli dostępu opartej na rolach platformy Azure

Aby utworzyć sygnaturę dostępu współdzielonego delegowania użytkownika z poziomu programu Azure PowerShell, konto Microsoft Entra używane do logowania się do interfejsu wiersza polecenia platformy Azure musi mieć przypisaną rolę obejmującą akcję Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey . To uprawnienie umożliwia, aby konto Microsoft Entra zażądało klucza delegowania użytkownika. Klucz delegowania użytkownika służy do podpisywania sygnatury dostępu współdzielonego delegowania użytkownika. Rola zapewniająca akcję Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey musi być przypisana na poziomie konta magazynu, grupy zasobów lub subskrypcji.

Jeśli nie masz wystarczających uprawnień do przypisywania ról platformy Azure do podmiotu zabezpieczeń firmy Microsoft Entra, może być konieczne poproszenie właściciela konta lub administratora o przypisanie niezbędnych uprawnień.

W poniższym przykładzie przypisano rolę Współautor danych obiektu blob usługi Storage, która obejmuje akcję Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey . Rola jest ograniczona na poziomie konta magazynu.

Pamiętaj, aby zastąpić wartości symboli zastępczych w nawiasach kątowych własnymi wartościami:

az role assignment create \
    --role "Storage Blob Data Contributor" \
    --assignee <email> \
    --scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>"

Aby uzyskać więcej informacji na temat wbudowanych ról, które obejmują akcję Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey , zobacz Role wbudowane platformy Azure.

Zabezpieczanie sygnatury dostępu współdzielonego przy użyciu poświadczeń firmy Microsoft

Podczas tworzenia sygnatury dostępu współdzielonego delegowania użytkownika za pomocą interfejsu wiersza polecenia platformy Azure klucz delegowania użytkownika używany do podpisywania sygnatury dostępu współdzielonego jest tworzony niejawnie. Czas rozpoczęcia i czas wygaśnięcia określony dla sygnatury dostępu współdzielonego są również używane jako czas rozpoczęcia i czas wygaśnięcia klucza delegowania użytkownika.

Ponieważ maksymalny interwał, dla którego klucz delegowania użytkownika jest prawidłowy, wynosi 7 dni od daty rozpoczęcia, należy określić czas wygaśnięcia sygnatury dostępu współdzielonego w ciągu 7 dni od godziny rozpoczęcia. Sygnatura dostępu współdzielonego jest nieprawidłowa po wygaśnięciu klucza delegowania użytkownika, więc sygnatura dostępu współdzielonego o czasie wygaśnięcia dłuższym niż 7 dni będzie nadal ważna tylko przez 7 dni.

Podczas tworzenia sygnatury dostępu współdzielonego --auth-mode login delegowania użytkownika wymagane są wartości i --as-user parameters . Określ identyfikator logowania dla parametru --auth-mode , aby żądania wysyłane do usługi Azure Storage zostały autoryzowane przy użyciu poświadczeń firmy Microsoft Entra. Określ parametr wskazujący --as-user , że zwrócona sygnatura dostępu współdzielonego powinna być sygnaturą dostępu współdzielonego delegowania użytkownika.

Tworzenie sygnatury dostępu współdzielonego delegowania użytkownika dla kontenera

Aby utworzyć sygnaturę dostępu współdzielonego delegowania użytkownika dla kontenera za pomocą interfejsu wiersza polecenia platformy Azure, wywołaj polecenie az storage container generate-sas .

Obsługiwane uprawnienia sygnatury dostępu współdzielonego delegowania użytkownika w kontenerze obejmują dodawanie, tworzenie, usuwanie, wyświetlanie listy, odczyt i zapis. Uprawnienia można określić w sposób singly lub połączony. Aby uzyskać więcej informacji na temat tych uprawnień, zobacz Tworzenie sygnatury dostępu współdzielonego delegowania użytkownika.

Poniższy przykład zwraca token SAS delegowania użytkownika dla kontenera. Pamiętaj, aby zastąpić wartości symboli zastępczych w nawiasach własnymi wartościami:

az storage container generate-sas \
    --account-name <storage-account> \
    --name <container> \
    --permissions acdlrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user

Zwrócony token SAS delegowania użytkownika będzie podobny do następującego:

se=2019-07-27&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sktid=<sktid>&skt=2019-07-26T18%3A01%3A22Z&ske=2019-07-27T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

Uwaga

Token SAS zwrócony przez usługę Blob Storage nie zawiera znaku ogranicznika ('?') dla ciągu zapytania adresu URL. Jeśli dołączasz token SAS do adresu URL zasobu, pamiętaj, aby również dołączyć znak ogranicznika.

Tworzenie sygnatury dostępu współdzielonego delegowania użytkownika dla obiektu blob

Aby utworzyć sygnaturę dostępu współdzielonego delegowania użytkownika dla obiektu blob za pomocą interfejsu wiersza polecenia platformy Azure, wywołaj polecenie az storage blob generate-sas .

Obsługiwane uprawnienia sygnatury dostępu współdzielonego delegowania użytkownika w obiekcie blob obejmują dodawanie, tworzenie, usuwanie, odczyt i zapis. Uprawnienia można określić w sposób singly lub połączony. Aby uzyskać więcej informacji na temat tych uprawnień, zobacz Tworzenie sygnatury dostępu współdzielonego delegowania użytkownika.

Poniższa składnia zwraca sygnaturę dostępu współdzielonego delegowania użytkownika dla obiektu blob. W przykładzie --full-uri określono parametr, który zwraca identyfikator URI obiektu blob z dołączonym tokenem SAS. Pamiętaj, aby zastąpić wartości symboli zastępczych w nawiasach własnymi wartościami:

az storage blob generate-sas \
    --account-name <storage-account> \
    --container-name <container> \
    --name <blob> \
    --permissions acdrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user \
    --full-uri

Zwrócony identyfikator URI sygnatury dostępu współdzielonego delegowania użytkownika będzie podobny do następującego:

https://storagesamples.blob.core.windows.net/sample-container/blob1.txt?se=2019-08-03&sp=rw&sv=2018-11-09&sr=b&skoid=<skoid>&sktid=<sktid>&skt=2019-08-02T2
2%3A32%3A01Z&ske=2019-08-03T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

Uwaga

Token SAS zwracany przez interfejs wiersza polecenia platformy Azure nie zawiera znaku ogranicznika ('?') dla ciągu zapytania adresu URL. Jeśli dołączasz token SAS do adresu URL zasobu, pamiętaj, aby dołączyć znak ogranicznika do adresu URL zasobu przed dołączeniem tokenu SAS.

Sygnatura dostępu współdzielonego delegowania użytkownika nie obsługuje definiowania uprawnień z zapisanymi zasadami dostępu.

Odwoływanie sygnatury dostępu współdzielonego delegowania użytkownika

Aby odwołać sygnaturę dostępu współdzielonego delegowania użytkownika z interfejsu wiersza polecenia platformy Azure, wywołaj polecenie az storage account revoke-delegation-keys . To polecenie odwołuje wszystkie klucze delegowania użytkownika skojarzone z określonym kontem magazynu. Wszelkie sygnatury dostępu współdzielonego skojarzone z tymi kluczami są unieważniane.

Pamiętaj, aby zastąpić wartości symboli zastępczych w nawiasach kątowych własnymi wartościami:

az storage account revoke-delegation-keys \
    --name <storage-account> \
    --resource-group <resource-group>

Ważne

Zarówno klucz delegowania użytkownika, jak i przypisania ról platformy Azure są buforowane przez usługę Azure Storage, dlatego może wystąpić opóźnienie między zainicjowaniem procesu odwołania i nieprawidłową sygnaturą dostępu współdzielonego delegowania użytkownika.

Następne kroki