Gyors kezdés: Microsoft Azure bizalmas főkönyv ügyfélkönyvtár Pythonhoz

Kezdjen hozzá a Pythonhoz készült Microsoft Azure bizalmas tranzakciónapló ügyfélkönyvtárral. A csomag telepítéséhez kövesse a cikkben leírt lépéseket, és próbálja ki az alapműveletek példakódját.

A Bizalmas Microsoft Azure-napló egy új és rendkívül biztonságos szolgáltatás a bizalmas adatrekordok kezeléséhez. Egy engedélyezett blokkláncmodell alapján az Azure bizalmas főkönyve egyedi adatintegritási előnyöket kínál, például a nem módosíthatóságot (a főkönyv csak hozzáfűzővé tételét) és az illetéktelen hozzáférés-ellenőrzést (az összes rekord sértetlenségének biztosítása érdekében).

Ha még nem rendelkezik Azure-fiókkal, első lépésként hozzon létre egy ingyenes fiókot.

API-referenciadokumentáció | Kódtár forráskódja | Csomagkezelési (Python-csomagindex) felügyeleti kódtár| Csomag (Python-csomagindex) ügyfélkódtár

Előfeltételek

Beállítás

Ez a gyorsútmutató az Azure Identity könyvtárat, valamint az Azure CLI-t vagy Azure PowerShellt használja, hogy hitelesítse a felhasználókat az Azure szolgáltatásokhoz. A fejlesztők a Visual Studio vagy a Visual Studio Code használatával is hitelesíthetik hívásaikat. További információ: Hitelesítse az ügyfélt az Azure Identity ügyfélkönyvtárával.

Bejelentkezés az Azure-ba

Jelentkezzen be az Azure-ba az Azure CLI az login paranccsal vagy az Azure PowerShell Connect-AzAccount parancsmaggal.

az login

Ha a parancssori felület vagy a PowerShell meg tudja nyitni az alapértelmezett böngészőt, az azt teszi, és betölt egy Azure-bejelentkezési lapot. Ellenkező esetben keresse fel https://aka.ms/devicelogin és adja meg a terminálban megjelenő engedélyezési kódot.

Ha a rendszer kéri, jelentkezzen be a fiók hitelesítő adataival a böngészőben.

A csomagok telepítése

Egy terminálban vagy parancssorban hozzon létre egy megfelelő projektmappát, majd hozzon létre és aktiváljon egy Python virtuális környezetet a Python virtuális környezetek használata című témakörben leírtak szerint.

Telepítse a Microsoft Entra identity ügyfélkódtárat:

pip install azure-identity

Telepítse az Azure bizalmas tranzakciónapló-vezérlősík ügyfélkönyvtárát.

pip install azure.mgmt.confidentialledger

Telepítse az Azure bizalmas főkönyv adatkezelő ügyfélkönyvtárát.

pip install azure.confidentialledger 

Erőforráscsoport létrehozása

Az erőforráscsoport egy logikai tároló, amelyben az Azure-erőforrások üzembe helyezése és felügyelete történik. Az Azure CLI az group create parancsával vagy az Azure PowerShell New-AzResourceGroup parancsmaggal hozzon létre egy erőforráscsoportot a kívánt helyen.

az group create --name "<resource-group>" -l "EastUS"

Regisztrálja a Microsoft ConfidentialLedger erőforrás-szolgáltatót

Az erőforrás-szolgáltató olyan szolgáltatás, amely Azure-erőforrásokat biztosít. Az Azure CLI az provider register paranccsal vagy az Azure PowerShell Register-AzResourceProvider parancsmaggal regisztrálhatja az Azure bizalmas főkönyv erőforrás-szolgáltatóját, 'microsoft.ConfidentialLedger'.

az provider register --namespace "microsoft.ConfidentialLedger"

Ellenőrizheti, hogy a regisztráció befejeződött-e az Azure CLI az provider register paranccsal vagy az Azure PowerShell Get-AzResourceProvider parancsmaggal.

az provider show --namespace "microsoft.ConfidentialLedger"

Python-alkalmazás létrehozása

Inicializálás

Most már elkezdhetjük a Python-alkalmazás írását. Először importálja a szükséges csomagokat.

# 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

Ezután használja a DefaultAzureCredential osztályt az alkalmazás hitelesítéséhez.

credential = DefaultAzureCredential()

A beállítás befejezéséhez állítsa be az alkalmazásban használandó változókat: az erőforráscsoportot, a létrehozni kívánt főkönyv nevét és az adatsík ügyfélkódtára által használandó két URL-címet.

Fontos

Minden egyes főkönyvnek globálisan egyedi névvel kell rendelkeznie. A következő példában cserélje le <ledger-name> a főkönyve nevére.

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

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

A vezérlősík ügyfélkódtárának használata

A vezérlősík ügyféloldali kódtára (azure.mgmt.confidentialledger) lehetővé teszi a főkönyveken végzett műveleteket, például létrehozást, módosítást, törlést, az előfizetéshez társított főkönyvek felsorolását és egy adott főkönyv adatait.

A kódban először hozzon létre egy vezérlősík-ügyfelet úgy, hogy átadja a ConfidentialLedgerAPI hitelesítőadat-változót és az Azure-előfizetés azonosítóját (mindkettő fent van beállítva).

confidential_ledger_mgmt = ConfidentialLedgerAPI(
    credential, subscription_id
)

Most már létrehozhatunk egy főkönyvet a következő használatával begin_create: . A begin_create függvényhez három paraméter szükséges: az erőforráscsoport, a főkönyv neve és egy "tulajdonságok" objektum.

Hozzon létre egy szótárt properties az alábbi kulcsokkal és értékekkel, és rendelje hozzá egy változóhoz.

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

ledger_properties = ConfidentialLedger(**properties)

Adja át az erőforráscsoportot, a főkönyv nevét és a tulajdonságok objektumát a begin_create-nak.

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

Ha ellenőrizni szeretné, hogy a főkönyv sikeresen létrejött-e, tekintse meg annak részleteit a get függvény használatával.

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}")

Az adatsík ügyfélkódtárának használata

Most, hogy rendelkezünk egy főkönyvvel, interaktáljon vele az adatsík ügyfélkönyvtár (azure.confidentialledger) használatával.

Először létrehozunk és mentünk egy bizalmas főkönyv-tanúsítványt.

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'])

Most már használhatjuk a hálózati tanúsítványt, valamint a főkönyv URL-címét és hitelesítő adatait egy bizalmas főkönyv-ügyfél létrehozásához.

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

Készek vagyunk írni a főkönyvbe. Ezt a create_ledger_entry függvény használatával fogjuk megtenni.

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

A nyomtatási függvény visszaadja az írás tranzakcióazonosítóját a főkönyvnek, amely a főkönyvbe írt üzenet lekérésére használható.

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']}")

Ha csak a főkönyvre véglegesített legutóbbi tranzakciót szeretné, használhatja a függvényt get_current_ledger_entry .

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']}")

A nyomtatási függvény a "Hello world!" értéket adja vissza, mivel ez a tranzakcióazonosítónak megfelelő és egyben a legújabb tranzakciót jelző üzenet a főkönyvben.

Teljes mintakó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 = "<resource-group>"
ledger_name = "<ledger-name>"
subscription_id = "<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']}")

Szavazók

Ha meg szeretné várni, hogy az írási tranzakciót véglegesíteni lehessen a főkönyvben, használhatja a függvényt begin_create_ledger_entry . Ez visszaad egy értesítőt, amely megvárja, amíg a bejegyzés tartósan elkötelezett állapotba kerül.

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

Egy régebbi tétel lekérdezéséhez a főkönyvnek be kell olvasnia a bejegyzést a lemezről, és ellenőriznie kell. A függvény használatával begin_get_ledger_entry létrehozhat egy lekérdezést, amely megvárja, amíg a lekérdezett bejegyzés megtekintésre kész állapotban van.

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

Erőforrások tisztítása

Erre a rövid útmutatóra más, bizalmas Azure-naplócikkek is épülhetnek. Ha azt tervezi, hogy az ezt követő rövid útmutatókkal és oktatóanyagokkal dolgozik tovább, érdemes lehet ezeket az erőforrásokat megőrizni.

Ellenkező esetben, ha végzett a cikkben létrehozott erőforrásokkal, az Azure CLI az group delete paranccsal törölje az erőforráscsoportot és annak összes benne foglalt erőforrását:

az group delete --resource-group <resource-group>

Következő lépések