クイックスタート: Azure SDK for Go を使って Azure Managed CCF リソースを作成する
Azure Managed CCF (Managed CCF) は、機密性の高いアプリケーションをデプロイするための、高度なセキュリティで保護された新しいサービスです。 Managed CCF の詳細については、「Azure Managed Confidential Consortium Framework について」を参照してください。
このクイックスタートでは、Azure SDK for Go を使って Managed CCF リソースを作成する方法について説明します。
Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。
API リファレンスのドキュメント | ライブラリのソース コード | パッケージ (Go)
前提条件
- Azure サブスクリプション - 無料アカウントを作成します。
- Go 1.18 以降。
- Windows または Linux を実行しているコンピューターでの OpenSSL。
セットアップ
新しい Go アプリケーションの作成
- コマンド シェルで、次のコマンドを実行して、
managedccf-app
という名前のフォルダーを作成してください。
mkdir managedccf-app && cd managedccf-app
go mod init github.com/azure/resourcemanager/confidentialledger
モジュールをインストールする
- Azure Confidential Ledger モジュールをインストールしてください。
go get -u github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/confidentialledger/armconfidentialledger@v1.2.0-beta.1
このクイックスタートでは、Go 用の Azure ID モジュールもインストールする必要があります。
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 アプリケーションを作成する
管理プレーン ライブラリを使うと、Managed CCF リソースに対する操作 (作成と削除、サブスクリプションに関連付けられたリソースの一覧表示、特定のリソースの詳細表示など) を行うことができます。 次のコードを使うと、Managed 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"
)
クライアント ファクトリの認証と作成
このクイックスタートでは、ログイン ユーザーを使って Azure Managed CCF に対する認証を行います。ローカル開発ではこれが推奨される方法です。 この例では、Azure ID モジュールの 'NewDefaultAzureCredential()' クラスを使っています。環境や使うオプションが変わっても、同じコードを使って ID を提供することができます。
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)
}
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)
}
Managed CCF リソースのプロパティを取得する
次のコードは、前の手順で作成した Managed 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)
リソース グループ内の Managed CCF リソースを一覧表示する
次のコードは、リソース グループ内の Managed 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)
}
}
Managed CCF リソースを削除する
次のコードは、マネージド CCF リソースを削除します。 他の Managed 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)
}
リソースをクリーンアップする
他の Managed CCF の記事には、このクイックスタートに基づいているものがあります。 後続のクイック スタートおよびチュートリアルを引き続き実行する場合は、これらのリソースをそのまま残しておくことをお勧めします。
それ以外の場合は、この記事で作成したリソースの操作が完了したら、Azure CLI の az group delete コマンドを使って、リソース グループとそれに含まれるすべてのリソースを削除します。
az group delete --resource-group contoso-rg
次のステップ
このクイックスタートでは、Azure Python SDK for Confidential Ledger を使って Managed CCF リソースを作成しました。 Azure Managed CCF の詳細と、これをアプリケーションと統合する方法については、続けて以下の記事を参照してください。