Bagikan melalui


Pustaka klien Azure Confidential Ledger untuk Python - versi 1.1.1

Azure Confidential Ledger menyediakan layanan untuk pengelogan ke ledger yang tidak dapat diubah dan tahan perubahan. Sebagai bagian dari portofolio Azure Confidential Computing , Azure Confidential Ledger berjalan di lingkungan eksekusi tepercaya berbasis perangkat keras yang aman, juga dikenal sebagai enklave. Ini dibangun di kerangka kerja Konsorsium Rahasia Microsoft Research.

Kode sumber | Paket (PyPI) | Paket (Conda) | Dokumentasi | referensi APIDokumentasi produk

Memulai

Memasang paket

Instal azure-confidentialledger dan azure-identity dengan pip:

pip install azure-identity azure-confidentialledger

azure-identity digunakan untuk autentikasi Azure Active Directory seperti yang ditunjukkan di bawah ini.

Prasyarat

  • Langganan Azure
  • Python 3.6 atau yang lebih baru
  • Instans yang berjalan Azure Confidential Ledger.
  • Pengguna terdaftar di Confidential Ledger, biasanya ditetapkan selama pembuatan sumber daya ARM , dengan Administrator hak istimewa.

Mengautentikasi klien

Atau menggunakan Azure Active Directory

Dokumen ini menunjukkan penggunaan DefaultAzureCredential untuk mengautentikasi ke Confidential Ledger melalui Azure Active Directory. Namun, ConfidentialLedgerClient menerima kredensial identitas azure apa pun. Lihat dokumentasi azure-identity untuk informasi selengkapnya tentang kredensial lainnya.

Menggunakan sertifikat klien

Sebagai alternatif untuk Azure Active Directory, klien dapat memilih untuk menggunakan sertifikat klien untuk mengautentikasi melalui TLS bersama. azure.confidentialledger.ConfidentialLedgerCertificateCredential dapat digunakan untuk tujuan ini.

Membuat klien

DefaultAzureCredential akan secara otomatis menangani sebagian besar skenario klien Azure SDK. Untuk memulai, atur variabel lingkungan untuk identitas AAD yang terdaftar di Confidential Ledger Anda.

export AZURE_CLIENT_ID="generated app id"
export AZURE_CLIENT_SECRET="random password"
export AZURE_TENANT_ID="tenant id"

Kemudian, DefaultAzureCredential akan dapat mengautentikasi ConfidentialLedgerClient.

Membuat klien juga memerlukan URL dan id Confidential Ledger Anda, yang bisa Anda dapatkan dari Azure CLI atau Portal Microsoft Azure. Ketika Anda telah mengambil nilai-nilai tersebut, silakan ganti instans "my-ledger-id" dan "https://my-ledger-id.confidential-ledger.azure.com" dalam contoh di bawah ini. Anda mungkin juga perlu mengganti "https://identity.confidential-ledger.core.azure.com" dengan nama host dari identityServiceUri dalam deskripsi ARM ledger Anda.

Karena Confidential Ledgers menggunakan sertifikat yang ditandatangani sendiri yang dibuat dan disimpan dengan aman di enklave, sertifikat penandatanganan untuk setiap Confidential Ledger harus terlebih dahulu diambil dari Confidential Ledger Identity Service.

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
)

Dengan mudah, ConfidentialLedgerClient konstruktor akan mengambil sertifikat TLS ledger (dan menulisnya ke file yang ditentukan) jika disediakan dengan file yang tidak ada. Pengguna bertanggung jawab untuk menghapus file yang dibuat sesuai kebutuhan.

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`.

Untuk memperjelas bahwa file sedang digunakan untuk sertifikat TLS ledger, contoh berikutnya akan secara eksplisit menulis sertifikat TLS ledger ke file.

Konsep utama

Entri dan transaksi ledger

Setiap penulisan ke Azure Confidential Ledger menghasilkan entri ledger yang tidak dapat diubah dalam layanan. Tulisan, juga disebut sebagai transaksi, secara unik diidentifikasi oleh id transaksi yang bertambah dengan setiap tulisan. Setelah ditulis, entri ledger dapat diambil kapan saja.

Koleksi

Meskipun sebagian besar kasus penggunaan hanya melibatkan satu koleksi per Confidential Ledger, kami menyediakan fitur id koleksi jika secara semantik atau secara logis berbagai grup data perlu disimpan dalam Confidential Ledger yang sama.

Entri ledger diambil oleh mereka collectionId. Confidential Ledger akan selalu mengasumsikan konstanta, ditentukan layanan collectionId untuk entri yang collectionId ditulis tanpa ditentukan.

Pengguna

Pengguna dikelola langsung dengan Confidential Ledger alih-alih melalui Azure. Pengguna mungkin berbasis AAD, diidentifikasi oleh id objek AAD mereka, atau berbasis sertifikat, yang diidentifikasi oleh sidik jari sertifikat PEM mereka.

Tanda terima

Untuk menerapkan jaminan integritas transaksi, Azure Confidential Ledger menggunakan struktur data [Merkle tree][merkle_tree_wiki] untuk merekam hash dari semua blok transaksi yang ditambahkan ke ledger yang tidak dapat diubah. Setelah transaksi tulis dilakukan, pengguna Azure Confidential Ledger bisa mendapatkan bukti Merkle kriptografi, atau tanda terima, melalui entri yang dihasilkan dalam Azure Confidential Ledger untuk memverifikasi bahwa operasi tulis disimpan dengan benar. Tanda terima transaksi tulis adalah bukti bahwa sistem telah melakukan transaksi yang sesuai dan dapat digunakan untuk memverifikasi bahwa entri telah ditambahkan secara efektif ke ledger.

Lihat artikel berikut untuk informasi selengkapnya tentang tanda terima transaksi tulis Azure Confidential Ledger.

Verifikasi Tanda Terima

Setelah mendapatkan tanda terima untuk transaksi tulis, pengguna Azure Confidential Ledger dapat memverifikasi konten tanda terima yang diambil setelah algoritma verifikasi. Keberhasilan verifikasi adalah bukti bahwa operasi tulis yang terkait dengan tanda terima ditambahkan dengan benar ke dalam ledger yang tidak dapat diubah.

Lihat artikel berikut untuk informasi selengkapnya tentang proses verifikasi untuk tanda terima transaksi tulis Azure Confidential Ledger.

Klaim Aplikasi

Aplikasi Azure Confidential Ledger dapat melampirkan data arbitrer, yang disebut klaim aplikasi, untuk menulis transaksi. Klaim ini mewakili tindakan yang dijalankan selama operasi tulis. Ketika dilampirkan ke transaksi, hash SHA-256 dari objek klaim disertakan dalam ledger dan diterapkan sebagai bagian dari transaksi tulis. Ini menjamin bahwa hash masuk dan tidak dapat dirusak.

Kemudian, klaim aplikasi dapat diungkapkan dalam formulir yang tidak dicerna dalam payload tanda terima yang sesuai dengan transaksi yang sama di mana mereka ditambahkan. Ini memungkinkan pengguna untuk memanfaatkan informasi dalam tanda terima untuk menghitung ulang hash klaim yang sama yang dilampirkan dan diberlakukan oleh instans Azure Confidential Ledger selama transaksi. Hash klaim dapat digunakan sebagai bagian dari proses verifikasi tanda terima transaksi tulis, menyediakan cara offline bagi pengguna untuk sepenuhnya memverifikasi keaslian klaim yang direkam.

Detail selengkapnya tentang format klaim aplikasi dan algoritma komputasi hash dapat ditemukan di tautan berikut:

Silakan lihat halaman dokumentasi CCF berikut untuk informasi selengkapnya tentang klaim Aplikasi CCF:

Komputasi rahasia

Azure Confidential Computing memungkinkan Anda mengisolasi dan melindungi data saat sedang diproses di cloud. Azure Confidential Ledger berjalan pada komputer virtual Azure Confidential Computing, sehingga memberikan perlindungan data yang lebih kuat dengan enkripsi data yang digunakan.

Kerangka Kerja Konsorsium Rahasia

Azure Confidential Ledger dibangun di Kerangka Kerja Konsorsium Rahasia (CCF) sumber terbuka Microsoft Research. Di bawah CCF, aplikasi dikelola oleh konsorsium anggota dengan kemampuan untuk mengirimkan proposal untuk memodifikasi dan mengatur operasi aplikasi. Di Azure Confidential Ledger, Microsoft Azure memiliki identitas anggota operator yang memungkinkannya melakukan tindakan tata kelola dan pemeliharaan seperti mengganti simpul yang tidak sehat di Confidential Ledger dan meningkatkan kode enklave.

Contoh

Bagian ini berisi cuplikan kode yang mencakup tugas umum, termasuk:

Tambahkan entri

Data yang perlu disimpan tanpa diubah dengan cara anti-perubahan dapat disimpan ke Azure Confidential Ledger dengan menambahkan entri ke ledger.

Karena Confidential Ledger adalah sistem terdistribusi, kegagalan sementara yang jarang terjadi dapat menyebabkan penulisan hilang. Untuk entri yang harus dipertahankan, disarankan untuk memverifikasi bahwa tulisan menjadi tahan lama. Untuk penulisan yang kurang penting di mana throughput klien yang lebih tinggi lebih disukai, langkah tunggu dapat dilewati.

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

Atau, klien mungkin menunggu penerapan saat menulis entri ledger.

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"]}'
)

Mengambil entri ledger

Mendapatkan entri ledger yang lebih lama dari yang terbaru mungkin memakan waktu karena layanan memuat entri historis, sehingga poller disediakan.

Entri ledger diambil oleh koleksi. Nilai yang dikembalikan adalah nilai yang terkandung dalam koleksi yang ditentukan pada titik waktu yang diidentifikasi oleh id transaksi.

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"]}'
)

Membuat kueri rentang

Entri ledger dapat diambil melalui rentang id transaksi. Entri hanya akan dikembalikan dari kumpulan default atau yang ditentukan.

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"]}')

Mengelola pengguna

Pengguna dengan Administrator hak istimewa dapat mengelola pengguna Confidential Ledger langsung dengan Confidential Ledger itu sendiri. Peran yang tersedia adalah Reader (baca-saja), Contributor (baca dan tulis), dan Administrator (baca, tulis, dan tambahkan atau hapus pengguna).

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)

Menggunakan autentikasi sertifikat

Klien dapat mengautentikasi dengan sertifikat klien di TLS bersama alih-alih melalui token Azure Active Directory. ConfidentialLedgerCertificateCredential disediakan untuk klien tersebut.

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
)

Memverifikasi tanda terima transaksi tulis

Klien dapat memanfaatkan pustaka verifikasi tanda terima di SDK untuk memverifikasi tanda terima transaksi tulis yang dikeluarkan oleh instans Azure Confidential Legder. Utilitas dapat digunakan untuk sepenuhnya memverifikasi tanda terima offline karena algoritma verifikasi tidak perlu disambungkan ke Confidential Ledger atau layanan Azure lainnya.

Setelah entri baru ditambahkan ke ledger (silakan lihat contoh ini), dimungkinkan untuk mendapatkan tanda terima untuk transaksi tulis yang diterapkan.

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}")

Setelah mengambil tanda terima untuk transaksi tulis, dimungkinkan untuk memanggil verify_receipt fungsi untuk memverifikasi bahwa tanda terima valid. Fungsi ini dapat menerima daftar opsional klaim aplikasi untuk memverifikasi terhadap hash klaim tanda terima.

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

Sampel lengkap program Python yang menunjukkan cara menambahkan entri baru ke instans Confidential Ledger yang sedang berjalan, mendapatkan tanda terima untuk transaksi yang diterapkan, dan memverifikasi konten tanda terima dapat ditemukan di bawah folder sampel: get_and_verify_receipt.py.

API Asinkron

Pustaka ini mencakup API asinkron lengkap yang didukung pada Python 3.5+. Untuk menggunakannya, Anda harus menginstal transportasi asinkron terlebih dahulu, seperti aiohttp. Lihat dokumentasi azure-core untuk informasi selengkapnya.

Klien asinkron diperoleh dari azure.confidentialledger.aio. Metode memiliki nama dan tanda tangan yang sama dengan klien sinkron. Sampel dapat ditemukan di sini.

Pemecahan Masalah

Umum

Klien Confidential Ledger memunculkan pengecualian yang ditentukan dalam azure-core. Misalnya, jika Anda mencoba mendapatkan transaksi yang tidak ada, ConfidentialLedgerClient naikkan ResourceNotFoundError:

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)

Pembuatan Log

Pustaka ini menggunakan pustaka pengelogan standar untuk pengelogan. Informasi dasar tentang sesi HTTP (URL, header, dll.) dicatat di tingkat INFO.

Pengelogan tingkat DEBUG terperinci, termasuk isi permintaan/respons dan header yang tidak diredaksikan, dapat diaktifkan pada klien dengan logging_enable argumen :

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

Demikian pula, logging_enable dapat mengaktifkan pengelogan mendetail untuk satu operasi, meskipun tidak diaktifkan untuk klien:

ledger_client.get_current_ledger_entry(logging_enable=True)

Langkah berikutnya

Lebih banyak kode sampel

Sampel kode ini menunjukkan operasi skenario umum dengan pustaka klien Azure Confidential Ledger.

Skenario umum

Skenario tingkat lanjut

Dokumentasi Tambahan

Untuk dokumentasi yang lebih luas tentang Azure Confidential Ledger, lihat dokumentasi referensi API. Anda juga dapat membaca selengkapnya tentang Kerangka Kerja Konsorsium Rahasia sumber terbuka Microsoft Research.

Berkontribusi

Proyek ini menyambut baik kontribusi dan saran. Sebagian besar kontribusi mengharuskan Anda menyetujui Perjanjian Lisensi Kontributor (CLA) yang menyatakan bahwa Anda memiliki hak untuk, dan benar-benar melakukannya, memberi kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi https://cla.microsoft.com.

Ketika Anda mengirimkan permintaan tarik, CLA-bot akan secara otomatis menentukan apakah Anda perlu memberikan CLA dan menghias PR dengan tepat (misalnya, label, komentar). Cukup ikuti instruksi yang diberikan oleh bot. Anda hanya perlu melakukan ini sekali di semua repos menggunakan CLA kami.

Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi selengkapnya, lihat FAQ Kode Etik atau hubungi opencode@microsoft.com untuk mengajukan pertanyaan atau komentar tambahan.