Szybki start: tworzenie zasobu zarządzanego przez program CCF platformy Azure przy użyciu zestawu Azure SDK dla języka JavaScript i języka TypeScript

Microsoft Azure Managed CCF (Managed CCF) to nowa i wysoce bezpieczna usługa do wdrażania poufnych aplikacji. Aby uzyskać więcej informacji na temat usługi Azure Managed CCF, zobacz About Azure Managed Confidential Consortium Framework (Informacje o platformie Azure Managed Confidential Consortium Framework).

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Dokumentacja interfejsu API — pakiet | kodu | źródłowego biblioteki (npm)

Wymagania wstępne

Ustawienia

W tym przewodniku Szybki start używana jest biblioteka tożsamości platformy Azure wraz z interfejsem wiersza polecenia platformy Azure lub programem Azure PowerShell do uwierzytelniania użytkownika w usługach platformy Azure. Deweloperzy mogą również używać programu Visual Studio lub Visual Studio Code do uwierzytelniania wywołań. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie klienta za pomocą biblioteki klienta usługi Azure Identity.

Logowanie się do platformy Azure

Zaloguj się do platformy Azure przy użyciu polecenia az login interfejsu wiersza polecenia platformy Azure lub polecenia cmdlet azure PowerShell Połączenie-AzAccount.

Jeśli interfejs wiersza polecenia lub program PowerShell może otworzyć domyślną przeglądarkę, zrobi to i załaduje stronę logowania platformy Azure. W przeciwnym razie odwiedź https://aka.ms/devicelogin stronę i wprowadź kod autoryzacji wyświetlany w terminalu.

Jeśli zostanie wyświetlony monit, zaloguj się przy użyciu poświadczeń konta w przeglądarce.

Inicjowanie nowego projektu npm

W terminalu lub wierszu polecenia utwórz odpowiedni folder projektu i zainicjuj npm projekt. Jeśli masz istniejący projekt węzła, możesz pominąć ten krok.

cd <work folder>
npm init -y

Instalowanie pakietów

Zainstaluj bibliotekę klienta tożsamości usługi Azure Active Directory.

npm install --save @azure/identity

Zainstaluj bibliotekę klienta płaszczyzny zarządzania poufnej księgi platformy Azure.

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

Globalne instalowanie kompilatora i narzędzi języka TypeScript

npm install -g typescript

Tworzenie grupy zasobów

Grupa zasobów to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi. Użyj polecenia cmdlet New-AzResourceGroup programu Azure PowerShell, aby utworzyć grupę zasobów o nazwie myResourceGroup w lokalizacji southcentralus.

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

Rejestrowanie dostawcy zasobów

Przed utworzeniem zasobu należy zarejestrować typ zasobu CCF zarządzanego przez platformę Azure w ramach subskrypcji.

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

az provider register --namespace Microsoft.ConfidentialLedger

Tworzenie członków

Wygeneruj parę kluczy dla elementu członkowskiego. Po zakończeniu wykonywania poniższych poleceń klucz publiczny członka jest zapisywany w member0_cert.pem pliku i klucz prywatny jest zapisywany w pliku 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"

Tworzenie aplikacji JavaScript

Korzystanie z biblioteki klienta płaszczyzny zarządzania

Zestaw Azure SDK dla języka JavaScript i biblioteka TypeScript azure/arm-confidentialledger umożliwia operacje na zarządzanych zasobach CCF, takich jak tworzenie i usuwanie, wyświetlanie listy zasobów skojarzonych z subskrypcją i wyświetlanie szczegółów określonego zasobu.

Aby uruchomić poniższe przykłady, zapisz fragmenty kodu w pliku z .ts rozszerzeniem w folderze projektu i skompiluj go w ramach projektu TypeScript lub skompiluj skrypt w języku JavaScript oddzielnie, uruchamiając polecenie:

tsc <filename.ts>

Skompilowany plik JavaScript będzie miał taką samą nazwę, ale *.js rozszerzenie. Następnie uruchom skrypt w środowisku nodeJS:

node <filename.js>

Poniższy przykładowy kod TypeScript tworzy i wyświetla właściwości zarządzanego zasobu 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);
    }
})();

Usuwanie zarządzanego zasobu CCF

Poniższy fragment kodu usuwa zarządzany zasób CCF. Inne artykuły dotyczące zarządzanego programu CCF mogą opierać się na tym przewodniku Szybki start. Jeśli planujesz kontynuować pracę z kolejnymi przewodnikami Szybki start i samouczkami, możesz pozostawić te zasoby na miejscu.

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

Czyszczenie zasobów

Inne artykuły dotyczące zarządzanego programu CCF mogą opierać się na tym przewodniku Szybki start. Jeśli planujesz kontynuować pracę z kolejnymi przewodnikami Szybki start i samouczkami, możesz pozostawić te zasoby na miejscu.

W przeciwnym razie po zakończeniu pracy z zasobami utworzonymi w tym artykule użyj polecenia az group delete interfejsu wiersza polecenia platformy Azure, aby usunąć grupę zasobów i wszystkie zawarte w niej zasoby.

az group delete --resource-group myResourceGroup

Następne kroki

W tym przewodniku Szybki start utworzono zasób zarządzanego programu CCF przy użyciu zestawu Azure Python SDK for Confidential Ledger. Aby dowiedzieć się więcej o usłudze Azure Managed CCF i sposobie jej integracji z aplikacjami, przejdź do następujących artykułów: