Hızlı Başlangıç: java Azure Key Vault gizli dizi istemci kitaplığını oluşturma

Kullanmaya başlayın Java için Azure Key Vault Gizli Dizi istemci kitaplığıyla birlikte kullanın. Paketi yüklemek ve temel görevler için örnek kodu denemek için aşağıdaki adımları izleyin.

Ek kaynaklar:

Önkoşullar

Bu hızlı başlangıçta, Linux terminal penceresinde Azure CLI ve Apache Maven'ı çalıştırmış olduğunuz varsay gelir.

Ayarlama

Bu hızlı başlangıç, Azure Hizmetlerde kullanıcının kimliğini doğrulamak için Azure CLI ile Azure Kimlik kitaplığını kullanmaktır. Geliştiriciler çağrılarının kimliğini doğrulamak Visual Studio veya Visual Studio Code da kullanabilir. Daha fazla bilgi için bkz. Azure Identity istemci kitaplığı ile istemcinin kimliğini doğrulama.

Azure'da oturum açma

  1. login komutunu çalıştırın.

    az login
    

    CLI varsayılan tarayıcınızı açabilirse bunu yapar ve bir Azure oturum açma sayfası yüklemez.

    Aksi takdirde, sayfasında bir tarayıcı sayfası https://aka.ms/devicelogin açın ve terminalde görüntülenen yetkilendirme kodunu girin.

  2. Tarayıcıda hesabınızın kimlik bilgileriyle oturum açın.

Yeni bir Java konsol uygulaması oluşturma

Konsol penceresinde komutunu kullanarak mvn adıyla yeni bir Java konsol uygulaması akv-secrets-java oluşturun.

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

Projeyi oluşturmanın çıktısı şuna benzer:

[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] ------------------------------------------------------------------------

Dizininizi yeni oluşturulan klasörle akv-secrets-java/ değiştirme.

cd akv-secrets-java

Paketi yükleme

Metin pom.xml dosyasını açın. Aşağıdaki bağımlılık öğelerini bağımlılıklar grubuna ekleyin.

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

Kaynak grubu ve anahtar kasası oluşturma

Bu hızlı başlangıçta önceden oluşturulmuş bir Azure Anahtar Kasası kullanılmaktadır. Azure clı hızlı başlangıç, Azure PowerShell hızlıbaşlangıç veya Azure portal hızlı başlangıçadımlarını izleyerek bir anahtar kasası oluşturabilirsiniz.

alternatif olarak, yalnızca Azure clı veya Azure PowerShell komutlarını çalıştırabilirsiniz.

Önemli

Her Anahtar Kasası benzersiz bir ada sahip olmalıdır. <your-unique-keyvault-name>Aşağıdaki örneklerde anahtar kasanızın adıyla değiştirin.

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

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup"

Anahtar kasanıza erişim izni ver

Anahtar kasanız için kullanıcı hesabınıza gizli izinler alan bir erişim ilkesi oluşturun.

az keyvault set-policy --name <your-key-vault-name> --upn user@domain.com --secret-permissions delete get list set purge

Ortam değişkenlerini belirleme

Bu uygulama, anahtar kasası adını adlı bir ortam değişkeni olarak KEY_VAULT_NAME kullanıyor.

Windows

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

Windows PowerShell

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

macOS veya Linux

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

Nesne modeli

Java Azure Key Vault gizli dizi istemci kitaplığı gizli dizileri yönetmenize olanak sağlar. Kod örnekleri bölümünde istemci oluşturma, gizli dizi ayarlama, gizli dizi alma ve gizli dizi silme hakkında bilgi verilmiştir.

Konsol uygulamasının tamamı aşağıda verilmiştir.

Kod örnekleri

Yönergeler ekleme

Kodunuzun en üstüne aşağıdaki yönergeleri ekleyin:

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;

İstemcinin kimliğini doğrulama ve oluşturma

Bu hızlı başlangıçta, yerel geliştirme için tercih edilen yöntem olan Key Vault için oturum açmış bir kullanıcı kullanılır. Azure'a dağıtılan uygulamalar için Yönetilen Kimlik bir sanal makineye veya App Service makineye atanabilir. Daha fazla bilgi için bkz. Yönetilen Kimliğe Genel Bakış.

Aşağıdaki örnekte, anahtar kasanızı adı biçiminde anahtar kasası URI'sı olarak https://\<your-key-vault-name\>.vault.azure.net genişletilir. Bu örnek, kimlik sağlamak için farklı seçeneklere sahip farklı ortamlarda aynı kodun kullanılmasına olanak sağlayan 'DefaultAzureCredential()' sınıfını kullanmaktır. Daha fazla bilgi için bkz. Varsayılan Azure Kimlik Bilgileri Kimlik Doğrulaması.

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

Gizli bir gizli dosyayı kaydetme

Artık uygulama kimliği doğrulandığına göre, yöntemini kullanarak anahtar kasanıza bir gizli anahtar secretClient.setSecret koyabilirsiniz. Bu, gizli kod için bir ad gerektirir. Bu örnekteki değişkene "mySecret" secretName değerini atadık.

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

az keyvault secret show komutuyla gizli dizinin ayar olduğunu doğruabilirsiniz:

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

Gizli bilgi alma

Artık yöntemiyle önceden ayarlanmış gizli diziyi secretClient.getSecret de alın.

KeyVaultSecret retrievedSecret = secretClient.getSecret(secretName);

Artık ile alınan gizli kodun değerine retrievedSecret.getValue() erişin.

Gizli anahtarı silme

Son olarak, yöntemiyle anahtar kasanıza gizli anahtarı secretClient.beginDeleteSecret silebilirsiniz.

Gizli silme işlemi uzun süre çalışan ve ilerlemesini yoklamanız veya tamamlandıktan sonra beklemeniz gereken bir işlemdir.

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

az keyvault secret show komutuyla gizli dizinin silinmiş olduğunu doğruabilirsiniz:

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

Kaynakları temizleme

Artık gerekli değilken Azure CLI veya Azure PowerShell kullanarak anahtar kasanızı ve ilgili kaynak grubunu kaldırabilirsiniz.

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

Örnek kod

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.");
    }
}

Sonraki adımlar

Bu hızlı başlangıçta bir anahtar kasası oluşturdu, bir gizli anahtar depoladı, bunu kullandı ve sildi. Uygulamalarınızı nasıl Key Vault ve uygulamalarınız ile nasıl tümleştirebilirsiniz hakkında daha fazla bilgi edinmek için aşağıdaki makalelere geçin.