Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit erweiterten benutzerdefinierten Funktionen (User Defined Functions, UDFs) kann benutzerdefinierter Code in derselben Trusted Execution Environment (TEE) wie das Ledger ausgeführt werden. Dieses Feature erweitert die Vorteile der Vertraulichkeit und Integritätsgarantie auf den benutzerdefinierten Code. Außerdem unterstützt es benutzerdefinierte rollenbasierte Zugriffssteuerung (Role Based Access Control, RBAC) für die Autorisierung.
Von Bedeutung
Benutzerdefinierte Funktionen befinden sich derzeit in DER VORSCHAU unter API-Version 2024-08-22-preview
.
Sie können über dieses Registrierungsformular Zugriff auf diese Vorschau anfordern.
Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.
Tipp
Für einfachere Szenarien, wie leichte benutzerdefinierte Logik oder direkte Integration mit der Ledger-API, siehe einfache benutzerdefinierte Funktionen in Azure Confidential Ledger.
Anwendungsfälle
Hier sind einige Szenarien, in denen erweiterte benutzerdefinierte Funktionen von Vorteil sein können:
- Datenanalyse und Aggregation: Vertrauliche Informationen können im TEE verarbeitet und aggregierte Informationen an die Beteiligten weitergegeben werden.
- Schutz vertraulicher Informationen: Vertrauliche Informationen wie personenbezogene Daten, Kredit-Score und Gesundheitsinformationen können nach der Beglaubigung mit anderen vertraulichen Arbeitslasten geteilt werden.
Voraussetzungen
- Azure CLI oder Azure PowerShell.
- Abonnementbesitzer: Eine Confidential Ledger-Instanz kann nur von jemandem erstellt werden, der über Berechtigungen vom Typ Besitzer für das Azure-Abonnement verfügt. Vergewissern Sie sich, dass Sie über den richtigen Zugriff verfügen, bevor Sie mit diesem Schnellstart fortfahren.
In diesem Lernprogramm wird davon ausgegangen, dass Sie eine Ledger-Instanz erstellt haben. Sie können eine erstellen, indem Sie das Azure-Portal, die Azure CLI oder Azure PowerShell verwenden.
Entwickeln von Anwendungen
Ledger-Anwendungen werden mit TypeScript entwickelt und in ein JavaScript-Bundle eingeführt. Weitere Informationen zum Entwicklungsprozess finden Sie in der CCF-Dokumentation (Confidential Consortium Framework).
Von Bedeutung
Nur Administratorbenutzende können Anwendungen bereitstellen und benutzerdefinierte RBAC in Confidential Ledger verwalten. Im restlichen Abschnitt wird davon ausgegangen, dass ein Administrator die Befehle ausführt.
Wir verwenden die Banking-Anwendung, die im Azureconfidentialledger-App-Samples-Repository (https://github.com/microsoft/azureconfidentialledger-app-samples) verfügbar ist, um das Feature zu veranschaulichen.
Hinweis
Die Banking-Anwendung macht APIs für häufig verwendete Bankingszenarien wie Eröffnungskonten, Einlagen und Überweisungen mit benutzerdefinierten Rollen und Aktionen verfügbar.
Anmelden bei Azure
Hinweis
Das Azure-Vertrauungsbuch unterstützt Microsoft Entra ID von Haus aus. Wenn Ihre Anwendung mit anderen Identitätsanbietern integriert ist, wenden Sie sich an den Kundensupport, um sie im Ledger-System zu konfigurieren.
Rufen Sie ein Microsoft Entra-ID-Token ab.
az login --use-device-code
az account get-access-token --resource https://confidential-ledger.azure.com
Kopieren Sie den Rohtokenwert aus der Ausgabe.
Herunterladen der Ledger-Identität
Ein Hauptbuch wird durch ein Zertifikat, das als Dienstzertifikat bekannt ist, eindeutig identifiziert. Es wird verwendet, um eine sichere Verbindung zum Ledger herzustellen. Laden Sie ihn von einem bekannten Endpunkt herunter, und speichern Sie ihn auf servicer_cert.pem.
Hinweis
contoso
ist der Name des Ledgers. Ersetzen Sie ihn durch den entsprechenden Ledgernamen.
curl https://identity.confidential-ledger.core.azure.com/ledgerIdentity/contoso --silent | jq ' .ledgerTlsCertificate' | xargs echo -e > service_cert.pem
Bereitstellen der Anwendung
Stellen Sie das JavaScript-Anwendungsbundle bereit, indem Sie den /app/userDefinedEndpoints-Endpunkt aufrufen.
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"
Hinweis
Erweiterte benutzerdefinierte Funktionen und einfache benutzerdefinierte Funktionen schließen sich gegenseitig aus. Sie können keine einfachen UDFs erstellen oder ausführen, wenn erweiterte UDFs definiert sind und umgekehrt. Wenn Sie zwischen den beiden Wechseln wechseln möchten, folgen Sie den Anweisungen auf der UDF-Übersichtsseite.
Erstellen von Rollen und Benutzern
Die Bankanwendung verwendet zwei Personas, nämlich einen Vorgesetzten und einen Geldzähler. Wir erstellen Rollen und Benutzer, um sie darzustellen.
Hinweis
Jeder Benutzer wird durch ein eindeutiges Zertifikat dargestellt.
Hinweis
Anwendungsbenutzenden können die integrierten Rollen zugewiesen werden, nämlich Admin, mitwirkende Person und Person mit Leseberechtigung. Bei benutzerdefinierten Rollen wird zwischen Groß- und Kleinschreibung unterschieden, und bei integrierten Rollen wird die Groß- und Kleinschreibung nicht beachtet. Einem Benutzenden können mehrere Rollen zugewiesen werden.
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"
Aktualisieren der Laufzeitkonfiguration (optional)
Die JavaScript-Laufzeitkonfiguration kann durch Aufrufen des Endpunkts „/app/userDefinedEndpoints/runTimeOptions“ aktualisiert werden. Um dies zu veranschaulichen, legen wir die maximale Ausführungszeit auf 2.000 ms fest.
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"
Jetzt können Sie die Anwendungsendpunkte aufrufen und Transaktionen übermitteln.
Bereinigen von Ressourcen
Andere Schnellstartanleitungen und Tutorials in dieser Sammlung bauen auf dieser Schnellstartanleitung auf. Wenn Sie planen, mit weiteren Schnellstartanleitungen und Tutorials fortzufahren, möchten Sie diese Ressourcen vielleicht an Ort und Stelle belassen.
Wenn Sie die Ressourcen nicht mehr benötigen, führen Sie den Azure CLI-Befehl az group delete aus, um die Ressourcengruppe und alle dazugehörigen Ressourcen zu löschen:
az group delete --name "myResourceGroup"
Nächste Schritte
In diesem Tutorial haben Sie eine benutzerdefinierte JavaScript-Anwendung in einer Confidential Ledger-Instanz bereitgestellt. Weitere Informationen zum vertraulichen Hauptbuch von Azure und zur Integration in Ihre Anwendungen finden Sie in den folgenden Artikeln: