Partager via


Démarrage rapide : créer une ressource CCF managée Azure à l’aide du Kit de développement logiciel (SDK) Azure pour .NET

CCF managée Azure (CCF managée) est un nouveau service hautement sécurisé pour le déploiement d’applications confidentielles. Pour plus d’informations sur CCF managée et pour obtenir des exemples de cas d’usage, consultez À propos d’Azure Managed Confidential Consortium Framework.

Dans ce guide de démarrage rapide, vous allez découvrir comment créer une ressource CCF managée à l’aide de la bibliothèque de gestion des clients .NET.

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

Documentation de référence sur l’API | Code source de la bibliothèque | Package (NuGet)

Prérequis

Paramétrage

Créer une application console .NET

  1. Dans un shell de commandes, exécutez la commande suivante pour créer un projet nommé managedccf-app :

    dotnet new console --name managedccf-app
    
  2. Accédez au répertoire managedccf-app nouvellement créé, puis exécutez la commande suivante pour générer le projet :

    dotnet build
    

    La sortie de génération ne doit contenir aucun avertissement ni erreur.

    Build succeeded.
     0 Warning(s)
     0 Error(s)
    

Installer le package

Installez la bibliothèque de client CCF managée Azure pour .NET avec NuGet :

dotnet add package Azure.ResourceManager.ConfidentialLedger --version 1.1.0-beta.2

Pour ce guide de démarrage rapide, vous devez également installer la bibliothèque de client SDK Azure pour Azure Identity :

dotnet add package Azure.Identity

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 la cmdlet Azure PowerShell New-AzResourceGroup pour créer un groupe de ressources nommé myResourceGroup dans la région southcentralus.

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

Inscrire le fournisseur de ressources

Le type de ressource CCF managée Azure doit être inscrit dans l’abonnement avant la création d’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éez l’application .NET

Utilisez la bibliothèque de client du plan de gestion

Le Kit de développement logiciel (SDK) Azure pour .NET (azure/arm-confidentialledger) autorise des opérations sur des ressources CCF managées, le listing des ressources associées à un abonnement et l’affichage des détails d’une ressource spécifique. L’extrait de code suivant permet de créer et de visualiser les propriétés d’une ressource CCF managée.

Ajoutez les directives suivantes en haut de Program.cs :

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Azure;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.ConfidentialLedger;
using Azure.ResourceManager.ConfidentialLedger.Models;
using Azure.ResourceManager.Resources;

Authentifier et créer un client

Dans ce guide de démarrage rapide, l’utilisateur connecté est utilisé pour l’authentification auprès de la ressource CCF managée Azure, ce qui correspond à la méthode recommandée pour le développement local. Cet exemple utilise la classe « DefaultAzureCredential() » de la Bibliothèque Azure Identity, ce qui permet d’utiliser le même code dans différents environnements avec des options différentes pour fournir une identité.

// get your azure access token, for more details of how Azure SDK get your access token, please refer to https://learn.microsoft.com/en-us/dotnet/azure/sdk/authentication?tabs=command-line
TokenCredential cred = new DefaultAzureCredential();

Créez un client Azure Resource Manager et authentifiez-vous à l’aide des informations d’identification du jeton.

// authenticate your client
ArmClient client = new ArmClient(cred);

Créez une ressource CCF managée

// this example assumes you already have this ResourceGroupResource created on azure
// for more information of creating ResourceGroupResource, please refer to the document of ResourceGroupResource
string subscriptionId = "0000000-0000-0000-0000-000000000001";
string resourceGroupName = "myResourceGroup";
ResourceIdentifier resourceGroupResourceId = ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
ResourceGroupResource resourceGroupResource = client.GetResourceGroupResource(resourceGroupResourceId);

// get the collection of this ManagedCcfResource
ManagedCcfCollection collection = resourceGroupResource.GetManagedCcfs();

// invoke the operation
string appName = "confidentialbillingapp";
ManagedCcfData data = new ManagedCcfData(new AzureLocation("SouthCentralUS"))
{
    Properties = new ManagedCcfProperties()
    {
        MemberIdentityCertificates =
        {
            new ConfidentialLedgerMemberIdentityCertificate()
            {
                Certificate = "-----BEGIN CERTIFICATE-----MIIBsjCCATigA...LjYAGDSGi7NJnSkA-----END CERTIFICATE-----",
                Encryptionkey = "",
                Tags = BinaryData.FromObjectAsJson(new Dictionary<string, object>()
                {
                    ["additionalProps1"] = "additional properties"
                }),
            }
        },
        DeploymentType = new ConfidentialLedgerDeploymentType()
        {
            LanguageRuntime = ConfidentialLedgerLanguageRuntime.JS,
            AppSourceUri = new Uri(""),
        },
        NodeCount = 3,
    },
    Tags =
    {
        ["additionalProps1"] = "additional properties",
    },
};

