Zarządzanie usługą Key Vault przy użyciu interfejsu wiersza polecenia platformy Azure

W tym artykule opisano, jak rozpocząć pracę z usługą Azure Key Vault przy użyciu interfejsu wiersza polecenia platformy Azure. Możesz zobaczyć informacje na temat:

  • Jak utworzyć kontener ze wzmocnionym zabezpieczeniami (magazyn) na platformie Azure
  • Dodawanie klucza, wpisu tajnego lub certyfikatu do magazynu kluczy
  • Rejestrowanie aplikacji przy użyciu identyfikatora Entra firmy Microsoft
  • Autoryzowanie aplikacji do używania klucza lub wpisu tajnego
  • Ustawianie zaawansowanych zasad dostępu magazynu kluczy
  • Praca z sprzętowymi modułami zabezpieczeń (HSM)
  • Usuwanie magazynu kluczy i skojarzonych kluczy i wpisów tajnych
  • Różne polecenia międzyplatformowe interfejsu wiersza polecenia platformy Azure

Usługa Azure Key Vault jest dostępna w większości regionów. Aby uzyskać więcej informacji, zobacz stronę Cennik usługi Key Vault.

Uwaga

Ten artykuł nie zawiera instrukcji dotyczących sposobu pisania aplikacji platformy Azure, która zawiera jeden z kroków, który pokazuje, jak autoryzować aplikację do używania klucza lub wpisu tajnego w magazynie kluczy.

Aby zapoznać się z omówieniem usługi Azure Key Vault, zobacz Co to jest usługa Azure Key Vault?) Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Wymagania wstępne

Aby użyć poleceń interfejsu wiersza polecenia platformy Azure w tym artykule, musisz mieć następujące elementy:

Uzyskiwanie pomocy dotyczącej międzyplatformowego interfejsu wiersza polecenia platformy Azure

W tym artykule założono, że znasz interfejs wiersza polecenia (Bash, Terminal, Wiersz polecenia).

Parametr --help lub -h może służyć do wyświetlania pomocy dla określonych poleceń. Alternatywnie można również użyć formatu pomoc platformy Azure [command] [options] . Jeśli masz wątpliwości co do parametrów wymaganych przez polecenie, zapoznaj się z pomocą. Na przykład wszystkie następujące polecenia zwracają te same informacje:

az account set --help
az account set -h

Możesz również przeczytać następujące artykuły, aby zapoznać się z usługą Azure Resource Manager w interfejsie wiersza polecenia międzyplatformowym platformy Azure:

Jak utworzyć kontener ze wzmocnionym zabezpieczeniami (magazyn) na platformie Azure

Magazyny są zabezpieczone kontenerami wspieranymi przez sprzętowe moduły zabezpieczeń. Magazyny zmniejszają prawdopodobieństwo przypadkowej utraty danych zabezpieczeń dzięki centralizacji przechowywania wpisów tajnych aplikacji. Magazyny usługi Key Vault umożliwiają także kontrolowanie i rejestrowanie dostępu do wszelkich elementów, które są w nich przechowywane. Usługa Azure Key Vault obsługuje żądania i odnawianie certyfikatów protokołu TLS (Transport Layer Security), udostępniając funkcje wymagane przez niezawodne rozwiązania do zarządzania cyklem życia certyfikatu. W następnych krokach utworzysz magazyn.

Nawiązywanie połączenia z subskrypcjami

Aby zalogować się interaktywnie, użyj następującego polecenia:

az login

Aby zalogować się przy użyciu konta organizacyjnego, możesz przekazać swoją nazwę użytkownika i hasło.

az login -u username@domain.com -p password

Jeśli masz więcej niż jedną subskrypcję i musisz określić, która z nich ma być używana, wpisz następujące polecenie, aby wyświetlić subskrypcje dla konta:

az account list

Określ subskrypcję z parametrem subskrypcji.

az account set --subscription <subscription name or ID>

Aby uzyskać więcej informacji na temat konfigurowania międzyplatformowego interfejsu wiersza polecenia platformy Azure, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Tworzenie nowej grupy zasobów

W przypadku korzystania z usługi Azure Resource Manager wszystkie powiązane zasoby są tworzone wewnątrz grupy zasobów. Magazyn kluczy można utworzyć w istniejącej grupie zasobów. Jeśli chcesz użyć nowej grupy zasobów, możesz utworzyć nową.

