Azure Gizli Kayıt Defteri (ACL) Programlanabilirliği
Programlanabilirlik, müşterilerin normal Azure Gizli Kayıt Defteri (ACL) işlemleriyle aynı Güvenilen İşlem Tabanında (TCB) özel kod çalıştırmasına olanak tanıyan gizli kayıt defterindeki yeni bir özelliktir. TCB'de özel kodu ve işlemleri yürütmenin avantajı, özel koda ve onun ürettiği işlemlere aynı gizlilik ve bütünlük garantilerini sağlamasıdır. Programlanabilirlik, ACL'de tanımlanan ve kodda kullanılan özel roller aracılığıyla Rol Tabanlı Erişim Denetimi'ni (RBAC) de destekler.
Programlanabilirlik aracılığıyla etkinleştirilebilen birkaç senaryo şunlardır:
- Veri toplama ve analiz: Hassas bilgiler TCB'de analiz edilebilir ve yalnızca toplanan bilgiler paydaşlarla paylaşılabilir.
- Kanıtlama: PiI, kredi puanı ve sistem durumu bilgileri gibi hassas bilgiler, kanıtlama sonrasında Azure Gizli ACI ve Gizli VM gibi diğer gizli işlem tekliflerinde çalışan iş yükleriyle paylaşılabilir
Önkoşullar
- Azure CLI veya Azure PowerShell.
- Abonelik sahibi - Gizli bir kayıt defteri yalnızca Azure aboneliğinde Sahip izinleri olan kullanıcılar tarafından oluşturulabilir. Bu hızlı başlangıca devam etmeden önce uygun erişime sahip olduğunuzu onaylayın.
Bu öğreticide Gizli Kayıt Defteri örneği oluşturduğunuz varsayılır. Azure portalı, Azure CLI veya Azure PowerShell ile Gizli Kayıt Defteri oluşturabilirsiniz.
Uygulama geliştirme ve dağıtma
Uygulamalar TypeScript kullanılarak geliştirilir ve bir JavaScript paketine alınır. Geliştirme süreci hakkında daha fazla bilgi edinmek için Gizli Konsorsiyum Çerçevesi (CCF) belgelerine bakın.
Önemli
Gizli Kayıt Defteri'nde yalnızca Yönetici kullanıcılar uygulamaları dağıtabilir ve özel RBAC'yi yönetebilir. Bölümün geri kalanında yöneticinin aşağıdaki adımları yürüttüğü varsayılır.
Aşağıdaki bölümde uygulamanın dağıtıma hazır olduğu varsayılır. Dağıtım işlemini göstermek için azureconfidentialledger-app-samples deposunda (https://github.com/microsoft/azureconfidentialledger-app-samples) bulunan örnek bankacılık uygulamasını kullanırız.
Not
Uygulama, hesapları açma, para yatırma ve para aktarma gibi yaygın bankacılık kullanım durumlarının Gizli Kayıt Defteri örneğine dağıtılan bir JavaScript uygulaması aracılığıyla nasıl gerçekleştirilebileceğini gösterir. Ayrıca kullanıcı eylemlerini yetkilendirmek için özel rollerin ve RBAC'nin nasıl kullanılabileceğini gösterir.
Azure'da oturum açma
Not
Gizli Kayıt Defteri, Microsoft Entra'nın kullanıma çıkışını destekler. Başka yapılandırma gerekmez. Uygulamanız diğer Kimlik sağlayıcıları tarafından verilen JWT kullanıyorsa, Gizli Kayıt Defteri örneğinde yapılandırılması için müşteri desteğine başvurun.
Gizli Kayıt Defteri örneğinde kimlik doğrulaması yapmak için bir Microsoft Entra belirteci alın.
az login --use-device-code
az account get-access-token --resource https://confidential-ledger.azure.com
Komut çıkışından ham belirteç değerini kopyalayın.
Ledger kimliğini indirme
Her Gizli Kayıt Defteri örneği, hizmet sertifikası adı verilen bir sertifikayla temsil edilen benzersiz bir kimlikle ilişkilendirilir. Örneğe güvenli bir bağlantı kurmak için gereklidir. İndirin ve servicer_cert.pem adresine kaydedin.
Not
contoso
Gizli Kayıt Defteri örneğinin adıdır. Bunu örnek adınız ile değiştirin.
curl https://identity.confidential-ledger.core.azure.com/ledgerIdentity/contoso --silent | jq ' .ledgerTlsCertificate' | xargs echo -e > service_cert.pem
Uygulamayı dağıtma
/app/userDefinedEndpoints çağrısı yaparak JavaScript uygulama paketini dağıtın.
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"
Özel roller ve kullanıcılar oluşturma
Bankacılık uygulaması iki kişilik içerir, yani bir 'yönetici' ve bir 'vezne' . Kişilikleri temsil etmek için iki rol ve kullanıcı oluşturuyoruz.
Not
Kullanıcı benzersiz bir sertifikayla temsil edilir.
Not
Uygulama kullanıcılarına Yönetici, Katkıda Bulunan ve Okuyucu gibi yerleşik roller atanabilir. Özel roller büyük/küçük harfe duyarlıdır ve yerleşik roller büyük/küçük harfe duyarlı değildir. Kullanıcıya birden çok rol atanabilir.
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"
Çalışma zamanı yapılandırmasını güncelleştirme (isteğe bağlı)
JavaScript çalışma zamanı yapılandırması , /app/userDefinedEndpoints/runTimeOptions uç noktası çağrılarak güncelleştirilebilir. Bunu göstermek için en fazla yürütme süresini 2000 ms olarak ayarlayalım.
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"
Artık uygulama uç noktalarını çağırmaya ve işlemleri göndermeye hazırsınız.
Kaynakları temizleme
Bu koleksiyondaki diğer hızlı başlangıçlar ve öğreticiler bu hızlı başlangıcı temel alır. Sonraki hızlı başlangıç ve öğreticilerle çalışmaya devam etmeyi planlıyorsanız, bu kaynakları yerinde bırakmanız yararlı olabilir.
Artık gerekli olmadığında, kaynak grubunu ve tüm ilgili kaynakları kaldırmak için Azure CLI az group delete komutunu kullanabilirsiniz:
az group delete --name "myResourceGroup"
Sonraki adımlar
Bu öğreticide, özel bir JavaScript uygulamasını gizli bir kayıt defteri örneğine dağıttınız. Azure gizli kayıt defteri ve bunu uygulamalarınızla tümleştirme hakkında daha fazla bilgi edinmek için bu makalelere geçin.