ArmOperation<ManagedCcfResource> lro = await collection.CreateOrUpdateAsync(WaitUntil.Completed, appName, data);
ManagedCcfResource result = lro.Value;

// the variable result is a resource, you could call other operations on this instance as well
// but just for demo, we get its data from this resource instance
ManagedCcfData resourceData = result.Data;
// for demo we just print out the id
Console.WriteLine($"Succeeded on id: {resourceData.Id}");

Affichez les propriétés d’une ressource CCF managée

L’élément de code suivant récupère la ressource CCF managée et imprime ses propriétés.

// this example assumes you already have this ResourceGroupResource created on azure
// for more information of creating ResourceGroupResource, please refer to the document of ResourceGroupResource
string subscriptionId = "0000000-0000-0000-0000-000000000001";
string resourceGroupName = "myResourceGroup";
ResourceIdentifier resourceGroupResourceId = ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
ResourceGroupResource resourceGroupResource = client.GetResourceGroupResource(resourceGroupResourceId);

// get the collection of this ManagedCcfResource
ManagedCcfCollection collection = resourceGroupResource.GetManagedCcfs();

// invoke the operation
string appName = "confidentialbillingapp";
ManagedCcfResource result = await collection.GetAsync(appName);

// the variable result is a resource, you could call other operations on this instance as well
// but just for demo, we get its data from this resource instance
ManagedCcfData resourceData = result.Data;
// for demo we just print out the id
Console.WriteLine($"Succeeded on id: {resourceData.Id}");

Listez les ressources CCF managées dans un groupe de ressources

L’élément de code suivant récupère les ressources CCF managées dans un groupe de ressources.

// this example assumes you already have this ResourceGroupResource created on azure
// for more information of creating ResourceGroupResource, please refer to the document of ResourceGroupResource
string subscriptionId = "0000000-0000-0000-0000-000000000001";
string resourceGroupName = "myResourceGroup";
ResourceIdentifier resourceGroupResourceId = ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
ResourceGroupResource resourceGroupResource = client.GetResourceGroupResource(resourceGroupResourceId);

// get the collection of this ManagedCcfResource
ManagedCcfCollection collection = resourceGroupResource.GetManagedCcfs();

// invoke the operation and iterate over the result
await foreach (ManagedCcfResource item in collection.GetAllAsync())
{
    // the variable item is a resource, you could call other operations on this instance as well
    // but just for demo, we get its data from this resource instance
    ManagedCcfData resourceData = item.Data;
    // for demo we just print out the id
    Console.WriteLine($"Succeeded on id: {resourceData.Id}");
}

Console.WriteLine($"Succeeded");

Listez les ressources CCF managées dans un abonnement

L’élément de code suivant récupère les ressources CCF managées dans un abonnement.

// this example assumes you already have this SubscriptionResource created on azure
// for more information of creating SubscriptionResource, please refer to the document of SubscriptionResource
string subscriptionId = "0000000-0000-0000-0000-000000000001";
ResourceIdentifier subscriptionResourceId = SubscriptionResource.CreateResourceIdentifier(subscriptionId);
SubscriptionResource subscriptionResource = client.GetSubscriptionResource(subscriptionResourceId);

// invoke the operation and iterate over the result
await foreach (ManagedCcfResource item in subscriptionResource.GetManagedCcfsAsync())
{
    // the variable item is a resource, you could call other operations on this instance as well
    // but just for demo, we get its data from this resource instance
    ManagedCcfData resourceData = item.Data;
    // for demo we just print out the id
    Console.WriteLine($"Succeeded on id: {resourceData.Id}");
}

Console.WriteLine($"Succeeded");

Nettoyer les ressources

D’autres articles consacrés à CCF managée peuvent s’appuyer sur ce guide de démarrage rapide. Si vous prévoyez d’utiliser d’autres démarrages rapides et tutoriels, il peut être utile de conserver ces ressources.

Sinon, une fois que vous avez fini d’utiliser les ressources créées dans cet article, utilisez la commande az group delete d’Azure CLI pour supprimer le groupe de ressources et toutes les ressources qu’il contient.

az group delete --resource-group myResourceGroup

Étapes suivantes

Dans ce guide de démarrage rapide, vous avez créé une ressource CCF managée à l’aide du kit de développement logiciel (SDK) Azure Python pour le registre confidentiel. Pour en savoir plus sur CCF managée Azure et sur la façon de l’intégrer à vos applications, lisez également ces articles :