Rövid útmutató: Azure Key Vault kulcs klienskönyvtár Java-hoz

Kezdje el a Java-hoz készült Azure Key Vault kulcs ügyfélkönyvtá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.

További források:

Prerequisites

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

Előkészítés

Ez a gyorsútmutató az Azure Identity könyvtárat és az Azure CLI-t használja, hogy hitelesítse a felhasználót az Azure szolgáltatásokhoz. A fejlesztők a Visual Studio vagy a Visual Studio Code használatával is hitelesíthetik hívásaikat. További információért, lásd Az ügyfél hitelesítése az Azure Identity könyvtárával.

Bejelentkezés az Azure-ba

  1. Futtassa a login parancsot.

    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 a következő címen: 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 használja a mvn parancsot egy új Java konzolalkalmazás létrehozásához a akv-keys-java névvel.

mvn archetype:generate -DgroupId=com.keyvault.keys.quickstart
                       -DartifactId=akv-keys-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.keys.quickstart
[INFO] Parameter: artifactId, Value: akv-keys-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.keyvault.keys.quickstart
[INFO] Parameter: packageInPathFormat, Value: com/keyvault/quickstart
[INFO] Parameter: package, Value: com.keyvault.keys.quickstart
[INFO] Parameter: groupId, Value: com.keyvault.keys.quickstart
[INFO] Parameter: artifactId, Value: akv-keys-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Project created from Archetype in dir: /home/user/quickstarts/akv-keys-java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  38.124 s
[INFO] Finished at: 2019-11-15T13:19:06-08:00
[INFO] ------------------------------------------------------------------------

Váltson az újonnan létrehozott akv-keys-java/ könyvtárra.

cd akv-keys-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-keys</artifactId>
      <version>4.10.6</version>
    </dependency>

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

Erőforráscsoport és kulcstár 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 a(z) <vault-name> kulcstár nevét az alábbi példákban.

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

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

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

Ha szerepköralapú hozzáférés-vezérléssel (RBAC) szeretne engedélyeket szerezni a kulcstartóban, rendeljen hozzá egy szerepkört a Felhasználói Főnévhez (UPN) az Azure CLI-paranccsal az "az role assignment create" használatával.

az role assignment create --role "Key Vault Crypto Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"

Cserélje le <upn>-t, <subscription-id>-t és <vault-name>-t a tényleges értékekre. Ha más erőforráscsoportnevet használt, cserélje le a "myResourceGroup" nevet is. Az UPN általában egy e-mail-cím (például username@domain.com) formátumában van.

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

Ez az alkalmazás a kulcstartó nevét használja egy környezeti változóként, amelyet KEY_VAULT_NAME -nek neveznek.

Windows

set KEY_VAULT_NAME=<vault-name>

Windows PowerShell

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

macOS vagy Linux

export KEY_VAULT_NAME=<vault-name>

Objektummodell

A Java-hoz készült Azure Key Vault-kulcs ügyfélkódtár lehetővé teszi a kulcsok kezelését. A Kódpéldák szakasz bemutatja, hogyan hozhat létre ügyfelet, hogyan hozhat létre kulcsot, hogyan kérdezhet le egy kulcsot, és hogyan törölhet egy kulcsot.

A teljes konzolalkalmazás a mintakódban van megadva.

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.keys.KeyClient;
import com.azure.security.keyvault.keys.KeyClientBuilder;
import com.azure.security.keyvault.keys.models.DeletedKey;
import com.azure.security.keyvault.keys.models.KeyType;
import com.azure.security.keyvault.keys.models.KeyVaultKey;

