Práce s přístupovými klíči ve službě Azure Functions
Azure Functions umožňuje používat tajné klíče, které ztěžují přístup ke koncovým bodům funkce. Tento článek popisuje různé druhy přístupových klíčů podporovaných službou Functions a způsob práce s přístupovými klíči.
Přístupové klíče sice poskytují určité omezení rizik proti nežádoucímu přístupu, ale měli byste zvážit další možnosti zabezpečení koncových bodů HTTP v produkčním prostředí. Například není vhodné distribuovat sdílené tajné kódy ve veřejné aplikaci. Pokud se vaše funkce volá z veřejného klienta, měli byste zvážit implementaci těchto nebo jiných mechanismů zabezpečení:
- Povolení ověřování/autorizace služby App Service
- Použití služby Azure API Management (APIM) k ověřování požadavků
- Nasazení aplikace funkcí do virtuální sítě
- Nasazení aplikace funkcí izolovaně
Přístupové klíče poskytují základ pro autorizaci HTTP v aktivovaných funkcích HTTP. Další informace najdete v tématu Úroveň autorizace.
Principy klíčů
Rozsah přístupového klíče a akce, které podporuje, závisí na typu přístupového klíče.
Typ klíče | Název klíče | Úroveň ověřování HTTP | Popis |
---|---|---|---|
Funkce | default nebo definované uživatelem |
function |
Povoluje přístup pouze ke konkrétnímu koncovému bodu funkce. |
Hostitel | default nebo definované uživatelem |
function |
Umožňuje přístup ke všem koncovým bodům funkce v aplikaci funkcí. |
Mistr | _master |
admin |
Speciální klíč hostitele, který také poskytuje přístup správce k rozhraním REST API modulu runtime v aplikaci funkcí. Tento klíč nelze odvolat. Vzhledem k tomu, že hlavní klíč uděluje v aplikaci funkcí zvýšená oprávnění, neměli byste ho sdílet s třetími stranami ani ho distribuovat v nativních klientských aplikacích. |
Systém | Závisí na rozšíření. | Není k dispozici | Konkrétní rozšíření můžou vyžadovat klíč spravovaný systémem pro přístup ke koncovým bodům webhooku. Systémové klíče jsou navržené pro koncové body funkcí specifické pro rozšíření, které se volají interními komponentami. Například trigger Event Gridu vyžaduje, aby předplatné při volání koncového bodu triggeru používalo systémový klíč. Durable Functions také používá systémové klíče k volání rozhraní API rozšíření Durable Task. Systémové klíče je možné vytvářet jenom konkrétními rozšířeními a nemůžete explicitně nastavit jejich hodnoty. Stejně jako jiné klíče můžete pro klíč vygenerovat novou hodnotu z portálu nebo pomocí rozhraní API klíčů. |
Každý klíč má název pro referenci a na úrovni funkce a hostitele je výchozí klíč (pojmenovaný default
). Klíče funkcí mají přednost před klíči hostitele. Pokud jsou definovány dva klíče se stejným názvem, použije se vždy klíč funkce.
Následující tabulka porovnává použití pro různé druhy přístupových klíčů:
Akce | Obor | Typ klíče |
---|---|---|
Provedení funkce | Konkrétní funkce | Function |
Provedení funkce | Libovolná funkce | Funkce nebo hostitel |
Volání koncového admin bodu |
Aplikace funkcí | Pouze předloha |
Volání rozhraní API rozšíření Durable Task | Aplikace funkcí* | Systémový |
Volání webhooku specifického pro rozšíření (interní) | Aplikace funkcí* | systém |
*Rozsah určený rozšířením
Klíčové požadavky
Ve službě Functions jsou přístupové klíče náhodně generovány 32 bajtová pole, která jsou kódována jako řetězce base-64 bezpečných pro adresu URL. I když můžete vygenerovat vlastní přístupové klíče a používat je se službou Functions, důrazně doporučujeme, abyste službě Functions umožnili vygenerovat všechny vaše přístupové klíče za vás.
Přístupové klíče generované funkcí zahrnují speciální hodnoty podpisu a kontrolního součtu, které označují typ přístupového klíče a že ho služba Azure Functions vygenerovala. Díky těmto dodatečným komponentám v samotném klíči je mnohem jednodušší určit zdroj těchto druhů tajných kódů umístěných během kontroly zabezpečení a dalších automatizovaných procesů.
Pokud chcete službě Functions umožnit vygenerovat klíče za vás, nezadávejte klíč value
žádnému z rozhraní API, která můžete použít ke generování klíčů.
Správa úložiště klíčů
Klíče se ukládají jako součást vaší aplikace funkcí v Azure a šifrují se neaktivní uložená data. Ve výchozím nastavení jsou klíče uložené v kontejneru úložiště objektů blob v účtu poskytnutém nastavením AzureWebJobsStorage
. Toto výchozí chování můžete přepsat nastavením AzureWebJobsSecretStorageType
a místo toho ukládat klíče do jednoho z těchto alternativních umístění:
Umístění | Hodnota | Popis |
---|---|---|
Druhý účet úložiště | blob |
Ukládá klíče v úložišti objektů blob v účtu úložiště, který se liší od klíče používané modulem runtime služby Functions. Konkrétní účet a použitý kontejner je definován adresou URL sdíleného přístupového podpisu (SAS) nastavenou AzureWebJobsSecretStorageSas v nastavení. Nastavení je nutné zachovat AzureWebJobsSecretStorageSas , když se změní adresa URL SAS. |
Azure Key Vault | keyvault |
Sada AzureWebJobsSecretStorageKeyVaultUri trezoru klíčů se používá k ukládání klíčů. |
Systém souborů | files |
Klíče jsou trvalé v místním systému souborů, což je výchozí hodnota ve službě Functions v1.x. Úložiště systému souborů se nedoporučuje. |
Tajné klíče Kubernetes | kubernetes |
K ukládání klíčů se používá prostředek nastavený v AzureWebJobsKubernetesSecretName. Podporuje se jenom v případech, kdy je vaše aplikace funkcí nasazená do Kubernetes. Azure Functions Core Tools vygeneruje hodnoty automaticky, když ji použijete k nasazení aplikace do clusteru Kubernetes. |
Při použití služby Key Vault pro úložiště klíčů závisí nastavení aplikace, které potřebujete, na typu spravované identity, přiřazeného systémem nebo uživatelem.
Název nastavení | Přiřazeno systémem | Přiřazeno uživatelem | Registrace aplikace |
---|---|---|---|
AzureWebJobsSecretStorageKeyVaultUri | ✓ | ✓ | ✓ |
AzureWebJobsSecretStorageKeyVaultClientId | X | ✓ | ✓ |
AzureWebJobsSecretStorageKeyVaultClientSecret | X | X | ✓ |
AzureWebJobsSecretStorageKeyVaultTenantId | X | X | ✓ |
Použití přístupových klíčů
Funkce aktivované protokolem HTTP lze obecně volat pomocí adresy URL ve formátu: https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>
. Pokud je úroveň autorizace dané funkce nastavená na jinou hodnotu než anonymous
, musíte v požadavku zadat také přístupový klíč. Přístupový klíč je možné zadat buď v adrese URL pomocí ?code=
řetězce dotazu, nebo v hlavičce požadavku (x-functions-key
). Další informace najdete v tématu Autorizace přístupového klíče.
Pokud chcete získat přístup k rozhraním REST API modulu runtime (v části /admin/
), musíte v x-functions-key
hlavičce požadavku zadat hlavní klíč (_master
). Koncové body správce můžete odebrat pomocí functionsRuntimeAdminIsolationEnabled
vlastnosti webu.
Získání přístupových klíčů funkce
Klíče funkcí a hostitelů můžete získat programově pomocí těchto rozhraní API Azure Resource Manageru:
Informace o volání rozhraní API Azure Resource Manageru najdete v referenčních informacích k rozhraní Azure REST API.
Tyto metody můžete použít k získání přístupových klíčů, aniž byste museli používat rozhraní REST API.
Přihlaste se k webu Azure Portal a vyhledejte a vyberte Function App.
Vyberte aplikaci funkcí, se kterou chcete pracovat.
V levém podokně rozbalte funkce a pak vyberte Klíče aplikace.
Zobrazí se stránka Klíče aplikace. Na této stránce se zobrazí klíče hostitele, které se dají použít pro přístup k libovolné funkci v aplikaci. Zobrazí se také systémový klíč, který každému správci dává přístup ke všem rozhraním API aplikací funkcí.
Minimální oprávnění můžete využít také pomocí klíče pro konkrétní funkci. Klíče specifické pro funkci můžete získat na kartě Funkční klávesy konkrétní funkce aktivované protokolem HTTP.
Obnovení nebo vytvoření přístupových klíčů
Když prodloužíte nebo vytvoříte hodnoty přístupového klíče, musíte aktualizované hodnoty klíče ručně distribuovat všem klientům, kteří volají vaši funkci.
Funkce a klíče hostitele můžete obnovit prostřednictvím kódu programu nebo vytvořit nové pomocí těchto rozhraní API Azure Resource Manageru:
- Vytvoření nebo aktualizace tajného kódu funkce
- Vytvoření nebo aktualizace slotu tajných kódů funkce
- Vytvoření nebo aktualizace tajného kódu hostitele
- Vytvoření nebo aktualizace slotu tajných kódů hostitele
Informace o volání rozhraní API Azure Resource Manageru najdete v referenčních informacích k rozhraní Azure REST API.
Tyto metody můžete použít k získání přístupových klíčů, aniž byste museli ručně vytvářet volání rozhraní REST API.
Přihlaste se k webu Azure Portal a vyhledejte a vyberte Function App.
Vyberte aplikaci funkcí, se kterou chcete pracovat.
V levém podokně rozbalte funkce a pak vyberte Klíče aplikace.
Zobrazí se stránka Klíče aplikace. Na této stránce se zobrazí klíče hostitele, které se dají použít pro přístup k libovolné funkci v aplikaci. Zobrazí se také systémový klíč, který každému správci dává přístup ke všem rozhraním API aplikací funkcí.
Vyberte Obnovit hodnotu klíče vedle klíče, který chcete obnovit, a pak vyberte Obnovit a uložit.
Můžete také obnovit funkční klíč na kartě Funkční klávesy konkrétní funkce aktivované protokolem HTTP.
Odstranění přístupových klíčů
Funkce a klíče hostitele můžete odstranit programově pomocí těchto rozhraní API Azure Resource Manageru:
- Odstranění tajného kódu funkce
- Odstranění slotu tajného kódu funkce
- Odstranit tajný klíč hostitele
- Odstranění slotu tajných kódů hostitele
Informace o volání rozhraní API Azure Resource Manageru najdete v referenčních informacích k rozhraní Azure REST API.