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

Java için Azure Key Vault 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.

Ek kaynaklar:

Prerequisites

  • Azure aboneliği - ücretsiz bir şekilde abonelik oluşturun.
  • Java Development Kit (JDK) sürüm 8 veya üzeri
  • Apache Maven
  • Azure CLI

Bu hızlı başlangıç, Azure CLI ve Apache Maven'i Linux terminal penceresinde çalıştırdığınızı varsaymaktadır.

Kurulum

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ı kimliğini doğrulamak için Visual Studio veya Visual Studio Code da kullanabilir. Daha fazla bilgi için Azure Identity istemci kitaplığıyla istemcinin kimliğini doğrulama konusuna bakın.

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 halde https://aka.ms/devicelogin adresinde bir tarayıcı sayfası açın ve terminalinizde görüntülenen kimlik doğrulama kodunu girin.

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

Yeni java konsol uygulaması oluşturma

Konsol penceresinde, mvn komutunu kullanarak akv-keys-java adında yeni bir Java konsol uygulaması oluşturun.

mvn archetype:generate -DgroupId=com.keyvault.keys.quickstart
                       -DartifactId=akv-keys-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.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] ------------------------------------------------------------------------

Yeni oluşturulan akv-keys-java/ klasörüne gidin.

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

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

Kaynak grubu ve Key Vault oluşturma

Bu hızlı başlangıç rehberinde önceden oluşturulan bir Azure anahtar kasası kullanılır. Bu hızlı başlangıçlarda yer alan adımları izleyerek bir anahtar kasası oluşturabilirsiniz:

Alternatif olarak, bu Azure CLI komutlarını çalıştırabilirsiniz.

Important

Her anahtar kasasının benzersiz bir adı olmalıdır. Aşağıdaki örneklerde <vault-name>'yi anahtar kasanızın adıyla değiştirin.

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

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

Anahtar kasanıza erişim izni verin

Rol Tabanlı Erişim Denetimi (RBAC) aracılığıyla anahtar kasanıza izinler almak için Azure CLI komutunu kullanarak "Kullanıcı İlke Adı" (UPN) için az role assignment create komutuyla bir rol atayın.

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

, <upn>ve <subscription-id> değerlerini gerçek değerlerinizle değiştirin<vault-name>. Eğer farklı bir kaynak grubu adı kullandıysanız, "myResourceGroup" yerine bunu koyun. UPN'niz genellikle bir e-posta adresi biçiminde olur (ör. username@domain.com).

Ortam değişkenlerini belirleme

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

Windows

set KEY_VAULT_NAME=<vault-name>

Windows PowerShell

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

macOS veya Linux

export KEY_VAULT_NAME=<vault-name>

Nesne modeli

Java için Azure Key Vault Anahtar istemci kitaplığı anahtarları yönetmenize olanak tanır. Kod örnekleri bölümünde istemci oluşturma, anahtar oluşturma, anahtar alma ve anahtar silme işlemleri gösterilir.

Tüm konsol uygulaması Örnek kod içerisinde sağlanmaktadır.

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

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 şifresiz bağlantılar uygulamak için önerilen bir yaklaşımdır. DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangi yöntemin kullanılacağını saptar. 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 yerel geliştirme kullanıcısının Azure CLI'ya giriş yaparken kullandığı kimlik bilgileriyle anahtar kasasına 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 keşfederek kullanabilir. Daha fazla bilgi için Yönetilen Kimliğe Genel Bakış bölümüne bakın.

Bu örnekte, anahtar kasanızın adı, formatında anahtar kasasının 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";

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

Anahtar oluşturma

Uygulamanız kimlik doğrulamasını tamamladığına göre, keyClient.createKey yöntemini kullanarak anahtar kasanızda bir anahtar oluşturabilirsiniz. Bunun için anahtar için bir ad ve anahtar türü gerekir. Değişkenine "myKey" keyName değerini atadık ve bu örnekte bir RSA KeyType kullandık.

keyClient.createKey(keyName, KeyType.RSA);

Anahtarın az keyvault key show komutuyla ayarlandığını doğrulayabilirsiniz:

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

Anahtar elde etme

Artık keyClient.getKey yöntemiyle önceden oluşturulmuş anahtarı alabilirsiniz.

KeyVaultKey retrievedKey = keyClient.getKey(keyName);

Artık alınan anahtarın ayrıntılarına, retrievedKey.getProperties, retrievedKey.getKeyOperations gibi işlemlerle erişebilirsiniz.

Anahtarı sil

Son olarak, keyClient.beginDeleteKey yöntemiyle anahtarı anahtar kasanızdan silelim.

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

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

Az keyvault key show komutunu kullanarak anahtarın silindiğini doğrulayabilirsiniz.

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

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 kodu

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

Sonraki Adımlar

Bu hızlı başlangıçta bir anahtar kasası oluşturdunuz, bir anahtar oluşturdunuz, anahtarı alıp sildiniz. Key Vault ve uygulamalarınızla tümleştirme hakkında daha fazla bilgi edinmek için bu makalelere geçin.