Schnellstart: Azure Key Vault-Zertifikatclientbibliothek für Go
In dieser Schnellstartanleitung erfahren Sie, wie Sie das Azure SDK für Go verwenden, um Zertifikate in einer Azure Key Vault-Instanz zu verwalten.
Azure Key Vault ist ein Clouddienst, der als sicherer Geheimnisspeicher fungiert. Dadurch können Schlüssel, Kennwörter, Zertifikate und andere Geheimnisse sicher gespeichert werden. Weitere Informationen zu Key Vault finden Sie in der Übersicht.
In dieser Anleitung erfahren Sie, wie Sie das Paket azcertificates verwenden, um Ihre Azure Key Vault-Zertifikate mit Go zu verwalten.
Voraussetzungen
- Azure-Abonnement (kostenloses Abonnement erstellen)
- Installation von Go: Version 1.18 oder höher
- Azure-Befehlszeilenschnittstelle
Einrichten Ihrer Umgebung
Melden Sie sich bei Azure an.
az login
Erstellen Sie eine neue Ressourcengruppe.
az group create --name myResourceGroup --location eastus
Stellen Sie eine neue Key Vault-Instanz bereit.
az keyvault create --name <keyVaultName> --resource-group myResourceGroup
Ersetzen Sie
<keyVaultName>
durch einen Namen, der innerhalb von Azure eindeutig ist. In der Regel verwenden Sie Ihren persönlichen oder Firmennamen zusammen mit Ziffern und anderen Bezeichnern.Erstellen eines neuen Go-Moduls und Installieren von Paketen
go mod init quickstart-go-kvcerts go get github.com/Azure/azure-sdk-for-go/sdk/keyvault/azcertificates go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Erstellen des Beispielcodes
Erstellen Sie eine Datei mit dem Namenmain.go
, und kopieren Sie den folgenden Code in die Datei:
package main
import (
"context"
"fmt"
"log"
"time"
"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/azcertificates"
)
func getClient() *azcertificates.Client {
keyVaultName := os.Getenv("KEY_VAULT_NAME")
if keyVaultName == "" {
log.Fatal("KEY_VAULT_NAME environment variable not set")
}
keyVaultUrl := fmt.Sprintf("https://%s.vault.azure.net/", keyVaultName)
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatal(err)
}
return azcertificates.NewClient(keyVaultUrl, cred, nil)
}
func createCert(client *azcertificates.Client) {
params := azcertificates.CreateCertificateParameters{
CertificatePolicy: &azcertificates.CertificatePolicy{
IssuerParameters: &azcertificates.IssuerParameters{
Name: to.Ptr("Self"),
},
X509CertificateProperties: &azcertificates.X509CertificateProperties{
Subject: to.Ptr("CN=DefaultPolicy"),
},
},
}
resp, err := client.CreateCertificate(context.TODO(), "myCertName", params, nil)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Requested a new certificate. Operation status: %s\n", *resp.Status)
}
func getCert(client *azcertificates.Client) {
// an empty string version gets the latest version of the certificate
version := ""
getResp, err := client.GetCertificate(context.TODO(), "myCertName", version, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("Enabled set to:", *getResp.Attributes.Enabled)
}
func listCert(client *azcertificates.Client) {
pager := client.NewListCertificatesPager(nil)
for pager.More() {
page, err := pager.NextPage(context.Background())
if err != nil {
log.Fatal(err)
}
for _, cert := range page.Value {
fmt.Println(*cert.ID)
}
}
}
func updateCert(client *azcertificates.Client) {
// disables the certificate, sets an expires date, and add a tag
params := azcertificates.UpdateCertificateParameters{
CertificateAttributes: &azcertificates.CertificateAttributes{
Enabled: to.Ptr(false),
Expires: to.Ptr(time.Now().Add(72 * time.Hour)),
},
Tags: map[string]*string{"Owner": to.Ptr("SRE")},
}
// an empty string version updates the latest version of the certificate
version := ""
_, err := client.UpdateCertificate(context.TODO(), "myCertName", version, params, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("Updated certificate properites: Enabled=false, Expires=72h, Tags=SRE")
}
func deleteCert(client *azcertificates.Client) {
// DeleteCertificate returns when Key Vault has begun deleting the certificate. That can take several
// seconds to complete, so it may be necessary to wait before performing other operations on the
// deleted certificate.
resp, err := client.DeleteCertificate(context.TODO(), "myCertName", nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("Deleted certificate with ID: ", *resp.ID)
}
func main() {
fmt.Println("Authenticating...")
client := getClient()
fmt.Println("Creating a certificate...")
createCert(client)
fmt.Println("Getting certificate Enabled property ...")
getCert(client)
fmt.Println("Listing certificates...")
listCert(client)
fmt.Println("Updating a certificate...")
updateCert(client)
fmt.Println("Deleting a certificate...")
deleteCert(client)
}
Ausführen des Codes
Bevor Sie den Code ausführen, erstellen Sie eine Umgebungsvariable namens KEY_VAULT_NAME
. Legen Sie den Wert der Umgebungsvariablen auf den Namen der zuvor erstellten Azure Key Vault-Instanz fest.
export KEY_VAULT_NAME=<YourKeyVaultName>
Führen Sie als Nächstes den folgenden go run
-Befehl aus, um die App auszuführen:
go run main.go
Codebeispiele
Weitere Beispiele finden Sie in der Moduldokumentation.
Bereinigen von Ressourcen
Führen Sie die folgenden Befehle aus, um die Ressourcengruppe und alle dazugehörigen Ressourcen zu löschen:
az group delete --resource-group myResourceGroup