Guia de início rápido: criar um recurso CCF gerenciado do Azure usando o SDK do Azure para Go
O Azure Managed CCF (Managed CCF) é um serviço novo e altamente seguro para implantar aplicativos confidenciais. Para obter mais informações sobre o CCF gerenciado, 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 do SDK do Azure para Go.
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 (Go)
Pré-requisitos
- Uma assinatura do Azure - crie uma gratuitamente.
- Vá 1.18 ou superior.
- OpenSSL num computador com Windows ou Linux.
Configuração
Criar um novo aplicativo Go
- Em um shell de comando, execute o seguinte comando para criar uma pasta chamada
managedccf-app
:
mkdir managedccf-app && cd managedccf-app
go mod init github.com/azure/resourcemanager/confidentialledger
Instalar os módulos
- Instale o módulo Razão Confidencial do Azure.
go get -u github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/confidentialledger/armconfidentialledger@v1.2.0-beta.1
Para este início rápido, você também precisa instalar o módulo Azure Identity for Go.
go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity
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 Go
A biblioteca do plano de gerenciamento permite operações em recursos CCF gerenciados, como criação e exclusão, listagem dos recursos associados a uma assinatura e visualização dos 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 ao topo do 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"
)
Autenticar e criar uma fábrica de clientes
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 'NewDefaultAzureCredential()' do módulo Identidade do Azure, que permite usar o mesmo código em ambientes diferentes com opções diferentes para fornecer identidade.
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("Failed to obtain a credential: %v", err)
}
Crie uma fábrica de cliente do Azure Resource Manager e autentique-se usando a credencial de 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)
}
Criar um recurso CCF gerenciado
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)
}
Obter as propriedades do recurso CCF gerenciado
A parte do código a seguir recupera o recurso CCF gerenciado criado na etapa 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)
Listar os recursos gerenciados do CCF em um grupo de recursos
A parte do código a seguir recupera os recursos CCF gerenciados no 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)
}
}
Excluir o recurso CCF gerenciado
A parte de código a seguir exclui o recurso CCF gerenciado. 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.
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)
}
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 contoso-rg
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: