Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
- 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 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.
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>