다음을 통해 공유


빠른 시작: Java용 Azure SDK를 사용하여 Azure 관리되는 CCF 리소스 만들기

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

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

API 참조 설명서 | 라이브러리 소스 코드 | 패키지(maven 중앙 리포지토리)

필수 조건

설정

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

Azure에 로그인

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

az login

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

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

종속성 설치

<dependency>
    <groupId>com.azure.resourcemanager</groupId>
    <artifactId>azure-resourcemanager-confidentialledger</artifactId>
    <version>1.0.0-beta.3</version>
</dependency>

리소스 그룹 만들기

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

Java 애플리케이션 만들기

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

import com.azure.core.management.AzureEnvironment;
import com.azure.core.management.exception.ManagementException;
import com.azure.core.management.profile.AzureProfile;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.resourcemanager.confidentialledger.ConfidentialLedgerManager;
import com.azure.resourcemanager.confidentialledger.fluent.models.ManagedCcfInner;
import com.azure.resourcemanager.confidentialledger.models.DeploymentType;
import com.azure.resourcemanager.confidentialledger.models.LanguageRuntime;
import com.azure.resourcemanager.confidentialledger.models.ManagedCcfProperties;
import com.azure.resourcemanager.confidentialledger.models.MemberIdentityCertificate;
import java.util.*;

public class AzureJavaSdkClient {
    public static void main(String[] args) {
      try {
          AzureProfile profile = new AzureProfile("<tenant id>","<subscription id>", AzureEnvironment.AZURE);
          ConfidentialLedgerManager manager = ConfidentialLedgerManager.authenticate(new DefaultAzureCredentialBuilder().build(), profile);

          MemberIdentityCertificate member0 = new MemberIdentityCertificate()
              .withCertificate("-----BEGIN CERTIFICATE-----\nMIIBvjCCAUSgAwIBAgIUA0YHcPpUCtd...0Yet/xU4G0d71ZtULNWo\n-----END CERTIFICATE-----")
              .withTags(Map.of("Dept", "IT"));
          List<MemberIdentityCertificate> members = new ArrayList<MemberIdentityCertificate>();
          members.add(member0);

          DeploymentType deployment = new DeploymentType().withAppSourceUri("").withLanguageRuntime(LanguageRuntime.JS);
          ManagedCcfProperties properties = new ManagedCcfProperties()
              .withDeploymentType(deployment)
              .withNodeCount(5)
              .withMemberIdentityCertificates(members);

          ManagedCcfInner inner = new ManagedCcfInner().withProperties(properties).withLocation("southcentralus");

          // Send Create request
          manager.serviceClient().getManagedCcfs().create("myResourceGroup", "confidentialbillingapp", inner);

          // Print the Managed CCF resource properties
          ManagedCcfInner app = manager.serviceClient().getManagedCcfs().getByResourceGroup("myResourceGroup", "confidentialbillingapp");
          printAppInfo(app);

          // Delete the resource
          manager.serviceClient().getManagedCcfs().delete("myResourceGroup", "confidentialbillingapp");
        } catch (ManagementException ex) {
            // The x-ms-correlation-request-id is located in the Header
            System.out.println(ex.getResponse().getHeaders().toString());
            System.out.println(ex);
        }
    }

    private static void printAppInfo(ManagedCcfInner app) {
        System.out.println("App Name: " + app.name());
        System.out.println("App Id: " + app.id());
        System.out.println("App Location: " + app.location());
        System.out.println("App type: " + app.type());
        System.out.println("App Properties Uri: " + app.properties().appUri());
        System.out.println("App Properties Language Runtime: " + app.properties().deploymentType().languageRuntime());
        System.out.println("App Properties Source Uri: " + app.properties().deploymentType().appSourceUri());
        System.out.println("App Properties NodeCount: " + app.properties().nodeCount());
        System.out.println("App Properties Identity Uri: " + app.properties().identityServiceUri());
        System.out.println("App Properties Cert 0: " + app.properties().memberIdentityCertificates().get(0).certificate());
        System.out.println("App Properties Cert tags: " + app.properties().memberIdentityCertificates().get(0).tags());
    }
}

리소스 정리

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

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

az group delete --resource-group myResourceGroup

다음 단계

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