التشغيل السريع: إدارة البيانات السرية باستخدام مكتبة عميل Azure Key Vault Go
ستتعلم في هذا التشغيل السريع كيفية استخدام Azure SDK لـ Go لإنشاء البيانات السرية واستردادها وسردها وحذفها من Azure Key Vault.
يمكنك تخزين مجموعة متنوعة من أنواع الكائنات في مخزن مفاتيح Azure. عندما تقوم بتخزين البيانات السرية في مخزن المفاتيح، فإنك تتجنب الاضطرار إلى تخزينها في التعليمات البرمجية الخاصة بك، مما يساعد على تحسين أمان تطبيقاتك.
ابدأ باستخدام حزمة azsecrets وتعرف على كيفية إدارة بياناتك السرية في مخزن مفاتيح Azure باستخدام Go.
المتطلبات الأساسية
- اشتراك Azure. إذا لم يكن لديك اشتراك، يمكن إنشاء حساب مجاني.
- إصدار Go 1.18 أو أحدث، مثبتا.
- The Azure CLI، مثبتة.
الإعداد
لأغراض هذا التشغيل السريع، يمكنك استخدام حزمة azidentity للمصادقة إلى Azure باستخدام Azure CLI. لمعرفة المزيد حول أساليب المصادقة المختلفة، راجع مصادقة Azure باستخدام Azure SDK لـ Go.
سجِّل الدخول إلى مدخل Azure
في Azure CLI، شغِّل الأمر التالي:
az login
إذا كان بإمكان Azure CLI فتح المستعرض الافتراضي الخاص بك، فسيقوم بذلك، ويقوم بتحميل صفحة تسجيل الدخول إلى Azure.
إذا لم يتم فتح الصفحة تلقائيا، فانتقل إلى https://aka.ms/devicelogin، ثم أدخل تعليمة التفويض البرمجية المعروضة في الوحدة الطرفية.
سجّل الدخول إلى مدخل Azure باستخدام بيانات اعتماد حسابك.
إنشاء مجموعة موارد ومخزن رئيسي
يستخدم هذا التشغيل السريع مخزن مفاتيح 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 Secrets 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).
أنشئ وحدة Go جديدة وثبّت الحزم
شغّل أوامر Go التالية:
go mod init kvSecrets
go get -u github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets
go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity
التعليمة البرمجية العينة
قم بإنشاء ملف يسمى main.go والصق التعليمة البرمجية التالية فيه:
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets"
)
func main() {
mySecretName := "secretName01"
mySecretValue := "secretValue"
vaultURI := fmt.Sprintf("https://%s.vault.azure.net/", os.Getenv("KEY_VAULT_NAME"))
// Create a credential using the NewDefaultAzureCredential type.
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
// Establish a connection to the Key Vault client
client, err := azsecrets.NewClient(vaultURI, cred, nil)
// Create a secret
params := azsecrets.SetSecretParameters{Value: &mySecretValue}
_, err = client.SetSecret(context.TODO(), mySecretName, params, nil)
if err != nil {
log.Fatalf("failed to create a secret: %v", err)
}
// Get a secret. An empty string version gets the latest version of the secret.
version := ""
resp, err := client.GetSecret(context.TODO(), mySecretName, version, nil)
if err != nil {
log.Fatalf("failed to get the secret: %v", err)
}
fmt.Printf("secretValue: %s\n", *resp.Value)
// List secrets
pager := client.NewListSecretsPager(nil)
for pager.More() {
page, err := pager.NextPage(context.TODO())
if err != nil {
log.Fatal(err)
}
for _, secret := range page.Value {
fmt.Printf("Secret ID: %s\n", *secret.ID)
}
}
// Delete a secret. DeleteSecret returns when Key Vault has begun deleting the secret.
// That can take several seconds to complete, so it may be necessary to wait before
// performing other operations on the deleted secret.
delResp, err := client.DeleteSecret(context.TODO(), mySecretName, nil)
if err != nil {
log.Fatalf("failed to delete secret: %v", err)
}
fmt.Println(delResp.ID.Name() + " has been deleted")
}
تشغيل التعليمات البرمجية
قبل تشغيل التعليمات البرمجية، أنشئ متغير بيئة باسم
KEY_VAULT_NAME
. قم بتعيين قيمة متغير البيئة إلى اسم المخزن الرئيسي الذي أنشأته مسبقا.export KEY_VAULT_NAME=quickstart-kv
لبدء تشغيل تطبيق Go، قم بتشغيل الأمر التالي:
go run main.go
secretValue: createdWithGO Secret ID: https://quickstart-kv.vault.azure.net/secrets/quickstart-secret Secret ID: https://quickstart-kv.vault.azure.net/secrets/secretName quickstart-secret has been deleted
أمثلة على التعليمات البرمجية
راجع وثائق الوحدة لمزيد من الأمثلة.
تنظيف الموارد
حذف مجموعة الموارد وكافة الموارد المتبقية عبر تشغيل الأمر التالي:
az group delete --resource-group quickstart-rg