Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
Tip
Spring uygulamasında Azure Key Vault sırları kaynaklarıyla çalışıyorsanız, alternatif olarak Spring Cloud Azure'ı 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 Anahtarlarını kullanan bir örneği görmek için Spring Boot uygulamasında Azure Key Vault'tan gizli anahtar yükleme başlıklı bölüme bakın.
Ek kaynaklar:
- Kaynak kod
- API başvuru belgeleri
- Ürün belgeleri
- Samples
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
loginkomutunu çalıştırın.az loginCLI 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.
Tarayıcıda hesabınızın kimlik bilgileriyle oturum açın.
Yeni java konsol uygulaması oluşturma
Konsol penceresinde, mvn komutunu kullanarak akv-secrets-java adıyla yeni 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] ------------------------------------------------------------------------
Yeni oluşturulan akv-secrets-java/ klasörüne gidin.
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.10.6</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.13.1</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 Secrets 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 Gizli İstemci Kitaplığı, sırları yönetmenize olanak tanır. Kod örnekleri bölümünde bir istemci oluşturma, bir gizli anahtar ayarlama, bir gizli anahtar alma ve bir gizli anahtar silme işlemleri 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 şifresiz bağlantılar uygulamak için önerilen bir yaklaşımdır.
DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve çalışma anı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 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 kodu bir Uygulama Hizmeti, Sanal Makine veya diğer hizmetlere atanan yönetilen kimliği otomatik olarak bulup kullanabilir. Daha fazla bilgi için bkz Yönetilen Kimliğe Genel Bakış.
Bu örnekte, anahtar kasanızın adı,
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();
Bir sır kaydetme
Uygulamanızın kimliği doğrulandıktan sonra secretClient.setSecret yöntemi ile anahtar kasanıza bir gizli bilgi yerleştirebilirsiniz. Bu, gizli veri için bir ad gerektirir—bu örnekteki secretName değişkenine "mySecret" değerini atadık.
secretClient.setSecret(new KeyVaultSecret(secretName, secretValue));
az keyvault secret show komutunun, gizli bilginin ayarlandığını doğruladığını kontrol edebilirsiniz.
az keyvault secret show --vault-name <vault-name> --name mySecret
Gizli anahtar alma
Artık secretClient.getSecret yöntemiyle önceden ayarlanmış gizli diziyi alabilirsiniz.
KeyVaultSecret retrievedSecret = secretClient.getSecret(secretName);
Artık
Gizliyi silme
Son olarak, secretClient.beginDeleteSecret yöntemiyle anahtar kasanızdan gizliyi silelim.
Gizli silme işlemi, ilerlemesini yoklayabileceğiniz veya tamamlanmasını bekleyebileceğiniz uzun süreli bir işlemdir.
SyncPoller<DeletedSecret, Void> deletionPoller = secretClient.beginDeleteSecret(secretName);
deletionPoller.waitForCompletion();
Gizli anahtarın silindiğini az keyvault secret show komutuyla doğrulayabilirsiniz:
az keyvault secret show --vault-name <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 kodu
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ıç kılavuzunda bir anahtar kasası oluşturdunuz, bir sır depoladınız, bunu alıp sildiniz. Key Vault ve uygulamalarınızla tümleştirme hakkında daha fazla bilgi edinmek için bu makalelere geçin.
- Azure Key Vault'a Genel Bakış'ı okuyun
- Azure Key Vault geliştirici kılavuzuna bakın
- Anahtar kasasına erişimi nasıl güvenli hale getirilir
- Sırlara özgü güvenlik en iyi uygulamalarını gözden geçirme