Azure Managed CCF リソースのメンバーをアクティブ化する
このガイドでは、Azure Managed CCF (Managed CCF) リソースでメンバーをアクティブ化する方法について説明します。 このチュートリアルは、「クイック スタート: Azure portal チュートリアルを使用して Azure Managed CCF リソースを作成する」で作成したマネージド CCF リソースに基づいています。
前提条件
- Python 3 以降。
- 最新バージョンの CCF Python パッケージをインストールします。
サービス ID をダウンロードする
Azure マネージド CCF リソースには、サービス ID と呼ばれる一意の ID があります。 証明書によって表され、リソースの作成時に作成されます。 Azure Managed CCF リソースの一部である個々のノードには、サービス ID によって承認された自己署名証明書があり、それによって信頼が確立されます。
お客様は、サービス ID 証明書をダウンロードし、それを使用してサービスと対話するときに TLS 接続を確立することをお勧めします。 次のコマンドは、証明書をダウンロードし、service_cert.pem に保存します。
curl https://identity.confidential-ledger.core.azure.com/ledgerIdentity/confidentialbillingapp --silent | jq ' .ledgerTlsCertificate' | xargs echo -e > service_cert.pem
メンバーのアクティブ化
マネージド CCF リソースにメンバーが追加されると、メンバーは受け入れられた状態になります。 アクティブ化されるまで、ガバナンスに参加することはできません。 そのためには、メンバーは、サービスの状態に満足していることを確認する必要があります (たとえば、現在の構成と現在信頼されているノードを監査した後)。
- メンバーは、最新の状態ダイジェストを更新して取得する必要があります。 その際、新しいメンバーは、サービスの現在の状態に満足していることを確認します。
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": <...>
}
Note
Mac でコマンドを実行する場合は、次のように置き換えますdate -Is
date +%FT%T%z
。
- メンバーは、ccf_cose_sign1 ユーティリティを使用して状態ダイジェストに署名する必要があります。 このユーティリティは、CCF Python パッケージと共にインストールされます。
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"
- コマンドが完了すると、メンバーはアクティブになり、ガバナンスに参加できます。 メンバーは、次のコマンドを使用して表示できます。
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"
}
}