Inicio rápido: Creación de un recurso de Azure Managed CCF mediante Azure SDK para Go
CCF administrado por Azure (CCF administrado) es un servicio nuevo y altamente seguro para implementar aplicaciones confidenciales. Para más información sobre Managed CCF, consulte Acerca de Azure Managed Confidential Consortium Framework.
En este inicio rápido, aprenderá a crear un recurso de Managed CCF mediante la biblioteca de Azure SDK para Go.
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 (Go)
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita.
- Go 1.18 o superior
- OpenSSL en un equipo que ejecuta Windows o Linux.
Instalación
Creación de una aplicación Go
- En un shell de comandos, ejecute el siguiente comando para crear una carpeta llamada
managedccf-app
:
mkdir managedccf-app && cd managedccf-app
go mod init github.com/azure/resourcemanager/confidentialledger
Instalación de los módulos
- Instale el módulo Azure Confidential Ledger.
go get -u github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/confidentialledger/armconfidentialledger@v1.2.0-beta.1
Para este inicio rápido también deberá instalar el módulo de identidad de Azure para Go.
go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity
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 CCF administrado de Azure 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 Go
La biblioteca del plano de administración permite operaciones en recursos de Managed CCF, 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 siguientes directivas al principio de main.go:
package main
import (
"context"
"log"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/confidentialledger/armconfidentialledger"
)
Autenticación y creación de una fábrica de 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 usa la clase "NewDefaultAzureCredential()" del módulo de identidad de Azure, que permite usar el mismo código en entornos diferentes con distintas opciones para proporcionar la identidad.
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("Failed to obtain a credential: %v", err)
}
Cree una factoría de cliente de Azure Resource Manager y autentíquela mediante la credencial del token.
ctx := context.Background()
clientFactory, err := armconfidentialledger.NewClientFactory("0000000-0000-0000-0000-000000000001", cred, nil)
if err != nil {
log.Fatalf("Failed to create client: %v", err)
}
Creación de un recurso de Managed CCF
appName := "confidentialbillingapp"
rgName := "myResourceGroup"
// Create a new resource
poller, err := clientFactory.NewManagedCCFClient().BeginCreate(ctx, rgName, appName, armconfidentialledger.ManagedCCF{
Location: to.Ptr("SouthCentralUS"),
Tags: map[string]*string{
"Department": to.Ptr("Contoso IT"),
},
Properties: &armconfidentialledger.ManagedCCFProperties{
DeploymentType: &armconfidentialledger.DeploymentType{
AppSourceURI: to.Ptr(""),
LanguageRuntime: to.Ptr(armconfidentialledger.LanguageRuntimeJS),
},
MemberIdentityCertificates: []*armconfidentialledger.MemberIdentityCertificate{
{
Certificate: to.Ptr("-----BEGIN CERTIFICATE-----\nMIIU4G0d7....1ZtULNWo\n-----END CERTIFICATE-----"),
Encryptionkey: to.Ptr(""),
Tags: map[string]any{
"owner": "IT Admin1",
},
}},
NodeCount: to.Ptr[int32](3),
},
}, nil)
if err != nil {
log.Fatalf("Failed to finish the request: %v", err)
}
_, err = poller.PollUntilDone(ctx, nil)
if err != nil {
log.Fatalf("Failed to pull the result: %v", err)
}
Obtención de las propiedades del recurso de Managed CCF
El siguiente fragmento de código recupera el recurso de Managed CCF creado en el paso anterior.
log.Println("Getting the Managed CCF resource.")
// Get the resource details and print it
getResponse, err := clientFactory.NewManagedCCFClient().Get(ctx, rgName, appName, nil)
if err != nil {
log.Fatalf("Failed to get details of mccf instance: %v", err)
}
// Print few properties of the Managed CCF resource
log.Println("Application name:", *getResponse.ManagedCCF.Properties.AppName)
log.Println("Node Count:", *getResponse.ManagedCCF.Properties.NodeCount)
Enumeración de los recursos de Managed CCF en un grupo de recursos
El siguiente fragmento de código recupera los recursos de Managed CCF en el grupo de recursos.
pager := clientFactory.NewManagedCCFClient().NewListByResourceGroupPager(rgName, nil)
for pager.More() {
page, err := pager.NextPage(ctx)
if err != nil {
log.Fatalf("Failed to advance page: %v", err)
}
for _, v := range page.Value {
log.Println("Application Name:", *v.Name)
}
}
Eliminación del recurso de Managed CCF
En el siguiente fragmento de código se elimina el recurso de Managed CCF Otros artículos de Managed CCF pueden basase 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.
deletePoller, err := clientFactory.NewManagedCCFClient().BeginDelete(ctx, rgName, appName, nil)
if err != nil {
log.Fatalf("Failed to finish the delete request: %v", err)
}
_, err = deletePoller.PollUntilDone(ctx, nil)
if err != nil {
log.Fatalf("Failed to get the delete result: %v", err)
}
Limpieza de recursos
Otros artículos de Managed CCF pueden basase 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 contoso-rg
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 más información sobre Azure Managed CCF y cómo integrarlo con las aplicaciones, continúe con los artículos siguientes: