Partilhar via


Guia de início rápido: criar um recurso CCF gerenciado do Azure usando o SDK do Azure para .NET

O Azure Managed CCF (Managed CCF) é um serviço novo e altamente seguro para implantar aplicativos confidenciais. Para obter mais informações sobre CCF gerenciado e, por exemplo, casos de uso, consulte Sobre o Azure Managed Confidential Consortium Framework.

Neste guia de início rápido, você aprenderá a criar um recurso CCF gerenciado usando a biblioteca de gerenciamento de cliente .NET.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Documentação | de referência da API Pacote de código-fonte | da biblioteca (NuGet)

Pré-requisitos

Configuração

Criar novo aplicativo de console .NET

  1. Em um shell de comando, execute o seguinte comando para criar um projeto chamado managedccf-app:

    dotnet new console --name managedccf-app
    
  2. Mude para o diretório managedccf-app recém-criado e execute o seguinte comando para criar o projeto:

    dotnet build
    

    A saída da compilação não deve conter avisos ou erros.

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

Instalar o pacote

Instale a biblioteca de cliente do Azure Managed CCF para .NET com NuGet:

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

Para este início rápido, você também precisa instalar a biblioteca de cliente do SDK do Azure para a Identidade do Azure:

dotnet add package Azure.Identity

Criar um grupo de recursos

Um grupo de recursos é um contentor lógico no qual os recursos do Azure são implementados e geridos. Use o cmdlet New-AzResourceGroup do Azure PowerShell para criar um grupo de recursos chamado myResourceGroup no local southcentralus.

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

Registar o fornecedor de recursos

O tipo de recurso Azure Managed CCF deve ser registrado na assinatura antes de criar um recurso.

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

az provider register --namespace Microsoft.ConfidentialLedger

Criar membros

Gere um par de chaves para o membro. Após a conclusão dos comandos a seguir, a chave pública do membro é salva e member0_cert.pem a chave privada é salva em 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"

Criar o aplicativo .NET

Usar a biblioteca de cliente do plano de gerenciamento

O SDK do Azure para .NET (azure/arm-confidentialledger) permite operações em recursos CCF gerenciados, como criação e exclusão, listando os recursos associados a uma assinatura e exibindo os detalhes de um recurso específico. A parte de código a seguir cria e exibe as propriedades de um recurso CCF gerenciado.

Adicione as seguintes diretivas à parte superior do .cs Programa:

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;

Autenticar e criar um cliente

Neste início rápido, o usuário conectado é usado para autenticar no Azure Managed CCF, que é o método preferencial para desenvolvimento local. Este exemplo usa a classe 'DefaultAzureCredential()' da Biblioteca de Identidades do Azure, que permite usar o mesmo código em diferentes ambientes com diferentes opções para fornecer identidade.

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

Crie um cliente do Azure Resource Manager e autentique-se usando a credencial de token.

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

Criar um recurso CCF gerenciado

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

Exibir as propriedades de um recurso CCF gerenciado

A parte de código a seguir recupera o recurso CCF gerenciado e imprime suas propriedades.

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

Listar os recursos gerenciados do CCF em um grupo de recursos

A parte de código a seguir recupera os recursos CCF gerenciados em um grupo de recursos.

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

Listar os recursos gerenciados do CCF em uma assinatura

A parte do código a seguir recupera os recursos do CCF gerenciado em uma assinatura.

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

Clean up resources (Limpar recursos)

Outros artigos do CCF gerenciado podem se basear neste início rápido. Se você planeja continuar a trabalhar com guias de início rápido e tutoriais subsequentes, convém deixar esses recursos no lugar.

Caso contrário, quando terminar os recursos criados neste artigo, use o comando azur CLI az group delete para excluir o grupo de recursos e todos os recursos contidos.

az group delete --resource-group myResourceGroup

Próximos passos

Neste início rápido, você criou um recurso CCF gerenciado usando o SDK do Python do Azure para Razão Confidencial. Para saber mais sobre o Azure Managed CCF e como integrá-lo com seus aplicativos, continue nestes artigos: