Tworzenie sygnatury dostępu współdzielonego delegowania użytkownika dla kontenera lub obiektu blob za pomocą programu PowerShell

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 używać poświadczeń firmy Microsoft do tworzenia sygnatury dostępu współdzielonego delegowania użytkownika dla kontenera lub obiektu blob za pomocą programu Azure PowerShell.

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).

Zainstaluj moduł programu PowerShell

Aby utworzyć sygnaturę dostępu współdzielonego delegowania użytkownika za pomocą programu PowerShell, zainstaluj wersję 1.10.0 lub nowszą modułu Az.Storage. Wykonaj następujące kroki, aby zainstalować najnowszą wersję modułu:

  1. Odinstaluj wszystkie poprzednie instalacje programu Azure PowerShell:

    • Usuń wszystkie poprzednie instalacje programu Azure PowerShell z systemu Windows przy użyciu ustawienia Aplikacje i funkcje w obszarze Ustawienia.
    • Usuń wszystkie moduły platformy Azure z programu %Program Files%\WindowsPowerShell\Modules.
  2. Upewnij się, że masz zainstalowaną najnowszą wersję modułu PowerShellGet. Otwórz okno programu Windows PowerShell i uruchom następujące polecenie, aby zainstalować najnowszą wersję:

    Install-Module PowerShellGet -Repository PSGallery -Force
    
  3. Zamknij i otwórz ponownie okno programu PowerShell po zainstalowaniu modułu PowerShellGet.

  4. Zainstaluj najnowszą wersję programu Azure PowerShell:

    Install-Module Az -Repository PSGallery -AllowClobber
    
  5. Upewnij się, że zainstalowano program Azure PowerShell w wersji 3.2.0 lub nowszej. Uruchom następujące polecenie, aby zainstalować najnowszą wersję modułu Programu PowerShell usługi Azure Storage:

    Install-Module -Name Az.Storage -Repository PSGallery -Force
    
  6. Zamknij i otwórz ponownie okno programu PowerShell.

Aby sprawdzić, która wersja modułu Az.Storage jest zainstalowana, uruchom następujące polecenie:

Get-Module -ListAvailable -Name Az.Storage -Refresh

Aby uzyskać więcej informacji na temat instalowania programu Azure PowerShell, zobacz Instalowanie programu Azure PowerShell przy użyciu modułu PowerShellGet.

Logowanie się do programu Azure PowerShell przy użyciu identyfikatora entra firmy Microsoft

Wywołaj polecenie Połączenie-AzAccount, aby zalogować się przy użyciu konta Microsoft Entra:

Connect-AzAccount

Aby uzyskać więcej informacji na temat logowania przy użyciu programu PowerShell, zobacz Logowanie się przy użyciu programu Azure PowerShell.

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 programu PowerShell 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. Aby uzyskać więcej informacji na temat uprawnień RBAC platformy Azure do tworzenia sygnatury dostępu współdzielonego delegowania użytkownika, zobacz sekcję Przypisywanie uprawnień za pomocą kontroli dostępu opartej na rolach platformy Azure w temacie Tworzenie sygnatury dostępu współdzielonego delegowania użytkownika.

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:

New-AzRoleAssignment -SignInName <email> `
    -RoleDefinitionName "Storage Blob Data Contributor" `
    -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ą programu Azure PowerShell 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.

Aby utworzyć sygnaturę dostępu współdzielonego delegowania użytkownika dla kontenera lub obiektu blob za pomocą programu Azure PowerShell, najpierw utwórz nowy obiekt kontekstu usługi Azure Storage, określając -UseConnectedAccount parametr . Parametr -UseConnectedAccount określa, że polecenie tworzy obiekt kontekstu na koncie Microsoft Entra, za pomocą którego się zalogowałeś.

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

$ctx = New-AzStorageContext -StorageAccountName <storage-account> -UseConnectedAccount

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

Aby zwrócić token SAS delegowania użytkownika dla kontenera, wywołaj polecenie New-AzStorageContainerSASToken , przekazując utworzony wcześniej obiekt kontekstu usługi Azure Storage.

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:

New-AzStorageContainerSASToken -Context $ctx `
    -Name <container> `
    -Permission racwdl `
    -ExpiryTime <date-time>

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

?sv=2018-11-09&sr=c&sig=<sig>&skoid=<skoid>&sktid=<sktid>&skt=2019-08-05T22%3A24%3A36Z&ske=2019-08-07T07%3A
00%3A00Z&sks=b&skv=2018-11-09&se=2019-08-07T07%3A00%3A00Z&sp=rwdl

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

Aby zwrócić token SAS delegowania użytkownika dla obiektu blob, wywołaj polecenie New-AzStorageBlobSASToken , przekazując wcześniej utworzony obiekt kontekstu usługi Azure Storage.

Poniższa składnia zwraca sygnaturę dostępu współdzielonego delegowania użytkownika dla obiektu blob. W przykładzie -FullUri 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:

New-AzStorageBlobSASToken -Context $ctx `
    -Container <container> `
    -Blob <blob> `
    -Permission racwd `
    -ExpiryTime <date-time>
    -FullUri

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?sv=2018-11-09&sr=b&sig=<sig>&skoid=<skoid>&sktid=<sktid>&skt=2019-08-06T21%3A16%3A54Z&ske=2019-08-07T07%3A00%3A00Z&sks=b&skv=2018-11-09&se=2019-08-07T07%3A00%3A00Z&sp=racwd

Uwaga

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 poziomu programu Azure PowerShell, wywołaj polecenie Revoke-AzStorageAccountUserDelegationKeys . 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:

Revoke-AzStorageAccountUserDelegationKeys -ResourceGroupName <resource-group> `
    -StorageAccountName <storage-account>

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