Zestaw Azure SDK dla języka Go z jednostką usługi
W tym samouczku użyjesz zestawu Azure SDK dla języka Go, aby uwierzytelnić się na platformie Azure przy użyciu jednostki usługi platformy Azure przy użyciu wpisu tajnego lub certyfikatu.
Jednostki usługi platformy Azure definiują zasady dostępu i uprawnienia w dzierżawie firmy Microsoft Entra. Włączanie podstawowych funkcji, takich jak uwierzytelnianie podczas logowania i autoryzacji podczas uzyskiwania dostępu do zasobów. Usunięcie potrzeby używania kont osobistych do uzyskiwania dostępu do zasobów platformy Azure. Moduł Azure Identity dla zestawu Azure SDK dla języka Go zapewnia wygodny sposób uwierzytelniania na platformie Azure przy użyciu jednostki usługi przy użyciu zmiennych środowiskowych, wpisu tajnego lub certyfikatu
Wykonaj czynności opisane w tym samouczku, aby utworzyć i uwierzytelnić się za pomocą zestawu Azure SDK dla języka Go przy użyciu jednostki usługi.
Wymagania wstępne
- Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
- Zainstalowany program Go: wersja 1.18 lub nowsza
1. Konfigurowanie środowiska
Przed rozpoczęciem utwórz nową grupę zasobów i wystąpienie magazynu kluczy.
az group create --name go-on-azure --location eastus
az keyvault create --location eastus --name `<keyVaultName>` --resource-group go-on-azure
Zastąp <keyVaultName>
ciąg globalnie unikatową nazwą. Zwróć również uwagę na dane Id
wyjściowe, które będą używane do zakresu konta usługi.
2. Tworzenie jednostki usługi platformy Azure
Użyj jednej z następujących technik, aby utworzyć jednostkę usługi platformy Azure:
- Opcja 1. Tworzenie jednostki usługi platformy Azure z wpisem tajnym
- Opcja 2. Tworzenie jednostki usługi platformy Azure przy użyciu certyfikatu
Aby dowiedzieć się więcej o jednostkach usługi platformy Azure, zobacz Obiekt jednostki usługi.
Opcja 1. Tworzenie jednostki usługi platformy Azure z wpisem tajnym
Uruchom następujące polecenia, aby utworzyć jednostkę usługi platformy Azure.
az ad sp create-for-rbac --name `<servicePrincipalName>` --role Contributor --scope <resourceGroupId>
Zastąp <servicePrincipalName>
wartości i <resourceGroupId>
odpowiednimi wartościami.
Upewnij się, że skopiujesz wartość hasła — nie można jej pobrać. Jeśli zapomnisz hasło, zresetuj poświadczenia jednostki usługi.
Opcja 2. Tworzenie jednostki usługi platformy Azure przy użyciu certyfikatu
az ad sp create-for-rbac --name <servicePrincipal> --create-cert --role Contributor --scope <resourceGroupId>
Zastąp <servicePrincipalName>
wartości i <resourceGroupId>
odpowiednimi wartościami.
3. Uwierzytelnianie na platformie Azure przy użyciu jednostki usługi
Korzystając z programu DefaultAzureCredential
, można uniknąć pisania kodu specyficznego dla środowiska w celu uwierzytelniania na platformie Azure.
Użyj polecenia DefaultAzureCredential
, aby skonfigurować poświadczenia jednostki usługi przez zdefiniowanie zmiennych środowiskowych.
Wybierz jedną z następujących opcji, aby skonfigurować poświadczenia jednostki usługi:
- Opcja 1. Uwierzytelnianie przy użyciu wpisu tajnego
- Opcja 2. Uwierzytelnianie przy użyciu certyfikatu
Aby dowiedzieć się więcej na temat usługi , zapoznaj się z tematem DefaultAzureCredential
Uwierzytelnianie platformy Azure za pomocą zestawu Azure SDK dla języka Go
Opcja 1. Uwierzytelnianie przy użyciu wpisu tajnego
Zdefiniuj następujące zmienne środowiskowe:
Nazwa zmiennej | Wartość |
---|---|
AZURE_CLIENT_ID |
Identyfikator aplikacji jednostki usługi platformy Azure |
AZURE_TENANT_ID |
Identyfikator dzierżawy firmy Microsoft Entra aplikacji |
AZURE_CLIENT_SECRET |
Hasło jednostki usługi platformy Azure |
export AZURE_TENANT_ID="<active_directory_tenant_id"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_SECRET="<service_principal_password>"
Opcja 2. Uwierzytelnianie przy użyciu certyfikatu
Nazwa zmiennej | Wartość |
---|---|
AZURE_CLIENT_ID |
Identyfikator aplikacji jednostki usługi platformy Azure |
AZURE_TENANT_ID |
Identyfikator dzierżawy firmy Microsoft Entra aplikacji |
AZURE_CLIENT_CERTIFICATE_PATH |
Ścieżka do pliku certyfikatu, w tym klucza prywatnego (bez ochrony haseł) |
export AZURE_TENANT_ID="<active_directory_tenant_id"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_CERTIFICATE_PATH="<azure_client_certificate_path>"
Użyj wartości DefaultAzureCredential do uwierzytelniania elementu ResourceClient
NewDefaultAzureCredential
Użyj funkcji modułu Azure Identity, aby uwierzytelnić element ResourceClient.
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
4. Przykładowy kod
Skorzystaj z poniższego przykładu kodu, aby sprawdzić, czy jednostka usługi uwierzytelnia się na platformie Azure i ma odpowiednie uprawnienia do grupy zasobów.
Utwórz nowy katalog o nazwie
go-on-azure
w katalogu głównym.mkdir ~/go-on-azure
Przejdź do
go-on-azure
katalogu.cd ~/go-on-azure
Uruchom polecenie
go mod init
, aby utworzyćgo.mod
plik.go mod init go-on-azure
Uruchom polecenie
go get
, aby zainstalować wymagane moduły języka Go.go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity" go get "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets"
Utwórz plik o nazwie
main.go
i dodaj następujący kod.package main import ( "context" "fmt" "log" "os" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets" ) func createSecret(name, value string) { keyVaultName := os.Getenv("KEY_VAULT_NAME") keyVaultUrl := fmt.Sprintf("https://%s.vault.azure.net/", keyVaultName) cred, err := azidentity.NewDefaultAzureCredential(nil) if err != nil { log.Fatalf("failed to obtain a credential: %v", err) } client, err := azsecrets.NewClient(keyVaultUrl, cred, nil) if err != nil { log.Fatalf("failed to create a client: %v", err) } resp, err := client.SetSecret(context.TODO(), name, value, nil) if err != nil { log.Fatalf("failed to create a secret: %v", err) } fmt.Printf("Name: %s, Value: %s\n", *resp.ID, *resp.Value) } func main() { createSecret("ExamplePassword", "hVFkk965BuUv") }
Utwórz zmienną środowiskową o nazwie
KEY_VAULT_NAME
. Ustaw wartość zmiennej środowiskowej na nazwę utworzonej wcześniej usługi Azure Key Vault.export KEY_VAULT_NAME=<KeyVaultName>
Zastąp
<KeyVaultName>
ciąg nazwą wystąpienia usługi Azure Key Vault.Uruchom polecenie ,
go run
aby utworzyć nowy wpis tajny magazynu kluczy.go run main.go
Następne kroki
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla