Zabezpečení služby Azure Service Fabric

Další informace o osvědčených postupech zabezpečení Azure najdete v osvědčených postupech zabezpečení Azure Service Fabric.

Key Vault

Azure Key Vault je doporučená služba správy tajných kódů pro aplikace a clustery Azure Service Fabric.

Poznámka:

Pokud jsou certifikáty nebo tajné kódy ze služby Key Vault nasazené do škálovací sady virtuálních počítačů jako tajný klíč škálovací sady virtuálních počítačů, musí být služba Key Vault a škálovací sada virtuálních počítačů společně umístěné.

Vytvoření certifikátu vydaného certifikátu Service Fabric

Certifikát služby Azure Key Vault je možné vytvořit nebo importovat do služby Key Vault. Když se vytvoří certifikát služby Key Vault, privátní klíč se vytvoří uvnitř služby Key Vault a nikdy není vystavený vlastníkovi certifikátu. Tady jsou způsoby vytvoření certifikátu ve službě Key Vault:

  • Vytvořte certifikát podepsaný svým držitelem a vytvořte pár veřejného privátního klíče a přidružte ho k certifikátu. Certifikát se podepíše vlastním klíčem.
  • Vytvořte nový certifikát ručně pro vytvoření páru veřejného a privátního klíče a vygenerujte žádost o podepsání certifikátu X.509. Podpisový požadavek může podepsat vaše registrační autorita nebo certifikační autorita. Podepsaný certifikát x509 je možné sloučit s párem čekajících klíčů a dokončit certifikát KV ve službě Key Vault. I když tato metoda vyžaduje více kroků, poskytuje větší zabezpečení, protože privátní klíč je vytvořen v Key Vaultu a omezen na něj. To je vysvětleno v následujícím diagramu.

Další podrobnosti najdete v metodách vytváření certifikátů služby Azure Keyvault.

Nasazení certifikátů služby Key Vault do škálovacích sad virtuálních počítačů clusteru Service Fabric

Pokud chcete nasadit certifikáty ze společně umístěného klíče do škálovací sady virtuálních počítačů, použijte osProfile škálovací sady virtuálních počítačů. Vlastnosti šablony Resource Manageru jsou následující:

"secrets": [
   {
       "sourceVault": {
           "id": "[parameters('sourceVaultValue')]"
       },
       "vaultCertificates": [
          {
              "certificateStore": "[parameters('certificateStoreValue')]",
              "certificateUrl": "[parameters('certificateUrlValue')]"
          }
       ]
   }
]

Poznámka:

Trezor musí být povolený pro nasazení šablon Resource Manageru.

Použití seznamu řízení přístupu (ACL) na certifikát pro váš cluster Service Fabric

Rozšíření škálovací sady virtuálních počítačů vydavatele Microsoft.Azure.ServiceFabric slouží ke konfiguraci zabezpečení uzlů. Pokud chcete použít seznam ACL pro vaše certifikáty pro procesy clusteru Service Fabric, použijte následující vlastnosti šablony Resource Manageru:

"certificate": {
   "commonNames": [
       "[parameters('certificateCommonName')]"
   ],
   "x509StoreName": "[parameters('certificateStoreValue')]"
}

Zabezpečení certifikátu clusteru Service Fabric podle běžného názvu

K zabezpečení clusteru Service Fabric podle certifikátu Common Namepoužijte certifikát vlastnosti šablony Resource ManageruCommonNames následujícím způsobem:

"certificateCommonNames": {
    "commonNames": [
        {
            "certificateCommonName": "[parameters('certificateCommonName')]",
            "certificateIssuerThumbprint": "[parameters('certificateIssuerThumbprint')]"
        }
    ],
    "x509StoreName": "[parameters('certificateStoreValue')]"
}

Poznámka:

Clustery Service Fabric budou používat první platný certifikát, který najde v úložišti certifikátů vašeho hostitele. Ve Windows to bude certifikát s nejnovějším datem vypršení platnosti, které odpovídá vašemu společnému názvu a kryptografickému otisku vystavitele.

Domény Azure, například *<YOUR SUBDOMAIN.cloudapp.azure.com nebo <YOUR SUBDOMAIN.trafficmanager.net>>, vlastní Microsoft. Certifikační autority nevydá certifikáty pro domény neoprávněným uživatelům. Většina uživatelů bude muset koupit doménu od registrátora nebo být autorizovaným správcem domény, aby vám certifikační autorita vydá certifikát s tímto běžným názvem.

Další podrobnosti o tom, jak nakonfigurovat službu DNS tak, aby přeložil vaši doménu na IP adresu Microsoftu, najdete v tématu konfigurace Azure DNS pro hostování vaší domény.

Poznámka:

Po delegování názvových serverů domén na názvové servery zóny Azure DNS přidejte do zóny DNS následující dva záznamy:

  • Záznam A pro doménu APEX, který není určen Alias record set pro všechny IP adresy, se vaše vlastní doména přeloží.
  • Záznam "C" pro subdoména Microsoftu, které jste zřídili, které nejsou .Alias record set Můžete například použít název DNS Traffic Manageru nebo Load Balanceru.

Pokud chcete aktualizovat portál tak, aby zobrazoval vlastní název DNS pro váš cluster "managementEndpoint"Service Fabric, aktualizujte následující vlastnosti šablony Service Fabric Cluster Resource Manageru:

 "managementEndpoint": "[concat('https://<YOUR CUSTOM DOMAIN>:',parameters('nt0fabricHttpGatewayPort'))]",

Šifrování hodnot tajných kódů balíčku Service Fabric

Mezi běžné hodnoty, které jsou šifrované v balíčcích Service Fabric, patří přihlašovací údaje služby Azure Container Registry (ACR), proměnné prostředí, nastavení a klíče účtu úložiště modulu plug-in Azure Volume.

Nastavení šifrovacího certifikátu a šifrování tajných kódů v clusterech s Windows:

Vygenerujte certifikát podepsaný svým držitelem pro šifrování tajného kódu:

New-SelfSignedCertificate -Type DocumentEncryptionCert -KeyUsage DataEncipherment -Subject mydataenciphermentcert -Provider 'Microsoft Enhanced Cryptographic Provider v1.0'

Pomocí pokynů v tématu Nasazení certifikátů služby Key Vault do škálovacích sad virtuálních počítačů clusteru Service Fabric nasaďte certifikáty služby Key Vault do škálovacích sad virtuálních počítačů clusteru Service Fabric.

Tajný kód zašifrujte pomocí následujícího příkazu PowerShellu a pak aktualizujte manifest aplikace Service Fabric zašifrovanou hodnotou:

Invoke-ServiceFabricEncryptText -CertStore -CertThumbprint "<thumbprint>" -Text "mysecret" -StoreLocation CurrentUser -StoreName My

Nastavení šifrovacího certifikátu a šifrování tajných kódů v clusterech s Linuxem:

Vygenerujte certifikát podepsaný svým držitelem pro šifrování tajných kódů:

openssl req -newkey rsa:2048 -nodes -keyout TestCert.prv -x509 -days 365 -out TestCert.pem
cat TestCert.prv >> TestCert.pem

Postupujte podle pokynů v tématu Nasazení certifikátů služby Key Vault do škálovacích sad virtuálních počítačů clusteru Service Fabric do škálovacích sad virtuálních počítačů vašeho clusteru Service Fabric.

Zašifrujte tajný klíč pomocí následujících příkazů a pak aktualizujte manifest aplikace Service Fabric zašifrovanou hodnotou:

echo "Hello World!" > plaintext.txt
iconv -f ASCII -t UTF-16LE plaintext.txt -o plaintext_UTF-16.txt
openssl smime -encrypt -in plaintext_UTF-16.txt -binary -outform der TestCert.pem | base64 > encrypted.txt

Po zašifrování chráněných hodnot zadejte šifrované tajné kódy v aplikaci Service Fabric a dešifrujte šifrované tajné kódy z kódu služby.

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>

Zahrnutí tajného certifikátu do aplikací Service Fabric

Pokud chcete aplikaci udělit přístup k tajným kódům, zahrňte certifikát přidáním elementu SecretsCertificate do manifestu aplikace.

<ApplicationManifest … >
  ...
  <Certificates>
    <SecretsCertificate Name="MyCert" X509FindType="FindByThumbprint" X509FindValue="[YourCertThumbprint]"/>
  </Certificates>
</ApplicationManifest>

Ověřování aplikací Service Fabric v prostředcích Azure pomocí identity spravované služby (MSI)

Další informace o spravovaných identitách pro prostředky Azure najdete v tématu Co jsou spravované identity pro prostředky Azure? Clustery Azure Service Fabric jsou hostované ve škálovacích sadách virtuálních počítačů, které podporují identitu spravované služby. Pokud chcete získat seznam služeb, ke kterým se dá MSI použít k ověření, podívejte se na služby Azure, které podporují ověřování Microsoft Entra.

Pokud chcete povolit spravovanou identitu přiřazenou systémem při vytváření škálovací sady virtuálních počítačů nebo existující škálovací sady virtuálních počítačů, deklarujte následující "Microsoft.Compute/virtualMachinesScaleSets" vlastnost:

"identity": { 
    "type": "SystemAssigned"
}

Další informace najdete v tématu Co jsou spravované identity pro prostředky Azure?

Pokud jste vytvořili spravovanou identitu přiřazenou uživatelem, deklarujte v šabloně následující prostředek, který ho přiřadí ke škálovací sadě virtuálních počítačů. Nahraďte \<USERASSIGNEDIDENTITYNAME\> názvem spravované identity přiřazené uživatelem, kterou jste vytvořili:

"identity": {
    "type": "userAssigned",
    "userAssignedIdentities": {
        "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('<USERASSIGNEDIDENTITYNAME>'))]": {}
    }
}

Než bude vaše aplikace Service Fabric moct používat spravovanou identitu, musí být udělená oprávnění prostředkům Azure, se kterými se musí ověřit. Následující příkazy udělí přístup k prostředku Azure:

PRINCIPAL_ID=$(az resource show --id /subscriptions/<YOUR SUBSCRIPTON>/resourceGroups/<YOUR RG>/providers/Microsoft.Compute/virtualMachineScaleSets/<YOUR SCALE SET> --api-version 2018-06-01 | python -c "import sys, json; print(json.load(sys.stdin)['identity']['principalId'])")

az role assignment create --assignee $PRINCIPAL_ID --role 'Contributor' --scope "/subscriptions/<YOUR SUBSCRIPTION>/resourceGroups/<YOUR RG>/providers/<PROVIDER NAME>/<RESOURCE TYPE>/<RESOURCE NAME>"

V kódu aplikace Service Fabric získejte přístupový token pro Azure Resource Manager tak, že vytvoříte rest podobně jako v následujícím příkladu:

ACCESS_TOKEN=$(curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -H Metadata:true | python -c "import sys, json; print json.load(sys.stdin)['access_token']")

Aplikace Service Fabric pak může použít přístupový token k ověření prostředků Azure, které podporují Active Directory. Následující příklad ukazuje, jak to udělat pro prostředek Azure Cosmos DB:

COSMOS_DB_PASSWORD=$(curl 'https://management.azure.com/subscriptions/<YOUR SUBSCRIPTION>/resourceGroups/<YOUR RG>/providers/Microsoft.DocumentDB/databaseAccounts/<YOUR ACCOUNT>/listKeys?api-version=2016-03-31' -X POST -d "" -H "Authorization: Bearer $ACCESS_TOKEN" | python -c "import sys, json; print(json.load(sys.stdin)['primaryMasterKey'])")

Standardní hodnoty zabezpečení Windows

Doporučujeme implementovat standardní konfiguraci, která je široce známá a dobře otestovaná, například standardní hodnoty zabezpečení Microsoftu, a ne vytvořit standardní hodnoty sami. Možnost jejich zřízení ve škálovacích sadách virtuálních počítačů spočívá v použití obslužné rutiny rozšíření Azure Desired State Configuration (DSC) ke konfiguraci virtuálních počítačů, jakmile jsou online, takže budou spouštět produkční software.

Azure Firewall

Azure Firewall je spravovaná cloudová služba síťového zabezpečení, která chrání vaše prostředky ve virtuálních sítích Azure. Jde o plně stavovou bránu firewall poskytovanou jako služba s integrovanou vysokou dostupností a neomezenou cloudovou škálovatelností.; to umožňuje omezit odchozí provoz HTTP/S na zadaný seznam plně kvalifikovaných názvů domén (FQDN) včetně zástupných znaků. Tato funkce nevyžaduje ukončení protokolu TLS/SSL. Doporučuje se využít značky plně kvalifikovaného názvu domény služby Azure Firewall pro služba Windows Update a povolit síťový provoz do koncových bodů Microsoft služba Windows Update průchod bránou firewall. Nasazení služby Azure Firewall pomocí šablony poskytuje ukázku pro definici šablony prostředku Microsoft.Network/azureFirewalls. Pravidla brány firewall společná pro aplikace Service Fabric umožňují pro vaši virtuální síť clusterů následující:

  • *download.microsoft.com
  • *servicefabric.azure.com
  • *.core.windows.net

Tato pravidla brány firewall doplňují povolené odchozí skupiny zabezpečení sítě, které by zahrnovaly ServiceFabric a Storage, jako povolené cíle z vaší virtuální sítě.

TLS 1.2

Microsoft Azure doporučuje všem zákazníkům dokončit migraci do řešení, která podporují protokol TLS (Transport Layer Security) 1.2 a ujistěte se, že protokol TLS 1.2 je ve výchozím nastavení používán.

Služby Azure, včetně Service Fabric, dokončily technickou práci na odebrání závislosti na protokolech TLS 1.0/1.1 a poskytují úplnou podporu zákazníkům, kteří chtějí mít nakonfigurované úlohy tak, aby přijímaly a inicializovat pouze připojení TLS 1.2.

Zákazníci by měli nakonfigurovat úlohy hostované v Azure a místní aplikace, které pracují se službami Azure, aby ve výchozím nastavení používaly protokol TLS 1.2. Tady je postup konfigurace uzlů clusteru a aplikací Service Fabric tak, aby používaly konkrétní verzi protokolu TLS.

Windows Defender

Antivirová ochrana v programu Windows Defender je ve výchozím nastavení nainstalovaná na Windows Serveru 2016. Podrobnosti najdete v antivirové ochraně v programu Windows Defender ve Windows Serveru 2016. Uživatelské rozhraní je ve výchozím nastavení nainstalováno v některých skladových posílaných posílacích, ale nevyžaduje se. Pokud chcete snížit dopad na výkon a režii související se spotřebou prostředků v programu Windows Defender, a pokud vaše zásady zabezpečení umožňují vyloučit procesy a cesty pro opensourcový software, deklarujte následující vlastnosti šablony Rozšíření škálovací sady virtuálních počítačů a vyloučíte cluster Service Fabric z kontrol:

 {
    "name": "[concat('VMIaaSAntimalware','_vmNodeType0Name')]",
    "properties": {
        "publisher": "Microsoft.Azure.Security",
        "type": "IaaSAntimalware",
        "typeHandlerVersion": "1.5",
        "settings": {
            "AntimalwareEnabled": "true",
            "Exclusions": {
                "Paths": "[concat(parameters('svcFabData'), ';', parameters('svcFabLogs'), ';', parameters('svcFabRuntime'))]",
                "Processes": "Fabric.exe;FabricHost.exe;FabricInstallerService.exe;FabricSetup.exe;FabricDeployer.exe;ImageBuilder.exe;FabricGateway.exe;FabricDCA.exe;FabricFAS.exe;FabricUOS.exe;FabricRM.exe;FileStoreService.exe;FabricBRS.exe;BackupCopier.exe"
            },
            "RealtimeProtectionEnabled": "true",
            "ScheduledScanSettings": {
                "isEnabled": "true",
                "scanType": "Quick",
                "day": "7",
                "time": "120"
            }
        },
        "protectedSettings": null
    }
}

Poznámka:

Pokud nepoužíváte Program Windows Defender, přečtěte si dokumentaci k antimalwarové dokumentaci ke konfiguračním pravidlům. Windows Defender není v Linuxu podporovaný.

Hostování nedůvěryhodných aplikací v clusteru Service Fabric

Cluster Service Fabric je jedním tenantem podle návrhu a hostované aplikace jsou považovány za důvěryhodné. Aplikace jsou proto uděleny přístup k modulu runtime Service Fabric, který se projevuje v různých formách, mezi které patří : proměnné prostředí odkazující na cesty k souborům na hostiteli odpovídající souborům aplikací a prostředků infrastruktury, cesty hostitele připojené s přístupem k zápisu do úloh kontejneru, koncový bod komunikace mezi procesy, který přijímá požadavky specifické pro aplikaci, a klientský certifikát, který Fabric očekává, že se aplikace použije k ověření.

Pokud uvažujete o hostování nedůvěryhodných aplikací, musíte pro cluster Service Fabric definovat a vlastnit nepřátelské prostředí s více tenanty. To bude vyžadovat, abyste v kontextu vašeho scénáře zvážili několik aspektů, včetně následujících, ale nikoli pouze následujících:

  • Důkladná kontrola zabezpečení interakcí nedůvěryhodných aplikací s jinými aplikacemi, samotného clusteru a základní výpočetní infrastruktury.
  • Použití nejsilnější použitelné technologie sandboxu (např. vhodné režimy izolace pro úlohy kontejnerů).
  • Posouzení rizik nedůvěryhodných aplikací, které uniknou technologii sandboxu, protože dalším vztahem důvěryhodnosti a hranice zabezpečení je samotný cluster.
  • Odebrání přístupu nedůvěryhodných aplikací k modulu runtime Service Fabric

RemoveServiceFabricRuntimeAccess

Přístup k modulu runtime Service Fabric je možné odebrat pomocí následující deklarace v části Zásady manifestu aplikace:

<ServiceManifestImport>
    <Policies>
        <ServiceFabricRuntimeAccessPolicy RemoveServiceFabricRuntimeAccess="true"/>
    </Policies>
</ServiceManifestImport>

Další kroky