Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Přístupové klíče služby Functions jsou ověřovací tokeny, které modul runtime služby Functions používá k zabezpečení koncových bodů aktivovaných protokolem HTTP. Když volající vyvolá funkci HTTP, obsahuje klíč jako ?code= parametr dotazu nebo hlavičku x-functions-key . Modul runtime ověří klíč a autorizuje nebo odmítne požadavek.
Přístupové klíče nejsou stejné jako tajné kódy na úrovni aplikace. Přístupové klíče chrání , kdo může volat vaše funkce, zatímco tajné kódy na úrovni aplikace chrání to, k čemu se vaše funkce připojují.
Kdy použít přístupové klíče
| Scenario | Proč se přístupové klávesy hodí |
|---|---|
| Webhooky třetích stran | Poskytovatelé, jako jsou GitHub, Stripe nebo Twilio, volají vaši funkci prostřednictvím adresy URL a tajného kódu. Přístupové klíče se dosazují přímo do očekávaného ?code= vzoru. |
| Volání mezi službami | Back-endová služba A volá funkci B přes HTTP. Sdílený klíč je jednodušší než nastavení registrace aplikací Microsoft Entra pro interní hovory. |
| Odběry Event Grid | Event Grid ověřuje a volá koncový bod funkce pomocí systémového klíče , který platforma spravuje automaticky. |
| Ověřování pro vývoj/testování | Během vývoje potřebujete základní ověřování bez konfigurace úplného OAuth/OIDC. Přístupové klíče poskytují ověřovací bránu s nízkým třením bez konfigurace identity. |
| Kompatibilita migrace | Stávající Azure Functions aplikace už používají přístupové klíče. Při migraci do Container Apps potřebujete stejné klíčové ověřování, abyste předešli výpadkům volajících. |
Note
Pro uživatelská rozhraní API, úlohy nulové důvěryhodnosti nebo scénáře autorizace pro jednotlivé uživatele použijte místo přístupových klíčů Microsoft Entra ID / OAuth 2.0. Přístupové klíče jsou sdílené tajné kódy bez auditní stopy na úrovni identit.
Prerequisites
- Účet Azure s aktivním předplatným. Vytvořte si bezplatný účet.
- Azure CLI verze 2.40.0 nebo vyšší.
- Existující aplikace Azure Functions ve službě Container Apps nebo oprávnění k jeho vytvoření.
Typy přístupových klíčů
Modul runtime Služby Functions spravuje čtyři typy klíčů:
| Typ klíče | Scope | Purpose |
|---|---|---|
Hlavní klíč (_master) |
Kompletní Function App | Přístup na úrovni správce ke všem funkcím a /admin/* koncovým bodům správy. Nedá se odvolat, jenom otočit. |
Klíče hostitele (default + vlastní) |
Kompletní Function App | Autorizace volání jakékoli funkce aktivované protokolem HTTP v aplikaci |
Funkční klávesy (default + vlastní) |
Jednoduchá funkce | Autorizace volání jedné konkrétní funkce Poskytuje podrobnější řízení než klíče hostitele. |
| Systémové klíče | Koncové body rozšíření | Používá se u rozšíření platforem, jako jsou odběry webhooků služby Event Grid a Durable Functions. Spravováno automaticky. |
Vyberte úložiště typu backend
Nastavte proměnnou AzureWebJobsSecretStorageType prostředí tak, aby řídila, kde modul runtime udržuje přístupové klíče. Azure Container Apps podporuje tři back-endy na produkční úrovni.
| Backend | Nastavení hodnoty | Automatické generování klíčů | Externí závislost | Nejlepší pro |
|---|---|---|---|---|
| Úložiště tajných kódů Container Apps | containerapps |
Ne – zřídíte klíče jako tajné kódy Container Apps. | None | Většina úloh (doporučeno) |
| Azure Key Vault | keyvault |
Ne – ruční vytvoření triggeru | instance Key Vault | Centralizované zásady správného řízení, auditování dodržování předpisů |
| Azure Blob Storage | blob |
Ano | úložišťový účet | Starší verze aplikací nebo existující AzureWebJobsStorage účet |
Mějte na paměti tyto backendové aspekty:
- Runtime automaticky nevybere tajné úložiště Container Apps. Pokud ji nenastavíte
AzureWebJobsSecretStorageTypenebo nenastavíte na nerozpoznanou hodnotu, hostitel Functions používá Blob Storage, kdyžAzureWebJobsStorageje k dispozici. - Udržujte
AzureWebJobsStoragenastavené pro kontroly stavu úložiště a funkce závislé na úložišti. - Nenastavujte
AzureWebJobsSecretStorageTypenafiles. Souborový systém Container Apps je pomíjivý, takže klíče uložené na tomto backendu se ztrácejí, když aplikace škáluje na nulu, restartuje se nebo nasadí novou verzi.
Vzory tajných názvů
Zásady vytváření názvů pro uložené klíče závisí na back-endu úložiště.
Úložiště tajných kódů Container Apps používá jinou konvenci. Hostitel Functions načítá klíče ze souborů připojených ke svazku na adrese /run/secrets/functions-keys/. Každý soubor používá tečkovaný název (například host.master), ale názvy tajných kódů Container Apps umožňují pouze malé alfanumerické znaky a pomlčky. Když připojíte tajný svazek, musíte explicitně nastavit path pole na název tečkovaného souboru, který hostitel Functions očekává (například secretRef: host-master → path: host.master). Platforma neprovádí automatický překlad názvů.
| Typ klíče | Název tajného kódu Container Apps (pomlčky) | Připojení svazkupath (bodů) |
|---|---|---|
| Hlavní klíč | host-master |
host.master |
| Výchozí klíč hostitele | host-function-default |
host.function.default |
| Vlastní klíč hostitele | host-function-<name> |
host.function.<name> |
| Výchozí klíč funkce pro konkrétní funkci | functions-<functionname>-default |
functions.<functionName>.default |
| Vlastní klíč funkce pro konkrétní funkci | functions-<functionname>-<keyname> |
functions.<functionName>.<keyName> |
| Systémový klíč | host-systemkey-<extension> |
host.systemKey.<extension> |
Tip
Při řešení potíží vyhledejte v back-endovém úložišti tyto vzory a ověřte, že jsou klíče správně nakonfigurované.
Konfigurace úložiště tajných kódů Container Apps
Úložiště tajemství „Container Apps“ je doporučeným zázemím. Klíče zůstanou v rámci platformy Container Apps a nevyžadují žádné externí úložiště ani Key Vault. Azure Resource Manager protokoly aktivit sledují změny tajných kódů a proměnných prostředí.
Díky tomuto back-endu hostitel Functions načítá klíče ze souborů připojených ke svazku na /run/secrets/functions-keys/adrese . Hostitel negeneruje klíče automaticky. Každý klíč musíte vytvořit jako tajný kód Container Apps a platforma je připojí jako soubory, aby ho hostitel přečetl.
Important
Úložiště tajných kódů Container Apps je jen pro čtení z pohledu hostitele. Hostitel čte připojené soubory klíčů, ale nikdy do nich nezapisuje. Pokud chybí požadovaný klíč, hostitel ho automaticky nevygeneruje.
Krok 1: Nastavení typu úložiště
Přejděte do aplikace kontejneru Functions na portálu Azure.
V části Nastavení vyberte Proměnné prostředí.
Vyberte Přidat a zadejte následující hodnoty:
Property Value název AzureWebJobsSecretStorageTypeValue containerappsVyberte Uložit a pak kliknutím na Použít potvrďte změny.
Krok 2: Generování a ukládání tajných kódů přístupových klíčů
Vygenerujte hodnoty klíčů a ukládejte je jako tajné kódy Container Apps. Minimálně potřebujete hlavní klíč a výchozí klíč hostitele.
V aplikaci kontejneru Functions v části Nastavení vyberte Tajné kódy.
Vyberte Přidat a zadejte následující hodnoty:
Property Value název host-masterType Tajný klíč kontejnerových aplikací Value Náhodně vygenerovaná hodnota klíče. Vyberte Přidat.
Opakujte pro
host-function-defaults jinou náhodně vygenerovanou hodnotou.Pokud chcete přidat klíč pro jednotlivé funkce, přidejte tajný kód s názvem
functions-<functionname>-default(všechna malá písmena).
Note
Názvy tajných kódů Container Apps umožňují pouze malá písmena alfanumerických znaků a pomlček. Pole v konfiguraci svazku path musíte explicitně nastavit na název tečkovaného souboru, který hostitel Functions očekává (například secretRef: host-master → path: host.master). Bez explicitního výrazu pathzachová soubor na disku přerušovaný název a hostitel Functions klíč nenajde.
Krok 3: Konfigurace připojení svazku
Připojte tajné kódy jako soubory na adrese /run/secrets/functions-keys/.
V aplikaci kontejneru Functions v části Aplikace vyberte Revize a repliky.
Vyberte Vytvořit novou revizi.
Na kartě Škálování a svazky v části Svazky vyberte Přidat.
Zadejte následující hodnoty:
Property Value Typ svazku Tajný kód název functions-keysPro každý tajný klíč nastavte pole Cesta na tečkovaný název souboru, který hostitel Functions očekává (například nastavte
host-masterna cestuhost.master, ahost-function-defaultna cestuhost.function.default).Vyberte Přidat.
Na kartě Kontejner vyberte kontejner a pak vyberte Upravit.
Vyberte kartu Připojení svazků a vyberte Přidat.
Zadejte následující hodnoty:
Property Value Název svazku functions-keysPřípojná cesta /run/secrets/functions-keysVyberte Uložit a pak vyberte Vytvořit a nasaďte novou revizi.
Krok 4: Ověření
Po restartování aplikace ověřte, že klíče fungují:
az containerapp function keys list \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--key-type hostKey
Můžete také zkontrolovat protokoly aplikace pro zprávu Resolved secret storage provider ContainerAppsSecretsRepository, která potvrzuje, že hostitel používá úložiště tajností Container Apps.
Otočení kláves
Pokud chcete klíč otočit, aktualizujte tajný klíč Container Apps a restartujte aplikaci:
NEW_KEY=$(openssl rand -hex 32)
az containerapp secret set \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--secrets "host-function-default=$NEW_KEY"
az containerapp revision restart \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--revision "<REVISION_NAME>"
Note
Všechny repliky sdílejí stejná připojená tajemství. Po restartování převezme každá replika aktualizované hodnoty klíče.
Nastavte Key Vault nebo Blob Storage jako úložiště
Back-end Key Vault ukládá přístupové klíče jako tajné kódy Key Vault a poskytuje auditování na podnikové úrovni a řízení přístupu.
Vytvořte Key Vault (pokud ho nemáte):
az keyvault create \ --name "<KEYVAULT_NAME>" \ --resource-group "<RESOURCE_GROUP>" \ --location "<LOCATION>"Povolte spravovanou identitu v aplikaci kontejneru (pokud ještě není povolená):
az containerapp identity assign \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --system-assignedUdělte spravované identitě roli Key Vault Secrets Officer. Modul runtime potřebuje přístup pro čtení a zápis k vytváření a správě klíčů:
PRINCIPAL_ID=$(az containerapp show \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --query identity.principalId \ --output tsv) KEYVAULT_ID=$(az keyvault show \ --name "<KEYVAULT_NAME>" \ --query id \ --output tsv) az role assignment create \ --role "Key Vault Secrets Officer" \ --assignee "$PRINCIPAL_ID" \ --scope "$KEYVAULT_ID"Nastavte typ úložiště a Key Vault identifikátor URI:
Pro identitu přiřazenou systémem:
az containerapp update \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --set-env-vars \ "AzureWebJobsSecretStorageType=keyvault" \ "AzureWebJobsSecretStorageKeyVaultUri=https://<KEYVAULT_NAME>.vault.azure.net"Pro identitu přiřazenou uživatelem nastavte také ID klienta:
az containerapp update \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --set-env-vars \ "AzureWebJobsSecretStorageType=keyvault" \ "AzureWebJobsSecretStorageKeyVaultUri=https://<KEYVAULT_NAME>.vault.azure.net" \ "AzureWebJobsSecretStorageKeyVaultClientId=<USER_ASSIGNED_IDENTITY_CLIENT_ID>"Aktivace vytvoření klíče výpisem klíčů:
az containerapp function keys list \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-type hostKey
Správa přístupových klíčů
Bez ohledu na back-end použijte následující příkazy k výpisu, vytvoření a odstranění přístupových klíčů:
Note
Udržujte alespoň jednu repliku v provozu pro provádění těchto operací správy klíčů.
Seznam všech hostitelských klíčů:
az containerapp function keys list \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-type hostKeyUveďte hlavní klíč:
az containerapp function keys list \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-type masterKeyVytvořte nebo přepište vlastní hostitelský klíč:
az containerapp function keys set \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-name "MyCustomKey" \ --key-value "<YOUR_KEY_VALUE>" \ --key-type hostKeyUkažte konkrétní klíč:
az containerapp function keys show \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-name "<KEY_NAME>" \ --key-type hostKeySmazat host klíč:
az containerapp function keys delete \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-name "MyCustomKey" \ --key-type hostKey
Volání funkce pomocí přístupového klíče
Klíč předejte jako parametr dotazu nebo hlavičku požadavku.
# Query parameter
curl "https://<FUNCTIONS_APP_URL>/api/<FUNCTION_NAME>?code=<HOST_KEY>"
# Header
curl "https://<FUNCTIONS_APP_URL>/api/<FUNCTION_NAME>" \
-H "x-functions-key: <HOST_KEY>"