Rychlý start: Klientská knihovna důvěrné knihy Microsoft Azure pro Python

Začínáme s klientskou knihovnou důvěrného registru Microsoft Azure pro Python Podle kroků v tomto článku nainstalujte balíček a vyzkoušejte ukázkový kód pro základní úlohy.

Důvěrný registr Microsoft Azure je nová a vysoce zabezpečená služba pro správu záznamů citlivých dat. Na základě modelu blockchainu s oprávněním nabízí důvěrné registru Azure jedinečné výhody integrity dat, jako je neměnnost (vytváření pouze připojení hlavní knihy) a kontrola pravopisu manipulací (aby se zajistilo, že všechny záznamy zůstanou nedotčené).

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Referenční dokumentace k | rozhraní API – Balíček knihovny zdrojového kódu | knihovny (Index balíčků Pythonu) – balíček knihovny pro| správu (index balíčků Pythonu)

Požadavky

Nastavení

V tomto rychlém startu se k ověření uživatele ve službách Azure používá knihovna identit Azure spolu s Azure CLI nebo Azure PowerShellem. Vývojáři také můžou k ověření volání použít Visual Studio nebo Visual Studio Code. Další informace najdete v tématu Ověřování klienta pomocí klientské knihovny Azure Identity.

Přihlášení k Azure

Přihlaste se k Azure pomocí příkazu az login azure CLI nebo rutiny Azure PowerShellu Připojení-AzAccount.

az login

Pokud může rozhraní příkazového řádku nebo PowerShell otevřít výchozí prohlížeč, provede se to a načte přihlašovací stránku Azure. V opačném případě navštivte https://aka.ms/devicelogin a zadejte autorizační kód zobrazený v terminálu.

Pokud se zobrazí výzva, přihlaste se pomocí přihlašovacích údajů k účtu v prohlížeči.

Instalace balíčků

V terminálu nebo příkazovém řádku vytvořte vhodnou složku projektu a pak vytvořte a aktivujte virtuální prostředí Pythonu, jak je popsáno v tématu Použití virtuálních prostředí Pythonu.

Nainstalujte klientskou knihovnu Microsoft Entra Identity:

pip install azure-identity

Nainstalujte klientskou knihovnu řídicí roviny registru Azure.

pip install azure.mgmt.confidentialledger

Nainstalujte klientskou knihovnu roviny dat v rovině důvěrných registrů Azure.

pip install azure.confidentialledger 

Vytvoření skupiny zdrojů

Skupina prostředků je logický kontejner, ve kterém se nasazují a spravují prostředky Azure. Pomocí příkazu Az group az cli nebo rutiny Azure PowerShell New-AzResourceGroup vytvořte skupinu prostředků myResourceGroup v umístění eastus.

az group create --name "myResourceGroup" -l "EastUS"

Zaregistrujte microsoft. Poskytovatel prostředků ConfidentialLedger

Poskytovatel prostředků je služba, která poskytuje prostředky Azure. Pomocí příkazu Az provider az Azure CLI nebo rutiny Azure PowerShell Register-AzResourceProvider zaregistrujte poskytovatele prostředků důvěrného registru Azure microsoft. Důvěrnéledger'.

az provider register --namespace "microsoft.ConfidentialLedger"

Registraci můžete ověřit pomocí příkazu az provider register v Azure CLI nebo pomocí rutiny Azure PowerShell Get-AzResourceProvider.

az provider show --namespace "microsoft.ConfidentialLedger"

Vytvoření aplikace v Pythonu

Inicializace

Teď můžeme začít psát naši aplikaci v Pythonu. Nejprve naimportujte požadované balíčky.

# Import the Azure authentication library

from azure.identity import DefaultAzureCredential

## Import the control plane sdk

from azure.mgmt.confidentialledger import ConfidentialLedger as ConfidentialLedgerAPI
from azure.mgmt.confidentialledger.models import ConfidentialLedger

# import the data plane sdk

from azure.confidentialledger import ConfidentialLedgerClient
from azure.confidentialledger.certificate import ConfidentialLedgerCertificateClient

Dále použijte defaultAzureCredential Třída k ověření aplikace.

credential = DefaultAzureCredential()

Dokončete nastavení nastavením některých proměnných pro použití v aplikaci: skupina prostředků (myResourceGroup), název registru, který chcete vytvořit, a dvě adresy URL, které má klientská knihovna roviny dat používat.

Důležité

Každý registr musí mít globálně jedinečný název. Nahraďte <název registru jedinečným> názvem registru v následujícím příkladu.

resource_group = "<azure-resource-group>"
ledger_name = "<your-unique-ledger-name>"
subscription_id = "<azure-subscription-id>"

identity_url = "https://identity.confidential-ledger.core.azure.com"
ledger_url = "https://" + ledger_name + ".confidential-ledger.azure.com"

Použití klientské knihovny řídicí roviny

Klientská knihovna řídicí roviny (azure.mgmt.confidentialledger) umožňuje operace s registry, jako je vytvoření, úprava, odstranění, výpis registrů přidružených k předplatnému a získání podrobností o konkrétním registru.

V kódu nejprve vytvořte klienta řídicí roviny předáním důvěrnéledgerAPI proměnné přihlašovacích údajů a ID předplatného Azure (obojí je nastaveno výše).

confidential_ledger_mgmt = ConfidentialLedgerAPI(
    credential, subscription_id
)

Nyní můžeme vytvořit registr pomocí begin_create. Funkce begin_create vyžaduje tři parametry: vaši skupinu prostředků, název hlavní knihy a objekt "properties".

properties Vytvořte slovník s následujícími klíči a hodnotami a přiřaďte ho proměnné.

properties = {
    "location": "eastus",
    "tags": {},
    "properties": {
        "ledgerType": "Public",
        "aadBasedSecurityPrincipals": [],
    },
}

ledger_properties = ConfidentialLedger(**properties)

Nyní předejte skupinu prostředků, název registru a objekt vlastností do begin_create.

confidential_ledger_mgmt.ledger.begin_create(resource_group, ledger_name, ledger_properties)

Pokud chcete ověřit, že se registr úspěšně vytvořil, zobrazte jeho podrobnosti pomocí get funkce.

myledger = confidential_ledger_mgmt.ledger.get(resource_group, ledger_name)

print("Here are the details of your newly created ledger:")
print (f"- Name: {myledger.name}")
print (f"- Location: {myledger.location}")
print (f"- ID: {myledger.id}")

Použití klientské knihovny roviny dat

Když teď máme hlavní knihy, interagujte s ní pomocí klientské knihovny roviny dat (azure.confidentialledger).

Nejprve vygenerujeme a uložíme důvěrný certifikát registru.

identity_client = ConfidentialLedgerCertificateClient(identity_url)
network_identity = identity_client.get_ledger_identity(
     ledger_id=ledger_name
)

ledger_tls_cert_file_name = "networkcert.pem"
with open(ledger_tls_cert_file_name, "w") as cert_file:
    cert_file.write(network_identity['ledgerTlsCertificate'])

Teď můžeme použít síťový certifikát spolu s adresou URL registru a našimi přihlašovacími údaji k vytvoření důvěrného klienta registru.

ledger_client = ConfidentialLedgerClient(
     endpoint=ledger_url, 
     credential=credential,
     ledger_certificate_path=ledger_tls_cert_file_name
)

Jsme připraveni napsat do registru. Provedeme to pomocí create_ledger_entry funkce.

sample_entry = {"contents": "Hello world!"}
append_result = ledger_client.create_ledger_entry(entry=sample_entry)
print(append_result['transactionId'])

Funkce tisku vrátí ID transakce zápisu do registru, které lze použít k načtení zprávy, kterou jste napsali do registru.

entry = ledger_client.get_ledger_entry(transaction_id=append_result['transactionId'])['entry']
print(f"Entry (transaction id = {entry['transactionId']}) in collection {entry['collectionId']}: {entry['contents']}")

Pokud chcete jenom nejnovější transakci, která byla potvrzena do registru, můžete použít get_current_ledger_entry funkci.

latest_entry = ledger_client.get_current_ledger_entry()
print(f"Current entry (transaction id = {latest_entry['transactionId']}) in collection {latest_entry['collectionId']}: {latest_entry['contents']}")

Funkce tisku vrátí "Hello world!", protože se jedná o zprávu v registru, která odpovídá ID transakce a je nejnovější transakcí.

Celý ukázkový kód

import time
from azure.identity import DefaultAzureCredential

## Import control plane sdk

from azure.mgmt.confidentialledger import ConfidentialLedger as ConfidentialLedgerAPI
from azure.mgmt.confidentialledger.models import ConfidentialLedger

# import data plane sdk

from azure.confidentialledger import ConfidentialLedgerClient
from azure.confidentialledger.certificate import ConfidentialLedgerCertificateClient

# Set variables

resource_group = "<azure-resource-group>"
ledger_name = "<your-unique-ledger-name>"
subscription_id = "<azure-subscription-id>"

identity_url = "https://identity.confidential-ledger.core.azure.com"
ledger_url = "https://" + ledger_name + ".confidential-ledger.azure.com"

# Authentication

# Need to do az login to get default credential to work

credential = DefaultAzureCredential()

# Control plane (azure.mgmt.confidentialledger)
# 
# initialize endpoint with credential and subscription

confidential_ledger_mgmt = ConfidentialLedgerAPI(
    credential, "<subscription-id>"
)

# Create properties dictionary for begin_create call 

properties = {
    "location": "eastus",
    "tags": {},
    "properties": {
        "ledgerType": "Public",
        "aadBasedSecurityPrincipals": [],
    },
}

ledger_properties = ConfidentialLedger(**properties)

# Create a ledger

confidential_ledger_mgmt.ledger.begin_create(resource_group, ledger_name, ledger_properties)

# Get the details of the ledger you just created

print(f"{resource_group} / {ledger_name}")
 
print("Here are the details of your newly created ledger:")
myledger = confidential_ledger_mgmt.ledger.get(resource_group, ledger_name)

print (f"- Name: {myledger.name}")
print (f"- Location: {myledger.location}")
print (f"- ID: {myledger.id}")

# Data plane (azure.confidentialledger)
#
# Create a CL client

identity_client = ConfidentialLedgerCertificateClient(identity_url)
network_identity = identity_client.get_ledger_identity(
     ledger_id=ledger_name
)

ledger_tls_cert_file_name = "networkcert.pem"
with open(ledger_tls_cert_file_name, "w") as cert_file:
    cert_file.write(network_identity['ledgerTlsCertificate'])


ledger_client = ConfidentialLedgerClient(
     endpoint=ledger_url, 
     credential=credential,
     ledger_certificate_path=ledger_tls_cert_file_name
)

# Write to the ledger
sample_entry = {"contents": "Hello world!"}
ledger_client.create_ledger_entry(entry=sample_entry)
  
# Read from the ledger
latest_entry = ledger_client.get_current_ledger_entry()
print(f"Current entry (transaction id = {latest_entry['transactionId']}) in collection {latest_entry['collectionId']}: {latest_entry['contents']}")

Pollers

Pokud chcete počkat na potvrzení transakce zápisu do registru, můžete použít begin_create_ledger_entry funkci. Tím se vrátí poller, který počká, dokud nebude trvale potvrzena položka.

sample_entry = {"contents": "Hello world!"}
ledger_entry_poller = ledger_client.begin_create_ledger_entry( 
    entry=sample_entry
)
ledger_entry_result = ledger_entry_poller.result()

Dotazování starší položky registru vyžaduje, aby hlavní kniha přečetla položku z disku a ověřila ji. Pomocí funkce můžete begin_get_ledger_entry vytvořit poller, která bude čekat, až bude dotazovaná položka ve stavu připraveno k zobrazení.

get_entry_poller = ledger_client.begin_get_ledger_entry(
    transaction_id=ledger_entry_result['transactionId']
)
entry = get_entry_poller.result()

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

Další články o důvěrných registrech Azure můžou vycházet 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.

Jinak po dokončení práce s prostředky vytvořenými v tomto článku pomocí příkazu az group delete v Azure CLI odstraňte skupinu prostředků a všechny její obsažené prostředky:

az group delete --resource-group myResourceGroup

Další kroky