Megosztás a következőn keresztül:


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 collectionIdké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:

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

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

Speciális forgatókönyvek

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.