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
- Azure-előfizetés – hozzon létre egyet ingyenesen. - Előfizetés tulajdonosa – Bizalmas főkönyvet csak azok a felhasználók hozhatnak létre, akik tulajdonosi engedélyekkel rendelkeznek az Azure-előfizetéshez. A rövid útmutató folytatása előtt győződjön meg arról, hogy rendelkezik a megfelelő hozzáféréssel .
- A Pythonhoz készült Azure SDK által támogatott Python-verziók.
- Azure CLI vagy Azure PowerShell.
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 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ó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