Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


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 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ń Microsoft Entra to sygnatura dostępu współdzielonego z delegowaniem użytkownika. Klient, który tworzy token delegowania użytkownika SAS, 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.
  • Przy użyciu klucza konta przechowywania. 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 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 delegowaniu użytkownika przy użyciu sygnatury dostępu współdzielonego (SAS)

Token SAS umożliwiający dostęp do kontenera lub obiektu blob może być zabezpieczony przy użyciu 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.

Przestroga

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ć SAS przed złośliwym lub niezamierzonym użyciem. Zachowaj ostrożność podczas dystrybucji SAS i miej plan na odwołanie zawłaszczonego 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).

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 Connect-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ń za pomocą Azure RBAC

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 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. 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ę 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:

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.

Użyj poświadczeń Microsoft Entra, aby zabezpieczyć sygnaturę dostępu współdzielonego

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

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

Utwórz delegowany SAS 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>

Token SAS przyznany w ramach delegacji użytkownika będzie podobny do:

?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 delegowanego podpisu dostępu wspólnego 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ólnego z delegacją 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 podpisu dostępu użytkownika będzie podobny do:

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

Delegowana sygnatura dostępu użytkownika nie obsługuje definiowania uprawnień ze zdefiniowaną polityką dostępu.

Cofnij delegowaną sygnaturę dostępu użytkownika (SAS)

Aby odwołać sygnaturę dostępu współdzielonego użytkownika delegowanego z poziomu programu Azure PowerShell, wywołaj polecenie Revoke-AzStorageAccountUserDelegationKeys. 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:

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 być opóźnienie od momentu zainicjowania procesu odwołania, a istniejąca sygnatura dostępu współdzielonego delegowania użytkownika staje się nieprawidłowa.

Następne kroki