Inicio rápido: Creación de un recurso CCF administrado de Azure mediante el SDK de Azure para .NET
Azure Managed CCF (Managed CCF) es un servicio nuevo y altamente seguro para implementar aplicaciones confidenciales. Para obtener más información sobre CCF administrado y para ver ejemplos de casos de uso, consulte Acerca de Azure Managed Confidential Consortium Framework.
En este inicio rápido, aprenderá a crear un recurso CCF administrado mediante la biblioteca de administración de cliente de .NET.
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Documentación de referencia de la API | Código fuente de la biblioteca | Paquete (NuGet)
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita.
- Las versiones de .NET admitidas por el SDK de Azure para .NET.
- OpenSSL en un equipo que ejecuta Windows o Linux.
Instalación
Creación de una aplicación de consola de .NET
En un shell de comandos, ejecute el siguiente comando para crear un proyecto llamado
managedccf-app
:dotnet new console --name managedccf-app
Cambie al directorio managedccf-app recién creado y ejecute el siguiente comando para compilar el proyecto:
dotnet build
La salida de la compilación no debe contener advertencias ni errores.
Build succeeded. 0 Warning(s) 0 Error(s)
Instalar el paquete
Instale la biblioteca cliente CCF administrada de Azure para .NET con NuGet:
dotnet add package Azure.ResourceManager.ConfidentialLedger --version 1.1.0-beta.2
Para este inicio rápido, también debe instalar la biblioteca cliente del SDK de Azure para Azure Identity:
dotnet add package Azure.Identity
Crear un grupo de recursos
Un grupo de recursos es un contenedor lógico en el que se implementan y se administran los recursos de Azure. Use el cmdlet New-AzResourceGroup de Azure PowerShell para crear un grupo de recursos llamado myResourceGroup en la ubicación southcentralus.
New-AzResourceGroup -Name "myResourceGroup" -Location "SouthCentralUS"
Registrar el proveedor de recursos
El tipo de recurso Azure Managed CCF debe estar registrado en la suscripción antes de crear un recurso.
az feature registration create --namespace Microsoft.ConfidentialLedger --name ManagedCCF
az provider register --namespace Microsoft.ConfidentialLedger
Crear miembros
Genere un par de claves para el miembro. Una vez completados los siguientes comandos, la clave pública del miembro se guarda en member0_cert.pem
y la clave privada se guarda en 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"
Creación de la aplicación .NET
Uso de la biblioteca cliente del plano de administración
El SDK de Azure para .NET (azure/arm-confidentialledger) permite operaciones en recursos de CCF administrados, como la creación y eliminación, enumerar los recursos asociados a una suscripción y ver los detalles de un recurso específico. En el siguiente fragmento de código se crean y se ven las propiedades de un recurso de Managed CCF.
Agregue las directivas siguientes al principio 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;
Autenticación y creación de un cliente
En este inicio rápido, se utiliza el usuario que ha iniciado sesión para autenticarse en Azure Managed CCF, que es el método preferido para el desarrollo local. En este ejemplo se utiliza la clase "DefaultAzureCredential()" de la biblioteca de identidades de Azure que permite usar el mismo código en distintos entornos con diferentes opciones para proporcionar la identidad.
// 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();
Cree un cliente de Azure Resource Manager y autentíquese mediante la credencial del token.
// authenticate your client
ArmClient client = new ArmClient(cred);
Creación de un recurso de Managed CCF
// 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}");
Visualización de las propiedades de un recurso CCF administrado
El siguiente fragmento de código recupera el recurso CCF administrado e imprime sus propiedades.
// 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}");
Enumeración de los recursos de Managed CCF en un grupo de recursos
El siguiente fragmento de código recupera los recursos CCF administrados de un 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");
Enumeración de los recursos de CCF administrados en una suscripción
El siguiente fragmento de código recupera los recursos de CCF administrados en una suscripción.
// 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");
Limpieza de recursos
Otros artículos sobre Managed CCF pueden basarse en este inicio rápido. Si tiene pensado seguir trabajando en otras guías de inicio rápido y tutoriales, considere la posibilidad de dejar estos recursos activos.
De lo contrario, cuando haya terminado con los recursos creados en este artículo, use el comando az group delete de la CLI de Azure para eliminar el grupo de recursos y todos los recursos que contiene.
az group delete --resource-group myResourceGroup
Pasos siguientes
En este inicio rápido, ha creado un recurso de Managed CCF mediante el SDK de Python de Azure para confidential ledger. Para obtener más información sobre Azure Managed CCF y cómo integrarlo con las aplicaciones, continúe con los artículos siguientes: