Zarządzanie kluczami konta magazynu za pomocą usługi Key Vault i interfejsu wiersza polecenia platformy Azure (starsza wersja)

Ważne

Klucze konta magazynu zarządzanego w usłudze Key Vault (starsza wersja) są obsługiwane, ponieważ nie są już planowane żadne aktualizacje. Tylko sygnatura dostępu współdzielonego konta jest obsługiwana z definicjami sygnatury dostępu współdzielonego w wersji usługi magazynu w wersji nowszej niż 2018-03-28.

Ważne

Obsługa kluczy konta magazynu zarządzanego w interfejsie wiersza polecenia platformy Azure została usunięta w wersji 2.54. W przypadku poleceń w tym samouczku należy użyć interfejsu wiersza polecenia platformy Azure w wersji 2.53.1 lub poprzedniej .

Ważne

Zalecamy korzystanie z integracji usługi Azure Storage z usługą Microsoft Entra ID, opartą na chmurze usługą zarządzania tożsamościami i dostępem firmy Microsoft. Integracja z firmą Microsoft Entra jest dostępna dla obiektów blob platformy Azure, kolejek i tabel oraz zapewnia dostęp oparty na tokenach OAuth2 do usługi Azure Storage (podobnie jak usługa Azure Key Vault). Microsoft Entra ID umożliwia uwierzytelnianie aplikacji klienckiej przy użyciu aplikacji lub tożsamości użytkownika zamiast poświadczeń konta magazynu. Tożsamość zarządzana firmy Microsoft Entra można użyć podczas uruchamiania na platformie Azure. Tożsamości zarządzane usuwają potrzebę uwierzytelniania klienta i przechowywania poświadczeń w aplikacji lub w aplikacji. Użyj poniższego rozwiązania tylko wtedy, gdy uwierzytelnianie firmy Microsoft Entra nie jest możliwe.

Konto usługi Azure Storage używa poświadczeń składających się z nazwy konta i klucza. Klucz jest generowany automatycznie i służy jako hasło, a nie jako klucz kryptograficzny. Usługa Key Vault zarządza kluczami konta magazynu przez okresowe ponowne generowanie ich na koncie magazynu i zapewnia tokeny sygnatury dostępu współdzielonego na potrzeby delegowanego dostępu do zasobów na koncie magazynu.

Możesz użyć funkcji klucza zarządzanego konta magazynu usługi Key Vault, aby wyświetlić listę (synchronizować) klucze przy użyciu konta usługi Azure Storage i okresowo ponownie wygenerować (obracać) klucze. Klucze można zarządzać zarówno dla kont magazynu, jak i klasycznych kont magazynu.

W przypadku korzystania z funkcji klucza zarządzanego konta magazynu należy wziąć pod uwagę następujące kwestie:

  • Wartości klucza nigdy nie są zwracane w odpowiedzi na obiekt wywołujący.
  • Tylko usługa Key Vault powinna zarządzać kluczami konta magazynu. Nie zarządzaj kluczami samodzielnie i unikaj zakłócania procesów usługi Key Vault.
  • Tylko jeden obiekt usługi Key Vault powinien zarządzać kluczami konta magazynu. Nie zezwalaj na zarządzanie kluczami z wielu obiektów.
  • Wygeneruj ponownie klucze tylko przy użyciu usługi Key Vault. Nie wygeneruj ręcznie kluczy konta magazynu.

Ważne

Ponowne generowanie klucza bezpośrednio na koncie magazynu powoduje przerwanie konfiguracji zarządzanego konta magazynu i może unieważnić używane tokeny SAS i spowodować awarię.

Identyfikator aplikacji jednostki usługi

Dzierżawa firmy Microsoft Entra udostępnia każdą zarejestrowaną aplikację z jednostką usługi. Jednostka usługi służy jako identyfikator aplikacji, który jest używany podczas konfigurowania autoryzacji w celu uzyskania dostępu do innych zasobów platformy Azure za pośrednictwem kontroli dostępu opartej na rolach platformy Azure (Azure RBAC).

Key Vault to aplikacja firmy Microsoft, która jest wstępnie zarejestrowana we wszystkich dzierżawach firmy Microsoft Entra. Usługa Key Vault jest zarejestrowana w ramach tego samego identyfikatora aplikacji w każdej chmurze platformy Azure.

Dzierżawy Chmura Application ID
Microsoft Entra ID Azure Government 7e7c393b-45d0-48b1-a35e-2905ddf8183c
Microsoft Entra ID Azure — publiczna cfa8b339-82a2-471a-a3c9-0fc0be7a4093
Inne Dowolne cfa8b339-82a2-471a-a3c9-0fc0be7a4093

Wymagania wstępne

Aby ukończyć ten przewodnik, należy najpierw wykonać następujące czynności:

Zarządzanie kluczami konta magazynu

Nawiąż połączenie z kontem platformy Azure

Uwierzytelnij sesję interfejsu wiersza polecenia platformy Azure przy użyciu poleceń az login .

az login

Nadawanie usłudze Key Vault dostępu do konta magazynu

Użyj polecenia az role assignment create interfejsu wiersza polecenia platformy Azure, aby przyznać usłudze Key Vault dostęp do konta magazynu. Podaj następujące wartości parametrów:

  • --role: Przekaż rolę platformy Azure "Rola usługi operatora klucza konta magazynu". Ta rola ogranicza zakres dostępu do konta magazynu. W przypadku klasycznego konta magazynu zamiast tego przekaż "Klasyczna rola usługi operatora klucza konta magazynu".
  • --assignee: Przekaż wartość "https://vault.azure.net", czyli adres URL usługi Key Vault w chmurze publicznej platformy Azure. (W przypadku chmury platformy Azure Government zamiast tego użyj polecenia "--assignee-object-id", zobacz Identyfikator aplikacji jednostki usługi).
  • --scope: Przekaż identyfikator zasobu konta magazynu, który znajduje się w postaci /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Znajdź swój identyfikator subskrypcji przy użyciu polecenia az account list interfejsu wiersza polecenia platformy Azure. Znajdź nazwę konta magazynu i grupę zasobów konta magazynu przy użyciu polecenia az storage account list interfejsu wiersza polecenia platformy Azure.
az role assignment create --role "Storage Account Key Operator Service Role" --assignee "https://vault.azure.net" --scope "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Nadaj kontu użytkownika uprawnienie do zarządzanych kont magazynu

Użyj polecenia wiersza polecenia platformy Azure az keyvault-set-policy , aby zaktualizować zasady dostępu usługi Key Vault i udzielić uprawnień konta magazynu do konta użytkownika.

# Give your user principal access to all storage account permissions, on your Key Vault instance

az keyvault set-policy --name <YourKeyVaultName> --upn user@domain.com --storage-permissions get list delete set update regeneratekey getsas listsas deletesas setsas recover backup restore purge

Uprawnienia do kont magazynu nie są dostępne na stronie "Zasady dostępu" konta magazynu w witrynie Azure Portal.

Tworzenie zarządzanego konta magazynu usługi Key Vault

Utwórz konto magazynu zarządzanego usługi Key Vault przy użyciu polecenia az keyvault storage interfejsu wiersza polecenia platformy Azure. Ustaw okres rewitalizacji 30 dni. Gdy nadszedł czas na rotację, usługa KeyVault ponownie generuje klucz, który nie jest aktywny, a następnie ustawia nowo utworzony klucz jako aktywny. Tylko jeden z kluczy jest używany do wystawiania tokenów SAS w dowolnym momencie, jest to aktywny klucz. Podaj następujące wartości parametrów:

  • --vault-name: przekaż nazwę magazynu kluczy. Aby znaleźć nazwę magazynu kluczy, użyj polecenia az keyvault list interfejsu wiersza polecenia platformy Azure.
  • -n: przekaż nazwę konta magazynu. Aby znaleźć nazwę konta magazynu, użyj polecenia az storage account list interfejsu wiersza polecenia platformy Azure.
  • --resource-id: Przekaż identyfikator zasobu konta magazynu, który znajduje się w postaci /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Znajdź swój identyfikator subskrypcji przy użyciu polecenia az account list interfejsu wiersza polecenia platformy Azure. Znajdź nazwę konta magazynu i grupę zasobów konta magazynu przy użyciu polecenia az storage account list interfejsu wiersza polecenia platformy Azure.
az keyvault storage add --vault-name <YourKeyVaultName> -n <YourStorageAccountName> --active-key-name key1 --auto-regenerate-key --regeneration-period P30D --resource-id "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Tokeny sygnatury dostępu współdzielonego

Możesz również poprosić usługę Key Vault o wygenerowanie tokenów sygnatury dostępu współdzielonego. Sygnatura dostępu współdzielonego zapewnia delegowany dostęp do zasobów na koncie magazynu. Możesz udzielić klientom dostępu do zasobów na koncie magazynu bez udostępniania kluczy konta. Sygnatura dostępu współdzielonego zapewnia bezpieczny sposób udostępniania zasobów magazynu bez naruszania kluczy konta.

Polecenia w tej sekcji umożliwiają wykonanie następujących akcji:

  • Ustaw definicję <YourSASDefinitionName>sygnatury dostępu współdzielonego konta. Definicja jest ustawiana na koncie <YourStorageAccountName> magazynu zarządzanego usługi Key Vault w magazynie <YourKeyVaultName>kluczy .
  • Ustaw definicję sygnatury dostępu współdzielonego magazynu zarządzanego usługi Key Vault w magazynie. Definicja zawiera identyfikator URI szablonu utworzonego tokenu sygnatury dostępu współdzielonego. Definicja ma typ account sygnatury dostępu współdzielonego i jest ważna przez N dni.
  • Sprawdź, czy sygnatura dostępu współdzielonego została zapisana w magazynie kluczy jako wpis tajny.

Definiowanie szablonu definicji sygnatury dostępu współdzielonego

Usługa Key Vault używa szablonu definicji sygnatury dostępu współdzielonego do generowania tokenów dla aplikacji klienckich.

Przykład szablonu definicji sygnatury dostępu współdzielonego:

"sv=2018-03-28&ss=bfqt&srt=sco&sp=rw&spr=https"

Szablon definicji sygnatury dostępu współdzielonego zostanie przekazany do parametru --template-uri w następnym kroku.

Parametry sygnatury dostępu współdzielonego konta wymagane w szablonie definicji sygnatury dostępu współdzielonego dla usługi Key Vault

Parametr zapytania sygnatury dostępu współdzielonego opis
SignedVersion (sv) Wymagane. Określa podpisaną wersję usługi magazynu, która ma być używana do autoryzacji żądań wysyłanych za pomocą tej sygnatury dostępu współdzielonego konta. Musi być ustawiona na wersję 2015-04-05 lub nowszą. Usługa Key Vault obsługuje wersje nie później niż 2018-03-28
SignedServices (ss) Wymagany. Określa podpisane usługi dostępne dla sygnatury dostępu współdzielonego konta. Możliwe wartości to:

— Obiekt blob (b)
- Kolejka (q)
- Tabela (t)
- Plik (f)

Możesz połączyć wartości, aby zapewnić dostęp do więcej niż jednej usługi. Na przykład ss=bf określa dostęp do punktów końcowych obiektów blob i plików.
SignedResourceTypes (srt) Wymagany. Określa podpisane typy zasobów, które są dostępne dla sygnatury dostępu współdzielonego konta.

- Service (s): Access to service-level APIs (na przykład Get/Set Service Properties, Get Service Stats, List Containers/Queues/Tables/Shares)
— Kontener (c): dostęp do interfejsów API na poziomie kontenera (na przykład tworzenie/usuwanie kontenera, tworzenie/usuwanie kolejki, tworzenie/usuwanie tabeli, tworzenie/usuwanie udziału, wyświetlanie listy obiektów blob/plików i katalogów)
- Obiekt (o): dostęp do interfejsów API na poziomie obiektu dla obiektów blob, komunikatów w kolejce, jednostek tabeli i plików (na przykład Put Blob, Query Entity, Get Messages, Create File itp.)

Możesz połączyć wartości, aby zapewnić dostęp do więcej niż jednego typu zasobu. Na przykład srt=sc określa dostęp do zasobów usługi i kontenera.
SignedPermission (sp) Wymagany. Określa podpisane uprawnienia dla sygnatury dostępu współdzielonego konta. Uprawnienia są prawidłowe tylko wtedy, gdy są zgodne z określonym typem zasobu podpisanego; w przeciwnym razie są ignorowane.

- Odczyt (r): prawidłowe dla wszystkich podpisanych typów zasobów (usługa, kontener i obiekt). Zezwala na uprawnienia odczytu do określonego typu zasobu.
- Zapis (w): prawidłowy dla wszystkich podpisanych typów zasobów (usługa, kontener i obiekt). Zezwala na uprawnienia zapisu do określonego typu zasobu.
- Usuń (d): Prawidłowe dla typów zasobów kontenera i obiektu, z wyjątkiem komunikatów w kolejce.
- Trwałe usuwanie (y): prawidłowe dla typu zasobu obiektu blob tylko.
- Lista (l): Prawidłowa tylko dla typów zasobów usługi i kontenera.
- Dodaj (a): Prawidłowe tylko dla następujących typów zasobów obiektów: komunikaty kolejki, jednostki tabeli i uzupełnialne obiekty blob.
- Utwórz (c): Prawidłowe tylko dla następujących typów zasobów obiektów: obiekty blob i pliki. Użytkownicy mogą tworzyć nowe obiekty blob lub pliki, ale nie mogą zastępować istniejących obiektów blob ani plików.
- Aktualizacja (u): Prawidłowa dla następujących typów zasobów obiektów: komunikaty kolejki i jednostki tabeli.
- Proces (p): Prawidłowy tylko dla następującego typu zasobu Obiektu: komunikaty kolejki.
- Tag (t): prawidłowy tylko dla następującego typu zasobu obiektu: obiekty blob. Zezwala na operacje tagów obiektów blob.
- Filter (f): Valid for the following Object resource type only: blob( Prawidłowy dla następującego typu zasobu obiektu: blob. Zezwala na filtrowanie według tagu obiektu blob.
- Ustaw zasady niezmienności (i): Prawidłowe tylko dla następującego typu zasobu obiektu: obiekt blob. Zezwala na ustawianie/usuwanie zasad niezmienności i archiwizację ze względów prawnych dla obiektu blob.
SignedProtocol (spr) Opcjonalny. Określa protokół dozwolony dla żądania złożonego z sygnaturą dostępu współdzielonego konta. Możliwe wartości to tylko HTTPS i HTTP (https,http) lub HTTPS (https). Domyślna wartość to https,http.

Tylko protokół HTTP nie jest dozwoloną wartością.

Aby uzyskać więcej informacji na temat sygnatury dostępu współdzielonego konta, zobacz: Tworzenie sygnatury dostępu współdzielonego konta

Uwaga

Usługa Key Vault ignoruje parametry okresu istnienia, takie jak "Wygaśnięcie podpisanego", "Podpisany start" i parametry wprowadzone po wersji 2018-03-28

Ustawianie definicji sygnatury dostępu współdzielonego w usłudze Key Vault

Użyj polecenia az keyvault storage sas-definition create interfejsu wiersza polecenia platformy Azure, przekazując szablon definicji sygnatury dostępu współdzielonego z poprzedniego kroku do parametru--template-uri, aby utworzyć definicję sygnatury dostępu współdzielonego. Możesz podać wybraną nazwę parametru -n .

az keyvault storage sas-definition create --vault-name <YourKeyVaultName> --account-name <YourStorageAccountName> -n <YourSASDefinitionName> --validity-period P2D --sas-type account --template-uri <sasDefinitionTemplate>

Weryfikowanie definicji sygnatury dostępu współdzielonego

Możesz sprawdzić, czy definicja sygnatury dostępu współdzielonego została zapisana w magazynie kluczy przy użyciu polecenia az keyvault storage sas-definition show interfejsu wiersza polecenia platformy Azure.

Teraz możesz użyć polecenia az keyvault storage sas-definition show i id właściwości , aby wyświetlić zawartość tego wpisu tajnego.

az keyvault storage sas-definition show --id https://<YourKeyVaultName>.vault.azure.net/storage/<YourStorageAccountName>/sas/<YourSASDefinitionName>

Następne kroki