Azure Confidential Ledger ügyfélkódtár Pythonhoz – 1.1.1-es verzió
Az Azure Confidential Ledger egy olyan szolgáltatást biztosít, amely egy nem módosítható, illetéktelen módosítást ellenőrző főkönyvbe való naplózást tesz lehetővé. Az Azure Confidential Computing-portfólió részeként az Azure Confidential Ledger biztonságos, hardveralapú megbízható végrehajtási környezetekben, más néven enklávékban fut. A Microsoft Research bizalmas konzorciumi keretrendszerére épül.
Forráskód | Csomag (PyPI) | Csomag (Conda) | API-referenciadokumentáció | Termékdokumentáció
Első lépések
Csomagok telepítése
Telepítse az azure-confidentialledgert és az azure-identityta pip használatával:
pip install azure-identity azure-confidentialledger
Az azure-identity az Azure Active Directory-hitelesítéshez használatos az alábbiak szerint.
Előfeltételek
- Azure-előfizetés
- Python 3.6 vagy újabb verzió
- Az Azure Confidential Ledger futó példánya.
- Egy regisztrált felhasználó a Bizalmas főkönyvben, amely általában arm-erőforrás létrehozásakor van hozzárendelve, jogosultságokkal
Administrator
.
Az ügyfél hitelesítése
Az Azure Active Directory használata
Ez a dokumentum bemutatja, hogy a DefaultAzureCredential használatával hitelesíthető a bizalmas főkönyvben az Azure Active Directoryn keresztül. ConfidentialLedgerClient
Az azure-identity hitelesítő adatokat azonban elfogadja. Az egyéb hitelesítő adatokkal kapcsolatos további információkért tekintse meg az azure-identity dokumentációját.
Ügyféltanúsítvány használata
Az Azure Active Directory helyett az ügyfelek dönthetnek úgy, hogy ügyféltanúsítványt használnak a kölcsönös TLS-hitelesítéshez. azure.confidentialledger.ConfidentialLedgerCertificateCredential
erre a célra használhatók fel.
Ügyfél létrehozása
DefaultAzureCredential
automatikusan kezeli a legtöbb Azure SDK-ügyfélforgatókönyvet. Első lépésként állítsa be a környezeti változókat a bizalmas főkönyvben regisztrált AAD-identitáshoz.
export AZURE_CLIENT_ID="generated app id"
export AZURE_CLIENT_SECRET="random password"
export AZURE_TENANT_ID="tenant id"
DefaultAzureCredential
Ezután hitelesíteni fogja a következőtConfidentialLedgerClient
: .
Az ügyfél létrehozásához a bizalmas főkönyv URL-címe és azonosítója is szükséges, amelyet az Azure CLI-ből vagy az Azure Portalról szerezhet be. Amikor lekérte ezeket az értékeket, cserélje le a és "https://my-ledger-id.confidential-ledger.azure.com"
a példányokat "my-ledger-id"
az alábbi példákban. Előfordulhat, hogy a gazdanevet is le kell cserélnie "https://identity.confidential-ledger.core.azure.com"
a identityServiceUri
főkönyv ARM-leírásában szereplő gazdanévre.
Mivel a bizalmas főkönyvek biztonságosan létrehozott és enklávéban tárolt önaláírt tanúsítványokat használnak, az egyes bizalmas főkönyvek aláíró tanúsítványát először le kell kérni a Bizalmas főkönyvi identitásszolgáltatásból.
from azure.confidentialledger import ConfidentialLedgerClient
from azure.confidentialledger.certificate import ConfidentialLedgerCertificateClient
from azure.identity import DefaultAzureCredential
identity_client = ConfidentialLedgerCertificateClient()
network_identity = identity_client.get_ledger_identity(
ledger_id="my-ledger-id"
)
ledger_tls_cert_file_name = "ledger_certificate.pem"
with open(ledger_tls_cert_file_name, "w") as cert_file:
cert_file.write(network_identity["ledgerTlsCertificate"])
credential = DefaultAzureCredential()
ledger_client = ConfidentialLedgerClient(
endpoint="https://my-ledger-id.confidential-ledger.azure.com",
credential=credential,
ledger_certificate_path=ledger_tls_cert_file_name
)
A konstruktor kényelmesen ConfidentialLedgerClient
lekéri a főkönyvi TLS-tanúsítványt (és írja be a megadott fájlba), ha nem létező fájllal rendelkezik. A felhasználó felelős a létrehozott fájl szükség szerinti eltávolításáért.
from azure.confidentialledger import ConfidentialLedgerClient
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
ledger_client = ConfidentialLedgerClient(
endpoint="https://my-ledger-id.confidential-ledger.azure.com",
credential=credential,
ledger_certificate_path="ledger_certificate.pem"
)
# The ledger TLS certificate is written to `ledger_certificate.pem`.
Ha egyértelművé szeretné tenni, hogy a TLS-tanúsítványhoz egy fájlt használnak, a következő példák explicit módon megírják a TLS-tanúsítványt egy fájlba.
Fő fogalmak
Főkönyvi tételek és tranzakciók
Minden írás az Azure Confidential Ledgerbe egy nem módosítható főkönyvi bejegyzést hoz létre a szolgáltatásban. Az írásokat( más néven tranzakciókat) egyedileg azonosítják az egyes írásokkal növekvő tranzakcióazonosítók. A megírás után a könyvelési tételek bármikor lekérhetők.
Gyűjtemények
Bár a legtöbb használati eset csak egy gyűjteményt foglal magában bizalmas könyvelésenként, a gyűjteményazonosító funkciót abban az esetben biztosítjuk, ha szemantikailag vagy logikailag különböző adatcsoportokat kell ugyanabban a bizalmas könyvelésben tárolni.
A főkönyvbejegyzéseket a sajátjuk collectionId
kéri le. A Bizalmas főkönyv mindig egy állandó, szolgáltatás által meghatározott collectionId
tételt feltételez a megadott nélkül collectionId
írt bejegyzésekhez.
Felhasználók
A felhasználókat közvetlenül a Bizalmas főkönyv kezeli, nem pedig az Azure-on keresztül. A felhasználók AAD-alapúak lehetnek, amelyeket AAD-objektumazonosítójuk vagy tanúsítványalapúuk azonosít a PEM-tanúsítvány ujjlenyomata alapján.
Nyugták
A tranzakcióintegritási garanciák érvényesítése érdekében az Azure Confidential Ledger egy [Merkle-fa][merkle_tree_wiki] adatstruktúrát használ a nem módosítható főkönyvhez hozzáfűzött összes tranzakcióblokk kivonatának rögzítéséhez. Az írási tranzakció véglegesítése után az Azure Confidential Ledger felhasználói titkosítási Merkle-igazolást vagy nyugtát kaphatnak a Bizalmas főkönyvben létrehozott bejegyzéshez, hogy meggyőződhessenek arról, hogy az írási művelet helyesen lett mentve. Az írási tranzakció visszaigazolása annak bizonyítéka, hogy a rendszer véglegesítette a megfelelő tranzakciót, és annak ellenőrzésére használható, hogy a bejegyzést ténylegesen hozzáfűzték-e a főkönyvhez.
Az Azure Confidential Ledger írási tranzakciós nyugtáival kapcsolatos további információkért tekintse meg az alábbi cikket .
Visszaigazolás ellenőrzése
Miután kapott egy írási tranzakció nyugtát, az Azure Confidential Ledger felhasználói egy ellenőrző algoritmust követve ellenőrizhetik a lekért visszaigazolás tartalmát. Az ellenőrzés sikeressége annak bizonyítéka, hogy a nyugtához társított írási művelet helyesen lett hozzáfűzve a nem módosítható főkönyvhez.
Az Azure Confidential Ledger írási tranzakciós nyugtáinak ellenőrzési folyamatával kapcsolatos további információkért tekintse meg az alábbi cikket .
Alkalmazásjogcímek
Az Azure Confidential Ledger-alkalmazások tetszőleges adatokat, úgynevezett alkalmazásjogcímeket csatolhatnak a tranzakciók írásához. Ezek a jogcímek az írási művelet során végrehajtott műveleteket jelölik. Tranzakcióhoz csatolva a jogcímobjektum SHA-256 kivonata szerepel a főkönyvben, és az írási tranzakció részeként véglegesítve lesz. Ez garantálja, hogy a kivonat be van jelentkezve, és nem módosítható.
Később az alkalmazásjogcímek feltárhatók a nem emésztett formájukban az ugyanazon tranzakciónak megfelelő nyugta hasznos adataiban, ahol hozzáadták őket. Ez lehetővé teszi a felhasználók számára, hogy a nyugtában szereplő információkat felhasználva újra kiszámítsa ugyanazokat a jogcím-kivonatokat, amelyeket az Azure Confidential Ledger-példány a tranzakció során csatolt és aláírt. A jogcímek kivonata az írási tranzakció visszaigazolásának ellenőrzési folyamatának részeként használható, és offline módot biztosít a felhasználók számára a rögzített jogcímek hitelességének teljes ellenőrzésére.
Az alkalmazásjogcímek formátumáról és a kivonatoló számítási algoritmusról az alábbi hivatkozásokon talál további információt:
- Azure Confidential Ledger-alkalmazásjogcímek
- Azure Confidential Ledger-alkalmazás jogcímek kivonatának ellenőrzése
A CCF-alkalmazásjogcímekkel kapcsolatos további információkért tekintse meg a CCF következő dokumentációs oldalait:
Bizalmas számítások
Az Azure Confidential Computing lehetővé teszi az adatok elkülönítését és védelmét a felhőben történő feldolgozás során. Az Azure Confidential Ledger Azure Confidential Computing virtuális gépeken fut, így erősebb adatvédelmet biztosít a használatban lévő adatok titkosításával.
Bizalmas konzorciumi keretrendszer
Az Azure Confidential Ledger a Microsoft Research nyílt forráskódú bizalmas konzorciumi keretrendszerére (CCF) épül. A CCF értelmében a pályázatokat tagokból álló konzorcium kezeli, amely javaslatokat nyújthat be az alkalmazásművelet módosítására és szabályozására. Az Azure Confidential Ledgerben a Microsoft Azure rendelkezik egy operátori tagi identitással, amely lehetővé teszi az irányítási és karbantartási műveletek végrehajtását, például a nem kifogástalan állapotú csomópontok cseréjét a Bizalmas főkönyvben, valamint az enklávékód frissítését.
Példák
Ez a szakasz a gyakori feladatokat lefedő kódrészleteket tartalmazza, többek között a következőket:
- Hozzáfűzési bejegyzés
- Főkönyvi tételek beolvasása
- Tartományos lekérdezés készítése
- Felhasználók kezelése
- Tanúsítványhitelesítés használata
- Tranzakció-visszaigazolások írásának ellenőrzése
Hozzáfűzési bejegyzés
A módosíthatatlanul, illetéktelenül tárolandó adatokat az Azure Confidential Ledgerbe mentheti egy bejegyzés hozzáfűzésével a főkönyvhez.
Mivel a Confidential Ledger egy elosztott rendszer, a ritkán előforduló átmeneti hibák az írások elvesztését okozhatják. A megőrzendő bejegyzések esetében célszerű ellenőrizni, hogy az írás tartóssá vált-e. A kevésbé fontos írási műveleteknél, ahol a nagyobb ügyfél-átviteli sebesség van előnyben részesítve, a várakozási lépés kihagyható.
from azure.confidentialledger import ConfidentialLedgerClient
from azure.confidentialledger.certificate import ConfidentialLedgerCertificateClient
from azure.identity import DefaultAzureCredential
identity_client = ConfidentialLedgerCertificateClient()
network_identity = identity_client.get_ledger_identity(
ledger_id="my-ledger-id"
)
ledger_tls_cert_file_name = "ledger_certificate.pem"
with open(ledger_tls_cert_file_name, "w") as cert_file:
cert_file.write(network_identity["ledgerTlsCertificate"])
credential = DefaultAzureCredential()
ledger_client = ConfidentialLedgerClient(
endpoint="https://my-ledger-id.confidential-ledger.azure.com",
credential=credential,
ledger_certificate_path=ledger_tls_cert_file_name
)
post_entry_result = ledger_client.create_ledger_entry(
{"contents": "Hello world!"}
)
transaction_id = post_entry_result["transactionId"]
wait_poller = ledger_client.begin_wait_for_commit(transaction_id)
wait_poller.wait()
print(f'Ledger entry at transaction id {transaction_id} has been committed successfully')
Másik lehetőségként az ügyfél megvárhatja a véglegesítést egy főkönyvi tétel írásakor.
from azure.confidentialledger import ConfidentialLedgerClient
from azure.confidentialledger.certificate import ConfidentialLedgerCertificateClient
from azure.identity import DefaultAzureCredential
identity_client = ConfidentialLedgerCertificateClient()
network_identity = identity_client.get_ledger_identity(
ledger_id="my-ledger-id"
)
ledger_tls_cert_file_name = "ledger_certificate.pem"
with open(ledger_tls_cert_file_name, "w") as cert_file:
cert_file.write(network_identity["ledgerTlsCertificate"])
credential = DefaultAzureCredential()
ledger_client = ConfidentialLedgerClient(
endpoint="https://my-ledger-id.confidential-ledger.azure.com",
credential=credential,
ledger_certificate_path=ledger_tls_cert_file_name
)
post_poller = ledger_client.begin_create_ledger_entry(
{"contents": "Hello world again!"}
)
new_post_result = post_poller.result()
print(
'The new ledger entry has been committed successfully at transaction id '
f'{new_post_result["transactionId"]}'
)
Főkönyvi tételek beolvasása
A legutóbbinál régebbi főkönyvi tételek lekérése eltarthat egy ideig, amíg a szolgáltatás betölti az előzménybejegyzéseket, ezért egy lekérdezést kap.
A rendszer gyűjtemény szerint kéri le a főkönyvi tételeket. A visszaadott érték a megadott gyűjteményben található érték a tranzakcióazonosító által azonosított időpontban.
from azure.confidentialledger import ConfidentialLedgerClient
from azure.confidentialledger.certificate import ConfidentialLedgerCertificateClient
from azure.identity import DefaultAzureCredential
identity_client = ConfidentialLedgerCertificateClient()
network_identity = identity_client.get_ledger_identity(
ledger_id="my-ledger-id"
)
ledger_tls_cert_file_name = "ledger_certificate.pem"
with open(ledger_tls_cert_file_name, "w") as cert_file:
cert_file.write(network_identity["ledgerTlsCertificate"])
credential = DefaultAzureCredential()
ledger_client = ConfidentialLedgerClient(
endpoint="https://my-ledger-id.confidential-ledger.azure.com",
credential=credential,
ledger_certificate_path=ledger_tls_cert_file_name
)
post_poller = ledger_client.begin_create_ledger_entry(
{"contents": "Original hello"}
)
post_result = post_poller.result()
post_transaction_id = post_result["transactionId"]
latest_entry = ledger_client.get_current_ledger_entry()
print(
f'Current entry (transaction id = {latest_entry["transactionId"]}) '
f'in collection {latest_entry["collectionId"]}: {latest_entry["contents"]}'
)
post_poller = ledger_client.begin_create_ledger_entry(
{"contents": "Hello!"}
)
post_result = post_poller.result()
get_entry_poller = ledger_client.begin_get_ledger_entry(post_transaction_id)
older_entry = get_entry_poller.result()
print(
f'Contents of {older_entry["entry"]["collectionId"]} at {post_transaction_id}: {older_entry["entry"]["contents"]}'
)
Tartományos lekérdezés készítése
A főkönyvi tételek több tranzakcióazonosítón keresztül is lekérhetők. A rendszer csak az alapértelmezett vagy a megadott gyűjteményből adja vissza a bejegyzéseket.
from azure.confidentialledger import ConfidentialLedgerClient
from azure.confidentialledger.certificate import ConfidentialLedgerCertificateClient
from azure.identity import DefaultAzureCredential
identity_client = ConfidentialLedgerCertificateClient()
network_identity = identity_client.get_ledger_identity(
ledger_id="my-ledger-id"
)
ledger_tls_cert_file_name = "ledger_certificate.pem"
with open(ledger_tls_cert_file_name, "w") as cert_file:
cert_file.write(network_identity["ledgerTlsCertificate"])
credential = DefaultAzureCredential()
ledger_client = ConfidentialLedgerClient(
endpoint="https://my-ledger-id.confidential-ledger.azure.com",
credential=credential,
ledger_certificate_path=ledger_tls_cert_file_name
)
post_poller = ledger_client.begin_create_ledger_entry(
{"contents": "First message"}
)
first_transaction_id = post_poller.result()["transactionId"]
for i in range(10):
ledger_client.create_ledger_entry(
{"contents": f"Message {i}"}
)
post_poller = ledger_client.begin_create_ledger_entry(
{"contents": "Last message"}
)
last_transaction_id = post_poller.result()["transactionId"]
ranged_result = ledger_client.list_ledger_entries(
from_transaction_id=first_transaction_id,
to_transaction_id=last_transaction_id,
)
for entry in ranged_result:
print(f'Contents at {entry["transactionId"]}: {entry["contents"]}')
Felhasználók kezelése
A jogosultságokkal rendelkező Administrator
felhasználók a Bizalmas főkönyv felhasználóit közvetlenül a Bizalmas főkönyvvel kezelhetik. Az elérhető szerepkörök a következők Reader
: (írásvédett), Contributor
(olvasási és írási) és Administrator
(olvasási, írási és felhasználói hozzáadási vagy eltávolítási) szerepkörök.
from azure.confidentialledger import ConfidentialLedgerClient
from azure.confidentialledger.certificate import ConfidentialLedgerCertificateClient
from azure.identity import DefaultAzureCredential
identity_client = ConfidentialLedgerCertificateClient()
network_identity = identity_client.get_ledger_identity(
ledger_id="my-ledger-id"
)
ledger_tls_cert_file_name = "ledger_certificate.pem"
with open(ledger_tls_cert_file_name, "w") as cert_file:
cert_file.write(network_identity["ledgerTlsCertificate"])
credential = DefaultAzureCredential()
ledger_client = ConfidentialLedgerClient(
endpoint="https://my-ledger-id.confidential-ledger.azure.com",
credential=credential,
ledger_certificate_path=ledger_tls_cert_file_name
)
user_id = "some AAD object id"
user = ledger_client.create_or_update_user(
user_id, {"assignedRole": "Contributor"}
)
# A client may now be created and used with AAD credentials (i.e. AAD-issued JWT tokens) for the user identified by `user_id`.
user = ledger_client.get_user(user_id)
assert user["userId"] == user_id
assert user["assignedRole"] == "Contributor"
ledger_client.delete_user(user_id)
# For a certificate-based user, their user ID is the fingerprint for their PEM certificate.
user_id = "PEM certificate fingerprint"
user = ledger_client.create_or_update_user(
user_id, {"assignedRole": "Reader"}
)
user = ledger_client.get_user(user_id)
assert user["userId"] == user_id
assert user["assignedRole"] == "Reader"
ledger_client.delete_user(user_id)
Tanúsítványhitelesítés használata
Az ügyfelek az Azure Active Directory-jogkivonat helyett egy kölcsönös TLS-ben lévő ügyféltanúsítvánnyal hitelesíthetik magukat. ConfidentialLedgerCertificateCredential
az ilyen ügyfelek számára.
from azure.confidentialledger import (
ConfidentialLedgerCertificateCredential,
ConfidentialLedgerClient,
)
from azure.confidentialledger.certificate import ConfidentialLedgerCertificateClient
identity_client = ConfidentialLedgerCertificateClient()
network_identity = identity_client.get_ledger_identity(
ledger_id="my-ledger-id"
)
ledger_tls_cert_file_name = "ledger_certificate.pem"
with open(ledger_tls_cert_file_name, "w") as cert_file:
cert_file.write(network_identity["ledgerTlsCertificate"])
credential = ConfidentialLedgerCertificateCredential(
certificate_path="Path to user certificate PEM file"
)
ledger_client = ConfidentialLedgerClient(
endpoint="https://my-ledger-id.confidential-ledger.azure.com",
credential=credential,
ledger_certificate_path=ledger_tls_cert_file_name
)
Írási tranzakció nyugtáinak ellenőrzése
Az ügyfelek az SDK nyugtaellenőrzési kódtára segítségével ellenőrizhetik az Azure Confidential Legder-példányok által kibocsátott írási tranzakciók nyugtáit. A segédprogrammal teljes mértékben ellenőrizheti a nyugtákat offline állapotban, mivel az ellenőrzési algoritmusnak nem kell titkos tranzakciónaplóhoz vagy más Azure-szolgáltatáshoz kapcsolódnia.
Miután hozzáfűzött egy új bejegyzést a tranzakciónaplóhoz (tekintse meg ezt a példát), lekérhető a véglegesített írási tranzakció visszaigazolása.
from azure.confidentialledger import ConfidentialLedgerClient
from azure.confidentialledger.certificate import ConfidentialLedgerCertificateClient
from azure.identity import DefaultAzureCredential
# Replace this with the Confidential Ledger ID
ledger_id = "my-ledger-id"
# Setup authentication
credential = DefaultAzureCredential()
# Create a Ledger Certificate client and use it to
# retrieve the service identity for our ledger
identity_client = ConfidentialLedgerCertificateClient()
network_identity = identity_client.get_ledger_identity(
ledger_id=ledger_id
)
# Save ledger service certificate into a file for later use
ledger_tls_cert_file_name = "ledger_certificate.pem"
with open(ledger_tls_cert_file_name, "w") as cert_file:
cert_file.write(network_identity["ledgerTlsCertificate"])
# Create Confidential Ledger client
ledger_client = ConfidentialLedgerClient(
endpoint=f"https://{ledger_id}.confidential-ledger.azure.com",
credential=credential,
ledger_certificate_path=ledger_tls_cert_file_name
)
# The method begin_get_receipt returns a poller that
# we can use to wait for the receipt to be available for retrieval
get_receipt_poller = ledger_client.begin_get_receipt(transaction_id)
get_receipt_result = get_receipt_poller.result()
print(f"Write receipt for transaction id {transaction_id} was successfully retrieved: {get_receipt_result}")
Az írási tranzakció nyugtának lekérése után meghívhatja a verify_receipt
függvényt annak ellenőrzéséhez, hogy a nyugta érvényes-e. A függvény elfogadhatja az alkalmazásjogcímek opcionális listáját a nyugtajogcím-kivonat alapján történő ellenőrzéshez.
from azure.confidentialledger.receipt import (
verify_receipt,
)
# Read contents of service certificate file saved in previous step.
with open(ledger_tls_cert_file_name, "r") as service_cert_file:
service_cert_content = service_cert_file.read()
# Optionally read application claims, if any
application_claims = get_receipt_result.get("applicationClaims", None)
try:
# Verify the contents of the receipt.
verify_receipt(get_receipt_result["receipt"], service_cert_content, application_claims=application_claims)
print(f"Receipt for transaction id {transaction_id} successfully verified")
except ValueError:
print(f"Receipt verification for transaction id {transaction_id} failed")
Egy teljes Python-mintaprogram, amely bemutatja, hogyan fűzhet hozzá egy új bejegyzést egy futó Confidential Ledger-példányhoz, hogyan kaphat nyugtát a véglegesített tranzakcióhoz, és ellenőrizheti, hogy a nyugta tartalma megtalálható-e a mintamappában : get_and_verify_receipt.py.
Async API
Ez a kódtár tartalmazza a Python 3.5+-on támogatott teljes aszinkron API-t. A használatához először telepítenie kell egy aszinkron átvitelt, például az aiohttp-t. További információért tekintse meg az azure-core dokumentációját .
Az aszinkron ügyfél a -ből szerezhető be azure.confidentialledger.aio
. A metódusok neve és aláírása megegyezik a szinkron ügyfél nevével és aláírásával. Itt találhat mintákat.
Hibaelhárítás
Általános kérdések
A bizalmas tranzakciónapló-ügyfelek kivételeket emelnek ki az azure-core-ban. Ha például olyan tranzakciót próbál lekérni, amely nem létezik, ConfidentialLedgerClient
a resourceNotFoundError értéket adja meg:
from azure.core.exceptions import ResourceNotFoundError
from azure.confidentialledger import ConfidentialLedgerClient
from azure.confidentialledger.certificate import ConfidentialLedgerCertificateClient
from azure.identity import DefaultAzureCredential
identity_client = ConfidentialLedgerCertificateClient()
network_identity = identity_client.get_ledger_identity(
ledger_id="my-ledger-id"
)
ledger_tls_cert_file_name = "ledger_certificate.pem"
with open(ledger_tls_cert_file_name, "w") as cert_file:
cert_file.write(network_identity["ledgerTlsCertificate"])
credential = DefaultAzureCredential()
ledger_client = ConfidentialLedgerClient(
endpoint="https://my-ledger-id.confidential-ledger.azure.com",
credential=credential,
ledger_certificate_path=ledger_tls_cert_file_name
)
try:
ledger_client.begin_get_ledger_entry(
transaction_id="10000.100000" # Using a very high id that probably doesn't exist in the ledger if it's relatively new.
)
except ResourceNotFoundError as e:
print(e.message)
Naplózás
Ez a kódtár a szabványos naplózási kódtárat használja a naplózáshoz. A HTTP-munkamenetekkel (URL-címekkel, fejlécekkel stb.) kapcsolatos alapvető információkat az INFO szinten naplózza a rendszer.
A hibakeresési szint részletes naplózása, beleértve a kérelem-/választörzseket és a nem felügyelt fejléceket, engedélyezhető az ügyfélen a logging_enable
következő argumentummal:
import logging
import sys
from azure.confidentialledger import ConfidentialLedgerClient
from azure.confidentialledger.certificate import ConfidentialLedgerCertificateClient
from azure.identity import DefaultAzureCredential
# Create a logger for the 'azure' SDK
logger = logging.getLogger('azure')
logger.setLevel(logging.DEBUG)
# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
identity_client = ConfidentialLedgerCertificateClient()
network_identity = identity_client.get_ledger_identity(
ledger_id="my-ledger-id"
)
ledger_tls_cert_file_name = "ledger_certificate.pem"
with open(ledger_tls_cert_file_name, "w") as cert_file:
cert_file.write(network_identity["ledgerTlsCertificate"])
credential = DefaultAzureCredential()
# This client will log detailed information about its HTTP sessions, at DEBUG level.
ledger_client = ConfidentialLedgerClient(
endpoint="https://my-ledger-id.confidential-ledger.azure.com",
credential=credential,
ledger_certificate_path=ledger_tls_cert_file_name,
logging_enable=True,
)
Hasonlóképpen logging_enable
engedélyezheti a részletes naplózást egyetlen művelethez, még akkor is, ha nincs engedélyezve az ügyfél számára:
ledger_client.get_current_ledger_entry(logging_enable=True)
Következő lépések
További mintakód
Ezek a kódminták az Azure Confidential Ledger ügyfélkódtárával végzett gyakori forgatókönyvműveleteket mutatják be.
Gyakori forgatókönyvek
Írás a tranzakciónaplóba:
- write_to_ledger.py
- write_to_ledger_async.py (aszinkron verzió)
Írjon sok tranzakciónapló-bejegyzést, és kérje le az összeset utána:
- list_ledger_entries.py
- list_ledger_entries_async.py (aszinkron verzió)
Felhasználók kezelése a szolgáltatás által implementált szerepköralapú hozzáférés-vezérléssel:
- manage_users.py
- manage_users_async.py (aszinkron verzió)
Speciális forgatókönyvek
Gyűjtemények használata:
- use_collections.py
- use_collections_async.py (aszinkron verzió)
A tranzakciónapló-írások nyugtáinak lekérése:
- get_receipt.py
- get_receipt_async.py (aszinkron verzió)
A szolgáltatás részleteinek ellenőrzése:
- verify_service.py
- verify_service_async.py (aszinkron verzió)
További dokumentáció
Az Azure Confidential Ledger részletesebb dokumentációját az API referenciadokumentációjában találja. További információt a Microsoft Research nyílt forráskódú Confidential Consortium Framework keretrendszeréről is olvashat.
Közreműködés
A projektben szívesen fogadjuk a hozzájárulásokat és a javaslatokat. A legtöbb hozzájáruláshoz el kell fogadnia egy Közreműködői licencszerződést (CLA-t), amelyben kijelenti, hogy jogosult arra, hogy ránk ruházza hozzájárulása felhasználási jogát, és ezt ténylegesen meg is teszi. További részletekért lásd: https://cla.microsoft.com.
A lekéréses kérelmek elküldésekor egy CLA-robot automatikusan meghatározza, hogy kell-e biztosítania CLA-t, és megfelelően kitölti a lekéréses kérelmet (például címke, megjegyzés). Egyszerűen csak kövesse a robot által megadott utasításokat. Ezt csak egyszer kell elvégeznie az összes olyan tárházban, amely a CLA-t használja.
A projekt a Microsoft nyílt forráskódú projekteket szabályozó etikai kódexe, a Microsoft Open Source Code of Conduct hatálya alá esik. További információkért keresse fel a Viselkedési szabályzattal kapcsolatos gyakori kérdések oldalát, illetve küldje el kérdéseit vagy észrevételeit a következő címre: opencode@microsoft.com.
Azure SDK for Python
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: