Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Prise en main de la bibliothèque de client de registre confidentiel Microsoft Azure pour Python. Suivez les étapes décrites dans cet article pour installer le package et essayer un exemple de code pour les tâches de base.
Le registre confidentiel Microsoft Azure est un nouveau service hautement sécurisé pour la gestion des enregistrements de données sensibles. Basé sur un modèle de blockchain autorisée, le registre confidentiel Azure offre des avantages uniques en matière d’intégrité des données, tels que l’immuabilité (en permettant seulement l'ajout au registre) et la protection contre la falsification (pour garantir que tous les enregistrements sont conservés intacts).
Si vous ne disposez pas d’un compte Azure, créez-en un gratuitement avant de commencer.
Documentation de référence sur l’API | | |
Conditions préalables
- Un abonnement Azure - En créer un gratuitement - Propriétaire de l’abonnement - Un registre confidentiel ne peut être créé que par les utilisateurs disposant d’autorisations propriétaire sur l’abonnement Azure. Vérifiez que vous disposez de l’accès approprié avant de poursuivre ce guide de démarrage rapide..
- Versions de Python prises en charge par le Kit de développement logiciel (SDK) Azure pour Python.
- Azure CLI ou Azure PowerShell.
Configurer
Ce guide de démarrage rapide utilise la bibliothèque Azure Identity ainsi qu’Azure CLI ou PowerShell pour authentifier l’utilisateur auprès des services Azure. Les développeurs peuvent également utiliser Visual Studio ou Visual Studio Code pour authentifier leurs appels. Pour plus d’informations, consultez Authentifier le client avec la bibliothèque cliente Azure Identity.
Connexion à Azure
Connectez-vous à Azure à l’aide de la commande Azure CLI az login ou de la cmdlet Azure PowerShell Connect-AzAccount.
az login
Si Azure CLI ou PowerShell peut ouvrir votre navigateur par défaut, il le fait et charge une page de connexion Azure. Sinon, visitez https://aka.ms/devicelogin et entrez le code d’autorisation affiché dans votre terminal.
Si on vous le demande, connectez-vous ensuite avec les informations d’identification de votre compte dans le navigateur.
Installer les packages
Dans un terminal ou une invite de commandes, créez un dossier de projet approprié, puis créez et activez un environnement virtuel Python comme décrit dans Utiliser des environnements virtuels Python.
Installez la bibliothèque de client d’identité Microsoft Entra :
pip install azure-identity
Installez la bibliothèque cliente du plan de contrôle du registre confidentiel Azure.
pip install azure.mgmt.confidentialledger
Installez la bibliothèque de client du plan de données de Registre confidentiel.
pip install azure.confidentialledger
Créer un groupe de ressources
Un groupe de ressources est un conteneur logique dans lequel les ressources Azure sont déployées et gérées. Utilisez la commande Azure CLI az group create ou l’applet de commande Azure PowerShell New-AzResourceGroup pour créer un groupe de ressources nommé myResourceGroup à l’emplacement eastus .
az group create --name "myResourceGroup" -l "EastUS"
Enregistrez le fournisseur de ressources microsoft.ConfidentialLedger
Un fournisseur de ressources est un service qui fournit des ressources Azure. Utilisez la commande Azure CLI az provider register ou l’applet de commande Azure PowerShell Register-AzResourceProvider pour inscrire le fournisseur de ressources du registre confidentiel Azure, « microsoft.ConfidentialLedger ».
az provider register --namespace "microsoft.ConfidentialLedger"
Vous pouvez vérifier que l’inscription est terminée avec la commande Azure CLI az provider register ou l’applet de commande Azure PowerShell Get-AzResourceProvider.
az provider show --namespace "microsoft.ConfidentialLedger"
Créer votre application Python
Initialisation
Nous pouvons maintenant commencer à écrire notre application Python. Tout d’abord, importez les packages requis.
# 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
Ensuite, utilisez la classe DefaultAzureCredential pour authentifier l’application.
credential = DefaultAzureCredential()
Terminez la configuration en définissant certaines variables à utiliser dans votre application : le groupe de ressources (myResourceGroup), le nom du registre que vous souhaitez créer et deux URL à utiliser par la bibliothèque cliente du plan de données.
Important
Chaque registre doit avoir un nom global unique. Remplacez <votre nom> de registre unique par le nom de votre registre dans l’exemple suivant.
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"
Utiliser la bibliothèque cliente du plan de contrôle
La bibliothèque cliente du plan de contrôle (azure.mgmt.confidentialledger) autorise les opérations sur les registres, telles que la création, la modification, la suppression, la liste des registres associés à un abonnement et l’obtention des détails d’un registre spécifique.
Dans le code, créez d’abord un client de plan de contrôle en transmettant la variable d’informations d’identification ConfidentialLedgerAPI et votre ID d’abonnement Azure (les deux sont définis ci-dessus).
confidential_ledger_mgmt = ConfidentialLedgerAPI(
credential, subscription_id
)
Nous pouvons maintenant créer un registre à l’aide begin_createde . La begin_create fonction nécessite trois paramètres : votre groupe de ressources, un nom pour le registre et un objet « properties ».
Créez un properties dictionnaire avec les clés et valeurs suivantes, puis affectez-le à une variable.
properties = {
"location": "eastus",
"tags": {},
"properties": {
"ledgerType": "Public",
"aadBasedSecurityPrincipals": [],
},
}
ledger_properties = ConfidentialLedger(**properties)
Passez maintenant le groupe de ressources, le nom de votre registre et l’objet de propriétés à begin_create.
confidential_ledger_mgmt.ledger.begin_create(resource_group, ledger_name, ledger_properties)
Pour vérifier que votre registre a été correctement créé, affichez ses détails à l’aide de la get fonction.
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}")
Utiliser la bibliothèque cliente du plan de données
Maintenant que nous avons un registre, interagissez avec celui-ci à l’aide de la bibliothèque cliente du plan de données (azure.confidentialledger).
Tout d’abord, nous générons et enregistrons un certificat de registre confidentiel.
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'])
Nous pouvons maintenant utiliser le certificat réseau, ainsi que l’URL du registre et nos informations d’identification, pour créer un client de registre confidentiel.
ledger_client = ConfidentialLedgerClient(
endpoint=ledger_url,
credential=credential,
ledger_certificate_path=ledger_tls_cert_file_name
)
Nous sommes prêts à écrire dans le registre. Nous allons le faire à l’aide de la create_ledger_entry fonction.
sample_entry = {"contents": "Hello world!"}
append_result = ledger_client.create_ledger_entry(entry=sample_entry)
print(append_result['transactionId'])
La fonction d’impression retourne l’ID de transaction de votre écriture dans le registre, qui peut être utilisé pour récupérer le message que vous avez écrit dans le registre.
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']}")
Si vous souhaitez simplement la dernière transaction validée dans le registre, vous pouvez utiliser la get_current_ledger_entry fonction.
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']}")
La fonction d’impression retourne « Hello world ! », car c’est le message du registre qui correspond à l’ID de transaction et est la dernière transaction.
Exemple de code complet
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']}")
Sondeurs
Si vous souhaitez attendre que votre transaction d’écriture soit validée dans votre registre, vous pouvez utiliser la begin_create_ledger_entry fonction. Cela retourne un observateur pour attendre que l’entrée soit validée durablement.
sample_entry = {"contents": "Hello world!"}
ledger_entry_poller = ledger_client.begin_create_ledger_entry(
entry=sample_entry
)
ledger_entry_result = ledger_entry_poller.result()
L’interrogation d’une entrée de registre plus ancienne nécessite que le registre lise l’entrée à partir du disque et la valide. Vous pouvez utiliser la fonction begin_get_ledger_entry pour créer un sondeur qui attend que l'entrée demandée soit prête à être affichée.
get_entry_poller = ledger_client.begin_get_ledger_entry(
transaction_id=ledger_entry_result['transactionId']
)
entry = get_entry_poller.result()
Nettoyer les ressources
D’autres articles relatifs à Registre confidentiel Azure peuvent se baser sur ce démarrage rapide. Si vous avez l'intention de continuer à travailler avec d'autres démarrages rapides et didacticiels, vous pouvez souhaiter laisser ces ressources en place.
Sinon, lorsque vous avez terminé d’utiliser les ressources créées dans cet article, utilisez la commande Azure CLI az group delete pour supprimer le groupe de ressources et toutes ses ressources contenues :
az group delete --resource-group myResourceGroup