Activer des membres dans une ressource Azure Managed CCF
Dans ce guide, vous allez apprendre à activer le ou les membres dans une ressource Azure Managed CCF (Managed CCF). Ce tutoriel s’appuie sur la ressource CCF managée créée dans le guide de démarrage rapide : Créer une ressource CCF managée Azure à l’aide du didacticiel Portail Azure.
Prérequis
- Python 3+.
- Installez la dernière version du package Python CCF.
Télécharger l’identité du service
Une ressource CCF managée Azure a une identité unique appelée identité de service. Il est représenté par un certificat et est créé lors de la création de la ressource. Chaque nœud individuel qui fait partie de la ressource Azure Managed CCF a son certificat auto-signé, approuvé par l’identité de service, qui établit l’approbation sur celui-ci.
Les clients sont recommandés de télécharger le certificat d’identité de service et de l’utiliser pour établir une connexion TLS lors de l’interaction avec le service. La commande suivante télécharge le certificat et l’enregistre dans service_cert.pem.
curl https://identity.confidential-ledger.core.azure.com/ledgerIdentity/confidentialbillingapp --silent | jq ' .ledgerTlsCertificate' | xargs echo -e > service_cert.pem
Activer le ou les membres
Lorsqu’un membre est ajouté à une ressource CCF gérée, il est dans l’état accepté. Ils ne peuvent pas participer à la gouvernance tant qu’ils ne sont pas activés. Pour ce faire, le membre doit reconnaître qu’il est satisfait de l’état du service (par exemple, après avoir audité la constitution actuelle et les nœuds actuellement approuvés).
- Le membre doit mettre à jour et récupérer le dernier digest d’état. Dans ce cas, le nouveau membre confirme qu’il est satisfait de l’état actuel du service.
curl https://confidentialbillingapp.confidential-ledger.azure.com/gov/ack/update_state_digest -X POST --cacert service_cert.pem --key member0_privk.pem --cert member0_cert.pem --silent | jq > request.json
cat request.json
{
"state_digest": <...>
}
Remarque
Lors de l’exécution des commandes sur un Mac, remplacez date -Is
par date +%FT%T%z
.
- Le membre doit signer le digest d’état à l’aide de l’utilitaire ccf_cose_sign1. Cet utilitaire est installé avec le package Python CCF.
ccf_cose_sign1 --ccf-gov-msg-type ack --ccf-gov-msg-created_at `date -Is` --signing-key member0_privk.pem --signing-cert member0_cert.pem --content request.json | \
curl https://confidentialbillingapp.confidential-ledger.azure.com/gov/ack --cacert service_cert.pem --data-binary @- -H "content-type: application/cose"
- Une fois la commande terminée, le membre est actif et peut participer à la gouvernance. Les membres peuvent être consultés à l’aide de la commande suivante.
curl --cacert service_cert.pem https://confidentialbillingapp.confidential-ledger.azure.com/gov/members | jq
{
"710c4d7ce6a70a89137b39170cd5c48f94b4756a66e66b2242370111c1c47564": {
"cert": "-----BEGIN CERTIFICATE-----\nMIIB9zCCAX2gAwIBAgIQW20I1iR...l8Uv8rRce\n-----END CERTIFICATE-----",
"member_data": {
"is_operator": true,
"owner": "Microsoft Azure"
},
"public_encryption_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMI...n3QIDAQAB\n-----END PUBLIC KEY-----\n",
"status": "Active"
},
"f9ea379051e5292b538ff2a3dc97f1bb4d5046f12e2bdbf5b8e3acc4516f34e3": {
"cert": "-----BEGIN CERTIFICATE-----\nMIIBuzCCAUKgAwIBAgIURuSESLma...yyK1EHhxx\n-----END CERTIFICATE-----",
"member_data": {
"group": "",
"identifier": "member0"
},
"public_encryption_key": null,
"status": "Active"
}
}