Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Sygnatura dostępu współdzielonego (SAS) umożliwia udzielanie ograniczonego dostępu do kontenerów i blobów na koncie pamięci masowej. 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żdy SAS jest podpisany kluczem. Możesz podpisać SAS 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 SAS z delegacją użytkownika. Klient, który tworzy sygnaturę dostępu współdzielonego użytkownika, musi mieć przypisaną rolę RBAC platformy Azure, która obejmuje akcję Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Aby dowiedzieć się więcej, przeczytaj Tworzenie delegowanej SAS użytkownika.
- Z kluczem konta magazynowania. Sygnatura SAS usługi i sygnatura SAS konta są podpisane przy użyciu klucza konta magazynowego. Klient, który tworzy usługową sygnaturę dostępu SAS, musi mieć bezpośredni dostęp do klucza konta lub mieć przypisane do uprawnienie Microsoft.Storage/storageAccounts/listkeys/action. Aby dowiedzieć się więcej, zobacz Utwórz SAS usługi lub Utwórz SAS konta.
Uwaga
Delegacja dostępu użytkownika w SAS oferuje lepsze zabezpieczenia niż SAS podpisany kluczem konta magazynu. Microsoft zaleca, jeśli to możliwe, używanie delegowanej sygnatury dostępu SAS. 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ń Microsoft Entra utworzyć sygnaturę dostępu współdzielonego delegowania użytkownika dla kontenera lub obiektu blob za pomocą Azure CLI.
Informacje o delegowaniu użytkownika za pomocą sygnatury dostępu współdzielonego
Token SAS na potrzeby dostępu do kontenera lub obiektu blob może być zabezpieczony za pomocą poświadczeń Microsoft Entra lub klucza konta. Sygnatura dostępu współdzielonego (SAS) zabezpieczona poświadczeniami Microsoft Entra nazywana jest delegowaną przez użytkownika SAS, ponieważ token OAuth 2.0 używany do podpisywania SAS 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ń Microsoft Entra, aby utworzyć delegowaną sygnaturę dostępu dla użytkowników, co zapewnia lepsze zabezpieczenia. Aby uzyskać więcej informacji na temat sygnatury dostępu współdzielonego dla delegowania użytkownika, zobacz Tworzenie sygnatury dostępu współdzielonego dla delegowania użytkownika.
Ostrożność
Każdy klient, który posiada prawidłową sygnaturę dostępu współdzielonego, może uzyskać dostęp do danych w Twoim koncie magazynowym zgodnie z uprawnieniami nadanymi przez tę sygnaturę. Ważne jest, aby chronić sygnaturę dostępu współdzielonego przed złośliwym lub niezamierzonym użyciem. Działaj według własnego uznania w dystrybucji SAS i przygotuj plan unieważnienia naruszonego SAS.
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).
Instalowanie najnowszej wersji interfejsu wiersza polecenia platformy Azure
Aby użyć Azure CLI do zabezpieczenia SAS przy użyciu poświadczeń Microsoft Entra, najpierw upewnij się, że masz zainstalowaną najnowszą wersję tego narzędzia. Aby uzyskać więcej informacji na temat instalowania interfejsu wiersza polecenia platformy Azure, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Aby utworzyć delegowaną przez użytkownika SAS przy użyciu Azure CLI, upewnij się, że zainstalowano wersję 2.0.78 lub nowszą. Aby sprawdzić zainstalowaną wersję, użyj az --version polecenia .
Logowanie przy użyciu poświadczeń usługi Microsoft Entra
Zaloguj się do Azure CLI przy użyciu poświadczeń Microsoft Entra. Aby uzyskać więcej informacji, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Przypisywanie uprawnień za pomocą Azure RBAC
Aby utworzyć sygnaturę dostępu wspólnego z delegacją użytkownika w 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 delegowanej sygnatury dostępu współdzielonego. 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ę Kontrybutor danych blob w usłudze Storage, która obejmuje akcję Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Rola jest zdefiniowana 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.
Użyj poświadczeń Microsoft Entra, aby zabezpieczyć sygnaturę dostępu współdzielonego
Podczas tworzenia tokenu SAS delegowania użytkownika za pomocą interfejsu wiersza polecenia platformy Azure, klucz delegowania użytkownika używany do podpisywania tego tokenu jest tworzony automatycznie. Czas rozpoczęcia i czas wygaśnięcia określony dla współdzielonej sygnatury dostępu są również używane jako czas rozpoczęcia i czas wygaśnięcia klucza delegowania użytkownika.
Ponieważ maksymalny okres, przez jaki klucz delegowania użytkownika jest ważny, wynosi 7 dni od godziny rozpoczęcia, należy określić czas wygaśnięcia dla SAS, który mieści się w okresie 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 delegowanego przez użytkownika wymagane są --auth-mode login 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 --as-user wskazujący, że zwrócona sygnatura dostępu współdzielonego powinna być sygnaturą delegowania użytkownika.
Utwórz delegowany SAS dla kontenera
Aby utworzyć delegowaną sygnaturę dostępu współdzielonego użytkownika dla kontenera za pomocą Azure CLI, wywołaj polecenie az storage container generate-sas.
Obsługiwane uprawnienia sygnatury dostępu współdzielonego użytkownika w kontenerze obejmują dodawanie, tworzenie, usuwanie, listowanie, odczyt i zapis. Uprawnienia można określić pojedynczo lub połączone. Aby uzyskać więcej informacji na temat tych uprawnień, zobacz Tworzenie delegowanej sygnatury dostępu współdzielonego dla 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
Token SAS przyznany w ramach delegacji użytkownika będzie podobny do:
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 delegowanego podpisu dostępu wspólnego dla obiektu blob
Aby utworzyć sygnaturę dostępu współdzielonego z delegowaniem użytkownika dla obiektu blob za pomocą wiersza polecenia platformy Azure, wywołaj polecenie az storage blob generate-sas.
Obsługiwane uprawnienia delegowanej sygnatury dostępu dla użytkownika na blobie obejmują dodawanie, tworzenie, usuwanie, odczyt i pisanie. Uprawnienia można określić pojedynczo lub połączone. Aby uzyskać więcej informacji na temat tych uprawnień, zobacz Tworzenie delegowanego SAS użytkownika.
Poniższa składnia zwraca sygnaturę dostępu wspólnego z delegacją 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 podpisu dostępu użytkownika będzie podobny do:
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.
Delegowana sygnatura dostępu użytkownika nie obsługuje definiowania uprawnień ze zdefiniowaną polityką dostępu.
Odwoływanie sygnatury dostępu współdzielonego delegowania użytkownika
Aby odwołać delegowaną sygnaturę dostępu współdzielonego użytkownika z Azure CLI, wywołaj polecenie az storage account revoke-delegation-keys. To polecenie odwołuje wszystkie klucze delegowania użytkownika skojarzone z określonym kontem magazynowym. 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 być opóźnienie od momentu zainicjowania procesu odwołania, a istniejąca sygnatura dostępu współdzielonego delegowania użytkownika staje się nieprawidłowa.