クイックスタート: Go 用の Azure Key Vault キー クライアント ライブラリ
このクイック スタートでは、Azure SDK for Go を使用して、Azure Key Vault のキーを作成、取得、更新、一覧表示、削除する方法について説明します。
Azure Key Vault は、セキュリティで保護されたシークレット ストアとして機能するクラウド サービスです。 キー、パスワード、証明書、およびその他のシークレットを安全に保管することができます。 Key Vault の詳細については、概要に関するページを参照してください。
azkeys パッケージと Go を使って Azure Key Vault のキーを管理する方法については、このガイドに従ってください。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します。
- Go がインストールされていること: バージョン 1.18 またはそれ以上
- Azure CLI
環境を設定する
Azure にサインインします。
az login
新しいリソース グループを作成します。
az group create --name quickstart-rg --location eastus
新しいキー コンテナー インスタンスをデプロイします。
az keyvault create --name <keyVaultName> --resource-group quickstart-rg
<keyVaultName>
を Azure 全体で一意の名前に置き換えます。 通常、個人名または会社名は、その他の数字や識別子と併せて使用します。新しい Go モジュールを作成してパッケージをインストールする
go mod init quickstart-keys go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity go get -u github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys
サンプル コードを作成する
main.go という名前のファイルを作成し、次のコードをファイルにコピーします。
package main
import (
"context"
"fmt"
"log"
"os"
"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/keyvault/azkeys"
)
func main() {
keyVaultName := os.Getenv("KEY_VAULT_NAME")
keyVaultUrl := fmt.Sprintf("https://%s.vault.azure.net/", keyVaultName)
// create credential
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
// create azkeys client
client, err := azkeys.NewClient(keyVaultUrl, cred, nil)
if err != nil {
log.Fatal(err)
}
// create RSA Key
rsaKeyParams := azkeys.CreateKeyParameters{
Kty: to.Ptr(azkeys.JSONWebKeyTypeRSA),
KeySize: to.Ptr(int32(2048)),
}
rsaResp, err := client.CreateKey(context.TODO(), "new-rsa-key", rsaKeyParams, nil)
if err != nil {
log.Fatalf("failed to create rsa key: %v", err)
}
fmt.Printf("New RSA key ID: %s\n", *rsaResp.Key.KID)
// create EC Key
ecKeyParams := azkeys.CreateKeyParameters{
Kty: to.Ptr(azkeys.JSONWebKeyTypeEC),
Curve: to.Ptr(azkeys.JSONWebKeyCurveNameP256),
}
ecResp, err := client.CreateKey(context.TODO(), "new-ec-key", ecKeyParams, nil)
if err != nil {
log.Fatalf("failed to create ec key: %v", err)
}
fmt.Printf("New EC key ID: %s\n", *ecResp.Key.KID)
// list all vault keys
fmt.Println("List all vault keys:")
pager := client.NewListKeysPager(nil)
for pager.More() {
page, err := pager.NextPage(context.TODO())
if err != nil {
log.Fatal(err)
}
for _, key := range page.Value {
fmt.Println(*key.KID)
}
}
// update key properties to disable key
updateParams := azkeys.UpdateKeyParameters{
KeyAttributes: &azkeys.KeyAttributes{
Enabled: to.Ptr(false),
},
}
// an empty string version updates the latest version of the key
version := ""
updateResp, err := client.UpdateKey(context.TODO(), "new-rsa-key", version, updateParams, nil)
if err != nil {
panic(err)
}
fmt.Printf("Key %s Enabled attribute set to: %t\n", *updateResp.Key.KID, *updateResp.Attributes.Enabled)
// delete the created keys
for _, keyName := range []string{"new-rsa-key", "new-ec-key"} {
// DeleteKey returns when Key Vault has begun deleting the key. That can take several
// seconds to complete, so it may be necessary to wait before performing other operations
// on the deleted key.
delResp, err := client.DeleteKey(context.TODO(), keyName, nil)
if err != nil {
panic(err)
}
fmt.Printf("Successfully deleted key %s", *delResp.Key.KID)
}
}
コードの実行
コードを実行する前に、KEY_VAULT_NAME という名前の環境変数を作成します。 環境変数の値を、前に作成した Azure Key Vault の名前に設定します。
export KEY_VAULT_NAME=quickstart-kv
次に、次の go run
コマンドを実行してアプリを実行します。
go run main.go
Key ID: https://quickstart-kv.vault.azure.net/keys/new-rsa-key4/f78fe1f34b064934bac86cc8c66a75c3: Key Type: RSA
Key ID: https://quickstart-kv.vault.azure.net/keys/new-ec-key2/10e2cec51d1749c0a26aab784808cfaf: Key Type: EC
List all vault keys:
https://quickstart-kv.vault.azure.net/keys/new-ec-key
https://quickstart-kv.vault.azure.net/keys/new-ec-key1
https://quickstart-kv.vault.azure.net/keys/new-ec-key2
https://quickstart-kv.vault.azure.net/keys/new-rsa-key4
Enabled set to: false
Successfully deleted key https://quickstart-kv.vault.azure.net/keys/new-rsa-key4/f78fe1f34b064934bac86cc8c66a75c3
Note
この出力は情報を提供するためだけのものです。 実際の戻り値は、Azure サブスクリプションと Azure Key Vault によって異なる場合があります。
コード例
その他の例については、モジュールのドキュメント をご覧ください。
リソースをクリーンアップする
次のコマンドを実行して、リソース グループと残りすべてのリソースを削除します。
az group delete --resource-group quickstart-rg
次のステップ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示