Ověřování pomocí sady Azure SDK for Go s využitím spravované identity
V tomto kurzu nakonfigurujete virtuální počítač Azure se spravovanou identitou pro ověření v Azure pomocí sady Azure SDK for Go.
Spravované identity eliminují potřebu správy přihlašovacích údajů tím, že poskytují identitu přímo prostředku Azure. Oprávnění přiřazená identitě udělují prostředku přístup k dalším prostředkům Azure, které podporují spravované identity, a tím odeberete nutnost předat přihlašovací údaje ve vaší aplikaci. Spravované identity můžete použít k ověřování a autorizaci aplikací hostovaných v Azure s jinými prostředky Azure.
Podle tohoto kurzu přiřaďte spravované identitě virtuálnímu počítači a ověřte ji do Azure pomocí spravované identity.
Požadavky
- Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
Pokud chcete použít Azure CLI ke spuštění kroků v tomto článku:
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shellu.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
Pokud chcete ke spuštění kroků v tomto článku použít Azure PowerShell:
- Pokud se rozhodnete používat Azure PowerShell místně:
- Nainstalujte nejnovější verzi modulu Az PowerShell.
- Připojení k účtu Azure pomocí rutiny Připojení-AzAccount.
- Pokud se rozhodnete použít Azure Cloud Shell:
- Další informace najdete v přehledu služby Azure Cloud Shell .
- Pokud se rozhodnete používat Azure PowerShell místně:
1. Vytvoření prostředků Azure
Než začnete, musíte vytvořit novou skupinu prostředků, virtuální počítač a instanci trezoru klíčů.
Nasazení virtuálního počítače
Nasaďte virtuální počítač do Azure. Spuštěním kódu Go vytvoříte tajný kód v trezoru klíčů Azure z daného virtuálního počítače.
Vytvořte skupinu prostředků Azure.
az group create --name go-on-azure --location eastus
--location
Změňte parametr na odpovídající hodnotu pro vaše prostředí.Vytvořte virtuální počítač Azure.
az vm create \ --resource-group go-on-azure \ --name go-on-azure-vm \ --image canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest \ --admin-username azureuser \ --admin-password <password>
<password>
Nahraďte heslo.
Další informace o dalších službách, které podporují spravované identity, najdete v tématu Služby, které podporují spravované identity pro prostředky Azure.
Nasazení instance trezoru klíčů
Spuštěním následujícího příkazu vytvořte novou instanci služby Azure Key Vault:
az keyvault create --location eastus --name <keyVaultName> --resource-group go-on-azure --enable-rbac-authorization
Nahraďte <keyVaultName>
globálně jedinečným názvem.
2. Vytvoření spravované identity
V Azure se podporují dva typy spravovaných identit; přiřazené systémem a přiřazené uživatelem.
Identity přiřazené systémem jsou přímo připojené k prostředku Azure a jsou omezené pouze na tento prostředek. Identity přiřazené uživatelem jsou samostatné prostředky, které je možné přiřadit k jednomu nebo více prostředkům Azure.
Další informace o rozdílu mezi přiřazenými systémem a přiřazenými uživateli najdete v tématu Typy spravovaných identit.
Vyberte jednu z následujících možností:
Možnost 1: Vytvoření identity přiřazené systémem
Spuštěním následujících příkazů vytvořte spravovanou identitu přiřazenou systémem:
az vm identity assign -g go-on-azure -n go-on-azure-vm
Možnost 2: Vytvoření identity přiřazené uživatelem
Spuštěním následujících příkazů vytvořte spravovanou identitu přiřazenou uživatelem:
az identity create -g go-on-azure -n GoUserIdentity
az vm identity assign -g go-on-azure -n go-on-azure-vm --identities GoUserIdentity
Další informace najdete v tématu Konfigurace spravovaných identit pro prostředky Azure na virtuálním počítači Azure pomocí Azure CLI.
3. Přiřazení role spravované identitě
Po vytvoření spravované identity přiřadíte role k udělení oprávnění identity pro přístup k dalším prostředkům Azure. V tomto kurzu přiřadíte předdefinované role Key Vault Secrets Officer
spravované identitě, aby aplikace Go v instanci trezoru klíčů vytvořila tajný klíč.
Vyberte jednu z následujících možností:
- Možnost 1: Přiřazení role k identitě přiřazené systémem
- Možnost 2: Přiřazení role k identitě přiřazené uživatelem
Možnost 1: Přiřazení role k identitě přiřazené systémem
Spuštěním následujících příkazů přiřaďte Key Vault Secrets Officer
roli spravované identitě přiřazené systémem:
#output system identity principal ID
az vm identity show --name go-on-azure-vm --resource-group go-on-azure --query principalId -o tsv
#output key vault ID
az keyvault show --name <keyVaultName> --query id -o tsv
az role assignment create --assignee <principalId> --role "Key Vault Secrets Officer" --scope <keyVaultId>
V druhém příkazu nahraďte <keyVaultName>
názvem vašeho trezoru klíčů. V posledním příkazu nahraďte <principalId>
výstupem <keyVaultId>
z prvních dvou příkazů.
Možnost 2: Přiřazení role k identitě přiřazené uživatelem
Spuštěním následujících příkazů přiřaďte Key Vault Secrets Officer
roli spravované identitě přiřazené uživatelem:
#output user identity principal ID
az identity show --resource-group go-on-azure --name GoUserIdentity --query principalId -o tsv
#output key vault ID
az keyvault show --name <keyVaultName> --query id -o tsv
az role assignment create --assignee <principalId> --role "Key Vault Secrets Officer" --scope <keyVaultId>
V druhém příkazu nahraďte <keyVaultName>
názvem vašeho trezoru klíčů. V posledním příkazu nahraďte <principalId>
výstupem <keyVaultId>
z prvních dvou příkazů.
Další informace o předdefinovaných rolích ve službě Azure Key Vault najdete v tématu Poskytnutí přístupu k klíčům, certifikátům a tajným kódům služby Key Vault pomocí řízení přístupu na základě role v Azure. Další informace o předdefinovaných rolích v Azure najdete v tématu Předdefinované role Azure.
4. Vytvoření tajného klíče trezoru klíčů pomocí Go
Další SSH do virtuálního počítače Azure, nainstalujte Go a sestavili balíček Go.
Instalace Go na virtuální počítač Azure
Získejte veřejnou IP adresu virtuálního počítače Azure.
az vm show -d -g go-on-azure -n go-on-azure-vm --query publicIps -o tsv
Připojte se k virtuálnímu počítači Azure pomocí SSH.
ssh azureuser@<public-ip>
Nahraďte
<public-ip>
veřejnou IP adresou virtuálního počítače Azure.Nainstalovat Go
sudo add-apt-repository ppa:longsleep/golang-backports; sudo apt update; sudo apt install golang-go -y
Vytvoření balíčku Go
Vytvořte nový adresář s názvem
go-on-azure
v domovském adresáři.mkdir ~/go-on-azure
Přejděte do
go-on-azure
adresáře.cd ~/go-on-azure
Spuštěním
go mod init
vytvořtego.mod
soubor.go mod init go-on-azure
Spusťte instalaci
go get
požadovaných modulů Go.go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity" go get "github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets"
main.go
Vytvořte soubor a zkopírujte do něj následující kód.package main import ( "context" "fmt" "log" "os" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets" ) func createSecret() { keyVaultName := os.Getenv("KEY_VAULT_NAME") secretName := "quickstart-secret" secretValue := "createdWithGO" 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) } params := azsecrets.SetSecretParameters{Value: &secretValue} resp, err := client.SetSecret(context.TODO(), secretName, params, 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() }
Vytvořte proměnnou prostředí s názvem
KEY_VAULT_NAME
. Nahraďte<keyVaultName>
názvem vaší instance služby Azure Key Vault.export KEY_VAULT_NAME=<keyVaultName>
Spuštěním
go run
příkazu vytvořte tajný klíč trezoru klíčů.go run main.go
Při úspěchu se výstup podobá následujícímu:
Name: https://<keyVaultName>.vault.azure.net/secrets/quickstart-secret/0e0b941824c4493bb3b83045a31b2bf7, Value: createdWithGO
Tajný klíč trezoru klíčů můžete ověřit pomocí Azure PowerShellu, Azure CLI nebo webu Azure Portal.
Poznámka:
Pokud používáte Azure CLI nebo Azure PowerShell, musíte se ujistit, že je vašemu uživatelskému účtu Azure přiřazená role, která jí umožňuje číst tajné kódy v trezoru klíčů, jako je "Key Vault Secrets Officer" nebo "Key Vault Secrets User".
5. Vyčištění prostředků
Pokud už nechcete používat prostředky Azure, které jste vytvořili v tomto článku, je vhodné je odstranit. Odstranění nepoužívaných prostředků vám pomůže vyhnout se průběžným poplatkům a udržovat vaše předplatné přehledné. Nejjednodušší způsob, jak odstranit prostředky, které jste použili v tomto kurzu, je odstranit skupinu prostředků.
az group delete --name go-on-azure --force-deletion-types Microsoft.Compute/virtualMachines --yes
Argument force-deletion-type
říká příkazu, aby vynutil odstranění virtuálních počítačů ve skupině prostředků. Argument --yes
říká příkazu, aby nepožádá o potvrzení.
Předchozí příkaz provede obnovitelné odstranění trezoru klíčů ve skupině prostředků. Pokud ho chcete trvale odebrat z předplatného, zadejte následující příkaz:
az keyvault purge --name <keyVaultName> --no-wait
Nahraďte <keyVaultName>
názvem trezoru klíčů.