az group create -n "ContosoResourceGroup" -l "East Asia"

Pierwszy parametr to nazwa grupy zasobów, a drugi parametr to lokalizacja. Aby uzyskać listę wszystkich możliwych lokalizacji, wpisz:

az account list-locations

Rejestrowanie dostawcy zasobów usługi Key Vault

Podczas próby utworzenia nowego magazynu kluczy może zostać wyświetlony błąd "Subskrypcja nie jest zarejestrowana do używania przestrzeni nazw "Microsoft.KeyVault". Jeśli pojawi się ten komunikat, upewnij się, że dostawca zasobów usługi Key Vault jest zarejestrowany w subskrypcji. Jest to jednorazowa operacja dla każdej subskrypcji.

az provider register -n Microsoft.KeyVault

Tworzenie magazynu kluczy

Użyj polecenia , az keyvault create aby utworzyć magazyn kluczy. Ten skrypt ma trzy obowiązkowe parametry: nazwę grupy zasobów, nazwę magazynu kluczy i lokalizację geograficzną.

Aby utworzyć nowy magazyn o nazwie ContosoKeyVault, w grupie zasobów ContosoResourceGroup znajdującej się w lokalizacji Azja Wschodnia wpisz:

az keyvault create --name "ContosoKeyVault" --resource-group "ContosoResourceGroup" --location "East Asia"

Dane wyjściowe tego polecenia pokazują właściwości utworzonego magazynu kluczy. Dwie najważniejsze właściwości to:

  • name: W tym przykładzie nazwa to ContosoKeyVault. Użyjesz tej nazwy dla innych poleceń usługi Key Vault.
  • vaultUri: w przykładzie identyfikator URI to https://contosokeyvault.vault.azure.net. Aplikacje korzystające z magazynu za pomocą jego interfejsu API REST muszą używać tego identyfikatora URI.

Twoje konto platformy Azure ma teraz uprawnienia do wykonywania dowolnych operacji na tym magazynie kluczy. Od tej pory nikt inny nie jest autoryzowany.

Dodawanie klucza, wpisu tajnego lub certyfikatu do magazynu kluczy

Jeśli chcesz, aby usługa Azure Key Vault utworzyła klucz chroniony przez oprogramowanie, użyj az key create polecenia .

az keyvault key create --vault-name "ContosoKeyVault" --name "ContosoFirstKey" --protection software

Jeśli masz istniejący klucz w pliku pem, możesz przekazać go do usługi Azure Key Vault. Klucz można chronić za pomocą oprogramowania lub modułu HSM. W tym przykładzie importuje klucz z pliku pem i chroń go za pomocą oprogramowania, używając hasła "hVFkk965BuUv":

az keyvault key import --vault-name "ContosoKeyVault" --name "ContosoFirstKey" --pem-file "./softkey.pem" --pem-password "hVFkk965BuUv" --protection software

Teraz możesz odwołać się do klucza utworzonego lub przekazanego do usługi Azure Key Vault przy użyciu jego identyfikatora URI. Użyj polecenia https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey , aby zawsze pobrać bieżącą wersję. Użyj https://<keyvault-name>.vault.azure.net/keys/<keyname>/<key-unique-id> polecenia , aby uzyskać tę konkretną wersję. Na przykład https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey/cgacf4f763ar42ffb0a1gca546aygd87.

Dodaj wpis tajny do magazynu, który jest hasłem o nazwie SQLPassword i ma wartość "hVFkk965BuUv" do usługi Azure Key Vault.

az keyvault secret set --vault-name "ContosoKeyVault" --name "SQLPassword" --value "hVFkk965BuUv "

Odwołuj się do tego hasła przy użyciu jego identyfikatora URI. Użyj polecenia https://ContosoVault.vault.azure.net/secrets/SQLPassword , aby zawsze pobrać bieżącą wersję i https://<keyvault-name>.vault.azure.net/secret/<secret-name>/<secret-unique-id> pobrać tę konkretną wersję. Na przykład https://ContosoVault.vault.azure.net/secrets/SQLPassword/90018dbb96a84117a0d2847ef8e7189d.

Zaimportuj certyfikat do magazynu przy użyciu pliku pem lub pfx.

