Delen via


Programmeerbaarheid van Azure Confidential Ledger (ACL)

Programmeerbaarheid is een nieuwe functie in Confidential Ledger waarmee klanten aangepaste code kunnen uitvoeren in dezelfde Trusted Compute Base (TCB) als de reguliere ACL-transacties (Azure Confidential Ledger). Het voordeel van het uitvoeren van de aangepaste code en transacties in de TCB is dat het dezelfde vertrouwelijkheids- en integriteitsgaranties biedt voor de aangepaste code en de transacties die door de TCB worden geproduceerd. Programmeerbaarheid biedt ook ondersteuning voor op rollen gebaseerd toegangsbeheer (RBAC) via aangepaste rollen die zijn gedefinieerd in ACL en worden gebruikt in de code.

Een aantal scenario's die kunnen worden ingeschakeld via programmeerbaarheid zijn als volgt:

  • Gegevensaggregatie en analyse: gevoelige informatie kan worden geanalyseerd in de TCB en alleen geaggregeerde informatie kan worden gedeeld met de belanghebbenden.
  • Attestation: gevoelige informatie, zoals PII, kredietscore en statusgegevens, kunnen worden gedeeld met workloads die worden uitgevoerd op andere vertrouwelijke compute-aanbiedingen, zoals Azure Confidential ACI en Confidential VM na attestation

Vereisten

  • Abonnementseigenaar: een vertrouwelijk grootboek kan alleen worden gemaakt door gebruikers met eigenaarsmachtigingen voor het Azure-abonnement. Controleer of u de juiste toegang hebt voordat u verdergaat met deze quickstart.

In deze zelfstudie wordt ervan uitgegaan dat u een confidential ledger-exemplaar hebt gemaakt. U kunt een vertrouwelijk grootboek maken met Azure Portal, Azure CLI of Azure PowerShell.

Toepassingen ontwikkelen en implementeren

Toepassingen worden ontwikkeld met behulp van TypeScript en samengeteld in een JavaScript-bundel. Raadpleeg de documentatie over Confidential Consortium Framework (CCF) voor meer informatie over het ontwikkelingsproces.

Belangrijk

Alleen beheerders kunnen toepassingen implementeren en aangepaste RBAC beheren in Confidential Ledger. In de rest van de sectie wordt ervan uitgegaan dat een beheerder de volgende stappen uitvoert.

In de volgende sectie wordt ervan uitgegaan dat de toepassing gereed is voor implementatie. Om het implementatieproces te demonstreren, gebruiken we de voorbeeldbanktoepassing die beschikbaar is in de opslagplaats azureconfidentialledger-app-samples (https://github.com/microsoft/azureconfidentialledger-app-samples).

Notitie

De toepassing laat zien hoe veelvoorkomende bankgebruiksvoorbeelden, zoals het openen van accounts, het storten en overdragen van geld, kunnen worden gerealiseerd via een JavaScript-toepassing die is geïmplementeerd op een exemplaar van vertrouwelijk grootboek. Ook ziet u hoe aangepaste rollen en RBAC kunnen worden gebruikt om gebruikersacties te autoriseren.

Aanmelden bij Azure

Notitie

Confidential Ledger ondersteunt Microsoft Entra out-of-the-box. Er is geen configuratie meer vereist. Als uw toepassing gebruikmaakt van JWT die is uitgegeven door andere id-providers, neemt u contact op met de klantondersteuning om deze te configureren op het exemplaar van vertrouwelijk grootboek.

Haal een Microsoft Entra-token op om te verifiëren bij het exemplaar van Confidential Ledger.

az login --use-device-code
az account get-access-token --resource https://confidential-ledger.azure.com

Kopieer de onbewerkte tokenwaarde uit de opdrachtuitvoer.

De grootboekidentiteit downloaden

Elk exemplaar van vertrouwelijk grootboek is gekoppeld aan een unieke identiteit die wordt vertegenwoordigd door een certificaat dat het servicecertificaat wordt genoemd. Het is vereist om een beveiligde verbinding met het exemplaar tot stand te brengen. Download het en sla het op op servicer_cert.pem.

Notitie

contoso is de naam van het vertrouwelijke grootboekexemplaren. Vervang deze door de naam van uw exemplaar.

curl https://identity.confidential-ledger.core.azure.com/ledgerIdentity/contoso --silent | jq ' .ledgerTlsCertificate' | xargs echo -e > service_cert.pem

De toepassing implementeren

Implementeer de JavaScript-toepassingsbundel door /app/userDefinedEndpoints aan te roepen.

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"

Aangepaste rollen en gebruikers maken

De banktoepassing omvat twee persona's, namelijk een 'manager' en een 'teller'. We maken twee rollen en gebruikers die de persona's vertegenwoordigen.

Notitie

De gebruiker wordt vertegenwoordigd door een uniek certificaat.

Notitie

Toepassingsgebruikers kunnen de ingebouwde rollen toewijzen, namelijk Beheerder, Inzender en Lezer. Aangepaste rollen zijn hoofdlettergevoelig en ingebouwde rollen zijn niet hoofdlettergevoelig. Aan een gebruiker kunnen meerdere rollen worden toegewezen.

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"

De runtimeconfiguratie bijwerken (optioneel)

De JavaScript-runtimeconfiguratie kan worden bijgewerkt door het eindpunt /app/userDefinedEndpoints/runTimeOptions aan te roepen. Om dit te demonstreren, stellen we de maximale uitvoeringstijd in op 2000 ms.

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"

U bent nu klaar om de toepassingseindpunten aan te roepen en transacties in te dienen.

Resources opschonen

Andere snelstartgidsen en zelfstudies in deze verzameling zijn gebaseerd op deze snelstartgids. Als u van plan bent om verder te gaan met volgende snelstarts en zelfstudies, kunt u deze resources intact laten.

U kunt de opdracht az group delete van Azure CLI gebruiken om de resourcegroep en alle gerelateerde resources te verwijderen wanneer u deze niet meer nodig hebt.

az group delete --name "myResourceGroup"

Volgende stappen

In deze zelfstudie hebt u een aangepaste JavaScript-toepassing geïmplementeerd in een exemplaar van een vertrouwelijk grootboek. Ga verder met deze artikelen voor meer informatie over Azure Confidential Ledger en hoe u het kunt integreren met uw toepassingen.