Udostępnij przez


Zaawansowane funkcje zdefiniowane przez użytkownika w poufnym rejestrze platformy Azure (wersja zapoznawcza)

Zaawansowane funkcje zdefiniowane przez użytkownika (UDF) umożliwiają wykonywanie kodu niestandardowego w tym samym zaufanym środowisku wykonywania (TEE) co rejestr. Ta funkcja rozszerza korzyści wynikające z poufności i integralności kodu niestandardowego. Ponadto obsługuje niestandardową kontrolę dostępu opartą na rolach (RBAC) na potrzeby autoryzacji.

Ważne

Funkcje zdefiniowane przez użytkownika są obecnie dostępne w wersji zapoznawczej w obszarze Wersja 2024-08-22-previewinterfejsu API . Możesz zażądać dostępu do tej wersji zapoznawczej za pośrednictwem tego formularza rejestracji. Zobacz dodatkowe warunki użytkowania dla wersji zapoznawczych platformy Microsoft Azure, aby zapoznać się z postanowieniami prawnymi dotyczącymi funkcji platformy Azure, które są w wersji beta, wersji zapoznawczej lub w inny sposób nie zostały jeszcze wydane w wersji ogólnodostępnej.

Wskazówka

Aby zapoznać się z prostszymi scenariuszami, takimi jak lekka logika niestandardowa lub bezpośrednia integracja z API rejestru, zobacz proste funkcje definiowane przez użytkownika w poufnym rejestrze Azure.

Przypadki użycia

Poniżej przedstawiono kilka scenariuszy, w których zaawansowane funkcje zdefiniowane przez użytkownika mogą być korzystne:

  • Analiza i agregacja danych: Poufne informacje można przetwarzać w tee i agregowane informacje mogą być udostępniane uczestnikom projektu.
  • Ochrona informacji poufnych: Poufne informacje, takie jak dane osobowe, ocena kredytowa i informacje zdrowotne, mogą być udostępniane innym poufnym obciążeniom po uwierzytelnieniu.

Wymagania wstępne

Ten samouczek zakłada, że utworzono wystąpienie rejestru. Można go utworzyć przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.

Tworzenie aplikacji

Aplikacje księgi są tworzone przy użyciu języka TypeScript i kompilowane do pakietu JavaScript. Aby dowiedzieć się więcej na temat procesu programowania, zapoznaj się z dokumentacją platformy Confidential Consortium Framework (CCF).

Ważne

Administratorzy mogą wdrażać aplikacje i zarządzać niestandardowym KDOR w rejestrze. W pozostałej części sekcji założono, że administrator wykonuje polecenia.

Do zademonstrowania tej funkcji używamy aplikacji bankowej dostępnej w repozytorium azureconfidentialledger-app-samples (https://github.com/microsoft/azureconfidentialledger-app-samples).

Uwaga / Notatka

Aplikacja bankowa udostępnia interfejsy API dla często używanych scenariuszy bankowych, takich jak otwieranie kont, depozytowanie i przenoszenie funduszy przy użyciu ról niestandardowych i akcji.

Zaloguj się do Azure

Uwaga / Notatka

Rejestr poufny platformy Azure obsługuje gotowe identyfikatory Entra firmy Microsoft. Jeśli Twoja aplikacja integruje się z innymi dostawcami tożsamości, skontaktuj się z pomocą techniczną, aby skonfigurować ją w systemie.

Uzyskaj token Microsoft Entra ID.

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

Skopiuj nieprzetworzone wartości tokenu z danych wyjściowych.

Pobieranie tożsamości rejestru

Rejestr jest jednoznacznie identyfikowany przez certyfikat o nazwie certyfikat usługi. Służy do ustanawiania bezpiecznego połączenia z rejestrem. Pobierz go z dobrze znanego punktu końcowego i zapisz go w pliku servicer_cert.pem.

Uwaga / Notatka

contoso to nazwa rejestru. Zastąp ją odpowiednią nazwą rejestru.

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

Wdrażanie aplikacji

Wdróż pakiet aplikacji JavaScript, wywołując punkt końcowy /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"

Uwaga / Notatka

Zaawansowane funkcje zdefiniowane przez użytkownika i proste funkcje zdefiniowane przez użytkownika są wzajemnie wykluczające się funkcje. Nie można tworzyć ani uruchamiać prostych UDF, jeśli zdefiniowano zaawansowane UDF, i odwrotnie. Aby przełączyć się między nimi, postępuj zgodnie z instrukcjami na stronie przeglądowej UDF.

Tworzenie ról i użytkowników

Aplikacja bankowa używa dwóch osób, a mianowicie menedżera i teller. Tworzymy role i użytkowników do ich reprezentowania.

Uwaga / Notatka

Każdy użytkownik jest reprezentowany przez unikatowy certyfikat.

Uwaga / Notatka

Użytkownicy aplikacji mogą mieć przypisane wbudowane role, a mianowicie Administrator, Współautor i Czytelnik. Role niestandardowe są wrażliwe na wielkość liter, a wbudowane role są niewrażliwe na wielkość liter. Użytkownik może mieć przypisane wiele ról.

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"

Aktualizowanie konfiguracji środowiska uruchomieniowego (opcjonalnie)

Konfigurację środowiska uruchomieniowego języka JavaScript można zaktualizować, wywołując punkt końcowy /app/userDefinedEndpoints/runTimeOptions. Aby to zademonstrować, ustawmy maksymalny czas wykonywania 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"

Teraz możesz wywoływać punkty końcowe aplikacji i przesyłać transakcje.

Uprzątnij zasoby

Inne szybkie starty i samouczki w tej kolekcji bazują na tym przewodniku. Jeśli planujesz nadal korzystać z kolejnych szybkich startów i samouczków, warto pozostawić te zasoby na miejscu.

Gdy grupa zasobów i wszystkie powiązane zasoby nie będą już potrzebne, możesz użyć polecenia az group delete za pomocą interfejsu wiersza polecenia platformy Azure.

az group delete --name "myResourceGroup"

Dalsze kroki

W tym samouczku wdrożono niestandardową aplikację JavaScript w wystąpieniu poufnego rejestru. Aby dowiedzieć się więcej o poufnym rejestrze platformy Azure i sposobie integrowania go z aplikacjami, przejdź do następujących artykułów: