Używanie usługi Azure Key Vault do dostarczania certyfikatów TLS/SSL do maszyny wirtualnej JVM

W tym artykule opisano sposób integrowania usługi Azure Key Vault z maszyną wirtualną JVM w celu dostarczania certyfikatów TLS/SSL.

Dodawanie dostawcy JCA do pliku java.security

Aby zarejestrować dostawcę JCA, należy wiedzieć o nim maszynę JVM. Aby wykonać to zadanie, wykonaj następujące czynności:

  1. Utwórz kopię pliku java.security w instalacji JVM i nadaj plikowi nazwę my.java.security.

  2. Wewnątrz pliku wyszukaj wiersz security.provider.<maximum-value>. <maximum-value> Zastąp symbol zastępczy wartością maksymalną na tej pozycji we wszystkich pozycjach. Na przykład: security.provider.13=SunPKCS11.

  3. Zwiększa liczbę tego wpisu o 1. Na przykład security.provider.13 powinna stać się .security.provider.14

  4. Dodaj następujący wiersz:

    security.provider.14=com.azure.security.keyvault.jca.KeyVaultJcaProvider
    

Uwaga

Upewnij się, że każdy security.provider.<X> wpis ma inną wartość liczbową dla <X>elementu i zachowaj je przyrostowo uporządkowane, zaczynając od 1.

Jak uruchomić aplikację

Aby uruchomić aplikację, wykonaj następujące kroki i zastąp <...> symbole zastępcze własnymi wartościami:

  1. Dodaj plik azure-security-keyvault-jca-X.Y.Z.jar do ścieżki klasy. Jeśli na przykład chcesz zintegrować z serwerem Tomcat 9, dodaj pełną ścieżkę pliku azure-security-keyvault-jca-X.Y.Z.jar do ścieżki klasy Java przy użyciu pliku tomcat9w.exe.

  2. Dodaj -Djava.security.properties==my.java.security do wiersza polecenia.

  3. Dodaj -Dazure.keyvault.uri=<your-keyvault-uri> do wiersza polecenia, aby wskazać, którego usługi Azure Key Vault użyć. Na przykład: -Dazure.keyvault.uri=https://some.vault.azure.net/.

  4. Dodaj argumenty wskazane na poniższej liście w zależności od scenariusza:

    • W przypadku uwierzytelniania przy użyciu jednostki usługi dodaj następujące argumenty:

      • -Dazure.keyvault.tenant-id=<your-tenant-id>
      • -Dazure.keyvault.client-id=<your-client-id>
      • -Dazure.keyvault.client-secret=<your-client-secret>
    • W przypadku uwierzytelniania przy użyciu tożsamości zarządzanej przypisanej przez system nie są wymagane żadne argumenty.

    • W przypadku uwierzytelniania przy użyciu tożsamości zarządzanej przypisanej przez użytkownika dodaj następujący argument:

      • -Dazure.keyvault.managed-identity=<object-id-of-your-user-managed-identity>

Aby uzyskać więcej informacji na temat tych scenariuszy uwierzytelniania, zobacz Application and service principal objects in Microsoft Entra ID and How managed identities for Azure resources work with Azure virtual machines (Jak tożsamości zarządzane dla zasobów platformy Azure działają z maszynami wirtualnymi platformy Azure).

Korzystanie z jednostki usługi

Aby utworzyć identyfikator klienta platformy Azure i wpis tajny klienta platformy Azure, użyj następującego polecenia, zastępując <...> symbole zastępcze własnymi wartościami. Pamiętaj, aby przechowywać zwrócone wartości, takie jak appId, password, tenant.

export CLIENT_NAME=<your-client-name>
az ad sp create-for-rbac --skip-assignment --name ${CLIENT_NAME}
export CLIENT_ID=$(az ad sp list --display-name ${CLIENT_NAME} | jq -r '.[0].appId')
az ad app credential reset --id ${CLIENT_ID}

Zapisz zwrócone wartości, aby można było ich użyć później.

Upewnij się, że klient określony przez program CLIENT_ID może uzyskać dostęp do docelowego magazynu kluczy. Aby udzielić dostępu, użyj następującego polecenia, zastępując <your-key-vault-name> symbol zastępczy:

az keyvault set-policy \
    --name <your-key-vault-name> \
    --spn ${CLIENT_ID} \
    --secret-permissions get list \
    --certificate-permissions get list \
    --key-permissions get list

Korzystanie z tożsamości zarządzanej

Aby włączyć tożsamość zarządzaną przypisaną przez system lub utworzyć tożsamość zarządzaną przypisaną przez użytkownika, postępuj zgodnie z instrukcjami w temacie Konfigurowanie tożsamości zarządzanych dla zasobów platformy Azure na maszynie wirtualnej platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure

Po otrzymaniu identyfikatora obiektu tożsamości zarządzanej użyj następującego polecenia, aby utworzyć zasady dostępu usługi Key Vault dla tożsamości zarządzanej:

az keyvault set-policy \
    --name <your-key-vault-name> \
    --object-id <object-id-of-your-managed-identity> \
    --secret-permissions get list \
    --certificate-permissions get list \
    --key-permissions get list

Uwaga

Identyfikator obiektu tożsamości zarządzanej jest również nazywany identyfikatorem podmiotu zabezpieczeń podczas korzystania z tożsamości zarządzanej przypisanej przez użytkownika.

Przykłady protokołu TLS/SSL po stronie klienta/serwera

Przykłady protokołu TLS/SSL po stronie klienta/serwera można znaleźć w sekcji Przykłady biblioteki klienta JCA usługi Azure Key Vault dla języka Java.

Następne kroki