az keyvault certificate import --vault-name "ContosoKeyVault" --file "c:\cert\cert.pfx" --name "ContosoCert" --password "hVFkk965BuUv"

Wyświetlmy utworzony klucz, wpis tajny lub certyfikat:

  • Aby wyświetlić klucze, wpisz:
az keyvault key list --vault-name "ContosoKeyVault"
  • Aby wyświetlić wpisy tajne, wpisz:
az keyvault secret list --vault-name "ContosoKeyVault"
  • Aby wyświetlić certyfikaty, wpisz:
az keyvault certificate list --vault-name "ContosoKeyVault"

Rejestrowanie aplikacji przy użyciu identyfikatora Entra firmy Microsoft

Ten krok będzie zazwyczaj wykonywany przez programistę na innym komputerze. Nie jest ona specyficzna dla usługi Azure Key Vault, ale jest tu uwzględniona na potrzeby świadomości. Aby ukończyć rejestrację aplikacji, twoje konto, magazyn i aplikacja muszą znajdować się w tym samym katalogu platformy Azure.

Aplikacje korzystające z magazynu kluczy muszą uwierzytelniać się przy użyciu tokenu z identyfikatora Entra firmy Microsoft. Właściciel aplikacji musi najpierw zarejestrować ją w firmie Microsoft Entra. Na koniec rejestracji właściciel aplikacji otrzymuje następujące wartości:

  • Identyfikator aplikacji (znany również jako identyfikator klienta entra firmy Microsoft lub identyfikator aplikacji)
  • Klucz uwierzytelniania (nazywany też wspólnym wpisem tajnym).

Aby uzyskać token, aplikacja musi przedstawić obie te wartości identyfikatorowi Entra firmy Microsoft. Sposób konfigurowania aplikacji w celu uzyskania tokenu zależy od aplikacji. W przypadku przykładowej aplikacji usługi Key Vault właściciel aplikacji ustawia te wartości w pliku app.config.

Aby uzyskać szczegółowe instrukcje dotyczące rejestrowania aplikacji w usłudze Microsoft Entra ID, zapoznaj się z artykułami zatytułowanymi Integrowanie aplikacji z identyfikatorem Entra firmy Microsoft, użyj portalu, aby utworzyć aplikację i jednostkę usługi Firmy Microsoft Entra, która może uzyskiwać dostęp do zasobów, i utworzyć jednostkę usługi platformy Azure za pomocą interfejsu wiersza polecenia platformy Azure.

Aby zarejestrować aplikację w usłudze Microsoft Entra ID:

az ad sp create-for-rbac -n "MyApp" --password "hVFkk965BuUv" --role Contributor --scopes /subscriptions/<subscription id>
# If you don't specify a password, one will be created for you.

Autoryzowanie aplikacji do używania klucza lub wpisu tajnego

Aby autoryzować aplikację do uzyskiwania dostępu do klucza lub wpisu tajnego w magazynie, użyj az keyvault set-policy polecenia .

Jeśli na przykład nazwa magazynu to ContosoKeyVault i chcesz autoryzować aplikację do odszyfrowywania i podpisywania za pomocą kluczy w magazynie, użyj następującego polecenia z identyfikatorem aplikacji:

az keyvault set-policy --name "ContosoKeyVault" --spn {application-id} --key-permissions decrypt sign

Aby autoryzować tę samą aplikację do odczytywania wpisów tajnych w magazynie, wpisz następujące polecenie:

az keyvault set-policy --name "ContosoKeyVault" --spn {application-id} --secret-permissions get

Ustawianie zaawansowanych zasad dostępu magazynu kluczy

Użyj polecenia az keyvault update , aby włączyć zaawansowane zasady dla magazynu kluczy.

Włącz usługę Key Vault na potrzeby wdrożenia: umożliwia maszynom wirtualnym pobieranie certyfikatów przechowywanych jako wpisy tajne z magazynu.

az keyvault update --name "ContosoKeyVault" --resource-group "ContosoResourceGroup" --enabled-for-deployment "true"

Włącz usługę Key Vault na potrzeby szyfrowania dysków: wymagane w przypadku korzystania z magazynu na potrzeby szyfrowania dysków platformy Azure.

az keyvault update --name "ContosoKeyVault" --resource-group "ContosoResourceGroup" --enabled-for-disk-encryption "true"

Włącz usługę Key Vault na potrzeby wdrażania szablonu: umożliwia usłudze Resource Manager pobieranie wpisów tajnych z magazynu.

az keyvault update --name "ContosoKeyVault" --resource-group "ContosoResourceGroup" --enabled-for-template-deployment "true"

Praca z sprzętowymi modułami zabezpieczeń (HSM)

Aby zapewnić dodatkową gwarancję, można importować lub generować klucze ze sprzętowych modułów zabezpieczeń (HSM), które nigdy nie opuszczają granicy modułu HSM. Moduły HSM są weryfikowane ze standardem FIPS 140. Jeżeli te wymagania nie odnoszą się do Ciebie, pomiń tę sekcję i przejdź do sekcji Usuwanie magazynu kluczy oraz skojarzonych kluczy i kluczy tajnych.

Aby utworzyć klucze chronione przez moduł HSM, musisz mieć subskrypcję magazynu obsługującą klucze chronione przez moduł HSM.

Podczas tworzenia magazynu kluczy dodaj parametr "sku":

az keyvault create --name "ContosoKeyVaultHSM" --resource-group "ContosoResourceGroup" --location "East Asia" --sku "Premium"

Do tego magazynu możesz dodać klucze chronione oprogramowaniem (jak pokazano wcześniej) oraz klucze chronione modułem HSM. Aby utworzyć klucz chroniony przez moduł HSM, ustaw parametr docelowy na wartość "HSM":

az keyvault key create --vault-name "ContosoKeyVaultHSM" --name "ContosoFirstHSMKey" --protection "hsm"

Możesz użyć następującego polecenia, aby zaimportować klucz z pliku pem na komputerze. To polecenie importuje klucz do modułu HSM w usłudze Key Vault:

az keyvault key import --vault-name "ContosoKeyVaultHSM" --name "ContosoFirstHSMKey" --pem-file "/.softkey.pem" --protection "hsm" --pem-password "PaSSWORD"

Następne polecenie importuje pakiet "bring your own key" (BYOK). Umożliwia to wygenerowanie własnego klucza w lokalnym module HSM i przeniesienie go do modułów HSM w usłudze Key Vault bez opuszczania przez klucz granic modułu HSM:

az keyvault key import --vault-name "ContosoKeyVaultHSM" --name "ContosoFirstHSMKey" --byok-file "./ITByok.byok" --protection "hsm"

Aby uzyskać bardziej szczegółowe instrukcje dotyczące generowania tego pakietu BYOK, zobacz How to use HSM-Protected Keys with Azure Key Vault (Jak używać kluczy chronionych przez moduł HSM w usłudze Azure Key Vault).

Usuwanie magazynu kluczy i skojarzonych kluczy i wpisów tajnych

Jeśli magazyn kluczy i jego klucze lub wpisy tajne nie są już potrzebne, możesz usunąć magazyn kluczy przy użyciu az keyvault delete polecenia :

az keyvault delete --name "ContosoKeyVault"

Możesz także usunąć całą grupę zasobów platformy Azure zawierającą magazyn kluczy oraz inne zasoby, które zostały dodane do tej grupy:

az group delete --name "ContosoResourceGroup"

Różne polecenia międzyplatformowe interfejsu wiersza polecenia platformy Azure

Inne polecenia, które mogą okazać się przydatne do zarządzania usługą Azure Key Vault.

To polecenie wyświetla tabelaryczny widok wszystkich kluczy i wybranych właściwości:

az keyvault key list --vault-name "ContosoKeyVault"

To polecenie wyświetla pełną listę właściwości określonego klucza:

az keyvault key show --vault-name "ContosoKeyVault" --name "ContosoFirstKey"

To polecenie wyświetla tabelaryczny widok wszystkich nazw wpisów tajnych i wybranych właściwości:

az keyvault secret list --vault-name "ContosoKeyVault"

Oto przykład sposobu usuwania określonego klucza:

az keyvault key delete --vault-name "ContosoKeyVault" --name "ContosoFirstKey"

Oto przykład sposobu usuwania określonego wpisu tajnego:

az keyvault secret delete --vault-name "ContosoKeyVault" --name "SQLPassword"

Następne kroki