Partager via


Démarrage rapide : Créer une ressource CCF managée Azure à l'aide du SDK Azure pour JavaScript et TypeScript

Microsoft Azure Managed CCF (Managed CCF) est un nouveau service hautement sécurisé pour le déploiement d'applications confidentielles. Pour plus d’informations sur Azure Managed CCF, consultez À propos d’Azure Managed Confidential Consortium Framework.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

Documentation de référence sur les API | Code source de la bibliothèque | Package (npm)

Prérequis

Paramétrage

Ce guide de démarrage rapide utilise la bibliothèque Azure Identity ainsi qu’Azure CLI ou PowerShell pour authentifier l’utilisateur auprès des services Azure. Les développeurs peuvent également utiliser Visual Studio ou Visual Studio Code pour authentifier leurs appels. Pour plus d’informations, consultez Authentifier le client avec la bibliothèque cliente Azure Identity.

Connexion à Azure

Connectez-vous à Azure à l’aide de la commande Azure CLI az login ou de la cmdlet Azure PowerShell Connect-AzAccount.

az login

Si Azure CLI ou PowerShell peut ouvrir votre navigateur par défaut, il le fait et charge une page de connexion Azure. Sinon, visitez https://aka.ms/devicelogin et entrez le code d’autorisation affiché dans votre terminal.

Si on vous le demande, connectez-vous ensuite avec les informations d’identification de votre compte dans le navigateur.

Initialiser un nouveau projet npm

Dans un terminal ou une invite de commandes, créez un dossier de projet approprié et initialisez un npm projet. Vous pouvez ignorer cette étape si vous avez un projet de nœud existant.

cd <work folder>
npm init -y

Installer les packages

Installez la bibliothèque cliente d'identité Azure Active Directory.

npm install --save @azure/identity

Installez la bibliothèque cliente du plan de gestion Azure Confidential Ledger.

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

Installer globalement le compilateur et les outils TypeScript

npm install -g typescript

Créer un groupe de ressources

Un groupe de ressources est un conteneur logique dans lequel les ressources Azure sont déployées et gérées. Utilisez l’applet de commande Azure PowerShell New-AzResourceGroup pour créer un groupe de ressources nommé myResourceGroup à l’emplacement southcentralus.

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

Inscrire le fournisseur de ressources

Le type de ressource Azure Managed CCF doit être enregistré dans l’abonnement avant de créer une ressource.

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

az provider register --namespace Microsoft.ConfidentialLedger

Créer des membres

Générez une paire de clés pour le membre. Une fois la commande suivante terminée, la clé publique du membre est enregistrée dans member0_cert.pem et la clé privée est enregistrée dans 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"

Créer l'application JavaScript

Utiliser la bibliothèque client du plan de gestion

Le Kit de développement logiciel (SDK) Azure pour JavaScript et la bibliothèque TypeScript azure/arm-confidentialledger autorise les opérations sur les ressources CCF gérées, telles que la création et la suppression, la liste des ressources associées à un abonnement et l’affichage des détails d’une ressource spécifique.

Pour exécuter les exemples ci-dessous, enregistrez les extraits de code dans un fichier avec une .ts extension dans votre dossier de projet et compilez-le dans le cadre de votre projet TypeScript, ou compilez le script en JavaScript séparément en exécutant :

tsc <filename.ts>

Le fichier JavaScript compilé aura le même nom, mais une *.js extension. Exécutez ensuite le script dans nodeJS :

node <filename.js>

L’exemple de code TypeScript suivant crée et affiche les propriétés d’une ressource CCF managée.

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

Supprimer la ressource Managed CCF

L’extrait de code suivant supprime la ressource Managed CCF. D’autres articles consacrés à Managed CCF peuvent s’appuyer sur ce guide de démarrage rapide. Si vous prévoyez d’utiliser d’autres guides de démarrage rapide et tutoriels, vous pouvez conserver ces ressources.

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

Nettoyer les ressources

D’autres articles sur Managed CCF peuvent s’appuyer sur ce démarrage rapide. Si vous envisagez de continuer à travailler avec les démarrages rapides et les didacticiels ultérieurs, vous souhaiterez peut-être laisser ces ressources en place.

Sinon, lorsque vous avez terminé avec les ressources créées dans cet article, utilisez la commande Azure CLI az group delete pour supprimer le groupe de ressources et toutes les ressources qu’il contient.

az group delete --resource-group myResourceGroup

Étapes suivantes

Dans ce démarrage rapide, vous avez créé une ressource CCF gérée à l’aide du SDK Azure Python pour Confidential Ledger. Pour en savoir plus sur Azure Managed CCF et comment l’intégrer à vos applications, continuez à consulter ces articles :