Bagikan melalui


Mulai cepat: Membuat sumber daya Azure Managed CCF menggunakan Azure SDK untuk JavaScript dan TypeScript

Microsoft Azure Managed CCF (Managed CCF) adalah layanan baru dan sangat aman untuk menyebarkan aplikasi rahasia. Untuk informasi selengkapnya tentang Azure Managed CCF, lihat Tentang Azure Managed Confidential Consortium Framework.

Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.

Dokumentasi referensi API | Kode sumber pustaka | Paket (npm)

Prasyarat

Penyiapan

Mulai cepat ini menggunakan pustaka Azure Identity dengan Azure CLI atau Azure PowerShell untuk mengautentikasi pengguna ke Azure Services. Pengembang juga dapat menggunakan Visual Studio atau Visual Studio Code untuk mengautentikasi panggilan. Untuk informasi selengkapnya, lihat Mengautentikasi klien dengan pustaka klien Azure Identity.

Masuk ke Azure

Masuk ke Azure menggunakan perintah login az Azure CLI atau cmdlet Connect-AzAccount Azure PowerShell.

az login

Jika CLI atau PowerShell dapat membuka browser default Anda, CLI atau PowerShell akan membuka browser dan memuat halaman masuk Azure. Jika tidak, buka https://aka.ms/devicelogin dan masukkan kode otorisasi yang ditampilkan di terminal Anda.

Jika diminta, masuk menggunakan info masuk akun Anda di browser.

Menginisialisasi proyek npm baru

Di terminal atau prompt perintah, buat folder proyek yang sesuai dan inisialisasi npm proyek. Anda dapat melewati langkah ini jika Anda memiliki proyek simpul yang ada.

cd <work folder>
npm init -y

Menginstal paket

Instal pustaka klien identitas Azure Active Directory.

npm install --save @azure/identity

Instal pustaka klien sarana manajemen Azure Confidential Ledger.

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

Menginstal pengkompilasi dan alat TypeScript secara global

npm install -g typescript

Buat grup sumber daya

Grup sumber daya adalah kontainer logis yang disebarkan dan dikelola oleh sumber daya Azure. Gunakan cmdlet Azure PowerShell New-AzResourceGroup untuk membuat grup sumber daya bernama myResourceGroup di lokasi southcentralus.

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

Mendaftarkan penyedia sumber

Jenis sumber daya Azure Managed CCF harus didaftarkan dalam langganan sebelum membuat sumber daya.

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

az provider register --namespace Microsoft.ConfidentialLedger

Membuat anggota

Buat pasangan kunci untuk anggota. Setelah perintah berikut selesai, kunci umum anggota disimpan dan member0_cert.pem kunci privat disimpan di 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"

Membuat aplikasi JavaScript

Menggunakan pustaka klien bidang manajemen

Azure SDK untuk JavaScript dan pustaka TypeScript azure/arm-confidentialledger memungkinkan operasi pada sumber daya CCF Terkelola, seperti pembuatan dan penghapusan, mencantumkan sumber daya yang terkait dengan langganan, dan melihat detail sumber daya tertentu.

Untuk menjalankan sampel di bawah ini, simpan cuplikan kode ke dalam file dengan .ts ekstensi ke folder proyek Anda dan kompilasi sebagai bagian dari proyek TypeScript Anda, atau kompilasi skrip ke JavaScript secara terpisah dengan menjalankan:

tsc <filename.ts>

File JavaScript yang dikompilasi akan memiliki nama yang sama tetapi *.js ekstensi. Kemudian jalankan skrip di nodeJS:

node <filename.js>

Contoh kode TypeScript berikut membuat dan melihat properti sumber daya CCF Terkelola.

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);
    }
})();

Menghapus sumber daya CCF Terkelola

Bagian kode berikut menghapus sumber daya CCF Terkelola. Artikel CCF Terkelola lainnya dapat dibuat berdasarkan mulai cepat ini. Jika Anda berencana untuk terus bekerja dengan mulai cepat dan tutorial berikutnya, Anda mungkin ingin meninggalkan sumber daya ini di tempat.

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);
    }
})();

Membersihkan sumber daya

Artikel CCF Terkelola lainnya dapat dibuat berdasarkan mulai cepat ini. Jika Anda berencana untuk terus bekerja dengan mulai cepat dan tutorial berikutnya, Anda mungkin ingin meninggalkan sumber daya ini di tempat.

Jika tidak, setelah Anda selesai dengan sumber daya yang dibuat dalam artikel ini, gunakan perintah az group delete Azure CLI untuk menghapus grup sumber daya dan semua sumber daya yang terkandung.

az group delete --resource-group myResourceGroup

Langkah berikutnya

Dalam mulai cepat ini, Anda membuat sumber daya CCF Terkelola dengan menggunakan Azure Python SDK untuk Confidential Ledger. Untuk mempelajari selengkapnya tentang Azure Managed CCF dan cara mengintegrasikannya dengan aplikasi Anda, lanjutkan ke artikel berikut: