Краткое руководство. Создание ресурса Azure Managed CCF с помощью пакета SDK Azure для Go
Azure Managed CCF (Managed CCF) — это новая и высокозащищенная служба для развертывания конфиденциальных приложений. Дополнительные сведения об управляемом CCF см. в разделе "О платформе управляемого конфиденциального консорциума Azure".
Из этого краткого руководства вы узнаете, как создать ресурс Managed CCF с помощью библиотеки Azure SDK для Go.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Пакет исходного кода библиотеки исходного кода | библиотеки | API (Go)
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Перейти 1.18 или выше.
- OpenSSL на компьютере под управлением Windows или Linux.
Настройка
Создание приложения Go
- В командной оболочке выполните следующую команду, чтобы создать папку с именем
managedccf-app
:
mkdir managedccf-app && cd managedccf-app
go mod init github.com/azure/resourcemanager/confidentialledger
Установка модулей
- Установите модуль конфиденциального реестра Azure.
go get -u github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/confidentialledger/armconfidentialledger@v1.2.0-beta.1
Для этого краткого руководства также необходимо установить модуль удостоверений Azure для Go.
go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity
Создание или изменение группы ресурсов
Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов Azure и управление ими. Используйте командлет Azure PowerShell New-AzResourceGroup , чтобы создать группу ресурсов с именем myResourceGroup в расположении southcentralus .
New-AzResourceGroup -Name "myResourceGroup" -Location "SouthCentralUS"
Регистрация поставщика ресурсов
Перед созданием ресурса Необходимо зарегистрировать тип ресурса Azure Managed CCF в подписке.
az feature registration create --namespace Microsoft.ConfidentialLedger --name ManagedCCF
az provider register --namespace Microsoft.ConfidentialLedger
Создание членов
Создайте пару ключей для элемента. После завершения следующих команд открытый ключ члена сохраняется и member0_cert.pem
закрытый ключ сохраняется в 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"
Создание приложения Go
Библиотека плоскости управления позволяет выполнять операции с управляемыми ресурсами CCF, такими как создание и удаление, перечисление ресурсов, связанных с подпиской, и просмотр сведений о конкретном ресурсе. Следующий фрагмент кода создает и просматривает свойства ресурса Управляемого CCF.
Добавьте следующие директивы в начало 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"
)
Проверка подлинности и создание клиентской фабрики
В этом кратком руководстве пользователь, вошедший в систему, используется для проверки подлинности в Управляемом CCF Azure, который является предпочтительным методом для локальной разработки. В этом примере используется класс NewDefaultAzureCredential()" из модуля удостоверений Azure, который позволяет использовать один и тот же код в разных средах с разными параметрами для предоставления удостоверения.
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("Failed to obtain a credential: %v", err)
}
Создайте фабрику клиентов Azure Resource Manager и выполните проверку подлинности с помощью учетных данных маркера.
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)
}
Создание управляемого ресурса 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)
}
Получение свойств ресурса Managed CCF
Следующий фрагмент кода извлекает ресурс Управляемого CCF, созданный на предыдущем шаге.
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)
Вывод списка управляемых ресурсов CCF в группе ресурсов
Следующий фрагмент кода извлекает ресурсы Управляемого CCF в группе ресурсов.
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)
}
}
Удаление управляемого ресурса CCF
Следующий фрагмент кода удаляет управляемый ресурс CCF. Другие статьи по управляемым CCF можно создать на основе этого краткого руководства. Если вы планируете продолжить работу с последующими краткими руководствами и руководствами, вы можете оставить эти ресурсы на месте.
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)
}
Очистка ресурсов
Другие статьи по управляемым CCF можно создать на основе этого краткого руководства. Если вы планируете продолжить работу с последующими краткими руководствами и руководствами, вы можете оставить эти ресурсы на месте.
В противном случае, когда вы закончите работу с ресурсами, созданными в этой статье, используйте команду azure CLI az group delete для удаления группы ресурсов и всех содержащихся в ней ресурсов.
az group delete --resource-group contoso-rg
Следующие шаги
В этом кратком руководстве вы создали ресурс Управляемого CCF с помощью пакета SDK Для Python Azure для конфиденциального реестра. Дополнительные сведения об Управляемом CCF Azure и их интеграции с приложениями см. в следующих статьях: