Início Rápido – Criar um recurso do CCF Gerenciado do Azure usando o SDK do Azure para .NET
O CCF Gerenciado do Azure (CCF Gerenciado) é um serviço novo e altamente seguro para implantar aplicativos confidenciais. Para obter mais informações sobre o CCF Gerenciado e para exemplos de casos de uso, confira Sobre a Estrutura do Consórcio Confidencial Gerenciado do Azure.
Neste início rápido, você aprenderá a criar um recurso do CCF Gerenciado usando a biblioteca de gerenciamento de clientes do .NET.
Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.
Documentação de referência da API | Código-fonte da biblioteca | Pacote (NuGet)
Pré-requisitos
- Uma assinatura do Azure – crie uma gratuitamente.
- Versões do .NET com suporte do SDK do Azure para .NET.
- OpenSSL em um computador executando Windows ou Linux.
Instalação
Criar um novo aplicativo de console do .NET
Em um shell de comando, execute o seguinte comando para criar um projeto chamado
managedccf-app
:dotnet new console --name managedccf-app
Altere para o diretório managedccf-app recém-criado e execute o comando a seguir para compilar o projeto:
dotnet build
A saída de compilação não deve conter nenhum aviso ou erro.
Build succeeded. 0 Warning(s) 0 Error(s)
Instalar o pacote
Instale a biblioteca de clientes do CCF Gerenciado do Azure para .NET com o NuGet:
dotnet add package Azure.ResourceManager.ConfidentialLedger --version 1.1.0-beta.2
Para este início rápido, você também precisará instalar a biblioteca de clientes do SDK do Azure para a Identidade do Azure:
dotnet add package Azure.Identity
Criar um grupo de recursos
Um grupo de recursos é um contêiner lógico no qual os recursos do Azure são implantados e gerenciados. Use o cmdlet New-AzResourceGroup do Azure PowerShell para criar um grupo de recursos chamado myResourceGroup na localização southcentralus.
New-AzResourceGroup -Name "myResourceGroup" -Location "SouthCentralUS"
Registre o provedor de recursos
O tipo de recurso do CCF Gerenciado do Azure deve ser registrado na assinatura antes da criação de 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. Depois que os comandos a seguir forem concluídos, a chave pública do membro será salva em member0_cert.pem
e a chave privada será 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"
Crie o aplicativo .NET
Use a biblioteca de clientes do Plano de gerenciamento
O SDK do Azure para .NET (azure/arm-confidentialledger) permite operações em recursos do CCF Gerenciado, 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 do CCF Gerenciado.
Adicione as seguintes diretivas à parte superior 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;
Autenticar e criar um cliente
Neste início rápido, o usuário conectado será usado para autenticar no CCF Gerenciado do Azure, 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 outras opções para fornecer a identidade.
// get your azure access token, for more details of how Azure SDK get your access token, please refer to https://zcusa.951200.xyz/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);
Crie um recurso do 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}");
Exiba as propriedades de um recurso do CCF Gerenciado
O trecho de código a seguir recupera os recursos do 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}");
Liste os recursos do CCF Gerenciado em um Grupo de recursos
O trecho de código a seguir recupera os recursos do CCF Gerenciado 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");
Liste os recursos do CCF Gerenciado em uma assinatura
O trecho de 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");
Limpar os recursos
Outros artigos do CCF Gerenciado podem se basear neste início rápido. Se você planeja continuar a trabalhar com os tutoriais e inícios rápidos subsequentes, deixe esses recursos onde estão.
Caso contrário, quando tiver concluído os recursos criados neste artigo, use o comando az group delete da CLI do Azure para excluir o grupo de recursos e todos os recursos que ele contém.
az group delete --resource-group myResourceGroup
Próximas etapas
Neste início rápido, você criou um recurso do CCF Gerenciado usando o SDK do Python do Azure para Razão Confidencial. Para saber mais sobre o CCF Gerenciado do Azure e como integrá-lo aos seus aplicativos, prossiga para examinar os seguintes artigos: