Hızlı Başlangıç: Java için Azure Key Vault Gizli istemci kitaplığı

Java için Azure Key Vault Gizli anahtarı istemci kitaplığını kullanmaya başlayın. Paketi yüklemek için bu adımları izleyin ve temel görevler için örnek kodu deneyin.

İpucu

Spring uygulamasında Azure Key Vault Gizli Dizileri kaynaklarıyla çalışıyorsanız Spring Cloud Azure'ı alternatif olarak değerlendirmenizi öneririz. Spring Cloud Azure, Azure hizmetleriyle sorunsuz Spring tümleştirmesi sağlayan açık kaynak bir projedir. Spring Cloud Azure hakkında daha fazla bilgi edinmek ve Key Vault Gizli Dizilerini kullanan bir örneği görmek için bkz . Spring Boot uygulamasında Azure Key Vault'tan gizli dizi yükleme.

Ek kaynaklar:

Önkoşullar

Bu hızlı başlangıçta Azure CLI ve Apache Maven'ı linux terminal penceresinde çalıştırdığınız varsayılır.

Ayarlama

Bu hızlı başlangıç, Azure Hizmetleri'nde 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 için Visual Studio veya Visual Studio Code da kullanabilir. Daha fazla bilgi için bkz . Azure Identity istemci kitaplığıyla 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çabiliyorsa bunu yapar ve bir Azure oturum açma sayfası yükler.

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

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

Yeni java konsol uygulaması oluşturma

Konsol penceresinde komutunu kullanarak mvn adlı akv-secrets-javayeni bir Java konsol uygulaması oluşturun.

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

Proje oluşturulurken elde edilecek çıkış şuna benzer olacaktır:

[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 akv-secrets-java/ klasörle değiştirin.

cd akv-secrets-java

paketini yükleyin

metin düzenleyicinizde pom.xml dosyasını açın. Bağımlılık grubuna aşağıdaki bağımlılık öğelerini 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ılır. Azure CLI hızlı başlangıcı, Azure PowerShell hızlı başlangıcı veya Azure portalı hızlı başlangıcı adımlarını izleyerek anahtar kasası oluşturabilirsiniz.

Alternatif olarak, aşağıdaki Azure CLI veya Azure PowerShell komutlarını çalıştırabilirsiniz.

Önemli

Her anahtar kasasının benzersiz bir adı olmalıdır. Aşağıdaki örneklerde unique-keyvault-name> değerini 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 verme

Rol Tabanlı Erişim Denetimi (RBAC) aracılığıyla uygulamanıza anahtar kasanıza izin vermek için az role assignment create Azure CLI komutunu kullanarak bir rol atayın.

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

App-id>, subscription-id>, <resource-group-name> ve <your-unique-keyvault-name> değerlerini gerçek değerlerinizle değiştirin<<. <app-id> , Azure AD'de kayıtlı uygulamanızın Uygulama (istemci) kimliğidir.

Ortam değişkenlerini belirleme

Bu uygulama anahtar kasanızın adını adlı KEY_VAULT_NAMEbir ortam değişkeni olarak 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 için Azure Key Vault Gizli dizi istemci kitaplığı gizli dizileri yönetmenize olanak tanır. Kod örnekleri bölümünde istemci oluşturma, gizli dizi ayarlama, gizli dizi alma ve gizli dizi silme işlemi gösterilir.

Kod örnekleri

Yönerge 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;

Kimlik doğrulaması yapma ve istemci oluşturma

Çoğu Azure hizmeti için uygulama istekleri yetkilendirilmelidir. DefaultAzureCredential sınıfını kullanmak, kodunuzda Azure hizmetlerine parolasız bağlantılar uygulamak için önerilen yaklaşımdır. DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangi yöntemin kullanılacağını belirler. Bu yaklaşım, uygulamanızın ortama özgü kod uygulamadan farklı ortamlarda (yerel ve üretim) farklı kimlik doğrulama yöntemleri kullanmasını sağlar.

Bu hızlı başlangıçta, DefaultAzureCredential Azure CLI'da oturum açmış yerel geliştirme kullanıcısının kimlik bilgilerini kullanarak anahtar kasasında kimlik doğrulaması yapar. Uygulama Azure'a dağıtıldığında, aynı DefaultAzureCredential kod App Service, Sanal Makine veya diğer hizmetlere atanan yönetilen kimliği otomatik olarak bulabilir ve kullanabilir. Daha fazla bilgi için bkz . Yönetilen Kimliğe Genel Bakış.

Bu örnekte, anahtar kasanızın adı biçiminde https://<your-key-vault-name>.vault.azure.netanahtar kasası URI'sine genişletilir. Anahtar kasasında kimlik doğrulaması hakkında daha fazla bilgi için bkz . Geliştirici Kılavuzu.

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

Uygulamanızın kimliği doğrulandıktan sonra yöntemini kullanarak secretClient.setSecret anahtar kasanıza bir gizli dizi yerleştirebilirsiniz. Bunun için gizli dizi için bir ad gerekir. Bu örnekteki değişkene secretName "mySecret" değerini atadık.

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

Gizli dizinin az keyvault secret show komutuyla ayarlandığını doğrulayabilirsiniz:

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

Gizli dizi alma

Artık yöntemiyle önceden ayarlanmış gizli diziyi secretClient.getSecret alabilirsiniz.

KeyVaultSecret retrievedSecret = secretClient.getSecret(secretName);

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

Gizli anahtarı silme

Son olarak, yöntemiyle anahtar kasanızdan gizli diziyi secretClient.beginDeleteSecret silelim.

Gizli dizi silme işlemi, ilerleme durumunu yoklayabileceğiniz veya tamamlanmasını bekleyebileceğiniz uzun süre çalışan bir işlemdir.

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

Gizli dizinin silindiğini az keyvault secret show komutuyla doğrulayabilirsiniz:

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

Kaynakları temizleme

Artık gerekli olmadığında, anahtar kasanızı ve ilgili kaynak grubunu kaldırmak için Azure CLI veya Azure PowerShell'i kullanabilirsiniz.

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şturdunuz, bir gizli dizi depoladıysanız, bunu alıp sildiyseniz. Key Vault ve uygulamalarınızla tümleştirme hakkında daha fazla bilgi edinmek için bu makalelere geçin.