Zabezpečení azure Functions

Plánování zabezpečeného vývoje, nasazení a provozu bezserverových funkcí je v mnoha ohledech stejné jako u jakékoli webové nebo cloudové aplikace. Aplikace Azure Service poskytuje hostingovou infrastrukturu pro vaše aplikace funkcí. Tento článek obsahuje strategie zabezpečení pro spouštění kódu funkce a způsob, jakým vám app Service může pomoct zabezpečit funkce.

Komponenty platformy služby App Service, včetně virtuálních počítačů Azure, úložiště, síťových připojení, webových architektur, funkcí správy a integrace, jsou aktivně zabezpečené a posílené. App Service průběžně prochází důslednými kontrolami dodržování předpisů, aby se zajistilo, že:

  • Prostředky vaší aplikace jsou zabezpečené z prostředků Azure ostatních zákazníků.
  • Instance virtuálních počítačů a software runtime se pravidelně aktualizují , aby se vyřešily nově zjištěná ohrožení zabezpečení.
  • Komunikace tajných kódů (například připojovací řetězec) mezi vaší aplikací a jinými prostředky Azure (jako je SQL Database) zůstává v Azure a nepřekračuje hranice sítě. Tajné kódy se při ukládání vždy šifrují.
  • Veškerá komunikace přes funkce připojení služby App Service, jako je například hybridní připojení, je šifrovaná.
  • Šifrují se připojení pomocí nástrojů pro vzdálenou správu, jako jsou Azure PowerShell, Azure CLI, sady Azure SDK, rozhraní REST API.
  • 24hodinová správa hrozeb chrání infrastrukturu a platformu před malwarem, distribuovaným odepřením služby (DDoS), man-in-the-middle (MITM) a dalšími hrozbami.

Další informace o zabezpečení infrastruktury a platformy v Azure najdete v Centru zabezpečení Azure.

Sadu doporučení zabezpečení, která se řídí srovnávacím testem zabezpečení cloudu Microsoftu, najdete v tématu Standardní hodnoty zabezpečení Azure pro Azure Functions.

Zabezpečená operace

Tato část vás provede co nejbezpečenější konfigurací a spuštěním aplikace funkcí.

Defender for Cloud

Defender for Cloud se integruje s vaší aplikací funkcí na portálu. Poskytuje zdarma rychlé posouzení potenciálních ohrožení zabezpečení souvisejících s konfigurací. Aplikace funkcí běžící ve vyhrazeném plánu můžou také využívat funkce rozšířeného zabezpečení v programu Defender for Cloud za příplatek. Další informace najdete v tématu Ochrana webových aplikací a rozhraní API služby Aplikace Azure.

Protokolování a monitorování

Jedním ze způsobů, jak detekovat útoky, je monitorování aktivit a protokolování analýzy. Funkce se integrují s Application Insights za účelem shromažďování dat protokolu, výkonu a chyb pro vaši aplikaci funkcí. Application Insights automaticky detekuje anomálie výkonu a obsahuje výkonné analytické nástroje, které vám pomůžou diagnostikovat problémy a pochopit, jak se vaše funkce používají. Další informace najdete v tématu Monitorování azure Functions.

Funkce se také integruje s protokoly azure Monitoru, abyste mohli konsolidovat protokoly aplikací funkcí pomocí systémových událostí pro snadnější analýzu. Nastavení diagnostiky můžete použít ke konfiguraci exportu protokolů platformy a metrik streamování pro vaše funkce do zvoleného cíle, jako je pracovní prostor Služby Log Analytics. Další informace najdete v tématu Monitorování služby Azure Functions pomocí protokolů služby Azure Monitor.

Pro automatizaci hrozeb na podnikové úrovni streamujte protokoly a události do pracovního prostoru Služby Logs Analytics. Microsoft Sentinel pak můžete připojit k tomuto pracovnímu prostoru. Další informace najdete v tématu Co je Microsoft Sentinel.

Další doporučení zabezpečení pro pozorovatelnost najdete ve standardních hodnotách zabezpečení Azure pro Azure Functions.

Zabezpečení koncových bodů HTTP

Koncové body HTTP, které jsou veřejně vystaveny, poskytují vektor útoku pro aktéry se zlými úmysly. Při zabezpečení koncových bodů HTTP byste měli použít vícevrstvý přístup k zabezpečení. Tyto techniky lze použít ke snížení ohrožení zabezpečení veřejně vystavených koncových bodů HTTP seřazených od nejzásadnějších po nejbezpečnější a omezující:

Vyžadovat HTTPS

Ve výchozím nastavení se klienti můžou připojit ke koncovým bodům funkcí pomocí protokolu HTTP nebo HTTPS. Protokol HTTP byste měli přesměrovat na HTTPS, protože protokol HTTPS používá protokol SSL/TLS k zajištění zabezpečeného připojení, které je šifrované i ověřené. Postup najdete v tématu Vynucení HTTPS.

Pokud potřebujete protokol HTTPS, měli byste také vyžadovat nejnovější verzi protokolu TLS. Postup najdete v tématu Vynucení verzí protokolu TLS.

Další informace najdete v tématu Zabezpečené připojení (TLS).

Přístupové klávesy funkce

Funkce umožňují používat klíče, které znesnadní přístup ke koncovým bodům funkce. Pokud není úroveň přístupu HTTP u funkce aktivované protokolem HTTP nastavená na anonymous, požadavky musí v požadavku obsahovat přístupový klíč. Další informace najdete v tématu Práce s přístupovými klíči ve službě Azure Functions.

Přístupové klíče sice můžou zajistit určité omezení nežádoucího přístupu, ale jediný způsob, jak skutečně zabezpečit koncové body funkce, je implementace pozitivního ověřování klientů, kteří přistupují k vašim funkcím. Pak můžete provádět rozhodnutí o autorizaci na základě identity.

Pro nejvyšší úroveň zabezpečení můžete také zabezpečit celou architekturu aplikace ve virtuální síti pomocí privátních koncových bodů nebo spuštěním izolovaně.

Zakázání koncových bodů správy

Aplikace funkcí můžou obsluhovat koncové body správy v rámci /admin trasy, které se dají použít pro operace, jako je získání informací o stavu hostitele a provádění volání testů. Při zveřejnění musí požadavky na tyto koncové body obsahovat hlavní klíč aplikace. Operace správy jsou k dispozici také prostřednictvím rozhraní API Azure Resource ManageruMicrosoft.Web/sites, které nabízí Azure RBAC. Koncové body můžete zakázat /admin nastavením functionsRuntimeAdminIsolationEnabled vlastnosti webu na truehodnotu . Tuto vlastnost nelze nastavit pro aplikace spuštěné na skladové posílce Consumption pro Linux a nejde ji nastavit pro aplikace spuštěné ve verzi 1.x služby Azure Functions. Pokud používáte verzi 1.x, musíte nejprve migrovat na verzi 4.x.

Povolení ověřování/autorizace služby App Service

Platforma App Service umožňuje k ověřování klientů používat ID Microsoft Entra a několik zprostředkovatelů identity třetích stran. Tuto strategii můžete použít k implementaci vlastních autorizačních pravidel pro vaše funkce a můžete pracovat s informacemi o uživateli z kódu funkce. Další informace najdete v tématu Ověřování a autorizace ve službě Aplikace Azure Service a práce s identitami klientů.

Použití služby Azure API Management (APIM) k ověřování požadavků

APIM poskytuje různé možnosti zabezpečení rozhraní API pro příchozí požadavky. Další informace najdete v tématu Zásady ověřování služby API Management. Pomocí služby APIM můžete nakonfigurovat aplikaci funkcí tak, aby přijímala požadavky pouze z IP adresy vaší instance APIM. Další informace najdete v tématu Omezení IP adres.

Oprávnění

Stejně jako u jakékoli aplikace nebo služby je cílem spustit aplikaci funkcí s nejnižšími možnými oprávněními.

Oprávnění pro správu uživatelů

Functions podporuje integrované řízení přístupu na základě role v Azure (Azure RBAC). Role Azure podporované funkcí jsou Přispěvatel, Vlastník a Čtenář.

Oprávnění jsou platná na úrovni aplikace funkcí. Role Přispěvatel je nutná k provádění většiny úloh na úrovni aplikace funkcí. K zobrazení dat protokolu v Application Insights potřebujete také roli Přispěvatel spolu s oprávněním Čtenář monitorování. Aplikaci funkcí může odstranit jenom role vlastníka.

Uspořádání funkcí podle oprávnění

Připojovací řetězce a další přihlašovací údaje uložené v nastavení aplikace poskytují všem funkcím v aplikaci funkcí stejnou sadu oprávnění v přidruženém prostředku. Zvažte minimalizaci počtu funkcí s přístupem ke konkrétním přihlašovacím údajům přesunutím funkcí, které tyto přihlašovací údaje nepoužívají do samostatné aplikace funkcí. K předávání dat mezi funkcemi v různých aplikacích funkcí můžete vždy použít techniky, jako je řetězení funkcí.

Spravované identity

Spravovaná identita z Microsoft Entra ID umožňuje vaší aplikaci snadný přístup k dalším prostředkům chráněným Microsoft Entra, jako je Azure Key Vault. Identitu spravuje platforma Azure a nevyžaduje, abyste zřizovali nebo rotovali tajné kódy. Další informace o spravovaných identitách v Microsoft Entra ID najdete v tématu Spravované identity pro prostředky Azure.

Vaší aplikaci je možné udělit dva typy identit:

  • Identita přiřazená systémem je svázaná s aplikací a je odstraněna, pokud je aplikace odstraněna. Aplikace může mít pouze jednu identitu přiřazenou systémem.
  • Identita přiřazená uživatelem je samostatný prostředek Azure, který je možné přiřadit k vaší aplikaci. Aplikace může mít více identit přiřazených uživatelem a jednu identitu přiřazenou uživatelem je možné přiřadit k více prostředkům Azure, jako jsou dvě aplikace App Service.

Spravované identity je možné použít místo tajných kódů pro připojení z některých triggerů a vazeb. Viz Připojení založená na identitě.

Další informace najdete v tématu Použití spravovaných identit pro App Service a Azure Functions.

Omezení přístupu CORS

Sdílení prostředků mezi zdroji (CORS) je způsob, jak umožnit webovým aplikacím běžícím v jiné doméně provádět požadavky na koncové body triggeru HTTP. App Service poskytuje integrovanou podporu pro předání požadovaných hlaviček CORS v požadavcích HTTP. Pravidla CORS jsou definována na úrovni aplikace funkcí.

I když je lákavé použít zástupný znak, který umožňuje všem webům přístup k vašemu koncovému bodu, tento přístup porazí účel CORS, což je pomoct zabránit útokům na skriptování mezi weby. Místo toho přidejte samostatnou položku CORS pro doménu každé webové aplikace, která musí přistupovat k vašemu koncovému bodu.

Správa tajných kódů

Aby se mohly připojit k různým službám a prostředkům potřebným ke spuštění kódu, musí mít aplikace funkcí přístup k tajným kódům, jako jsou připojovací řetězec a klíče služby. Tato část popisuje, jak ukládat tajné kódy vyžadované vašimi funkcemi.

Nikdy neukládejte tajné kódy do kódu funkce.

Nastavení aplikace

Ve výchozím nastavení ukládáte připojovací řetězec a tajné kódy používané aplikací funkcí a vazby jako nastavení aplikace. Díky tomu jsou tyto přihlašovací údaje k dispozici pro kód funkce i různé vazby používané funkcí. Název nastavení aplikace (klíč) slouží k načtení skutečné hodnoty, což je tajný klíč.

Například každá aplikace funkcí vyžaduje přidružený účet úložiště, který používá modul runtime. Ve výchozím nastavení je připojení k tomuto účtu úložiště uloženo v nastavení aplikace s názvem AzureWebJobsStorage.

Nastavení aplikací a připojovací řetězec se ukládají zašifrované v Azure. Dešifrují se jenom před vložením do paměti procesu vaší aplikace při spuštění aplikace. Šifrovací klíče se pravidelně obměňují. Pokud dáváte přednost správě zabezpečeného úložiště tajných kódů, mělo by být nastavení aplikace odkazy na tajné kódy služby Azure Key Vault.

Nastavení můžete ve výchozím nastavení zašifrovat také v local.settings.json souboru při vývoji funkcí na místním počítači. Další informace najdete v tématu Šifrování místního souboru nastavení.

Reference ke službě Key Vault

I když pro většinu funkcí stačí nastavení aplikace, můžete chtít sdílet stejné tajné kódy napříč několika službami. V takovém případě má redundantní úložiště tajných kódů za následek větší potenciální ohrožení zabezpečení. Bezpečnějším přístupem je použití centrální služby úložiště tajných kódů a použití odkazů na tuto službu místo samotných tajných kódů.

Azure Key Vault je služba, která poskytuje centralizovanou správu tajných kódů s plnou kontrolou nad zásadami přístupu a historií auditu. Odkaz služby Key Vault můžete použít na místě připojovací řetězec nebo klíče v nastavení aplikace. Další informace najdete v tématu Použití referencí ke službě Key Vault pro App Service a Azure Functions.

Připojení založená na identitách

Identity se můžou používat místo tajných kódů pro připojení k některým prostředkům. To má výhodu, že nevyžaduje správu tajného kódu a poskytuje jemněji odstupňované řízení přístupu a auditování.

Když píšete kód, který vytváří připojení ke službám Azure, které podporují ověřování Microsoft Entra, můžete místo tajného kódu nebo připojovací řetězec použít identitu. Podrobnosti o obou metodách připojení najdete v dokumentaci pro každou službu.

Některá rozšíření vazeb Azure Functions je možné nakonfigurovat pro přístup ke službám pomocí připojení založených na identitě. Další informace najdete v tématu Konfigurace připojení založeného na identitě.

Nastavení kvót využití

Zvažte nastavení kvóty využití pro funkce spuštěné v plánu Consumption. Když nastavíte denní limit GB za sekundu pro celkové spouštění funkcí ve vaší aplikaci funkcí, při dosažení limitu se zastaví provádění. To by mohlo potenciálně pomoct zmírnit riziko, že vaše funkce spouští škodlivý kód. Informace o odhadu spotřeby pro vaše funkce najdete v tématu Odhad nákladů na plán Consumption.

Ověření dat

Triggery a vazby používané funkcemi neposkytují žádné další ověření dat. Váš kód musí ověřit všechna data přijatá z triggeru nebo vstupní vazby. Pokud dojde k ohrožení zabezpečení upstreamové služby, nechcete, aby vaše funkce procházely nevalidovanými vstupy. Pokud například vaše funkce ukládá data z fronty Azure Storage do relační databáze, musíte data ověřit a parametrizovat příkazy, aby se zabránilo útokům prostřednictvím injektáže SQL.

Nepředpokládáme, že data přicházející do vaší funkce již byla ověřena nebo upravena. Je také vhodné ověřit, jestli jsou data zapsaná do výstupních vazeb platná.

Zpracování chyb

I když to vypadá jako základní, je důležité ve svých funkcích napsat dobré zpracování chyb. Neošetřené chyby bubliny až do hostitele a jsou zpracovávány modulem runtime. Různé vazby zpracovávají zpracování chyb odlišně. Další informace najdete v tématu Zpracování chyb ve službě Azure Functions.

Zakázání vzdáleného ladění

Ujistěte se, že je vzdálené ladění zakázané, s výjimkou případů, kdy aktivně ladíte funkce. Vzdálené ladění můžete zakázat na kartě Obecné nastavení aplikace funkcí na portálu.

Omezení přístupu CORS

Azure Functions podporuje sdílení prostředků mezi zdroji (CORS). CORS se konfiguruje na portálu a prostřednictvím Azure CLI. Seznam povolených zdrojů CORS se vztahuje na úrovni aplikace funkcí. S povoleným CORS zahrnují odpovědi hlavičku Access-Control-Allow-Origin . Další informace naleznete v tématu Sdílení prostředků různého původu.

Nepoužívejte v seznamu povolených původů zástupné cardy. Místo toho uveďte konkrétní domény, ze kterých očekáváte získání požadavků.

Ukládání šifrovaných dat

Azure Storage šifruje všechna neaktivní uložená data v účtu úložiště. Další informace najdete v tématu Šifrování služby Azure Storage pro neaktivní uložená data.

Ve výchozím nastavení se data šifrují pomocí klíčů spravovaných Microsoftem. Pro další kontrolu nad šifrovacími klíči můžete zadat klíče spravované zákazníkem, které se použijí k šifrování dat objektů blob a souborů. Tyto klíče musí být k dispozici ve službě Azure Key Vault, aby služba Functions mohla získat přístup k účtu úložiště. Další informace najdete v tématu Šifrování neaktivních uložených dat pomocí klíčů spravovaných zákazníkem.

Aplikace funkcí často závisí na dalších prostředcích, takže součástí zabezpečení aplikace je zabezpečení těchto externích prostředků. Minimálně většina aplikací funkcí zahrnuje závislost na Application Insights a Azure Storage. Pokyny k zabezpečení těchto prostředků najdete v standardních hodnotách zabezpečení Azure pro Azure Monitor a standardních hodnotách zabezpečení Azure pro službu Storage.

Důležité

Účet úložiště slouží k ukládání důležitých dat aplikace, někdy včetně samotného kódu aplikace. Přístup z jiných aplikací a uživatelů byste měli omezit na účet úložiště.

Měli byste se také podívat na pokyny pro všechny typy prostředků, na které vaše logika aplikace závisí, a to jak jako triggery, tak vazby i z kódu funkce.

Zabezpečené nasazení

Integrace nástrojů Azure Functions usnadňuje publikování kódu projektu místních funkcí do Azure. Při zvažování zabezpečení topologie Azure Functions je důležité pochopit, jak funguje nasazení.

Přihlašovací údaje pro nasazení

Nasazení služby App Service vyžadují sadu přihlašovacích údajů nasazení. Tyto přihlašovací údaje pro nasazení se používají k zabezpečení nasazení aplikací funkcí. Přihlašovací údaje pro nasazení jsou spravované platformou služby App Service a jsou neaktivní neaktivní zašifrované.

Existují dva druhy přihlašovacích údajů nasazení:

  • Přihlašovací údaje na úrovni uživatele: jedna sada přihlašovacích údajů pro celý účet Azure. Dá se použít k nasazení do služby App Service pro libovolnou aplikaci v libovolném předplatném, ke kterému má účet Azure oprávnění pro přístup. Jedná se o výchozí sadu, která se zobrazí v grafickém uživatelském rozhraní portálu (například Přehled a Vlastnosti stránky prostředků aplikace). Když je uživateli udělen přístup k aplikaci prostřednictvím řízení přístupu na základě role (RBAC) nebo oprávnění spolusprávce, může tento uživatel používat své vlastní přihlašovací údaje na úrovni uživatele, dokud se přístup neodvolá. Tyto přihlašovací údaje nesdílejte s ostatními uživateli Azure.

  • Přihlašovací údaje na úrovni aplikace: jedna sada přihlašovacích údajů pro každou aplikaci. Dá se použít jenom k nasazení do této aplikace. Přihlašovací údaje pro každou aplikaci se automaticky vygenerují při vytváření aplikace. Není možné je konfigurovat ručně, ale můžete je kdykoli resetovat. Aby měl uživatel udělený přístup k přihlašovacím údajům na úrovni aplikace (RBAC), musí být v aplikaci přispěvatelem nebo vyšší (včetně předdefinované role Přispěvatel webu). Čtenáři nemůžou publikovat a nemají přístup k těmto přihlašovacím údajům.

V tuto chvíli se pro přihlašovací údaje nasazení nepodporuje služba Key Vault. Další informace o správě přihlašovacích údajů nasazení najdete v tématu Konfigurace přihlašovacích údajů nasazení pro službu Aplikace Azure Service.

Zakázání FTP

Ve výchozím nastavení má každá aplikace funkcí povolený koncový bod FTP. Koncový bod FTP se přistupuje pomocí přihlašovacích údajů nasazení.

Ftp se nedoporučuje pro nasazení kódu funkce. Nasazení FTP jsou ruční a vyžadují synchronizaci triggerů. Další informace najdete v tématu Nasazení FTP.

Pokud nechcete používat PROTOKOL FTP, měli byste ho zakázat na portálu. Pokud se rozhodnete používat protokol FTP, měli byste vynutit ftps.

Zabezpečení koncového scm bodu

Každá aplikace funkcí má odpovídající scm koncový bod služby, který používá služba Advanced Tools (Kudu) pro nasazení a další rozšíření webu služby App Service. Koncový scm bod aplikace funkcí je vždy adresa URL ve formuláři https://<FUNCTION_APP_NAME>.scm.azurewebsites.net. Pokud k zabezpečení funkcí používáte izolaci sítě, musíte pro tento koncový bod také počítat.

Když máte samostatný scm koncový bod, můžete řídit nasazení a další funkce Advanced Tools pro aplikace funkcí, které jsou izolované nebo spuštěné ve virtuální síti. Koncový scm bod podporuje základní ověřování (pomocí přihlašovacích údajů nasazení) i jednotné přihlašování pomocí přihlašovacích údajů webu Azure Portal. Další informace najdete v tématu Přístup ke službě Kudu.

Průběžné ověřování zabezpečení

Vzhledem k tomu, že je potřeba zvážit zabezpečení v každém kroku procesu vývoje, je vhodné implementovat také ověřování zabezpečení v prostředí průběžného nasazování. Někdy se tomu říká DevSecOps. Pomocí Azure DevOps pro váš kanál nasazení můžete integrovat ověřování do procesu nasazení. Další informace najdete v tématu Přidání průběžného ověřování zabezpečení do kanálu CI/CD.

Zabezpečení sítě

Omezení síťového přístupu k vaší aplikaci funkcí umožňuje řídit, kdo má přístup k vašim koncovým bodům funkcí. Funkce využívají infrastrukturu služby App Service, která umožňuje vašim funkcím přístup k prostředkům bez použití internetových směrovatelných adres nebo omezení přístupu k internetu ke koncovému bodu funkce. Další informace o těchtomožnostch

Nastavení omezení přístupu

Omezení přístupu umožňují definovat seznamy pravidel povolení a zamítnutí pro řízení provozu do vaší aplikace. Pravidla se vyhodnocují v pořadí priority. Pokud nejsou definována žádná pravidla, vaše aplikace přijme provoz z libovolné adresy. Další informace najdete v tématu Aplikace Azure Omezení přístupu ke službě.

Zabezpečení účtu úložiště

Když vytváříte aplikaci funkcí, musíte vytvořit nebo propojit účet Azure Storage pro obecné účely, který podporuje službu Blob, Queue a Table Storage. Tento účet úložiště můžete nahradit účtem, který je zabezpečený virtuální sítí s přístupem povoleným koncovými body služby nebo privátními koncovými body. Další informace najdete v části Omezení účtu úložiště na virtuální síť.

Nasazení aplikace funkcí do virtuální sítě

Služba Azure Private Endpoint je síťové rozhraní, které umožňuje soukromé a bezpečné připojení ke službě, která používá technologii Azure Private Link. Privátní koncový bod používá privátní IP adresu vaší virtuální sítě a tím vlastně přináší službu do vaší virtuální sítě.

Privátní koncový bod můžete použít pro funkce hostované v plánech Premium a App Service .

Pokud chcete volat privátní koncové body, musíte se ujistit, že se vyhledávání DNS přeloží na privátní koncový bod. Toto chování můžete vynutit jedním z následujících způsobů:

  • Integrace s privátními zónami Azure DNS Pokud vaše virtuální síť nemá vlastní server DNS, provede se to automaticky.
  • Spravujte privátní koncový bod na serveru DNS používaném vaší aplikací. K tomu musíte znát adresu privátního koncového bodu a pak nasměrovat koncový bod, ke kterému se pokoušíte připojit pomocí záznamu A.
  • Nakonfigurujte vlastní server DNS tak, aby předával privátní zóny Azure DNS.

Další informace najdete v tématu Použití privátních koncových bodů pro Web Apps.

Nasazení aplikace funkcí izolovaně

Aplikace Azure Service Environment poskytuje vyhrazené hostitelské prostředí, ve kterém můžete spouštět funkce. Tato prostředí umožňují nakonfigurovat jednu front-endovou bránu, kterou můžete použít k ověření všech příchozích požadavků. Další informace najdete v tématu Konfigurace firewallu webových aplikací (WAF) pro službu App Service Environment.

Použití služby brány

Služby brány, jako je Aplikace Azure lication Gateway a Azure Front Door, umožňují nastavit firewall webových aplikací (WAF). Pravidla WAF slouží k monitorování nebo blokování zjištěných útoků, které poskytují další vrstvu ochrany vašich funkcí. Pokud chcete nastavit WAF, musí vaše aplikace funkcí běžet v ASE nebo používat privátní koncové body (Preview). Další informace najdete v tématu Použití privátních koncových bodů.

Další kroky