Zarządzanie usługą 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 usługi Key Vault do wykonywania następujących zadań:
- Tworzenie magazynu 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 programu PowerShell usługi Key Vault opisane w tym artykule znajdują się w zestawie AZURE PowerShell SDK.
Wymagania wstępne
- Musisz zasubskrybować ofertę obejmującą usługę Azure Key Vault.
- Zainstaluj program PowerShell dla usługi Azure Stack Hub.
- Skonfiguruj środowisko programu PowerShell usługi Azure Stack Hub.
Włączanie subskrypcji dzierżawy dla operacji usługi Key Vault
Aby można było wydać 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 twoja subskrypcja jest włączona na potrzeby operacji magazynu, w danych wyjściowych zostanie wyświetlona wartość RegistrationState jest zarejestrowana dla wszystkich typów zasobów magazynu kluczy.
Jeśli operacje magazynu nie są włączone, wykonaj 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:
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 usługi 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
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
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 identyfikatora URI magazynu, która znajduje się https://vault01.vault.local.azurestack.external
w tym przykładzie.
Wdrożenie usług 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 -Destination
służy do określania, że klucz jest chroniony przez oprogramowanie. Po pomyślnym utworzeniu klucza polecenie zwraca szczegóły utworzonego klucza.
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 pobrać bieżącą wersję. - Użyj
https://vault010.vault.local.azurestack.external:443/keys/key01/d0b36ee2e3d14e9f967b8b6b1d38938a
polecenia , 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
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ę do uzyskiwania 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 00001111-aaaa-2222-bbbb-3333cc4444. 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 usług AD FS należy podać parametr BypassObjectIdValidation
Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -ServicePrincipalName 00001111-aaaa-2222-bbbb-3333cccc4444 -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