Quickstart: Microsoft Azure Confidential Ledger-clientbibliotheek voor Python
Ga aan de slag met de clientbibliotheek voor vertrouwelijke grootboekbibliotheek van Microsoft Azure voor Python. Volg de stappen in dit artikel om het pakket te installeren en voorbeeldcode uit te proberen voor basistaken.
Microsoft Azure Confidential Ledger is een nieuwe en zeer veilige service voor het beheren van gevoelige gegevensrecords. Op basis van een machtigings blockchainmodel biedt Azure Confidential Ledger unieke voordelen voor gegevensintegriteit, zoals onveranderbaarheid (waardoor het grootboek alleen kan worden toegevoegd) en controle voor manipulatie (om ervoor te zorgen dat alle records intact blijven).
Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
API-referentiedocumentatiebibliotheek | broncodepakket | (Python Package Index) Management Library| Package (Python Package Index) Client Library
Vereisten
- Een Azure-abonnement (u kunt een gratis abonnement maken). - Abonnementseigenaar - Een vertrouwelijk grootboek kan alleen worden gemaakt door gebruikers die eigenaarsmachtigingen voor het Azure-abonnement hebben. Controleer of u de juiste toegang hebt voordat u verdergaat met deze quickstart.
- Python-versies die worden ondersteund door de Azure SDK voor Python.
- Azure CLI of Azure PowerShell.
Instellingen
In deze quickstart wordt gebruikgemaakt van de Azure Identity-bibliotheek, samen met Azure CLI of Azure PowerShell, om de gebruiker te verifiëren bij Azure Services. Ontwikkelaars kunnen ook Visual Studio of Visual Studio Code gebruiken om hun aanroepen te verifiëren. Zie De client verifiëren met de Azure Identity-clientbibliotheek voor meer informatie.
Aanmelden bij Azure
Meld u aan bij Azure met behulp van de Azure CLI az login command of de Azure PowerShell Connect-AzAccount-cmdlet .
az login
Als de CLI of PowerShell uw standaardbrowser kan openen, gebeurt dit en laadt u een Azure-aanmeldingspagina. Anders gaat u naar https://aka.ms/devicelogin en voert u de autorisatiecode in die wordt weergegeven in uw terminal.
Meld u aan met uw accountreferenties in de browser als u hierom wordt gevraagd.
De pakketten installeren
In een terminal- of opdrachtprompt maakt u een geschikte projectmap en maakt en activeert u een virtuele Python-omgeving, zoals wordt beschreven in Virtuele Python-omgevingen gebruiken.
Installeer de Microsoft Entra Identity-clientbibliotheek:
pip install azure-identity
Installeer de clientbibliotheek van het Azure Confidential-grootboekbesturingsvlak.
pip install azure.mgmt.confidentialledger
Installeer de clientbibliotheek voor het gegevensvlak van het Azure Confidential-grootboek.
pip install azure.confidentialledger
Een brongroep maken
Een resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd. Gebruik de opdracht Azure CLI az group create of de Azure PowerShell New-AzResourceGroup-cmdlet om een resourcegroep met de naam myResourceGroup te maken op de locatie eastus .
az group create --name "myResourceGroup" -l "EastUS"
Registreer de microsoft. ConfidentialLedger-resourceprovider
Een resourceprovider is een service die Azure-resources levert. Gebruik de azure CLI az provider register command of de Azure PowerShell Register-AzResourceProvider cmdlet om de Azure Confidential Ledger resource provider, 'microsoft, te registreren. ConfidentialLedger'.
az provider register --namespace "microsoft.ConfidentialLedger"
U kunt controleren of de registratie is voltooid met de azure CLI az provider register command of de Azure PowerShell Get-AzResourceProvider cmdlet.
az provider show --namespace "microsoft.ConfidentialLedger"
Uw Python-app maken
Initialisatie
We kunnen nu beginnen met het schrijven van onze Python-toepassing. Importeer eerst de vereiste pakketten.
# 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
Gebruik vervolgens de DefaultAzureCredential-klasse om de app te verifiëren.
credential = DefaultAzureCredential()
Voltooi de installatie door enkele variabelen in te stellen voor gebruik in uw toepassing: de resourcegroep (myResourceGroup), de naam van het grootboek dat u wilt maken en twee URL's die moeten worden gebruikt door de clientbibliotheek van het gegevensvlak.
Belangrijk
Elk grootboek moet een wereldwijd unieke naam hebben. Vervang <uw grootboeknaam> door de naam van uw grootboek in het volgende voorbeeld.
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"
De clientbibliotheek van het besturingsvlak gebruiken
De clientbibliotheek van het besturingsvlak (azure.mgmt.confidentialledger) biedt bewerkingen op grootboeken, zoals het maken, wijzigen, verwijderen, het weergeven van de grootboeken die zijn gekoppeld aan een abonnement en het ophalen van de details van een specifiek grootboek.
Maak in de code eerst een besturingsvlakclient door de ConfidentialLedgerAPI door te geven aan de referentievariabele en uw Azure-abonnements-id (beide zijn hierboven ingesteld).
confidential_ledger_mgmt = ConfidentialLedgerAPI(
credential, subscription_id
)
We kunnen nu een grootboek maken met behulp van begin_create
. Voor de begin_create
functie zijn drie parameters vereist: uw resourcegroep, een naam voor het grootboek en een object 'eigenschappen'.
Maak een properties
woordenlijst met de volgende sleutels en waarden en wijs deze toe aan een variabele.
properties = {
"location": "eastus",
"tags": {},
"properties": {
"ledgerType": "Public",
"aadBasedSecurityPrincipals": [],
},
}
ledger_properties = ConfidentialLedger(**properties)
Geef nu de resourcegroep, de naam van het grootboek en het eigenschappenobject door aan begin_create
.
confidential_ledger_mgmt.ledger.begin_create(resource_group, ledger_name, ledger_properties)
Als u wilt controleren of uw grootboek is gemaakt, bekijkt u de details ervan met behulp van de get
functie.
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}")
De clientbibliotheek voor het gegevensvlak gebruiken
Nu we een grootboek hebben, werken we ermee met behulp van de clientbibliotheek voor het gegevensvlak (azure.confidentialledger).
Eerst genereren en opslaan we een vertrouwelijk grootboekcertificaat.
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'])
Nu kunnen we het netwerkcertificaat gebruiken, samen met de grootboek-URL en onze referenties, om een vertrouwelijke grootboekclient te maken.
ledger_client = ConfidentialLedgerClient(
endpoint=ledger_url,
credential=credential,
ledger_certificate_path=ledger_tls_cert_file_name
)
We zijn bereid om naar het grootboek te schrijven. We doen dit met behulp van de create_ledger_entry
functie.
sample_entry = {"contents": "Hello world!"}
append_result = ledger_client.create_ledger_entry(entry=sample_entry)
print(append_result['transactionId'])
De afdrukfunctie retourneert de transactie-id van uw schrijfbewerking naar het grootboek, dat kan worden gebruikt om het bericht op te halen dat u naar het grootboek hebt geschreven.
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']}")
Als u alleen de meest recente transactie wilt die is doorgevoerd in het grootboek, kunt u de get_current_ledger_entry
functie gebruiken.
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']}")
De afdrukfunctie retourneert 'Hallo wereld!', omdat dat het bericht is in het grootboek dat overeenkomt met de transactie-id en de meest recente transactie is.
Volledige voorbeeldcode
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']}")
Pollers
Als u wilt wachten totdat uw schrijftransactie is doorgevoerd in uw grootboek, kunt u de begin_create_ledger_entry
functie gebruiken. Hiermee wordt een poller geretourneerd om te wachten totdat de vermelding definitief is doorgevoerd.
sample_entry = {"contents": "Hello world!"}
ledger_entry_poller = ledger_client.begin_create_ledger_entry(
entry=sample_entry
)
ledger_entry_result = ledger_entry_poller.result()
Als u een query uitvoert op een oudere grootboekvermelding, moet het grootboek de vermelding van de schijf lezen en valideren. U kunt de begin_get_ledger_entry
functie gebruiken om een poller te maken die wacht totdat de opgevraagde vermelding gereed is om weer te geven.
get_entry_poller = ledger_client.begin_get_ledger_entry(
transaction_id=ledger_entry_result['transactionId']
)
entry = get_entry_poller.result()
Resources opschonen
Andere Azure Confidential-grootboekartikelen kunnen voortbouwen op deze quickstart. Als u van plan bent om verder te gaan met volgende snelstarts en zelfstudies, kunt u deze resources intact laten.
Als u klaar bent met de resources die in dit artikel zijn gemaakt, gebruikt u de opdracht Azure CLI az group delete om de resourcegroep en alle bijbehorende resources te verwijderen:
az group delete --resource-group myResourceGroup