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:
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun.
- Java Development Kit (JDK) sürüm 8 veya üzeri
- Apache Maven
- Azure CLI
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
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.
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-keys-java
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] ------------------------------------------------------------------------
Dizininizi yeni oluşturulan akv-keys-java/
klasörle değiştirin.
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.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, bu 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" --enable-rbac-authorization
Anahtar kasanıza erişim izni verme
Rol Tabanlı Erişim Denetimi (RBAC) aracılığıyla anahtar kasanıza izinler almak için az role assignment create Azure CLI komutunu kullanarak "Kullanıcı Asıl Adı" (UPN) öğesine bir rol atayın.
az role assignment create --role "Key Vault Crypto Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
upn>, subscription-id>, <resource-group-name> ve <your-unique-keyvault-name> değerlerini gerçek değerlerinizle değiştirin<<. 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ı adlı KEY_VAULT_NAME
bir 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 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şlemi gösterilir.
Konsol uygulamasının tamamı Örnek kodda sağlanı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 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.net
anahtar 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";
KeyClient keyClient = new KeyClientBuilder()
.vaultUrl(keyVaultUri)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
Anahtar oluşturma
Uygulamanızın kimliği doğrulandıktan sonra, yöntemini kullanarak keyClient.createKey
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 <your-unique-key-vault-name> --name myKey
Anahtar alma
Artık yöntemiyle keyClient.getKey
önceden oluşturulmuş anahtarı alabilirsiniz.
KeyVaultKey retrievedKey = keyClient.getKey(keyName);
Artık alınan anahtarın ayrıntılarına , retrievedKey.getKeyOperations
vb. işlemleriyle retrievedKey.getProperties
erişebilirsiniz.
Anahtar silme
Son olarak, yöntemiyle keyClient.beginDeleteKey
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();
anahtarın silindiğini az keyvault key show komutuyla doğrulayabilirsiniz:
az keyvault key show --vault-name <your-unique-key-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 kod
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 sildiyseniz. 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ış
- Key Vault güvenliğine genel bakış
- Azure Key Vault geliştirici kılavuzuna bakın
- Anahtar kasasına erişimin güvenliğini sağlama