Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 a Spring-alkalmazásban az Azure Key Vault Secrets erőforrásokkal dolgozik, javasoljuk a Spring Cloud Azure használatát 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 szeretne egy példát látni, amely az Azure Key Vault kulcs titkait használja, olvassa el a Titok betöltése az Azure Key Vaultból egy Spring Boot-alkalmazásban című témakört.
További források:
- forráskód
- API-referenciadokumentáció
- termékdokumentáció
- Samples
Prerequisites
- Azure-előfizetés – hozzon létre egyet ingyenesen.
- Java Development Kit (JDK) 8-as vagy újabb verzió
- Apache Maven
- Azure CLI
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
Futtassa a
loginparancsot.az loginHa 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.
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 az akv-secrets-java névvel.
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.10.6</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.13.1</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 Secrets 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 Titkos ügyfélkódtár lehetővé teszi a titkos kódok kezelését. A Kódrészletek szakasz bemutatja, hogyan hozhat létre ügyfelet, állíthat be egy titkot, lekérhet egy titkot, és törölhet egy titkot.
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 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,
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 secretClient.setSecret metódussal titkot helyezhet a kulcstartóba. Ehhez névre van szükség a titkos kulcshoz – 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 titok be van-e állítva a az keyvault secret show paranccsal:
az keyvault secret show --vault-name <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 adat értékét a retrievedSecret.getValue() elemmel.
Titkos kulcs törlése
Végül törölje a titkot a kulcstárbó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 titok törölve van-e.
az keyvault secret show --vault-name <vault-name> --name mySecret
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.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 kulcstárat, tárolt egy titkot, 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.
- Az Azure Key Vault áttekintését olvassa el
- Tekintse meg az Azure Key Vault fejlesztői útmutatóját.
- Kulcstárhoz való hozzáférés biztosítása
- Titkos kódokra vonatkozó ajánlott biztonsági eljárások áttekintése