Rychlý start: Vytvoření prostředku Azure Managed CCF pomocí sady Azure SDK pro JavaScript a TypeScript

Microsoft Azure Managed CCF (Managed CCF) je nová a vysoce zabezpečená služba pro nasazování důvěrných aplikací. Další informace o službě Azure Managed CCF najdete v tématu o rozhraní spravovaného důvěrného konsorcia Azure.

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Referenční dokumentace k | rozhraní API – Balíček zdrojového kódu | knihovny (npm)

Požadavky

Nastavení

V tomto rychlém startu se k ověření uživatele ve službách Azure používá knihovna identit Azure spolu s Azure CLI nebo Azure PowerShellem. Vývojáři také můžou k ověření volání použít Visual Studio nebo Visual Studio Code. Další informace najdete v tématu Ověřování klienta pomocí klientské knihovny Azure Identity.

Přihlášení k Azure

Přihlaste se k Azure pomocí příkazu az login azure CLI nebo rutiny Azure PowerShellu Připojení-AzAccount.

az login

Pokud může rozhraní příkazového řádku nebo PowerShell otevřít výchozí prohlížeč, provede se to a načte přihlašovací stránku Azure. V opačném případě navštivte https://aka.ms/devicelogin a zadejte autorizační kód zobrazený v terminálu.

Pokud se zobrazí výzva, přihlaste se pomocí přihlašovacích údajů k účtu v prohlížeči.

Inicializace nového projektu npm

V terminálu nebo příkazovém řádku vytvořte vhodnou složku projektu a inicializujete npm projekt. Tento krok můžete přeskočit, pokud máte existující projekt uzlu.

cd <work folder>
npm init -y

Instalace balíčků

Nainstalujte klientskou knihovnu identit Azure Active Directory.

npm install --save @azure/identity

Nainstalujte klientskou knihovnu roviny správy Azure Confidential Ledger.

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

Globální instalace kompilátoru a nástrojů TypeScriptu

npm install -g typescript

Vytvoření skupiny zdrojů

Skupina prostředků je logický kontejner, ve kterém se nasazují a spravují prostředky Azure. Pomocí rutiny Azure PowerShell New-AzResourceGroup vytvořte skupinu prostředků myResourceGroup v umístění southcentralus.

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

Registrace poskytovatele prostředků

Před vytvořením prostředku musí být ve službě Azure Managed CCF zaregistrovaný v předplatném.

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

az provider register --namespace Microsoft.ConfidentialLedger

Vytvoření členů

Vygenerujte dvojici klíčů pro člena. Po dokončení následujících příkazů se veřejný klíč člena uloží a member0_cert.pem privátní klíč se uloží do member0_privk.pemsouboru .

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"

Vytvoření javascriptové aplikace

Použití klientské knihovny roviny správy

Sada Azure SDK pro JavaScript a knihovnu TypeScript azure/arm-confidentialledger umožňuje operace se spravovanými prostředky CCF, jako je vytvoření a odstranění, výpis prostředků přidružených k předplatnému a zobrazení podrobností o konkrétním prostředku.

Pokud chcete spustit následující ukázky, uložte fragmenty kódu do souboru s příponou .ts do složky projektu a zkompilujte ho jako součást projektu TypeScript nebo skript zkompilujte do JavaScriptu samostatně spuštěním:

tsc <filename.ts>

Zkompilovaný javascriptový soubor bude mít stejný název, ale příponu *.js . Pak spusťte skript v nodeJS:

node <filename.js>

Následující ukázkový kód TypeScriptu vytvoří a zobrazí vlastnosti spravovaného prostředku 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);
    }
})();

Odstranění spravovaného prostředku CCF

Následující část kódu odstraní spravovaný prostředek CCF. Další články o spravovaných CCF můžou na tomto rychlém startu vycházet. Pokud chcete pokračovat v práci s dalšími rychlými starty a kurzy, možná budete chtít tyto prostředky ponechat na místě.

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

Vyčištění prostředků

Další články o spravovaných CCF můžou na tomto rychlém startu vycházet. Pokud chcete pokračovat v práci s dalšími rychlými starty a kurzy, možná budete chtít tyto prostředky ponechat na místě.

Jinak po dokončení práce s prostředky vytvořenými v tomto článku pomocí příkazu Az group delete v Azure CLI odstraňte skupinu prostředků a všechny její obsažené prostředky.

az group delete --resource-group myResourceGroup

Další kroky

V tomto rychlém startu jste vytvořili spravovaný prostředek CCF pomocí sady Azure Python SDK for Confidential Ledger. Další informace o službě Azure Managed CCF a o tom, jak ji integrovat s vašimi aplikacemi, najdete v těchto článcích: