Sdílet prostřednictvím


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í:

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.

  1. Přihlaste se k webu Azure Portal a vyhledejte a vyberte Function App.

  2. Vyberte aplikaci funkcí, se kterou chcete pracovat.

  3. 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:

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.

  1. Přihlaste se k webu Azure Portal a vyhledejte a vyberte Function App.

  2. Vyberte aplikaci funkcí, se kterou chcete pracovat.

  3. 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í.

  4. 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:

Informace o volání rozhraní API Azure Resource Manageru najdete v referenčních informacích k rozhraní Azure REST API.