Ü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 az ajánlott módszer a jelszó nélküli kapcsolatok megvalósításához az Azure-szolgáltatásokkal a kódodban. DefaultAzureCredential több hitelesítési módszert támogat, és meghatározza, hogy melyik módszert 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 gyorsindítóban DefaultAzureCredential hitelesít a Key Vaulthoz az Azure CLI-be bejelentkezett helyi fejlesztési felhasználó hitelesítő adataival. Az alkalmazás Azure-ban való üzembe helyezésekor ugyanaz a DefaultAzureCredential kód automatikusan fel tudja deríteni és használni tud egy felügyelt identitást, amelyet egy App Service-hez, virtuális géphez vagy más szolgáltatáshoz rendeltek hozzá. További információért lásd a következőt: Felügyelt identitás áttekintése.

Ebben a példában a kulcstár neve ki van bontva a kulcstár URI formátumára, .vault.azure.net. További információért a Key Vaultba való hitelesítésről, lásd a Fejlesztői útmutatót.

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

KeyClient keyClient = new KeyClientBuilder()
    .vaultUrl(keyVaultUri)
    .credential(new DefaultAzureCredentialBuilder().build())
    .buildClient();

Kulcs létrehozása

Most, hogy az alkalmazás hitelesítve van, létrehozhat egy kulcsot a kulcstartóban a keyClient.createKey metódussal. Ehhez a kulcsnak nevet és kulcstípust kell megadnia. Hozzárendeltük a "myKey" értéket a változóhoz, és ebben a keyName mintában egy RSA-t KeyType használunk.

keyClient.createKey(keyName, KeyType.RSA);

A(z) "az keyvault key show" paranccsal ellenőrizheti, hogy a kulcs be van-e állítva:

az keyvault key show --vault-name <vault-name> --name myKey

Kulcs lekérése

Most már lekérheti a korábban létrehozott kulcsot a keyClient.getKey metódussal.

KeyVaultKey retrievedKey = keyClient.getKey(keyName);

Mostantól hozzáférhet a visszakeresett kulcs részleteihez olyan műveletekkel, mint a retrievedKey.getProperties, retrievedKey.getKeyOperations, stb.

Kulcs törlése

Végül töröljük a kulcsot a kulcstáradból a keyClient.beginDeleteKey metódussal.

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

SyncPoller<DeletedKey, Void> deletionPoller = keyClient.beginDeleteKey(keyName);
deletionPoller.waitForCompletion();

Ellenőrizheti, hogy a kulcs törölve lett-e az az keyvault key show paranccsal.

az keyvault key show --vault-name <vault-name> --name myKey

Az erőforrások megtisztí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.keys.quickstart;

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

import com.azure.security.keyvault.keys.KeyClient;
import com.azure.security.keyvault.keys.KeyClientBuilder;
import com.azure.security.keyvault.keys.models.DeletedKey;
import com.azure.security.keyvault.keys.models.KeyType;
import com.azure.security.keyvault.keys.models.KeyVaultKey;

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);

        KeyClient keyClient = new KeyClientBuilder()
             .vaultUrl(keyVaultUri)
             .credential(new DefaultAzureCredentialBuilder().build())
             .buildClient();

        String keyName = "myKey";

        System.out.print("Creating a key in " + keyVaultName + " called '" + keyName + " ... ");

        keyClient.createKey(keyName, KeyType.RSA);

        System.out.print("done.");
        System.out.println("Retrieving key from " + keyVaultName + ".");

        KeyVaultKey retrievedKey = keyClient.getKey(keyName);

        System.out.println("Your key's ID is '" + retrievedKey.getId() + "'.");
        System.out.println("Deleting your key from " + keyVaultName + " ... ");

        SyncPoller<DeletedKey, Void> deletionPoller = keyClient.beginDeleteKey(keyName);
        deletionPoller.waitForCompletion();

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

Következő lépések

Ebben a rövid útmutatóban létrehozott egy kulcstárat, létrehozott egy kulcsot, lekérdezte, 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.

  • Az Azure Key Vault áttekintését olvassa el
  • Olvassa el a Key Vault biztonsági áttekintését
  • Kulcsspecifikus biztonsági ajánlott eljárások áttekintése
  • Tekintse meg az Azure Key Vault fejlesztői útmutatóját.
  • Kulcstárhoz való hozzáférés biztosítása