다음을 통해 공유


Azure 관리형 CCF 리소스에서 멤버 활성화

이 가이드에서는 관리되는 CCF(Azure Managed CCF) 리소스에서 멤버를 활성화하는 방법을 알아봅니다. 이 자습서는 빠른 시작에서 만든 관리되는 CCF 리소스를 기반으로 합니다 . Azure Portal 자습서를 사용하여 Azure Managed CCF 리소스를 만듭니 다.

필수 조건

서비스 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 리소스에 추가되면 허용되는 상태입니다. 활성화될 때까지 거버넌스에 참여할 수 없습니다. 이렇게 하려면 멤버는 현재 헌법 및 현재 신뢰할 수 있는 노드를 감사한 후 서비스 상태에 만족한다는 것을 인정해야 합니다.

  1. 멤버는 최신 상태 다이제스트를 업데이트하고 검색해야 합니다. 이렇게 하면 새 멤버가 서비스의 현재 상태에 만족하는지 확인합니다.
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": <...>
}

비고

Mac에서 명령을 실행할 때 date -Isdate +%FT%T%z로 바꿉니다.

  1. 멤버는 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"
  1. 명령이 완료되면 멤버가 활성 상태이며 거버넌스에 참여할 수 있습니다. 다음 명령을 사용하여 멤버를 볼 수 있습니다.
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"
  }
}

다음 단계