Freigeben über


Schnellstart: Erstellen einer Azure Managed CCF-Ressource mit dem Azure SDK für JavaScript und TypeScript

Microsoft Azure Managed CCF (Managed CCF) ist ein neuer und hochgradig sicherer Dienst für die Bereitstellung vertraulicher Anwendungen. Weitere Informationen zu Azure Managed CCF finden Sie unter Azure Managed Confidential Consortium Framework.

Sollten Sie über kein Azure-Abonnement verfügen, können Sie zunächst ein kostenloses Azure-Konto erstellen.

API-Referenzdokumentation | Quellcode der Bibliothek | Paket (npm)

Voraussetzungen

Setup

In dieser Schnellstartanleitung wird die Azure Identity-Bibliothek mit der Azure CLI oder Azure PowerShell verwendet, um den Benutzer bei Azure-Diensten zu authentifizieren. Entwickler können auch Visual Studio oder Visual Studio Code verwenden, um ihre Aufrufe zu authentifizieren. Weitere Informationen finden Sie unter Authentifizieren des Clients mit der Azure Identity-Clientbibliothek.

Anmelden bei Azure

Melden Sie sich über den Azure CLI-Befehl az login oder das Azure PowerShell-Cmdlet Connect-AzAccount bei Azure an.

Die CLI oder PowerShell öffnet Ihren Standardbrowser, sofern sie oder der Dienst dazu in der Lage ist, und lädt eine Azure-Anmeldeseite. Besuchen Sie andernfalls https://aka.ms/devicelogin, und geben Sie den in Ihrem Terminal angezeigten Autorisierungscode ein.

Melden Sie sich dann im Browser mit Ihren Anmeldeinformationen an, wenn Sie dazu aufgefordert werden.

Initialisieren eines neuen npm-Projekts

Erstellen Sie in einem Terminal oder einer Eingabeaufforderung einen geeigneten Projektordner, und initialisieren Sie ein npm Projekt. Sie können diesen Schritt überspringen, wenn Sie über ein vorhandenes Knotenprojekt verfügen.

cd <work folder>
npm init -y

Installieren der Pakete

Installieren der Azure Active Directory-Identitätsbibliothek.

npm install --save @azure/identity

Installieren Sie die Azure Confidential Ledger-Clientbibliothek für die Verwaltungsebene.

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

Installieren des TypeScript-Compilers und der Tools global

npm install -g typescript

Erstellen einer Ressourcengruppe

Eine Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen bereitgestellt und verwaltet werden. Erstellen Sie mit Azure PowerShell New-AzResourceGroup-cmdlet eine Ressourcengruppe mit dem Namen myResourceGroup am Speicherort southcentralus.

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

Registrieren des Ressourcenanbieters

Der Azure Managed CCF-Ressourcentyp muss im Abonnement registriert werden, bevor eine Ressource erstellt wird.

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

az provider register --namespace Microsoft.ConfidentialLedger

Erstellen von Membern

Generieren Sie ein Schlüsselpaar für das Element. Nach Abschluss der folgenden Befehle wird der öffentliche Schlüssel des Mitglieds in member0_cert.pem gespeichert, und der private Schlüssel 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"

Erstellen der JavaScript-Anwendung

Verwenden der Clientbibliothek der Verwaltungsebene

Das Azure SDK für JavaScript- und TypeScript-Bibliothek azure/arm-confidentialledger ermöglicht Vorgänge auf verwalteten CCF-Ressourcen, z. B. Erstellung und Löschung, Auflisten der ressourcen, die einem Abonnement zugeordnet sind, und Anzeigen der Details einer bestimmten Ressource.

Um die folgenden Beispiele auszuführen, speichern Sie die Codeausschnitte in einer Datei mit einer .ts Erweiterung in Ihrem Projektordner, und kompilieren Sie es als Teil Ihres TypeScript-Projekts, oder kompilieren Sie das Skript separat in JavaScript, indem Sie Folgendes ausführen:

tsc <filename.ts>

Die kompilierte JavaScript-Datei hat denselben Namen, aber eine *.js Erweiterung. Führen Sie dann das Skript in nodeJS aus:

node <filename.js>

Der folgende TypeScript-Beispielcode erstellt und zeigt die Eigenschaften einer verwalteten CCF-Ressource an.

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

Löschen der Managed CCF-Ressource

Der folgende Codeabschnitt löscht die Managed CCF-Ressource. Andere Managed CCF-Artikel können auf dieser Schnellstartanleitung aufbauen. Wenn Sie vorhaben, mit späteren Schnellstarts und Tutorials weiterzuarbeiten, sollten Sie diese Ressourcen beibehalten.

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

Bereinigen von Ressourcen

Andere Managed CCF-Artikel können auf dieser Schnellstartanleitung aufbauen. Wenn Sie vorhaben, mit späteren Schnellstarts und Tutorials weiterzuarbeiten, sollten Sie diese Ressourcen beibehalten.

Andernfalls, wenn Sie mit den in diesem Artikel erstellten Ressourcen fertig sind, verwenden Sie den Azure CLI-Befehl az group delete, um die Ressourcengruppe und alle darin enthaltenen Ressourcen zu löschen.

az group delete --resource-group myResourceGroup

Nächste Schritte

In dieser Schnellstartanleitung haben Sie eine verwaltete CCF-Ressource mithilfe des Azure Python SDK für Confidential Ledger erstellt. Wenn Sie mehr über Azure Managed CCF erfahren möchten und darüber, wie Sie es in Ihre Anwendungen integrieren können, lesen Sie diese Artikel weiter: