التشغيل السريع: مكتبة عميل مفتاحAzure Key Vault لـ Java
يمكنك البدء في العمل مع مكتبة عميل مفتاحAzure Key Vault لـ Java. يُرجى اتباع هذه الخطوات لتثبيت الحزمة وتجربة التعليمات البرمجية للمهام الأساسية.
موارد إضافية:
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاناً.
- الإصدار 8 أو أحدث من Java Development Kit (JDK)
- Apache Maven
- Azure CLI
يفترض هذا التشغيل السريع أنك تقوم بتشغيل Azure CLI وApache Maven في نافذة محطة Linux.
الإعداد
يُستخدم هذا التشغيل السريع مكتبة Azure Identity مع Azure CLI لمصادقة المستخدم إلىAzure Services. يمكن للمطورين أيضاً استخدام Visual Studio أو Visual Studio Code لمصادقة مكالماتهم، وللحصول على مزيد من المعلومات، راجع مصادقة العميل باستخدام مكتبة عميل Azure Identity.
تسجيل الدخول إلى Azure
تشغيل الأمر
login
.az login
في حال كان CLI يمكن فتح المستعرض الافتراضي الخاص بك، فإنه سيتم القيام بذلك وتحميل صفحة تسجيل الدخول Azure.
بخلاف ذلك، افتح صفحة متصفح على https://aka.ms/devicelogin وأدخل رمز التفويض المعروض في جهازك.
قم بتسجيل الدخول باستخدام بيانات اعتماد حسابك في المتصفح.
إنشاء تطبيق وحدة تحكم Java جديد
في نافذة وحدة التحكم، استخدم الأمر mvn
لإنشاء تطبيق وحدة تحكم Java جديد باسم akv-keys-java
.
mvn archetype:generate -DgroupId=com.keyvault.keys.quickstart
-DartifactId=akv-keys-java
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4
-DinteractiveMode=false
ستبدو المخرجات الناتجة عن إنشاء المشروع كما يلي:
[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] ------------------------------------------------------------------------
تغيير الدليل إلى المجلد akv-keys-java/
المنشأ حديثاً.
cd akv-keys-java
تثبيت الحزمة
افتح ملف pom.xml في محرر النص. أضف عناصر التبعية التالية إلى مجموعة التبعيات.
<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>
إنشاء مجموعة موارد ومخزن رئيسي
يستخدم هذا التشغيل السريع مخزن مفاتيح Azure تم إنشاؤه مسبقا. يمكنك إنشاء مخزن بيانات سرية باتباع الخطوات الواردة في بداية سريعة إلى Azure CLI أو بداية سريعة إلى Azure PowerShell أو بداية سريعة إلى مدخل Microsoft Azure.
بدلا من ذلك، يمكنك تشغيل أوامر Azure CLI أو Azure PowerShell هذه.
هام
يجب أن يكون لكل مخزن رئيسي اسم فريد. استبدل <your-unique-keyvault-name> باسم المخزن الرئيس في الأمثلة التالية.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
امنح حق الوصول إلى خزنة المفاتيح الخاصة بك
للحصول على أذونات إلى مخزن المفاتيح الخاص بك من خلال التحكم في الوصول المستند إلى الدور (RBAC)، قم بتعيين دور إلى "اسم المستخدم الأساسي" (UPN) باستخدام الأمر Azure CLI az role assignment create.
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> و <your-unique-keyvault-name> بقيمك الفعلية. سيكون UPN الخاص بك عادة بتنسيق عنوان بريد إلكتروني (على سبيل المثال، username@domain.com).
تعيين متغيرات البيئة
يستخدم هذا التطبيق اسم مخزن البيانات السرية لك كمتغير بيئة يسمى KEY_VAULT_NAME
.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS أو Linux
export KEY_VAULT_NAME=<your-key-vault-name>
نموذج الكائن
تسمح لك مكتبة عميل مفتاح Azure Key Vault لـ Java بإدارة المفاتيح. يوضح القسم أمثلة التعليمات البرمجية كيفية إنشاء عميل وتعيين مفتاح واسترداد مفتاح وحذف مفتاح.
يتم توفير تطبيق وحدة التحكم بالكامل في نموذج التعليمات البرمجية.
أمثلة على التعليمات البرمجية
أضف توجيهات
إضافة التوجيهات التالية إلى أعلى التعليمة البرمجية الخاصة بك:
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;
مصادقة عميل وإنشاؤه
يجب التصريح بطلبات التطبيق إلى معظم خدمات Azure. استخدام فئة DefaultAzureCredential هو الأسلوب الموصى به لتنفيذ الاتصالات بدون كلمة مرور بخدمات Azure في التعليمات البرمجية الخاصة بك. DefaultAzureCredential
يدعم أساليب مصادقة متعددة ويحدد الأسلوب الذي يجب استخدامه في وقت التشغيل. يمكن هذا النهج تطبيقك من استخدام أساليب مصادقة مختلفة في بيئات مختلفة (البيئة المحلية مقابل بيئة التشغيل) دون تنفيذ التعليمات البرمجية الخاصة بالبيئة.
في هذا التشغيل السريع، DefaultAzureCredential
يصادق على key vault باستخدام بيانات اعتماد مستخدم التطوير المحلي الذي سجل الدخول إلى Azure CLI. عند نشر التطبيق إلى Azure، يمكن لنفس DefaultAzureCredential
التعليمات البرمجية اكتشاف واستخدام هوية مدارة تلقائيا تم تعيينها إلى App Service أو Virtual Machine أو خدمات أخرى. لمزيد من المعلومات، راجع نظرة عامة على الهوية المُدارة.
في هذا المثال، يتم توسيع اسم مخزن المفاتيح الخاص بك إلى URI لمخزن المفاتيح، بالتنسيق https://<your-key-vault-name>.vault.azure.net
. لمزيد من المعلومات حول المصادقة إلى مخزن المفاتيح، راجع دليل المطور.
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();
إنشاء مفتاح
الآن بعد أن تمت مصادقة التطبيق، يمكنك إنشاء مفتاح في مخزن البيانات السرية الخاصة بك باستخدام أسلوب keyClient.createKey
. يتطلب هذا اسما للمفتاح ونوع المفتاح. لقد قمنا بتعيين القيمة "myKey" للمتغير keyName
واستخدام RSA KeyType
في هذه العينة.
keyClient.createKey(keyName, KeyType.RSA);
يمكنك التحقق من أن المفتاح قد تم تعيينه من خلال أمر إظهار مفتاح az keyvault:
az keyvault key show --vault-name <your-unique-key-vault-name> --name myKey
استرداد مفتاح
يمكنك الآن استرداد الشهادة التي تم إنشاؤها مسبقاً باستخدام أسلوب keyClient.getKey
.
KeyVaultKey retrievedKey = keyClient.getKey(keyName);
يمكنك الآن الوصول إلى تفاصيل المفتاح المسترد من خلال عمليات مثل retrievedKey.getProperties
، retrievedKey.getKeyOperations
، وما إلى ذلك.
حذف مفتاح
وأخيرا، دعونا نحذف المفتاح من المخزن الرئيسي مع أسلوب keyClient.beginDeleteKey
.
تعد عملية حذف المفاتيح عملية تحتاج لفترة تشغيل طويلة، حيث يمكنك التحقق من مدى تقدمها أو الانتظار حتى تكتمل.
SyncPoller<DeletedKey, Void> deletionPoller = keyClient.beginDeleteKey(keyName);
deletionPoller.waitForCompletion();
يمكنك التحقق من أن المفتاح قد تم حذفه من خلال أمر إظهار مفتاح az keyvault:
az keyvault key show --vault-name <your-unique-key-vault-name> --name myKey
تنظيف الموارد
عندما لم تعد هناك حاجة، يمكنك استخدام Azure CLI أو Azure PowerShell لإزالة مخزن البيانات السرية ومجموعة الموارد المقابلة.
az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"
التعليمة البرمجية العينة
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.");
}
}
الخطوات التالية
في هذا التشغيل السريع، قمت بإنشاء مخزن مفاتيح، وإنشاء مفتاح، واسترداده، ثم حذفه. لمعرفة المزيد حول Key Vault وكيفية دمجه مع تطبيقاتك، تابع إلى هذه المقالات.