Share via


Rövid útmutató: Microsoft Azure bizalmas tranzakciónapló ügyfélkódtár a Pythonhoz

Ismerkedés a Pythonhoz készült Microsoft Azure bizalmas tranzakciónapló ügyfélkódtárával. 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 nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.

API-referenciadokumentáció Kódtár forráskódcsomagja | (Python-csomagindex) Felügyeleti kódtárcsomag| (Python-csomagindex) ügyfélkódtár |

Előfeltételek

Beállítás

Ez a rövid útmutató az Azure Identity library és az Azure CLI vagy az Azure PowerShell használatával hitelesíti a felhasználót az Azure Servicesben. A fejlesztők a Visual Studio vagy a Visual Studio Code használatával is hitelesíthetik hívásaikat. További információ: Az ügyfél hitelesítése az Azure Identity ügyfélkódtárával.

Bejelentkezés az Azure-ba

Jelentkezzen be az Azure-ba az Azure CLI az login paranccsal vagy az Azure PowerShell Csatlakozás-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ódtárát.

pip install azure.mgmt.confidentialledger

Telepítse az Azure bizalmas tranzakciónapló-adatsík ügyféloldali kódtárát.

pip install azure.confidentialledger 

Erőforráscsoport létrehozása

Az erőforráscsoport olyan logikai tároló, amelybe a rendszer üzembe helyezi és kezeli az Azure-erőforrásokat. Az Azure CLI az group create parancsával vagy az Azure PowerShell New-AzResourceGroup parancsmaggal hozzon létre egy myResourceGroup nevű erőforráscsoportot az eastus helyen.

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

Regisztrálja a microsoftot. ConfidentialLedger erőforrás-szolgáltató

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, a "microsoftot". 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()

Fejezze be a telepítést úgy, hogy beállít néhány változót az alkalmazásban való használatra: az erőforráscsoportot (myResourceGroup), a létrehozni kívánt főkönyv nevét és két URL-címet, amelyeket az adatsík ügyféloldali kódtára használ.

Fontos

Minden egyes főkönyvnek globálisan egyedi névvel kell rendelkeznie. Cserélje le <az egyedi-főkönyv nevét> a következő példában szereplő főkönyv nevére.

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"

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)

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

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, használja az adatsík ügyfélkódtárát (azure.confidentialledger).

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 a legújabb tranzakciónak megfelelő ü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 = "<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']}")

Pollerek

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 a lekérdezés visszaadja a lekérdezést, hogy megvárja, amíg a bejegyzés véglegesítése tartósan befejeződik.

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()

Az erőforrások eltávolí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, ne törölje ezeket az erőforrásokat.

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 myResourceGroup

Következő lépések