Megosztás:


Rövid útmutató: Azure Key Vault titkos ügyfélkódtár Java-hoz

Ismerkedés a Java-hoz készült Azure Key Vault titkos ügyfélkódtárával. Az alábbi lépések végrehajtásával telepítheti a csomagot, és kipróbálhatja az alapműveletek példakódját.

Tip

Ha Egy Spring-alkalmazásban az Azure Key Vault Titkos kulcsok erőforrásaival dolgozik, javasoljuk, hogy a Spring Cloud Azure-t vegye alternatívaként. A Spring Cloud Azure egy nyílt forráskódú projekt, amely zökkenőmentes Spring-integrációt biztosít az Azure-szolgáltatásokkal. Ha többet szeretne megtudni a Spring Cloud Azure-ról, és egy Key Vault titkos kulcsokat használó példát szeretne látni, olvassa el a Titkos kulcs betöltése az Azure Key Vaultból egy Spring Boot-alkalmazásban című témakört.

További források:

Prerequisites

Ez a rövid útmutató feltételezi, hogy Az Azure CLI és az Apache Maven linuxos terminálablakban fut.

Előkészítés

Ez a rövid útmutató az Azure Identity Library és az Azure CLI használatával hitelesíti a felhasználót az Azure Servicesben. A fejlesztők a Visual Studio vagy a Visual Studio Code használatával is hitelesíthetik a hívásaikat. További információ : Az ügyfél hitelesítése az Azure Identity ügyfélkódtárával.

Bejelentkezés az Azure-ba

  1. Futtassa a következő parancsot: login.

    az login
    

    Ha a parancssori felület meg tudja nyitni az alapértelmezett böngészőt, az meg fogja tenni, és betölt egy Azure-bejelentkezési lapot.

    Ellenkező esetben nyisson meg egy böngészőlapot, https://aka.ms/devicelogin és adja meg a terminálban megjelenő engedélyezési kódot.

  2. A böngészőben jelentkezzen be fiókja hitelesítő adataival.

Új Java-konzolalkalmazás létrehozása

A konzolablakban a mvn paranccsal hozzon létre egy új Java-konzolalkalmazást a névvel akv-secrets-java.

mvn archetype:generate -DgroupId=com.keyvault.secrets.quickstart
                       -DartifactId=akv-secrets-java
                       -DarchetypeArtifactId=maven-archetype-quickstart
                       -DarchetypeVersion=1.4
                       -DinteractiveMode=false

A projekt generálásának kimenete a következőhöz hasonlóan fog kinézni:

[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.keyvault.secrets.quickstart
[INFO] Parameter: artifactId, Value: akv-secrets-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.keyvault.secrets.quickstart
[INFO] Parameter: packageInPathFormat, Value: com/keyvault/quickstart
[INFO] Parameter: package, Value: com.keyvault.secrets.quickstart
[INFO] Parameter: groupId, Value: com.keyvault.secrets.quickstart
[INFO] Parameter: artifactId, Value: akv-secrets-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Project created from Archetype in dir: /home/user/quickstarts/akv-secrets-java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  38.124 s
[INFO] Finished at: 2019-11-15T13:19:06-08:00
[INFO] ------------------------------------------------------------------------

Módosítsa a könyvtárat az újonnan létrehozott akv-secrets-java/ mappára.

cd akv-secrets-java

Telepítse a(z) csomagot

Nyissa meg a pom.xml fájlt a szövegszerkesztőben. Adja hozzá a következő függőségi elemeket a függőségek csoportjához.

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-security-keyvault-secrets</artifactId>
      <version>4.2.3</version>
    </dependency>

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-identity</artifactId>
      <version>1.2.0</version>
    </dependency>

Erőforráscsoport és kulcstartó létrehozása

Ez a rövid útmutató egy előre létrehozott Azure Key Vaultot használ. Kulcstárt az alábbi gyors útmutatók lépéseinek követésével hozhat létre:

Másik lehetőségként futtathatja ezeket az Azure CLI-parancsokat.

Important

Minden kulcstartónak egyedi névvel kell rendelkeznie. Cserélje le <az egyedi-keyvault-nevét> a kulcstartó nevére az alábbi példákban.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization true

Hozzáférés biztosítása a kulcstartóhoz

Ha szerepköralapú hozzáférés-vezérléssel (RBAC) szeretne engedélyeket szerezni a kulcstartóhoz, rendeljen hozzá egy szerepkört a "Felhasználónév" (UPN) szolgáltatáshoz az Az role Assignment Create Azure CLI-paranccsal.

az role assignment create --role "Key Vault Secrets Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Cserélje le <a upn>, <subscription-id>, <resource-group-name> és <your-unique-keyvault-name> értékét a tényleges értékekre. Az UPN általában egy e-mail-cím (pl. username@domain.com) formátumban lesz.

Környezeti változók beállítása

Ez az alkalmazás a key vault nevét használja egy úgynevezett KEY_VAULT_NAMEkörnyezeti változóként.

Windows

set KEY_VAULT_NAME=<your-key-vault-name>

Windows PowerShell

$Env:KEY_VAULT_NAME="<your-key-vault-name>"

macOS vagy Linux

export KEY_VAULT_NAME=<your-key-vault-name>

Objektummodell

A Java-hoz készült Azure Key Vault Titkos ügyfélkódtár lehetővé teszi a titkos kódok kezelését. A Kód példák szakasz bemutatja, hogyan hozhat létre ügyfelet, állíthat be egy titkos kulcsot, lekérhet egy titkos kulcsot, és törölheti a titkos kulcsokat.

Példakódok

Irányelvek hozzáadása

Adja hozzá a következő irányelveket a kód elejéhez:

import com.azure.core.util.polling.SyncPoller;
import com.azure.identity.DefaultAzureCredentialBuilder;

import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;
import com.azure.security.keyvault.secrets.models.DeletedSecret;
import com.azure.security.keyvault.secrets.models.KeyVaultSecret;

Ügyfél hitelesítése és létrehozása

A legtöbb Azure-szolgáltatáshoz irányuló alkalmazáskéréseket engedélyezni kell. A DefaultAzureCredential osztály használata ajánlott módszer az Azure-szolgáltatások jelszó nélküli kapcsolatainak implementálásához a kódban. DefaultAzureCredential több hitelesítési módszert támogat, és meghatározza, hogy melyik metódust kell használni futásidőben. Ez a megközelítés lehetővé teszi, hogy az alkalmazás különböző hitelesítési módszereket használjon különböző környezetekben (helyi és éles környezetben) környezetspecifikus kód implementálása nélkül.

Ebben a rövid útmutatóban DefaultAzureCredential az Azure CLI-be bejelentkezett helyi fejlesztő felhasználó hitelesítő adataival hitelesíti a Key Vaultot. Az alkalmazás Azure-ban való üzembe helyezésekor ugyanaz DefaultAzureCredential a kód automatikusan felderítheti és használhat egy App Service-hez, virtuális géphez vagy más szolgáltatáshoz hozzárendelt felügyelt identitást. További információ: Felügyelt identitás áttekintése.

Ebben a példában a kulcstartó neve ki van bontva a key vault URI formátumára https://<your-key-vault-name>.vault.azure.net. A Key Vaultba való hitelesítésről további információt a fejlesztői útmutatóban talál.

String keyVaultName = System.getenv("KEY_VAULT_NAME");
String keyVaultUri = "https://" + keyVaultName + ".vault.azure.net";

SecretClient secretClient = new SecretClientBuilder()
    .vaultUrl(keyVaultUri)
    .credential(new DefaultAzureCredentialBuilder().build())
    .buildClient();

Titkos kód mentése

Az alkalmazás hitelesítése után a metódussal secretClient.setSecret titkos kulcsot helyezhet a kulcstartóba. Ehhez névre van szükség a titkos kódhoz – a "mySecret" értéket hozzárendeltük a secretName mintában szereplő változóhoz.

secretClient.setSecret(new KeyVaultSecret(secretName, secretValue));

Ellenőrizheti, hogy a titkos kód be van-e állítva az az keyvault secret show paranccsal:

az keyvault secret show --vault-name <your-unique-key-vault-name> --name mySecret

Titkos kód lekérése

Most már lekérheti a korábban beállított titkos kulcsot a secretClient.getSecret metódussal.

KeyVaultSecret retrievedSecret = secretClient.getSecret(secretName);

Most már elérheti a lekért titkos kód értékét a következővel retrievedSecret.getValue(): .

Titkos kulcs törlése

Végül töröljük a titkos kulcsot a kulcstartóból a secretClient.beginDeleteSecret metódussal.

A titkos kódok törlése egy hosszú ideig futó művelet, amelynek során lekérdezheti annak állapotát, vagy megvárhatja, amíg befejeződik.

SyncPoller<DeletedSecret, Void> deletionPoller = secretClient.beginDeleteSecret(secretName);
deletionPoller.waitForCompletion();

Az az keyvault secret show paranccsal ellenőrizheti, hogy a titkos kód törölve lett-e:

az keyvault secret show --vault-name <your-unique-key-vault-name> --name mySecret

Az erőforrások eltávolítása

Ha már nincs rá szükség, az Azure CLI vagy az Azure PowerShell használatával eltávolíthatja a kulcstartót és a megfelelő erőforráscsoportot.

az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"

példakód

package com.keyvault.secrets.quickstart;

import java.io.Console;

import com.azure.core.util.polling.SyncPoller;
import com.azure.identity.DefaultAzureCredentialBuilder;

import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;
import com.azure.security.keyvault.secrets.models.DeletedSecret;
import com.azure.security.keyvault.secrets.models.KeyVaultSecret;

public class App {
    public static void main(String[] args) throws InterruptedException, IllegalArgumentException {
        String keyVaultName = System.getenv("KEY_VAULT_NAME");
        String keyVaultUri = "https://" + keyVaultName + ".vault.azure.net";

        System.out.printf("key vault name = %s and key vault URI = %s \n", keyVaultName, keyVaultUri);

        SecretClient secretClient = new SecretClientBuilder()
            .vaultUrl(keyVaultUri)
            .credential(new DefaultAzureCredentialBuilder().build())
            .buildClient();

        Console con = System.console();

        String secretName = "mySecret";

        System.out.println("Please provide the value of your secret > ");

        String secretValue = con.readLine();

        System.out.print("Creating a secret in " + keyVaultName + " called '" + secretName + "' with value '" + secretValue + "' ... ");

        secretClient.setSecret(new KeyVaultSecret(secretName, secretValue));

        System.out.println("done.");
        System.out.println("Forgetting your secret.");

        secretValue = "";
        System.out.println("Your secret's value is '" + secretValue + "'.");

        System.out.println("Retrieving your secret from " + keyVaultName + ".");

        KeyVaultSecret retrievedSecret = secretClient.getSecret(secretName);

        System.out.println("Your secret's value is '" + retrievedSecret.getValue() + "'.");
        System.out.print("Deleting your secret from " + keyVaultName + " ... ");

        SyncPoller<DeletedSecret, Void> deletionPoller = secretClient.beginDeleteSecret(secretName);
        deletionPoller.waitForCompletion();

        System.out.println("done.");
    }
}

Következő lépések

Ebben a rövid útmutatóban létrehozott egy kulcstartót, tárolt egy titkos kulcsot, lekérte, majd törölte. Ha többet szeretne megtudni a Key Vaultról és az alkalmazásokkal való integrálásáról, folytassa az alábbi cikkekkel.