Guida introduttiva: Creare una risorsa CCF gestita di Azure con Azure SDK per Go
CCF gestito di Azure è un servizio nuovo e altamente sicuro per la distribuzione di applicazioni riservate. Per altre informazioni su Managed CCF, vedere Informazioni su Azure Managed Confidential Consortium Framework.
Questa guida introduttiva illustra come creare una risorsa CCF gestita usando la libreria Azure SDK per Go.
Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Documentazione | di riferimento sulle API Pacchetto del codice | sorgente della libreria (Go)
Prerequisiti
- Una sottoscrizione di Azure: creare un account gratuitamente.
- Andare 1.18 o versione successiva.
- OpenSSL in un computer che esegue Windows o Linux.
Configurazione
Creare una nuova applicazione Go
- In una shell dei comandi eseguire il comando seguente per creare una cartella denominata
managedccf-app
:
mkdir managedccf-app && cd managedccf-app
go mod init github.com/azure/resourcemanager/confidentialledger
Installare i moduli
- Installare il modulo Azure Confidential Ledger.
go get -u github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/confidentialledger/armconfidentialledger@v1.2.0-beta.1
Per questa guida introduttiva, è anche necessario installare il modulo Azure Identity per Go.
go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity
Creare un gruppo di risorse
Un gruppo di risorse è un contenitore logico in cui vengono distribuite e gestite le risorse di Azure. Usare il cmdlet New-AzResourceGroup di Azure PowerShell per creare un gruppo di risorse denominato myResourceGroup nella posizione southcentralus.
New-AzResourceGroup -Name "myResourceGroup" -Location "SouthCentralUS"
Registrare il provider di risorse
Il tipo di risorsa CCF gestito di Azure deve essere registrato nella sottoscrizione prima di creare una risorsa.
az feature registration create --namespace Microsoft.ConfidentialLedger --name ManagedCCF
az provider register --namespace Microsoft.ConfidentialLedger
Creare membri
Generare una coppia di chiavi per il membro. Al termine dei comandi seguenti, la chiave pubblica del membro viene salvata in member0_cert.pem
e la chiave privata viene salvata in 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"
Creare l'applicazione Go
La libreria del piano di gestione consente operazioni sulle risorse CCF gestite, ad esempio la creazione e l'eliminazione, l'elenco delle risorse associate a una sottoscrizione e la visualizzazione dei dettagli di una risorsa specifica. Il frammento di codice seguente crea e visualizza le proprietà di una risorsa CCF gestita.
Aggiungere le direttive seguenti all'inizio di 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"
)
Autenticare e creare una factory client
In questa guida introduttiva viene usato l'utente connesso per l'autenticazione in CCF gestito di Azure, che è il metodo preferito per lo sviluppo locale. Questo esempio usa la classe 'NewDefaultAzureCredential()' del modulo Azure Identity, che consente di usare lo stesso codice in ambienti diversi con diverse opzioni per fornire l'identità.
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("Failed to obtain a credential: %v", err)
}
Creare una factory client di Azure Resource Manager ed eseguire l'autenticazione usando le credenziali 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)
}
Creare una risorsa CCF gestita
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)
}
Ottenere le proprietà della risorsa CCF gestita
Il frammento di codice seguente recupera la risorsa CCF gestita creata nel passaggio precedente.
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)
Elencare le risorse CCF gestite in un gruppo di risorse
Il frammento di codice seguente recupera le risorse CCF gestite nel gruppo di risorse.
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)
}
}
Eliminare la risorsa CCF gestita
Il frammento di codice seguente elimina la risorsa CCF gestita. Altri articoli CCF gestiti possono basarsi su questa guida introduttiva. Se si prevede di continuare a lavorare con le guide introduttive e le esercitazioni successive, è possibile lasciare queste risorse sul posto.
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)
}
Pulire le risorse
Altri articoli CCF gestiti possono basarsi su questa guida introduttiva. Se si prevede di continuare a lavorare con le guide introduttive e le esercitazioni successive, è possibile lasciare queste risorse sul posto.
In caso contrario, al termine delle risorse create in questo articolo, usare il comando az group delete dell'interfaccia della riga di comando di Azure per eliminare il gruppo di risorse e tutte le risorse contenute.
az group delete --resource-group contoso-rg
Passaggi successivi
In questa guida introduttiva è stata creata una risorsa CCF gestita usando Azure Python SDK per Confidential Ledger. Per altre informazioni su CCF gestito di Azure e su come integrarlo con le applicazioni, continuare con questi articoli: