Sekrety z Azure Key Vault w Azure PowerShell Functions

By Azure, PowerShell

Sekrety z Azure Key Vault w Azure PowerShell Function

Nadal kontynuuje przygodę wykorzystania PowerShell i Azure Functions. Efektem tego są już wpisy, ten i ten. W tym poście omówię, w jaki sposób Azure Functions może uzyskiwać dostęp do Azure Key Vault przy użyciu Managed Identity i jak dodać referencję do sekretów.

Czym jest Azure Key Vault?

Azure Key Vault to narzędzie do bezpiecznego przechowywania i uzyskiwania dostępu do sekretów. Sekrety to wszystko, do czego chcesz ściśle kontrolować dostęp, na przykład klucze API, hasła lub certyfikaty.

ℹ️ We wpisie zakładam, że usługi Azure Functions oraz Azure Key Vault są gotowe pracy.

Włączanie tożsamości zarządzanej w Azure Functions

Włączenie Managed Idenitity dla Azure Functions możemy wykonać zarówno z poziomu Azure portalu, CLI jak i PowerShell.

Poniżej wrzucam poglądowy zrzut ekranu, gdzie to wyklikać lub skorzystaj z poniższego PowerShella. 💪 Jeśli potrzebujesz dokładnej instrukcji, to znajdziesz ją w oficjalnym dokumencie.

Włączenie Managed Idenitity w Azure Function
$FuncApp = Get-AzFunctionApp -Name [your-functionapp-name] -ResourceGroupName [resource-group-name]
$Identity = Update-AzFunctionApp -ResourceGroupName $FuncApp.ResourceGroupName -Name $FuncApp.Name -IdentityType SystemAssigned
$Identity.IdentityPrincipalId

Przypisanie zasad dostępu do Key Vault

Gdy mamy utworzoną tożsamość dla Azure Functions, możemy przejść do przypisania dostępu w Key Vault. Ponownie odeślę Cię do dokumentacji, gdyby poniższe instrukcje lub polecenie PowerShell byłyby niewystarczające.

Przechodzimy do Azure Key Vault i w Access policies dodajemy nową zasadę dostępu poprzez Add Access Policy.

Dodanie Access policy - Azure Key Vault

Na potrzeby Azure Functions wystarczy przydzielić uprawnienie do pobierania dla sekretów, czyli Get dla utworzonej wcześniej tożsamości.

Dodanie Access policy - Azure Key Vault
# wymaga wykonania poprzednich poleceń
Set-AzKeyVaultAccessPolicy -VaultName [your-keyvault-name]  -ResourceGroupName [resource-name] -ObjectId $Identity.IdentityPrincipalId -PermissionsToSecrets get

Dodawanie referencji do sekretu

Zanim wykorzystasz sekret w Function App, dodaj nową konfigurację aplikacji w zakładce Configuration.

Dodawania konfiguracji w Azure Function

⚡ W wartości konfiguracji musi się znaleźć referencja do Key Vault, która ma postać @Microsoft.KeyVault(SecretUri={secretUri}), gdzie {secretUri} to pełen identyfikator do sekretu.

Identyfikator sekretu w Azure Key Vault
@Microsoft.KeyVault(SecretUri=https://kv-clouddb01.vault.azure.net/secrets/webhookAddress/a25a9a4ccaf24c10a495bf9962c92897)

Alternatywnie referencje możesz podać w poniższy sposób.

# VaultName=vaultName;SecretName=secretName;SecretVersion=secretVersion
@Microsoft.KeyVault(VaultName=kv-clouddb01;SecretName=webhookAddress;SecretVersion=a25a9a4ccaf24c10a495bf9962c92897)

Jeśli wszystko poszło dobrze, to zobacz coś takiego.

Pobieranie sekretu do Functions

Wszystkie ustawienia aplikacji z zakładki Configuration w Azure Functions dostępne są jako zmienne środowiskowe. Pod tym względem te z referencją do Key Vault niczym się nie różną.

⚡ W funkcji dostęp do wartości sekretu będziesz miał pod zmienną
$env:<nazwa-konfiguracji>

Sekrety z Azure Key Vault w Azure PowerShell Function

Podczas wykonywania takiej funkcji wartość zostanie automatycznie pobrana z Key Vault.

Podsumowanie

W tym artykule pokazałem, jak w kilku krokach bezpiecznie przekazywać sekrety z Azure Key Vault do Azure Functions.

Dzięki takiemu rozwiązaniu maksymalnie ograniczamy dostęp do poufnych danych i wstrzykujemy je bezpośrednio z Key Vault do naszych Function App.

22 Najważniejsze Wskazówki Pisania Skryptów PowerShell

No comments yet.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

× Close