Share via


Guida introduttiva: Creare una risorsa CCF gestita di Azure usando Azure SDK per JavaScript e TypeScript

Microsoft Azure Managed CCF (Managed CCF) è un servizio nuovo e altamente sicuro per la distribuzione di applicazioni riservate. Per altre informazioni su CCF gestito di Azure, vedere Informazioni su Azure Managed Confidential Consortium Framework.

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

Documentazione di riferimento sull'API | Codice sorgente della libreria | Pacchetto (npm)

Prerequisiti

Impostare

Questa guida introduttiva usa la libreria di identità di Azure, insieme all'interfaccia della riga di comando di Azure o azure PowerShell, per autenticare l'utente nei servizi di Azure. Gli sviluppatori possono anche usare Visual Studio o Visual Studio Code per autenticare le chiamate. Per altre informazioni, vedere Autenticare il client con la libreria client di Identità di Azure.

Accedere ad Azure

Accedere ad Azure usando il comando az login dell'interfaccia della riga di comando di Azure o il cmdlet azure PowerShell Connessione-AzAccount.

Se l'interfaccia della riga di comando o PowerShell può aprire il browser predefinito, verrà caricata una pagina di accesso di Azure. In caso contrario, visitare https://aka.ms/devicelogin e immettere il codice di autorizzazione visualizzato nel terminale.

Se richiesto, accedere con le credenziali dell'account nel browser.

Inizializzare un nuovo progetto npm

In un terminale o un prompt dei comandi creare una cartella di progetto appropriata e inizializzare un npm progetto. È possibile ignorare questo passaggio se si dispone di un progetto di nodo esistente.

cd <work folder>
npm init -y

Installare i pacchetti

Installare la libreria client delle identità di Azure Active Directory.

npm install --save @azure/identity

Installare la libreria client del piano di gestione del libro mastro riservato di Azure.

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

Installare il compilatore e gli strumenti TypeScript a livello globale

npm install -g typescript

Creare un gruppo di risorse

Un gruppo di risorse è un contenitore logico in cui vengono distribuite e gestite le risorse di Azure. Usare il cmdlet New-AzResourceGroup di Azure PowerShell per creare un gruppo di risorse denominato myResourceGroup nella posizione southcentralus.

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

Registrare il provider di risorse

Il tipo di risorsa CCF gestito di Azure deve essere registrato nella sottoscrizione prima di creare una risorsa.

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

az provider register --namespace Microsoft.ConfidentialLedger

Creare membri

Generare una coppia di chiavi per il membro. Al termine dei comandi seguenti, la chiave pubblica del membro viene salvata in member0_cert.pem e la chiave privata viene salvata in 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"

Creare l'applicazione JavaScript

Usare la libreria client del piano di gestione

Azure SDK per JavaScript e libreria TypeScript azure/arm-confidentialledger consente operazioni su risorse CCF gestite, ad esempio creazione ed eliminazione, elenco delle risorse associate a una sottoscrizione e visualizzazione dei dettagli di una risorsa specifica.

Per eseguire gli esempi seguenti, salvare i frammenti di codice in un file con estensione .ts nella cartella del progetto e compilarlo come parte del progetto TypeScript oppure compilare lo script in JavaScript separatamente eseguendo:

tsc <filename.ts>

Il file JavaScript compilato avrà lo stesso nome, ma un'estensione *.js . Eseguire quindi lo script in nodeJS:

node <filename.js>

Il codice TypeScript di esempio seguente crea e visualizza le proprietà di una risorsa CCF gestita.

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

Eliminare la risorsa CCF gestita

Il frammento di codice seguente elimina la risorsa CCF gestita. Altri articoli CCF gestiti possono basarsi su questa guida introduttiva. Se si prevede di continuare a lavorare con le guide introduttive e le esercitazioni successive, è possibile lasciare queste risorse sul posto.

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

Pulire le risorse

Altri articoli CCF gestiti possono basarsi su questa guida introduttiva. Se si prevede di continuare a lavorare con le guide introduttive e le esercitazioni successive, è possibile lasciare queste risorse sul posto.

In caso contrario, al termine delle risorse create in questo articolo, usare il comando az group delete dell'interfaccia della riga di comando di Azure per eliminare il gruppo di risorse e tutte le risorse contenute.

az group delete --resource-group myResourceGroup

Passaggi successivi

In questa guida introduttiva è stata creata una risorsa CCF gestita usando Azure Python SDK per Confidential Ledger. Per altre informazioni su CCF gestito di Azure e su come integrarlo con le applicazioni, continuare con questi articoli: