Zabezpečení aplikací a služeb Service Fabric

Architektura mikroslužeb může přinést mnoho výhod. Správa zabezpečení mikroslužeb je ale výzvou a liší se od správy zabezpečení tradičních monolitických aplikací.

U monolitické aplikace obvykle běží na jednom nebo několika serverech v síti a je jednodušší identifikovat vystavené porty a rozhraní API a IP adresu. Často existuje jedna hraniční síť nebo hranice a jedna databáze, která se má chránit. Pokud je tento systém ohrožen z důvodu porušení zabezpečení nebo útoku, je pravděpodobné, že útočníkovi bude k dispozici všechno v rámci systému. U mikroslužeb je systém složitější. Služby jsou decentralizované a distribuované napříč mnoha hostiteli a migrují se z hostitele na hostitele. Se správným zabezpečením omezíte oprávnění, která útočník může získat, a množství dat dostupných v jednom útoku porušením jedné služby. Komunikace není interní, ale probíhá přes síť a mezi službami je mnoho vystavených portů a interakcí. Znalost toho, co jsou tyto interakce služby a kdy k nim dojde, je zásadní pro zabezpečení vaší aplikace.

Tento článek není průvodce zabezpečením mikroslužeb, existuje mnoho takových prostředků, které jsou k dispozici online, ale popisuje, jak lze v Service Fabric dosáhnout různých aspektů zabezpečení.

Ověřování a autorizace

Často je nutné, aby prostředky a rozhraní API vystavená službou byly omezeny na určité důvěryhodné uživatele nebo klienty. Ověřování je proces spolehlivého zjišťování identity uživatele. Autorizace je proces, který zpřístupňuje rozhraní API nebo služby některým ověřeným uživatelům, ale ne jiným.

Authentication

Prvním krokem při rozhodování o důvěryhodnosti na úrovni rozhraní API je ověřování. Ověřování je proces spolehlivého zjišťování identity uživatele. Ve scénářích mikroslužeb se ověřování obvykle zpracovává centrálně. Pokud používáte bránu rozhraní API, můžete na bránu přesměrovat ověřování . Pokud používáte tento přístup, ujistěte se, že jednotlivé služby nejsou dostupné přímo (bez brány rozhraní API), pokud není k ověření zpráv, ať už pocházejí z brány, nebo ne.

Pokud je možné přistupovat přímo ke službám, je možné k ověřování uživatelů použít ověřovací službu, jako je Microsoft Entra ID nebo vyhrazená ověřovací mikroslužba fungující jako služba tokenů zabezpečení (STS). Rozhodnutí o důvěryhodnosti se sdílí mezi službami s tokeny zabezpečení nebo soubory cookie.

Pro ASP.NET Core je primárním mechanismem ověřování uživatelů systém členství ASP.NET Core Identity. ASP.NET Core Identity ukládá informace o uživatelích (včetně přihlašovacích informací, rolí a deklarací identity) do úložiště dat nakonfigurovaného vývojářem. ASP.NET Core Identity podporuje dvoufaktorové ověřování. Podporují se také externí zprostředkovatelé ověřování, takže se uživatelé můžou přihlásit pomocí existujících ověřovacích procesů od poskytovatelů, jako jsou Microsoft, Google, Facebook nebo Twitter.

Autorizace

Po ověření musí služby autorizovat přístup uživatelů nebo určit, co může uživatel dělat. Tento proces umožňuje službě zpřístupnit rozhraní API některým ověřeným uživatelům, ale ne všem. Autorizace je orthogonální a nezávislá na ověřování, což je proces zjišťování, kdo je uživatel. Ověřování může vytvořit jednu nebo více identit pro aktuálního uživatele.

ASP.NET autorizace jádra je možné provádět na základě rolí uživatelů nebo na základě vlastních zásad, které můžou zahrnovat kontrolu deklarací identity nebo jiných heuristiek.

Omezení a zabezpečení přístupu pomocí brány rozhraní API

