Sdílet prostřednictvím


Programovatelnost důvěrného registru Azure (ACL)

Programovatelnost je nová funkce v důvěrném registru, která zákazníkům umožňuje spouštět vlastní kód ve stejné důvěryhodné výpočetní databázi (TCB) jako běžné transakce ACL (Azure Confidential Ledger). Výhodou provádění vlastního kódu a transakcí v TCB je, že poskytuje stejné záruky důvěrnosti a integrity pro vlastní kód a transakce vytvořené v ní. Programovatelnost také podporuje řízení přístupu na základě role (RBAC) prostřednictvím vlastních rolí definovaných v seznamu ACL a používaných v kódu.

Několik scénářů, které je možné povolit prostřednictvím programovatelnosti, jsou následující:

  • Agregace a analýza dat: Citlivé informace je možné analyzovat v TCB a sdílet je se zúčastněnými stranami pouze agregované informace.
  • Ověření identity: Citlivé informace, jako jsou PII, skóre kreditu a informace o stavu, se dají sdílet s úlohami běžícími na dalších důvěrných výpočetních nabídkách, jako jsou Důvěrné ACI Azure a Důvěrné virtuální počítače po ověření identity.

Požadavky

V tomto kurzu se předpokládá, že jste vytvořili instanci důvěrného registru. Důvěrné registru můžete vytvořit pomocí webu Azure Portal, Azure CLI nebo Azure PowerShellu.

Vývoj a nasazování aplikací

Aplikace se vyvíjejí pomocí TypeScriptu a zahrnou se do sady JavaScriptu. Další informace o procesu vývoje najdete v dokumentaci k rozhraní CCF (Confidential Consortium Framework).

Důležité

Aplikace a správu vlastního řízení přístupu na základě role v důvěrném registru můžou nasadit jenom uživatelé správce. Ve zbývající části se předpokládá, že správce provede následující kroky.

Následující část předpokládá, že aplikace je připravená k nasazení. K předvedení procesu nasazení používáme ukázkovou bankovní aplikaci dostupnou v úložišti azureconfidentialledger-app-samples (https://github.com/microsoft/azureconfidentialledger-app-samples).

Poznámka:

Aplikace ukazuje, jak běžné případy použití bankovnictví, jako jsou otevření účtů, vklad a převod finančních prostředků, lze realizovat prostřednictvím javascriptové aplikace nasazené na instanci důvěrného registru. Ukazuje také, jak se dají k autorizaci uživatelských akcí použít vlastní role a RBAC.

Přihlášení k Azure

Poznámka:

Důvěrné hlavní knihy podporují Microsoft Entra out-of-the-box. Nevyžaduje se žádná další konfigurace. Pokud vaše aplikace používá JWT vydané jinými zprostředkovateli identity, obraťte se na zákaznickou podporu, aby ji nakonfigurovala v instanci důvěrného registru.

Získejte token Microsoft Entra pro ověření v instanci důvěrného registru.

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

Zkopírujte nezpracovanou hodnotu tokenu z výstupu příkazu.

Stažení identity registru

Každá instance důvěrné knihy je přidružena k jedinečné identitě reprezentované certifikátem označovaným jako certifikát služby. Je nutné vytvořit zabezpečené připojení k instanci. Stáhněte si ho a uložte ho do souboru servicer_cert.pem.

Poznámka:

contoso je název instance důvěrného registru. Nahraďte ho názvem vaší instance.

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

Nasazení aplikace

Nasaďte sadu aplikací JavaScript voláním /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"

Vytváření vlastních rolí a uživatelů

Bankovní aplikace zahrnuje dvě osoby, konkrétně "manažera" a "řeknětele". Vytvoříme dvě role a uživatele, kteří budou představovat osoby.

Poznámka:

Uživatel je reprezentován jedinečným certifikátem.

Poznámka:

Uživatelům aplikace je možné přiřadit předdefinované role, konkrétně správce, přispěvatele a čtenáře. Vlastní role rozlišují malá a velká písmena a předdefinované role nerozlišují malá a velká písmena. Uživateli může být přiřazeno více rolí.

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"

Aktualizace konfigurace modulu runtime (volitelné)

Konfiguraci modulu runtime JavaScriptu je možné aktualizovat voláním koncového bodu /app/userDefinedEndpoints/runTimeOptions. Abychom si to ukázali, nastavte maximální dobu provádění na 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"

Teď jste připraveni volat koncové body aplikace a odesílat transakce.

Vyčištění prostředků

Další rychlé starty a kurzy v této kolekci vycházejí z tohoto rychlého startu. Pokud chcete pokračovat v práci s dalšími rychlými starty a kurzy, možná budete chtít tyto prostředky zachovat.

Pokud už ji nepotřebujete, můžete k odebrání skupiny prostředků a všech souvisejících prostředků použít příkaz az group delete v Azure CLI:

az group delete --name "myResourceGroup"

Další kroky

V tomto kurzu jste nasadili vlastní javascriptovou aplikaci do důvěrné instance registru. Další informace o důvěrném registru Azure a o tom, jak ho integrovat s vašimi aplikacemi, najdete v těchto článcích.