Mulai cepat – Pustaka klien Microsoft Azure Confidential Ledger untuk Python

Mulai menggunakan pustaka klien Microsoft Azure Confidential Ledger untuk Python. Ikuti langkah-langkah dalam artikel ini untuk menginstal paket dan mencoba contoh kode untuk tugas dasar.

Microsoft Azure Confidential Ledger adalah layanan baru yang sangat aman untuk mengelola rekaman data yang sensitif. Berdasarkan model blockchain yang diizinkan, Azure Confidential Ledger menawarkan keunggulan integritas data yang unik, seperti kekekalan (membuat ledger hanya ditambahkan) dan pemeriksa perubahan (untuk memastikan semua rekaman tetap utuh).

Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.

Dokumentasi referensi API | Kode sumber pustaka | Pustaka Manajemen Paket (Indeks Paket Python)| Pustaka Klien Paket (Indeks Paket Python)

Prasyarat

Penyiapan

Mulai cepat ini menggunakan pustaka Azure Identity dengan Azure CLI atau Azure PowerShell untuk mengautentikasi pengguna ke Azure Services. Pengembang juga dapat menggunakan Visual Studio atau Visual Studio Code untuk mengautentikasi panggilan. Untuk informasi selengkapnya, lihat Mengautentikasi klien dengan pustaka klien Azure Identity.

Masuk ke Azure

Masuk ke Azure menggunakan perintah login az Azure CLI atau cmdlet Connect-AzAccount Azure PowerShell.

az login

Jika CLI atau PowerShell dapat membuka browser default Anda, CLI atau PowerShell akan membuka browser dan memuat halaman masuk Azure. Jika tidak, buka https://aka.ms/devicelogin dan masukkan kode otorisasi yang ditampilkan di terminal Anda.

Jika diminta, masuk menggunakan info masuk akun Anda di browser.

Menginstal paket

Di terminal atau prompt perintah, buat folder proyek yang sesuai, lalu buat dan aktifkan lingkungan virtual Python seperti yang dijelaskan di Menggunakan lingkungan virtual Python.

Instal pustaka klien identitas Microsoft Entra:

pip install azure-identity

Instal pustaka klien sarana kontrol Confidential Ledger.

pip install azure.mgmt.confidentialledger

Instal pustaka klien sarana kontrol Confidential Ledger.

pip install azure.confidentialledger 

Buat grup sumber daya

Grup sumber daya adalah kontainer logis yang disebarkan dan dikelola oleh sumber daya Azure. Gunakan perintah Azure CLI az group create atau cmdlet Azure PowerShell New-AzResourceGroup untuk membuat grup sumber daya bernama myResourceGroup di lokasi eastus.

az group create --name "myResourceGroup" -l "EastUS"

Daftarkan penyedia sumber daya microsoft.ConfidentialLedger

Penyedia sumber daya adalah layanan yang menyediakan sumber daya Azure. Gunakan perintah az provider register Azure CLI atau cmdlet Azure PowerShell Register-AzResourceProvider untuk mendaftarkan penyedia sumber daya Azure Confidential Ledger, 'microsoft. ConfidentialLedger'.

az provider register --namespace "microsoft.ConfidentialLedger"

Anda dapat memverifikasi bahwa pendaftaran selesai dengan perintah az provider register Azure CLI atau cmdlet Azure PowerShell Get-AzResourceProvider.

az provider show --namespace "microsoft.ConfidentialLedger"

Membuat aplikasi Python Anda

Inisialisasi

Kita sekarang dapat mulai menulis aplikasi Python kita. Pertama, impor paket yang diperlukan.

# 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

Selanjutnya, gunakan Kelas DefaultAzureCredential untuk mengautentikasi aplikasi.

credential = DefaultAzureCredential()

Selesaikan penyiapan dengan mengatur beberapa variabel untuk digunakan dalam aplikasi Anda: grup sumber daya (myResourceGroup), nama ledger yang ingin Anda buat, dan dua url yang akan digunakan oleh pustaka klien bidang data.

Penting

Setiap ledger harus memiliki nama yang unik secara global. Ganti <nama> ledger unik Anda dengan nama ledger Anda dalam contoh berikut.

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"

Menggunakan pustaka klien sarana kontrol

Pustaka klien sarana kontrol (azure.mgmt.confidentialledger) memungkinkan operasi pada ledger, seperti pembuatan, modifikasi, penghapusan, mencantumkan ledger yang terkait dengan langganan, dan mendapatkan detail ledger tertentu.

Dalam kode, pertama-tama buat klien sarana kontrol dengan meneruskan ConfidentialLedgerAPI variabel kredensial dan ID langganan Azure Anda (keduanya diatur di atas).

confidential_ledger_mgmt = ConfidentialLedgerAPI(
    credential, subscription_id
)

Kita sekarang dapat membuat ledger menggunakan begin_create. Fungsi begin_create memerlukan tiga parameter: grup sumber daya Anda, nama untuk ledger, dan objek "properti".

Buat kamus properties dengan tombol dan nilai berikut, dan tetapkan ke variabel.

properties = {
    "location": "eastus",
    "tags": {},
    "properties": {
        "ledgerType": "Public",
        "aadBasedSecurityPrincipals": [],
    },
}

ledger_properties = ConfidentialLedger(**properties)

Sekarang teruskan grup sumber daya, nama ledger Anda, dan properti objek ke begin_create.

confidential_ledger_mgmt.ledger.begin_create(resource_group, ledger_name, ledger_properties)

Untuk memverifikasi bahwa ledger Anda berhasil dibuat, lihat detailnya menggunakan fungsi get.

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

Menggunakan pustaka klien sarana data

Sekarang setelah kita memiliki ledger, berinteraksi dengannya menggunakan pustaka klien sarana data (azure.confidentialledger).

Pertama, kami membuat dan menyimpan sertifikat confidential ledger.

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

Sekarang kita dapat menggunakan sertifikat jaringan, bersama dengan URL ledger dan kredensial, untuk membuat klien Confidential Ledger.

ledger_client = ConfidentialLedgerClient(
     endpoint=ledger_url, 
     credential=credential,
     ledger_certificate_path=ledger_tls_cert_file_name
)

Kita siap untuk menulis ke ledger. Kita akan melakukannya menggunakan fungsi create_ledger_entry.

sample_entry = {"contents": "Hello world!"}
append_result = ledger_client.create_ledger_entry(entry=sample_entry)
print(append_result['transactionId'])

Fungsi cetak akan mengembalikan ID transaksi tulisan Anda ke ledger, yang dapat digunakan untuk mengambil pesan yang Anda tulis ke ledger.

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

Jika Anda hanya ingin transaksi terbaru yang diterapkan pada ledger, Anda dapat menggunakan fungsi .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']}")

Fungsi cetak akan mengembalikan "Halo dunia!", karena itu adalah pesan dalam ledger yang sesuai dengan ID transaksi dan merupakan transaksi terbaru.

Kode sampel penuh

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

Poller

Jika Anda ingin menunggu transaksi tulis Anda diterapkan ke ledger Anda, Anda dapat menggunakan fungsi tersebut begin_create_ledger_entry . Ini akan mengembalikan poller untuk menunggu sampai entri dilakukan dengan durably.

sample_entry = {"contents": "Hello world!"}
ledger_entry_poller = ledger_client.begin_create_ledger_entry( 
    entry=sample_entry
)
ledger_entry_result = ledger_entry_poller.result()

Mengkueri entri ledger yang lebih lama memerlukan ledger untuk membaca entri dari disk dan memvalidasinya. Anda dapat menggunakan begin_get_ledger_entry fungsi untuk membuat poller yang akan menunggu hingga entri yang dikueri dalam status siap untuk dilihat.

get_entry_poller = ledger_client.begin_get_ledger_entry(
    transaction_id=ledger_entry_result['transactionId']
)
entry = get_entry_poller.result()

Membersihkan sumber daya

Artikel Azure Confidential Ledger lainnya dapat dibangun di atas mulai cepat ini. Jika berencana untuk melanjutkan bekerja dengan mulai cepat dan tutorial berikutnya, Anda mungkin ingin membiarkan sumber daya ini tetap di tempatnya.

Jika tidak, saat Anda selesai dengan sumber daya yang dibuat di artikel ini, gunakan perintah hapus grup az Azure CLI untuk menghapus grup sumber daya dan semua sumber daya di dalamnya:

az group delete --resource-group myResourceGroup

Langkah berikutnya