Zarządzanie Key Vault w usłudze Azure Stack Hub przy użyciu programu PowerShell

W tym artykule opisano sposób tworzenia magazynu kluczy i zarządzania nim w usłudze Azure Stack Hub przy użyciu programu PowerShell. Dowiesz się, jak używać poleceń cmdlet programu PowerShell Key Vault do:

  • Utwórz magazyn kluczy.
  • Przechowywanie kluczy kryptograficznych i wpisów tajnych oraz zarządzanie nimi.
  • Autoryzuj użytkowników lub aplikacje do wywoływania operacji w magazynie.

Uwaga

Polecenia cmdlet Key Vault programu PowerShell opisane w tym artykule znajdują się w zestawie SDK Azure PowerShell.

Wymagania wstępne

Włączanie subskrypcji dzierżawy na potrzeby operacji Key Vault

Aby można było wystawiać jakiekolwiek operacje względem magazynu kluczy, należy upewnić się, że subskrypcja dzierżawy jest włączona na potrzeby operacji magazynu. Aby sprawdzić, czy operacje magazynu kluczy są włączone, uruchom następujące polecenie:

Get-AzResourceProvider -ProviderNamespace Microsoft.KeyVault | ft -Autosize

Jeśli subskrypcja jest włączona dla operacji magazynu, dane wyjściowe zawierają wartość RegistrationState jest zarejestrowana dla wszystkich typów zasobów magazynu kluczy.

Stan rejestracji magazynu kluczy w programie PowerShell

Jeśli operacje magazynu nie są włączone, wydaj następujące polecenie, aby zarejestrować usługę Key Vault w ramach subskrypcji:

Register-AzResourceProvider -ProviderNamespace Microsoft.KeyVault

Jeśli rejestracja zakończy się pomyślnie, zwracane są następujące dane wyjściowe:

Rejestracja magazynu kluczy w programie PowerShell zakończyła się pomyślnie

Podczas wywoływania poleceń magazynu kluczy może zostać wyświetlony błąd, taki jak "Subskrypcja nie jest zarejestrowana do używania przestrzeni nazw "Microsoft.KeyVault". Jeśli wystąpi błąd, upewnij się, że włączono dostawcę zasobów Key Vault, postępując zgodnie z poprzednimi instrukcjami.

Tworzenie magazynu kluczy

Przed utworzeniem magazynu kluczy utwórz grupę zasobów, aby wszystkie zasoby powiązane z magazynem kluczy istniały w grupie zasobów. Użyj następującego polecenia, aby utworzyć nową grupę zasobów:

New-AzResourceGroup -Name "VaultRG" -Location local -verbose -Force

Nowa grupa zasobów wygenerowana w programie PowerShell

Teraz użyj następującego polecenia cmdlet, aby utworzyć magazyn kluczy w utworzonej wcześniej grupie zasobów. To polecenie odczytuje trzy obowiązkowe parametry: nazwę grupy zasobów, nazwę magazynu kluczy i lokalizację geograficzną.

Uruchom następujące polecenie, aby utworzyć magazyn kluczy:

New-AzKeyVault -VaultName "Vault01" -ResourceGroupName "VaultRG" -Location local -verbose

Nowy magazyn kluczy wygenerowany w programie PowerShell

Dane wyjściowe tego polecenia pokazują właściwości utworzonego magazynu kluczy. Gdy aplikacja uzyskuje dostęp do tego magazynu, musi użyć właściwości URI magazynu , która znajduje się https://vault01.vault.local.azurestack.external w tym przykładzie.

wdrażanie Active Directory Federation Services (AD FS)

W przypadku wdrożenia usług AD FS może zostać wyświetlone następujące ostrzeżenie: "Zasady dostępu nie są ustawione. Żaden użytkownik lub aplikacja nie ma uprawnień dostępu do korzystania z tego magazynu". Aby rozwiązać ten problem, ustaw zasady dostępu dla magazynu przy użyciu polecenia Set-AzKeyVaultAccessPolicy :

# Obtain the security identifier(SID) of the active directory user
$adUser = Get-ADUser -Filter "Name -eq '{Active directory user name}'"
$objectSID = $adUser.SID.Value

# Set the key vault access policy
Set-AzKeyVaultAccessPolicy -VaultName "{key vault name}" -ResourceGroupName "{resource group name}" -ObjectId "{object SID}" -PermissionsToKeys {permissionsToKeys} -PermissionsToSecrets {permissionsToSecrets} -BypassObjectIdValidation

Zarządzanie kluczami i wpisami tajnymi

Po utworzeniu magazynu wykonaj następujące kroki, aby utworzyć klucze i wpisy tajne w magazynie oraz zarządzać nimi.

Utwórz klucz

Użyj polecenia cmdlet Add-AzureKeyVaultKey , aby utworzyć lub zaimportować klucz chroniony przez oprogramowanie w magazynie kluczy:

Add-AzureKeyVaultKey -VaultName "Vault01" -Name "Key01" -verbose -Destination Software

Parametr służy do określania -Destination , że klucz jest chroniony przez oprogramowanie. Po pomyślnym utworzeniu klucza polecenie zwraca szczegóły utworzonego klucza.

Nowy klucz magazynu kluczy wygenerowany w programie PowerShell

Teraz możesz odwołać się do utworzonego klucza przy użyciu jego identyfikatora URI. Jeśli tworzysz lub importujesz klucz o takiej samej nazwie jak istniejący klucz, oryginalny klucz zostanie zaktualizowany o wartości określone w nowym kluczu. Dostęp do poprzedniej wersji można uzyskać przy użyciu identyfikatora URI specyficznego dla wersji klucza. Na przykład:

  • Użyj polecenia https://vault10.vault.local.azurestack.external:443/keys/key01 , aby zawsze uzyskać bieżącą wersję.
  • Użyj polecenia https://vault010.vault.local.azurestack.external:443/keys/key01/d0b36ee2e3d14e9f967b8b6b1d38938a , aby uzyskać tę konkretną wersję.

Uzyskiwanie klucza

Użyj polecenia cmdlet Get-AzureKeyVaultKey , aby odczytać klucz i jego szczegóły:

Get-AzureKeyVaultKey -VaultName "Vault01" -Name "Key01"

Utwórz klucz tajny

Użyj polecenia cmdlet Set-AzureKeyVaultSecret , aby utworzyć lub zaktualizować wpis tajny w magazynie. Wpis tajny jest tworzony, jeśli jeszcze nie istnieje. Zostanie utworzona nowa wersja wpisu tajnego, jeśli już istnieje:

$secretvalue = ConvertTo-SecureString "User@123" -AsPlainText -Force
Set-AzureKeyVaultSecret -VaultName "Vault01" -Name "Secret01" -SecretValue $secretvalue

Tworzenie wpisu tajnego w programie PowerShell

Uzyskiwanie wpisu tajnego

Użyj polecenia cmdlet Get-AzureKeyVaultSecret , aby odczytać wpis tajny w magazynie kluczy. To polecenie może zwrócić wszystkie lub określone wersje wpisu tajnego:

Get-AzureKeyVaultSecret -VaultName "Vault01" -Name "Secret01"

Po utworzeniu kluczy i wpisów tajnych możesz autoryzować aplikacje zewnętrzne do ich używania.

Autoryzowanie aplikacji do używania klucza lub wpisu tajnego

Użyj następującego polecenia cmdlet, aby autoryzować aplikację w celu uzyskania dostępu do klucza lub wpisu tajnego w magazynie kluczy.

W poniższym przykładzie nazwa magazynu to ContosoKeyVault, a aplikacja, którą chcesz autoryzować, ma identyfikator klienta 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed. Aby autoryzować aplikację, uruchom następujące polecenie. Można również określić parametr PermissionsToKeys , aby ustawić uprawnienia dla użytkownika, aplikacji lub grupy zabezpieczeń.

W przypadku używania polecenia cmdlet względem skonfigurowanego środowiska usługi Azure Stack Hub w usługach AD FS należy podać parametr BypassObjectIdValidation

Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -ServicePrincipalName 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed -PermissionsToKeys decrypt,sign -BypassObjectIdValidation

Jeśli chcesz autoryzować tę samą aplikację do odczytywania wpisów tajnych w magazynie, uruchom następujące polecenie cmdlet:

Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -ServicePrincipalName 8f8c4bbd-485b-45fd-98f7-ec6300 -PermissionsToKeys Get -BypassObjectIdValidation

Następne kroki