다음을 통해 공유


빠른 시작: JavaScript 및 TypeScript용 Azure SDK를 사용하여 Azure Managed CCF 리소스 만들기

Azure 관리 CCF(관리형 CCF)는 기밀 애플리케이션을 배포하기 위한 새롭고 매우 안전한 서비스입니다. Azure 관리형 CCF에 대한 자세한 내용은 Azure 관리 기밀 컨소시엄 프레임워크를 참조하세요.

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

API 참조 설명서 | 라이브러리 소스 코드 | 패키지(npm)

필수 조건

설정

이 빠른 시작에서는 Azure CLI 또는 Azure PowerShell과 함께 Azure ID 라이브러리를 사용하여 사용자를 Azure Services에 인증합니다. 개발자는 Visual Studio 또는 Visual Studio Code를 사용하여 해당 호출을 인증할 수도 있습니다. 자세한 내용은 Azure ID 클라이언트 라이브러리를 사용하여 클라이언트 인증을 참조하세요.

Azure에 로그인

Azure CLI az login 명령 또는 Azure PowerShell Connect-AzAccount cmdlet을 사용하여 Azure에 로그인합니다.

az login

CLI 또는 PowerShell이 기본 브라우저를 열 수 있는 경우 기본 브라우저를 열고 Azure 로그인 페이지를 로드합니다. 그렇지 않으면 https://aka.ms/devicelogin을(를) 방문하여 터미널에 표시된 인증 코드를 입력합니다.

메시지가 표시되면 브라우저에서 계정 자격 증명으로 로그인합니다.

새 npm 프로젝트 초기화

터미널 또는 명령 프롬프트에서 적절한 프로젝트 폴더를 만들고 npm 프로젝트를 초기화합니다. 기존 노드 프로젝트가 있는 경우 이 단계를 건너뛸 수 있습니다.

cd <work folder>
npm init -y

패키지 설치

Azure Active Directory ID 클라이언트 라이브러리를 설치합니다.

npm install --save @azure/identity

Azure Confidential Ledger 관리 평면 클라이언트 라이브러리를 설치합니다.

npm install -save @azure/arm-confidentialledger@1.3.0-beta.1

TypeScript 컴파일러 및 도구를 전역적으로 설치

npm install -g typescript

리소스 그룹 만들기

리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다. Azure PowerShell New-AzResourceGroup cmdlet을 사용하여 myResourceGroup이라는 리소스 그룹을 southcentralus 위치에 만듭니다.

New-AzResourceGroup -Name "myResourceGroup" -Location "SouthCentralUS"

리소스 공급자 등록

리소스를 만들기 전에 Azure 관리형 CCF 리소스 유형을 구독에 등록해야 합니다.

az feature registration create --namespace Microsoft.ConfidentialLedger --name ManagedCCF

az provider register --namespace Microsoft.ConfidentialLedger

멤버 만들기

멤버에 대한 키 쌍을 생성합니다. 다음 명령이 완료되면 멤버의 공개 키가 member0_cert.pem에 저장되고 프라이빗 키가 member0_privk.pem에 저장됩니다.

openssl ecparam -out "member0_privk.pem" -name "secp384r1" -genkey
openssl req -new -key "member0_privk.pem" -x509 -nodes -days 365 -out "member0_cert.pem" -"sha384" -subj=/CN="member0"

JavaScript 애플리케이션 만들기

관리 평면 클라이언트 라이브러리 사용

JavaScript 및 TypeScript용 Azure SDK 라이브러리 azure-resourcemanager-confidentialledger를 사용하면 만들기 및 삭제, 구독과 연결된 리소스 나열 및 특정 리소스의 세부 정보 보기와 같은 관리형 CCF 리소스에 대한 작업을 수행할 수 있습니다.

아래 샘플을 실행하려면 .ts 확장이 있는 파일의 코드 조각을 프로젝트 폴더에 저장하고 TypeScript 프로젝트의 일부로 컴파일하거나 다음을 실행하여 스크립트를 JavaScript로 별도로 컴파일하세요.

tsc <filename.ts>

컴파일된 JavaScript 파일의 이름은 같지만 확장명은 *.js 입니다. 그런 다음 nodeJS에서 스크립트를 실행합니다.

node <filename.js>

다음 샘플 TypeScript 코드에서는 관리형 CCF 리소스의 속성을 만들고 확인합니다.

import  { ConfidentialLedgerClient, ManagedCCFProperties, ManagedCCF, KnownLanguageRuntime, DeploymentType, MemberIdentityCertificate } from "@azure/arm-confidentialledger";
import { DefaultAzureCredential } from "@azure/identity";

// Please replace these variables with appropriate values for your project
const subscriptionId = "0000000-0000-0000-0000-000000000001";
const rgName = "myResourceGroup";
const ledgerId = "testApp";
const memberCert0 = "-----BEGIN CERTIFICATE-----\nMIIBvjCCAUSgAwIBAg...0d71ZtULNWo\n-----END CERTIFICATE-----";
const memberCert1 = "-----BEGIN CERTIFICATE-----\nMIIBwDCCAUagAwIBAgI...2FSyKIC+vY=\n-----END CERTIFICATE-----";

async function main() {
    console.log("Creating a new instance.")
    const client = new ConfidentialLedgerClient(new DefaultAzureCredential(), subscriptionId);

    const properties = <ManagedCCFProperties> {
        deploymentType: <DeploymentType> {
            appSourceUri: "",
            languageRuntime: KnownLanguageRuntime.JS
        },
        memberIdentityCertificates: [
            <MemberIdentityCertificate>{
                certificate: memberCert0,
                encryptionkey: "",
                tags: { 
                    "owner":"member0"
                }
            },
            <MemberIdentityCertificate>{
                certificate: memberCert1,
                encryptionkey: "",
                tags: { 
                    "owner":"member1"
                }
            },
        ],
        nodeCount: 3,
    };

    const mccf = <ManagedCCF> {
        location: "SouthCentralUS",
        properties: properties,
    }

    const createResponse = await client.managedCCFOperations.beginCreateAndWait(rgName, ledgerId, mccf);
    console.log("Created. Instance id: " +  createResponse.id);

    // Get details of the instance
    console.log("Getting instance details.");
    const getResponse = await client.managedCCFOperations.get(rgName, ledgerId);
    console.log(getResponse.properties?.identityServiceUri);
    console.log(getResponse.properties?.nodeCount);

    // List mccf instances in the RG
    console.log("Listing the instances in the resource group.");
    const instancePages = await client.managedCCFOperations.listByResourceGroup(rgName).byPage();
    for await(const page of instancePages){
        for(const instance of page)
        {
            console.log(instance.name + "\t" + instance.location + "\t" + instance.properties?.nodeCount);
        }
    }

    console.log("Delete the instance.");
    await client.managedCCFOperations.beginDeleteAndWait(rgName, ledgerId);
    console.log("Deleted.");
}

(async () => {
    try {
        await main();
    } catch(err) {
        console.error(err);
    }
})();

관리형 CCF 리소스 삭제

다음 코드 조각은 관리형 CCF 리소스를 삭제합니다. 다른 관리형 CCF 문서는 이 빠른 시작을 기반으로 빌드할 수 있습니다. 이후의 빠른 시작 및 자습서를 계속 진행하려는 경우 이러한 리소스를 유지하는 것이 좋습니다.

import  { ConfidentialLedgerClient, ManagedCCFProperties, ManagedCCF, KnownLanguageRuntime, DeploymentType, MemberIdentityCertificate } from "@azure/arm-confidentialledger";
import { DefaultAzureCredential } from "@azure/identity";

const subscriptionId = "0000000-0000-0000-0000-000000000001"; // replace
const rgName = "myResourceGroup";
const ledgerId = "confidentialbillingapp";

async function deleteManagedCcfResource() {
    const client = new ConfidentialLedgerClient(new DefaultAzureCredential(), subscriptionId);

    console.log("Delete the instance.");
    await client.managedCCFOperations.beginDeleteAndWait(rgName, ledgerId);
    console.log("Deleted.");
}

(async () => {
    try {
        await deleteManagedCcfResource();
    } catch(err) {
        console.error(err);
    }
})();

리소스 정리

다른 관리형 CCF 문서는 이 빠른 시작을 기반으로 빌드할 수 있습니다. 이후의 빠른 시작 및 자습서를 계속 진행하려는 경우 이러한 리소스를 유지하는 것이 좋습니다.

그렇지 않으면 이 문서에서 만든 리소스를 완료한 후 Azure CLI az group delete 명령을 사용하여 리소스 그룹과 포함된 모든 리소스를 삭제합니다.

az group delete --resource-group myResourceGroup

다음 단계

이 빠른 시작에서는 Confidential Ledger용 Azure Python SDK를 사용하여 관리형 CCF 리소스를 만들었습니다. Azure 관리형 CCF 및 애플리케이션과 통합하는 방법에 대해 자세히 알아보려면 다음 문서를 계속 진행하세요.