다음을 통해 공유


Azure 관리 CCF 리소스의 멤버 활성화

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

필수 조건

서비스 ID 다운로드

Azure 관리 CCF 리소스에는 서비스 ID라는 고유한 ID가 있습니다. 서비스 ID는 인증서로 표시되며 리소스 생성 중에 만들어집니다. Azure 관리 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"
  }
}

다음 단계