Dela via


Snabbstart: Skapa en Azure Managed CCF-resurs med Hjälp av Azure SDK för .NET

Azure Managed CCF (Managed CCF) är en ny och mycket säker tjänst för att distribuera konfidentiella program. Mer information om hanterad CCF och exempel på användningsfall finns i Om Azure Managed Confidential Consortium Framework.

I den här snabbstarten får du lära dig hur du skapar en hanterad CCF-resurs med hjälp av .NET-klienthanteringsbiblioteket.

Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

API-referensdokumentationEns källkodspaket | för bibliotek (NuGet) |

Förutsättningar

Konfiguration

Skapa ny .NET-konsolapp

  1. I ett kommandogränssnitt kör du följande kommando för att skapa ett projekt med namnet managedccf-app:

    dotnet new console --name managedccf-app
    
  2. Ändra till den nyligen skapade katalogen managedccf-app och kör följande kommando för att skapa projektet:

    dotnet build
    

    Kompileringsutdata får inte innehålla några varningar eller fel.

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

Installera -paketet

Installera Azure Managed CCF-klientbiblioteket för .NET med NuGet:

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

För den här snabbstarten måste du också installera Azure SDK-klientbiblioteket för Azure Identity:

dotnet add package Azure.Identity

Skapa en resursgrupp

En resursgrupp är en logisk container där Azure-resurser distribueras och hanteras. Använd cmdleten Azure PowerShell New-AzResourceGroup för att skapa en resursgrupp med namnet myResourceGroupplatsen southcentralus.

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

Registrera resursprovidern

Resurstypen Azure Managed CCF måste registreras i prenumerationen innan du skapar en resurs.

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

az provider register --namespace Microsoft.ConfidentialLedger

Skapa medlemmar

Generera ett nyckelpar för medlemmen. När följande kommandon har slutförts sparas medlemmens offentliga nyckel i member0_cert.pem och den privata nyckeln sparas i 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"

Skapa .NET-programmet

Använda klientbiblioteket för hanteringsplanet

Azure SDK för .NET (azure/arm-confidentialledger) tillåter åtgärder på hanterade CCF-resurser, till exempel skapande och borttagning, lista resurser som är associerade med en prenumeration och visning av information om en specifik resurs. Följande kod skapar och visar egenskaperna för en hanterad CCF-resurs.

Lägg till följande direktiv överst i 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;

Autentisera och skapa en klient

I den här snabbstarten används inloggad användare för att autentisera till Azure Managed CCF, vilket är den bästa metoden för lokal utveckling. I det här exemplet används klassen DefaultAzureCredential() från Azure Identity Library, som gör det möjligt att använda samma kod i olika miljöer med olika alternativ för att tillhandahålla identitet.

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

Skapa en Azure Resource Manager-klient och autentisera med hjälp av tokenautentiseringsuppgifterna.

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

Skapa en hanterad CCF-resurs

// 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}");

Visa egenskaperna för en hanterad CCF-resurs

Följande kod hämtar den hanterade CCF-resursen och skriver ut dess egenskaper.

// 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}");

Visa en lista över hanterade CCF-resurser i en resursgrupp

Följande kod hämtar hanterade CCF-resurser i en resursgrupp.

// 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");

Visa en lista över hanterade CCF-resurser i en prenumeration

Följande kod hämtar hanterade CCF-resurser i en prenumeration.

// 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");

Rensa resurser

Andra hanterade CCF-artiklar kan bygga vidare på den här snabbstarten. Om du planerar att fortsätta arbeta med efterföljande snabbstarter och självstudier kanske du vill lämna dessa resurser på plats.

När du är klar med resurserna som skapas i den här artikeln använder du annars kommandot Azure CLI az group delete för att ta bort resursgruppen och alla dess inneslutna resurser.

az group delete --resource-group myResourceGroup

Nästa steg

I den här snabbstarten skapade du en hanterad CCF-resurs med hjälp av Azure Python SDK för konfidentiell transaktionsregister. Om du vill veta mer om Azure Managed CCF och hur du integrerar det med dina program kan du fortsätta med följande artiklar: