다음을 통해 공유


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

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

이 빠른 시작에서는 Go용 Azure SDK 라이브러리를 사용하여 관리되는 CCF 리소스를 만드는 방법을 알아봅니다.

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

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

필수 조건

설정

새 Go 애플리케이션 만들기

  1. 명령 셸에서 다음 명령을 실행하여 managedccf-app(으)로 명명된 폴더를 만듭니다.
mkdir managedccf-app && cd managedccf-app

go mod init github.com/azure/resourcemanager/confidentialledger

모듈 설치

  1. Azure Confidential Ledger 모듈을 설치합니다.
go get -u github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/confidentialledger/armconfidentialledger@v1.2.0-beta.1

이 빠른 시작에서는 Azure Identity module for Go 모듈도 설치해야 합니다.

go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity

리소스 그룹 만들기

리소스 그룹은 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"

Go 애플리케이션 만들기

관리 평면 라이브러리를 사용하면 만들기 및 삭제, 구독과 연결된 리소스 나열 및 특정 리소스의 세부 정보 보기와 같은 관리되는 CCF 리소스에 대한 작업을 수행할 수 있습니다. 다음 코드 조각에서는 관리 CCF 리소스의 속성을 만들고 확인합니다.

다음 지시문을 main.go 맨 위에 추가합니다.

package main

import (
    "context"
    "log"
    
    "github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/confidentialledger/armconfidentialledger"
)

클라이언트 팩터리 인증 및 만들기

이 빠른 시작에서는 로그인한 사용자를 사용하여 로컬 개발을 위한 기본 방법인 Azure Managed CCF에 인증합니다. 이 예제에서는 Azure Identity 모듈 'NewDefaultAzureCredential()'클래스를 사용합니다. 이 클래스를 사용하면 다양한 옵션을 사용하여 ID를 제공할 수 있는 여러 환경에서 동일한 코드를 사용할 수 있습니다.

cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
    log.Fatalf("Failed to obtain a credential: %v", err)
}

Azure Resource Manager 클라이언트 팩터리를 만들고 토큰 자격 증명을 사용하여 인증합니다.

ctx := context.Background()
clientFactory, err := armconfidentialledger.NewClientFactory("0000000-0000-0000-0000-000000000001", cred, nil)

if err != nil {
    log.Fatalf("Failed to create client: %v", err)
}

관리 CCF 리소스 만들기

appName := "confidentialbillingapp"
rgName := "myResourceGroup"

// Create a new resource
poller, err := clientFactory.NewManagedCCFClient().BeginCreate(ctx, rgName, appName, armconfidentialledger.ManagedCCF{
    Location: to.Ptr("SouthCentralUS"),
    Tags: map[string]*string{
        "Department": to.Ptr("Contoso IT"),
    },
    Properties: &armconfidentialledger.ManagedCCFProperties{
        DeploymentType: &armconfidentialledger.DeploymentType{
            AppSourceURI:    to.Ptr(""),
            LanguageRuntime: to.Ptr(armconfidentialledger.LanguageRuntimeJS),
        },
        MemberIdentityCertificates: []*armconfidentialledger.MemberIdentityCertificate{
            {
                Certificate:   to.Ptr("-----BEGIN CERTIFICATE-----\nMIIU4G0d7....1ZtULNWo\n-----END CERTIFICATE-----"),
                Encryptionkey: to.Ptr(""),
                Tags: map[string]any{
                    "owner": "IT Admin1",
                },
            }},
        NodeCount: to.Ptr[int32](3),
    },
}, nil)

if err != nil {
    log.Fatalf("Failed to finish the request: %v", err)
}

_, err = poller.PollUntilDone(ctx, nil)

if err != nil {
    log.Fatalf("Failed to pull the result: %v", err)
}

관리되는 CCF 리소스의 속성 가져오기

다음 코드 조각은 이전 단계에서 만든 관리형 CCF 리소스를 검색합니다.

log.Println("Getting the Managed CCF resource.")

// Get the resource details and print it
getResponse, err := clientFactory.NewManagedCCFClient().Get(ctx, rgName, appName, nil)

if err != nil {
    log.Fatalf("Failed to get details of mccf instance: %v", err)
}

// Print few properties of the Managed CCF resource
log.Println("Application name:", *getResponse.ManagedCCF.Properties.AppName)
log.Println("Node Count:", *getResponse.ManagedCCF.Properties.NodeCount)

리소스 그룹에 관리되는 CCF 리소스 나열

다음 코드 조각은 리소스 그룹에서 관리되는 CCF 리소스를 검색합니다.

pager := clientFactory.NewManagedCCFClient().NewListByResourceGroupPager(rgName, nil)

for pager.More() {
    page, err := pager.NextPage(ctx)
    if err != nil {
        log.Fatalf("Failed to advance page: %v", err)
    }

    for _, v := range page.Value {
        log.Println("Application Name:", *v.Name)
    }
}

관리형 CCF 리소스 삭제

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

deletePoller, err := clientFactory.NewManagedCCFClient().BeginDelete(ctx, rgName, appName, nil)

if err != nil {
    log.Fatalf("Failed to finish the delete request: %v", err)
}

_, err = deletePoller.PollUntilDone(ctx, nil)

if err != nil {
    log.Fatalf("Failed to get the delete result: %v", err)
}

리소스 정리

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

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

az group delete --resource-group contoso-rg

다음 단계

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