Cloudové aplikace obvykle potřebují front-end bránu, která poskytuje jediný bod příjmu příchozího přenosu od uživatelů, zařízení nebo dalších aplikací. Brána rozhraní API se nachází mezi klienty a službami a je vstupním bodem všech služeb, které vaše aplikace poskytuje. Funguje jako reverzní proxy server a směruje požadavky klientů na služby. Může také provádět různé křížové úlohy, jako je ověřování a autorizace, ukončení protokolu TLS a omezování rychlosti. Pokud bránu nenasazujete, klienti musí odesílat požadavky přímo do front-endových služeb.

V Service Fabric může být brána libovolná bezstavová služba, jako je aplikace ASP.NET Core nebo jiná služba navržená pro příchozí přenos dat, jako je Traefik, Event Hubs, IoT Hub nebo Azure API Management.

Služba API Management se integruje přímo se Service Fabric a umožňuje publikovat rozhraní API s bohatou sadou pravidel směrování do back-endových služeb Service Fabric. Můžete zabezpečit přístup k back-endovým službám, zabránit útokům DOS pomocí omezování nebo ověřit klíče rozhraní API, tokeny JWT, certifikáty a další přihlašovací údaje. Další informace najdete v tématu Service Fabric s přehledem služby Azure API Management.

Správa tajných klíčů aplikací

Tajné kódy můžou být jakékoli citlivé informace, jako jsou připojovací řetězec úložiště, hesla nebo jiné hodnoty, které by neměly být zpracovávány ve formátu prostého textu. Tento článek používá službu Azure Key Vault ke správě klíčů a tajných kódů. Použití tajných kódů v aplikaci je však nezávislé na cloudové platformě, aby bylo možné aplikace nasadit do clusteru hostovaného kdekoli.

Doporučený způsob správy nastavení konfigurace služby je prostřednictvím balíčků konfigurace služby. Konfigurační balíčky jsou verze a aktualizovatelné prostřednictvím spravovaných kumulativních upgradů s ověřováním stavu a automatickým vrácením zpět. Tato možnost se upřednostňuje pro globální konfiguraci, protože snižuje riziko výpadku globální služby. Šifrované tajné kódy nejsou výjimkou. Service Fabric má integrované funkce pro šifrování a dešifrování hodnot v konfiguračním balíčku Nastavení.xml pomocí šifrování certifikátu.

Následující diagram znázorňuje základní tok správy tajných kódů v aplikaci Service Fabric:

secret management overview

V tomto toku jsou čtyři hlavní kroky:

  1. Získejte certifikát šifrování dat.
  2. Nainstalujte certifikát do clusteru.
  3. Zašifrujte hodnoty tajných kódů při nasazování aplikace pomocí certifikátu a vložte je do konfiguračního souboru služby Nastavení.xml.
  4. Čtení šifrovaných hodnot z Nastavení.xml dešifrováním pomocí stejného certifikátu šifrování.

Azure Key Vault se zde používá jako bezpečné umístění úložiště pro certifikáty a jako způsob, jak získat certifikáty nainstalované v clusterech Service Fabric v Azure. Pokud do Azure nenasazujete, nemusíte ke správě tajných kódů v aplikacích Service Fabric používat službu Key Vault.

Příklad najdete v tématu Správa tajných kódů aplikací.

Zabezpečení hostitelského prostředí

Pomocí Azure Service Fabric můžete zabezpečit aplikace spuštěné v clusteru v různých uživatelských účtech. Service Fabric také pomáhá zabezpečit prostředky, které aplikace používají v době nasazení v rámci uživatelských účtů– například soubory, adresáře a certifikáty. Díky tomu jsou spuštěné aplikace, a to i ve sdíleném hostovaném prostředí, zabezpečenější od sebe.

Manifest aplikace deklaruje objekty zabezpečení (uživatelé a skupiny) požadované spuštění služeb a zabezpečených prostředků. Tyto objekty zabezpečení se odkazují v zásadách, například na vazbu typu run-as, na vazby koncového bodu, sdílení balíčků nebo na zásady přístupu k zabezpečení. Zásady se pak použijí na prostředky služby v části ServiceManifestImport manifestu aplikace.

Při deklarování objektů zabezpečení můžete také definovat a vytvářet skupiny uživatelů, aby jeden nebo více uživatelů bylo možné přidat do každé skupiny, které se mají spravovat společně. To je užitečné, když existuje více uživatelů pro různé vstupní body služby a potřebují mít určitá běžná oprávnění, která jsou k dispozici na úrovni skupiny.

Aplikace Service Fabric ve výchozím nastavení běží pod účtem, pod kterým běží proces Fabric.exe. Service Fabric také poskytuje možnost spouštět aplikace pod místním uživatelským účtem nebo místním systémovým účtem, který je zadaný v manifestu aplikace. Další informace najdete v tématu Spuštění služby jako místního uživatelského účtu nebo místního systémového účtu. Spouštěcí skript služby můžete spustit také jako místní uživatelský nebo systémový účet.

Když používáte Service Fabric v samostatném clusteru s Windows, můžete službu spustit v rámci účtů domény služby Active Directory nebo skupinových účtů spravovaných služeb.

Zabezpečené kontejnery

Service Fabric poskytuje mechanismus pro služby uvnitř kontejneru pro přístup k certifikátu nainstalovanému na uzlech v clusteru s Windows nebo Linuxem (verze 5.7 nebo vyšší). Tento certifikát PFX lze použít k ověřování aplikace nebo služby nebo k zabezpečené komunikaci s jinými službami. Další informace najdete v tématu Import certifikátu do kontejneru.

Service Fabric navíc podporuje gMSA (skupinové účty spravovaných služeb) pro kontejnery Windows. Další informace naleznete v tématu Nastavení gMSA pro kontejnery Windows.

Zabezpečená komunikace se službami

V Service Fabric běží služba někde v clusteru Service Fabric, obvykle distribuovaná napříč několika virtuálními počítači. Service Fabric nabízí několik možností zabezpečení komunikace služeb.

Koncové body HTTPS můžete povolit ve webových službách ASP.NET Core nebo Java .

Můžete navázat zabezpečené připojení mezi reverzním proxy serverem a službami, čímž umožníte koncovému koncovému zabezpečenému kanálu. Připojení zabezpečené služby se podporují jenom v případech, kdy je reverzní proxy server nakonfigurovaný tak, aby naslouchal https. Informace o konfiguraci reverzního proxy serveru najdete v tématu Reverzní proxy server v Azure Service Fabric. Připojení k zabezpečené službě popisuje, jak navázat zabezpečené připojení mezi reverzním proxy serverem a službami.

Aplikační architektura Reliable Services poskytuje několik předem připravených komunikačních zásobníků a nástrojů, které můžete použít ke zlepšení zabezpečení. Zjistěte, jak zlepšit zabezpečení při používání vzdálené komunikace služby (v C# nebo Javě) nebo pomocí WCF.

Zahrnutí certifikátu koncového bodu do aplikací Service Fabric

Pokud chcete nakonfigurovat certifikát koncového bodu aplikace, zahrňte certifikát přidáním elementu EndpointCertificate spolu s elementem User pro hlavní účet do manifestu aplikace. Ve výchozím nastavení je hlavní účet NetworkService. Tím zajistíte správu seznamu ACL privátního klíče certifikátu aplikace pro zadaný objekt zabezpečení.

<ApplicationManifest … >
  ...
  <Principals>
    <Users>
      <User Name="Service1" AccountType="NetworkService" />
    </Users>
  </Principals>
  <Certificates>
    <EndpointCertificate Name="MyCert" X509FindType="FindByThumbprint" X509FindValue="[YourCertThumbprint]"/>
  </Certificates>
</ApplicationManifest>

Šifrování neaktivních uložených dat aplikace

Každý typ uzlu v clusteru Service Fabric spuštěném v Azure využívá škálovací sadu virtuálních počítačů. Pomocí šablony Azure Resource Manageru můžete připojit datové disky ke škálovacím sadám, ze kterých se skládá cluster Service Fabric. Pokud vaše služby ukládají data na připojený datový disk, můžete tyto datové disky zašifrovat za účelem ochrany dat vaší aplikace.

Další kroky