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
- Una sottoscrizione di Azure: creare un account gratuitamente.
- Versioni node.js supportate da Azure SDK per JavaScript.
- OpenSSL in un computer che esegue Windows o Linux.
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: