قابلية برمجة دفتر الأستاذ السري Azure (ACL)
قابلية البرمجة هي ميزة جديدة في Confidential Ledger تسمح للعملاء بتشغيل التعليمات البرمجية المخصصة في نفس قاعدة الحوسبة الموثوق بها (TCB) مثل معاملات Azure Confidential Ledger (ACL) العادية. تتمثل فائدة تنفيذ التعليمات البرمجية المخصصة والمعاملات في TCB في أنها توفر نفس ضمانات السرية والنزاهة للتعليمات البرمجية المخصصة والمعاملات التي تنتجها. تدعم قابلية البرمجة أيضا التحكم في الوصول استنادا إلى الدور (RBAC) من خلال الأدوار المخصصة التي يتم تعريفها في قائمة التحكم في الوصول واستخدامها في التعليمات البرمجية.
فيما يلي بعض السيناريوهات التي يمكن تمكينها من خلال قابلية البرمجة:
- تجميع البيانات وتحليلاتها: يمكن تحليل المعلومات الحساسة في TCB ويمكن مشاركة المعلومات المجمعة فقط مع أصحاب المصلحة.
- التصديق: يمكن مشاركة المعلومات الحساسة مثل PII ودرجة الائتمان والمعلومات الصحية مع أحمال العمل التي تعمل على عروض الحوسبة السرية الأخرى مثل Azure Confidential ACI وS confidential VM بعد التصديق
المتطلبات الأساسية
- مالك الاشتراك - يمكن إنشاء دفتر الأستاذ السري فقط من قبل المستخدمين الذين لديهم أذونات المالك على اشتراك Azure. تأكد من أن لديك الوصول المناسب قبل المتابعة مع هذا التشغيل السريع.
يفترض هذا البرنامج التعليمي أنك قمت بإنشاء مثيل Confidential Ledger. يمكنك إنشاء Confidential Ledger باستخدام مدخل Microsoft Azure أو Azure CLI أو Azure PowerShell.
تطوير التطبيقات ونشرها
يتم تطوير التطبيقات باستخدام TypeScript وطرحها في حزمة JavaScript. لمعرفة المزيد حول عملية التطوير، راجع وثائق إطار الاتحاد السري (CCF).
هام
يمكن لمستخدمي المسؤول فقط نشر التطبيقات وإدارة التحكم في الوصول استنادا إلى الدور المخصص في Confidential Ledger. يفترض باقي القسم أن المسؤول ينفذ الخطوات التالية.
يفترض القسم التالي أن التطبيق جاهز للتوزيع. لتوضيح عملية النشر، نستخدم نموذج التطبيق المصرفي المتوفر في مستودع azureconfidentialledger-app-samples (https://github.com/microsoft/azureconfidentialledger-app-samples).
إشعار
يوضح التطبيق كيف يمكن تحقيق حالات الاستخدام المصرفي الشائعة مثل فتح الحسابات والإيداع وتحويل الأموال من خلال تطبيق JavaScript المنشور على مثيل Confidential Ledger. كما يوضح كيفية استخدام الأدوار المخصصة وRBAC لتخويل إجراءات المستخدم.
تسجيل الدخول إلى Azure
إشعار
يدعم Confidential Ledger Microsoft Entra الجاهز. لا حاجة إلى مزيد من التكوين. إذا كان تطبيقك يستخدم JWT الصادر عن موفري الهوية الآخرين، فاتصل بدعم العملاء لتكوينه على مثيل Confidential Ledger.
احصل على رمز Microsoft Entra المميز للمصادقة على مثيل Confidential Ledger.
az login --use-device-code
az account get-access-token --resource https://confidential-ledger.azure.com
انسخ قيمة الرمز المميز الخام من إخراج الأمر.
تنزيل هوية دفتر الأستاذ
يقترن كل مثيل Confidential Ledger بهوية فريدة ممثلة بشهادة تسمى شهادة الخدمة. مطلوب لإنشاء اتصال آمن بالمثيل. قم بتنزيله وحفظه في servicer_cert.pem.
إشعار
contoso
هو اسم مثيل Confidential Ledger. استبدله باسم المثيل الخاص بك.
curl https://identity.confidential-ledger.core.azure.com/ledgerIdentity/contoso --silent | jq ' .ledgerTlsCertificate' | xargs echo -e > service_cert.pem
قم بنشر التطبيق
انشر حزمة تطبيق JavaScript عن طريق استدعاء /app/userDefinedEndpoints.
apiVersion="2024-08-22-preview"
content_type_application_json="Content-Type: application/json"
bundle="/path/to/bundle.json"
authorization="Authorization: Bearer raw_token_value"
server_identity="--cacert service_cert.pem"
# Deploy the application
#
curl $server_identity -X PUT "https://contoso.confidential-ledger.azure.com/app/userDefinedEndpoints?api-version=$apiVersion" -H "$content_type_application_json" -H "$authorization" -d @$bundle
# View the application
#
curl $server_identity "https://contoso.confidential-ledger.azure.com/app/userDefinedEndpoints?api-version=$apiVersion" -H "$authorization"
إنشاء أدوار ومستخدمين مخصصين
يتضمن التطبيق المصرفي شخصين، وهما "مدير" و"صراف". نقوم بإنشاء دورين ومستخدمين لتمثيل الشخصيات.
إشعار
يتم تمثيل المستخدم بشهادة فريدة.
إشعار
يمكن تعيين الأدوار المضمنة لمستخدمي التطبيق، وهي المسؤول والمساهم والقارئ. الأدوار المخصصة حساسة لحالة الأحرف والأدوار المضمنة غير حساسة لحالة الأحرف. يمكن تعيين أدوار متعددة للمستخدم.
apiVersion="2024-08-22-preview"
content_type_application_json="Content-Type: application/json"
content_type_merge_patch_json="Content-Type: application/merge-patch+json"
authorization="Authorization: Bearer raw_token_value"
curve="secp384r1"
server_identity="--cacert service_cert.pem"
# These actions must match (case-sensitive) the values defined in the application.
#
role_actions='{"roles":[{"role_name":"manager","role_actions":["/banking/accounts/post","/banking/accounts/put","/banking/accounts/get","/banking/accounts/patch"]},{"role_name":"teller","role_actions":["/banking/accounts/put","/banking/accounts/get","/banking/accounts/patch"]}]}'
# Create the roles.
#
curl $server_identity -X PUT "https://contoso.confidential-ledger.azure.com/app/roles?api-version=$apiVersion" -H "$content_type_application_json" -H "$authorization" -d $role_actions
# View the roles
#
curl $server_identity "https://contoso.confidential-ledger.azure.com/app/roles?api-version=$apiVersion" -H "$authorization"
# Create a certificate for the manager user.
#
openssl ecparam -out "manager_privk.pem" -name "$curve" -genkey
openssl req -new -key "manager_privk.pem" -x509 -nodes -days 365 -out "manager_cert.pem" -sha384 -subj=/CN="manager"
manager_cert_fingerprint=$(openssl x509 -in "manager_cert.pem" -noout -fingerprint -sha256 | cut -d "=" -f 2)
manager_user="{\"user_id\":\"$manager_cert_fingerprint\",\"assignedRoles\":[\"manager\"]}"
# Create a certificate for the teller user.
#
openssl ecparam -out "teller_privk.pem" -name "$curve" -genkey
openssl req -new -key "teller_privk.pem" -x509 -nodes -days 365 -out "teller_cert.pem" -sha384 -subj=/CN="teller"
teller_cert_fingerprint=$(openssl x509 -in "teller_cert.pem" -noout -fingerprint -sha256 | cut -d "=" -f 2)
teller_user="{\"user_id\":\"$teller_cert_fingerprint\",\"assignedRoles\":[\"teller\"]}"
# Create the manager user.
#
curl $server_identity -X PATCH "https://contoso.confidential-ledger.azure.com/app/ledgerUsers/$manager_cert_fingerprint?api-version=$apiVersion" -H "$content_type_merge_patch_json" -H "$authorization" -d $manager_user
# Create the teller user.
#
curl $server_identity -X PATCH "https://contoso.confidential-ledger.azure.com/app/ledgerUsers/$teller_cert_fingerprint?api-version=$apiVersion" -H "$content_type_merge_patch_json" -H "$authorization" -d $teller_user
# View the users
#
curl $server_identity "https://contoso.confidential-ledger.azure.com/app/ledgerUsers?api-version=$apiVersion" -H "$authorization"
تحديث تكوين وقت التشغيل (اختياري)
يمكن تحديث تكوين وقت تشغيل JavaScript عن طريق استدعاء نقطة نهاية /app/userDefinedEndpoints/runTimeOptions. لإثبات ذلك، دعونا نحدد الحد الأقصى لوقت التنفيذ إلى 2000 مللي ثانية.
apiVersion="2024-08-22-preview"
content_type_merge_patch_json="Content-Type: application/merge-patch+json"
authorization="Authorization: Bearer raw_token_value"
runtime_options="{\"max_heap_bytes\":1024,\"max_stack_bytes\":1024,\"max_execution_time_ms\":2000,\"log_exception_details\":false,\"return_exception_details\":false,\"max_cached_interpreters\":1024}"
server_identity="--cacert service_cert.pem"
# Patch the runtime options
#
curl $server_identity -X PATCH "https://contoso.confidential-ledger.azure.com/app/userDefinedEndpoints/runTimeOptions?api-version=$apiVersion" -H "$content_type_merge_patch_json" -H "$authorization" -d $runtime_options
# View the runtime options
#
curl $server_identity "https://contoso.confidential-ledger.azure.com/app/userDefinedEndpoints/runTimeOptions?api-version=$apiVersion" -H "$authorization"
أنت الآن جاهز لاستدعاء نقاط نهاية التطبيق وإرسال المعاملات.
تنظيف الموارد
يعتمد البدء السريع والبرامج التعليمية الأخرى في هذه المجموعة على هذا البدء السريع. إذا كنت تخطط لمواصلة العمل مع الخطوات السريعة والبرامج التعليمية اللاحقة، فقد ترغب في ترك هذه الموارد في مكانها.
يمكنك، عند عدم الحاجة إلى ذلك، استخدام الأمر az group delete في Azure CLI لإزالة مجموعة الموارد وجميع الموارد ذات الصلة:
az group delete --name "myResourceGroup"
الخطوات التالية
في هذا البرنامج التعليمي، قمت بنشر تطبيق JavaScript مخصص في مثيل دفتر الأستاذ السري. لمعرفة المزيد حول دفتر الأستاذ السري Azure وكيفية دمجه مع تطبيقاتك، تابع إلى هذه المقالات.