Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aby uzyskać więcej informacji na temat najlepszych rozwiązań dotyczących zabezpieczeń platformy Azure, zapoznaj się z artykułem Azure Service Fabric security best practices (Najlepsze rozwiązania dotyczące zabezpieczeń usługi Azure Service Fabric)
Key Vault
Usługa Azure Key Vault to zalecana usługa zarządzania sekretami dla aplikacji i klastrów usługi Azure Service Fabric.
Uwaga
Jeśli certyfikaty/sekrety z usługi Key Vault są wdrażane w zestawie skalowania maszyn wirtualnych jako sekrety zestawu skalowania maszyn wirtualnych, to magazyn kluczy i zestaw skalowania maszyn wirtualnych muszą być zlokalizowane razem.
Utwórz certyfikat Service Fabric wydany przez urząd certyfikacji
Certyfikat usługi Azure Key Vault można utworzyć lub zaimportować do usługi Key Vault. Po utworzeniu certyfikatu usługi Key Vault klucz prywatny jest tworzony w usłudze Key Vault i nigdy nie jest udostępniany właścicielowi certyfikatu. Poniżej przedstawiono sposoby tworzenia certyfikatu w usłudze Key Vault:
- Utwórz certyfikat z podpisem własnym, aby utworzyć parę kluczy publiczny-prywatny i skojarzyć ją z certyfikatem. Certyfikat zostanie podpisany przy użyciu własnego klucza.
- Utwórz nowy certyfikat ręcznie, aby utworzyć parę kluczy publiczny-prywatny i wygenerować żądanie podpisania certyfikatu X.509. Żądanie podpisania może zostać podpisane przez urząd rejestracji lub urząd certyfikacji. Podpisany certyfikat x509 można scalić z oczekującą parą kluczy, aby ukończyć certyfikat KV w usłudze Key Vault. Mimo że ta metoda wymaga więcej kroków, zapewnia większe bezpieczeństwo, ponieważ klucz prywatny jest tworzony w usłudze Key Vault i ograniczony do usługi Key Vault. Zostało to wyjaśnione na poniższym diagramie.
Aby uzyskać więcej informacji, zapoznaj się z metodami tworzenia certyfikatów usługi Azure Keyvault.
Wdrażanie certyfikatów Key Vault do zestawów skalowania maszyn wirtualnych w klastrze Service Fabric
Aby wdrożyć certyfikaty z kolokowanego magazynu kluczy do zestawu skalowania maszyn wirtualnych, użyj zestawu skalowania maszyn wirtualnych osProfile. Poniżej przedstawiono właściwości szablonu usługi Resource Manager:
"secrets": [
{
"sourceVault": {
"id": "[parameters('sourceVaultValue')]"
},
"vaultCertificates": [
{
"certificateStore": "[parameters('certificateStoreValue')]",
"certificateUrl": "[parameters('certificateUrlValue')]"
}
]
}
]
Uwaga
Magazyn musi być aktywowany do wdrożenia szablonu przez Azure Resource Manager.
Stosowanie listy kontroli dostępu (ACL) do certyfikatu dla klastra usługi Service Fabric
Do konfigurowania zabezpieczeń węzłów służy wydawca rozszerzeń zestawu skalowania maszyn wirtualnych Microsoft.Azure.ServiceFabric. Aby zastosować listę ACL do certyfikatów dla procesów klastra usługi Service Fabric, użyj następujących właściwości szablonu usługi Resource Manager:
"certificate": {
"commonNames": [
"[parameters('certificateCommonName')]"
],
"x509StoreName": "[parameters('certificateStoreValue')]"
}
Zabezpiecz certyfikat klastra usługi Service Fabric według nazwy wspólnej
Aby zabezpieczyć klaster Service Fabric za pomocą certyfikatu Common Name, użyj właściwości szablonu Resource Manager certificateCommonNames, w następujący sposób:
"certificateCommonNames": {
"commonNames": [
{
"certificateCommonName": "[parameters('certificateCommonName')]",
"certificateIssuerThumbprint": "[parameters('certificateIssuerThumbprint')]"
}
],
"x509StoreName": "[parameters('certificateStoreValue')]"
}
Uwaga
Klastry usługi Service Fabric będą używać pierwszego prawidłowego certyfikatu znalezionego w magazynie certyfikatów hosta. W systemie Windows będzie to certyfikat z najnowszą datą wygaśnięcia zgodną z twoją nazwą pospolitą i odciskiem palca wystawcy.
Domeny platformy Azure, takie jak *<YOUR SUBDOMAIN.cloudapp.azure.com> lub <YOUR SUBDOMAIN.trafficmanager.net>, należą do firmy Microsoft. Urzędy certyfikacji nie będą wystawiać certyfikatów dla domen dla nieautoryzowanych użytkowników. Większość użytkowników musi kupić domenę od rejestratora lub być autoryzowanym administratorem domeny, aby urząd certyfikacji wystawił certyfikat o tej nazwie pospolitej.
Aby uzyskać dodatkowe informacje na temat konfigurowania usługi DNS w celu rozpoznawania domeny pod adresem IP firmy Microsoft, zapoznaj się z artykułem Konfigurowanie usługi Azure DNS do hostowania domeny.
Uwaga
Po delegowaniu serwerów nazw domen do serwerów nazw strefy usługi Azure DNS dodaj następujące dwa rekordy do strefy DNS:
- Rekord "A" dla domeny APEX, który nie odnosi się do wszystkich adresów IP, do których będzie rozwiązywana twoja niestandardowa domena.
- Rekord "C" dla domen podrzędnych firmy Microsoft, które zostały aprowizowane i nie są
Alias record set. Można na przykład użyć nazwy DNS usługi Traffic Manager lub usługi Load Balancer.
Aby zaktualizować portal w celu wyświetlenia niestandardowej nazwy DNS dla klastra "managementEndpoint"usługi Service Fabric, zaktualizuj następujące właściwości szablonu usługi Service Fabric Cluster Resource Manager:
"managementEndpoint": "[concat('https://<YOUR CUSTOM DOMAIN>:',parameters('nt0fabricHttpGatewayPort'))]",
Szyfrowanie tajnych wartości pakietu Service Fabric
Typowe wartości szyfrowane w pakietach usługi Service Fabric obejmują poświadczenia usługi Azure Container Registry (ACR), zmienne środowiskowe, ustawienia oraz klucze dostępu do konta magazynu wtyczki woluminu Platformy Azure.
Aby skonfigurować certyfikat szyfrowania i zaszyfrować wpisy tajne w klastrach systemu Windows:
Wygeneruj certyfikat z podpisem własnym na potrzeby szyfrowania wpisu tajnego:
New-SelfSignedCertificate -Type DocumentEncryptionCert -KeyUsage DataEncipherment -Subject mydataenciphermentcert -Provider 'Microsoft Enhanced Cryptographic Provider v1.0'
Skorzystaj z instrukcji w artykule Wdrażanie certyfikatów usługi Key Vault w zestawach skalowania maszyn wirtualnych klastra usługi Service Fabric, aby wdrożyć certyfikaty usługi Key Vault w zestawach skalowania maszyn wirtualnych klastra usługi Service Fabric.
Zaszyfruj wpis tajny przy użyciu następującego polecenia programu PowerShell, a następnie zaktualizuj manifest aplikacji usługi Service Fabric przy użyciu zaszyfrowanej wartości:
Invoke-ServiceFabricEncryptText -CertStore -CertThumbprint "<thumbprint>" -Text "mysecret" -StoreLocation CurrentUser -StoreName My
Aby skonfigurować certyfikat szyfrowania i zaszyfrować wpisy tajne w klastrach systemu Linux:
Wygeneruj certyfikat z podpisem własnym na potrzeby szyfrowania wpisów tajnych:
openssl req -newkey rsa:2048 -nodes -keyout TestCert.prv -x509 -days 365 -out TestCert.pem
cat TestCert.prv >> TestCert.pem
Użyj instrukcji z artykułu Wdrażanie certyfikatów usługi Key Vault w zestawach skalowania maszyn wirtualnych klastra usługi Service Fabric dla zestawów skalowania maszyn wirtualnych klastra Twojej usługi Service Fabric.
Zaszyfruj wpis tajny przy użyciu następujących poleceń, a następnie zaktualizuj manifest aplikacji usługi Service Fabric przy użyciu zaszyfrowanej wartości:
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 zaszyfrowaniu chronionych wartości określ zaszyfrowane wpisy tajne w aplikacji usługi Service Fabric i odszyfruj zaszyfrowane wpisy tajne z kodu usługi.
Dołączanie certyfikatu punktu końcowego w aplikacjach usługi Service Fabric
Aby skonfigurować certyfikat punktu końcowego aplikacji, dołącz certyfikat, dodając element EndpointCertificate wraz z elementem User dla konta głównego do manifestu aplikacji. Domyślnie główne konto to NetworkService. Zapewni to zarządzanie listą ACL klucza prywatnego certyfikatu aplikacji dla podanego głównego podmiotu.
<ApplicationManifest … >
...
<Principals>
<Users>
<User Name="Service1" AccountType="NetworkService" />
</Users>
</Principals>
<Certificates>
<EndpointCertificate Name="MyCert" X509FindType="FindByThumbprint" X509FindValue="[YourCertThumbprint]"/>
</Certificates>
</ApplicationManifest>
Dołączanie certyfikatu tajnego w aplikacjach usługi Service Fabric
Aby przyznać aplikacji dostęp do wpisów tajnych, dołącz certyfikat, dodając element SecretsCertificate do manifestu aplikacji.
<ApplicationManifest … >
...
<Certificates>
<SecretsCertificate Name="MyCert" X509FindType="FindByThumbprint" X509FindValue="[YourCertThumbprint]"/>
</Certificates>
</ApplicationManifest>
Uwierzytelnianie aplikacji usługi Service Fabric w zasobach platformy Azure przy użyciu tożsamości usługi zarządzanej (MSI)
Aby dowiedzieć się więcej o tożsamościach zarządzanych dla zasobów platformy Azure, zobacz Co to są tożsamości zarządzane dla zasobów platformy Azure?. Klastry usługi Azure Service Fabric są hostowane w zestawach skalowania maszyn wirtualnych, które obsługują Managed Service Identity. Aby uzyskać listę usług Azure, do których można użyć MSI do uwierzytelniania, zobacz Usługi Azure obsługujące uwierzytelnianie Microsoft Entra.
Aby włączyć tożsamość zarządzaną przypisaną przez system podczas tworzenia zestawu skalowania maszyn wirtualnych lub istniejącego zestawu skalowania maszyn wirtualnych, zadeklaruj następującą "Microsoft.Compute/virtualMachinesScaleSets" właściwość:
"identity": {
"type": "SystemAssigned"
}
Aby uzyskać więcej informacji, zobacz Co to są tożsamości zarządzane dla zasobów platformy Azure?
Jeśli utworzono tożsamość zarządzaną przypisaną przez użytkownika, zadeklaruj następujący zasób w szablonie, aby przypisać go do zestawu skalowania maszyn wirtualnych. Zastąp \<USERASSIGNEDIDENTITYNAME\> nazwą tożsamości zarządzanej przypisanej przez użytkownika, którą utworzyłeś:
"identity": {
"type": "userAssigned",
"userAssignedIdentities": {
"[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('<USERASSIGNEDIDENTITYNAME>'))]": {}
}
}
Zanim aplikacja usługi Service Fabric będzie mogła korzystać z tożsamości zarządzanej, należy przyznać uprawnienia do zasobów platformy Azure, za pomocą których musi się uwierzytelnić. Następujące polecenia udzielają dostępu do zasobu platformy 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>"
W kodzie aplikacji usługi Service Fabric uzyskaj token dostępu dla usługi Azure Resource Manager, wykonując żądanie REST podobne do następującego:
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']")
Aplikacja usługi Service Fabric może następnie użyć tokenu dostępu do uwierzytelniania w zasobach platformy Azure, które obsługują usługę Active Directory. W poniższym przykładzie pokazano, jak to zrobić dla zasobu usługi 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'])")
Plany bazowe zabezpieczeń systemu Windows
Zalecamy zaimplementowanie standardowej w branży konfiguracji, która jest powszechnie znana i dobrze przetestowana, takich jak punkty odniesienia zabezpieczeń firmy Microsoft, w przeciwieństwie do samodzielnego tworzenia punktu odniesienia; Opcja aprowizacji tych elementów w zestawach skalowania maszyn wirtualnych polega na użyciu programu obsługi rozszerzenia Azure Desired State Configuration (DSC), aby skonfigurować maszyny wirtualne w trybie online, aby uruchamiały oprogramowanie produkcyjne.
Azure Firewall
Azure Firewall to zarządzana, sieciowa usługa zabezpieczeń oparta na chmurze, która zabezpiecza zasoby usługi Azure Virtual Network. Jest to w pełni stanowa zapora oferowana jako usługa, z wbudowaną wysoką dostępnością i możliwością nieograniczonego skalowania w chmurze.; Umożliwia to ograniczenie wychodzącego ruchu HTTP/S do określonej listy w pełni kwalifikowanych nazw domen (FQDN), w tym symboli wieloznacznych. Ta funkcja nie wymaga zakończenia protokołu TLS/SSL. Zaleca się korzystanie z tagów FQDN usługi Azure Firewall dla aktualizacji systemu Windows i umożliwienie przepływu ruchu sieciowego do punktów końcowych usługi Microsoft Windows Update przez zaporę. Wdrażanie Azure Firewall przy użyciu szablonu przedstawia przykład definicji szablonu zasobu Microsoft.Network/azureFirewalls. Reguły zapory powszechnie używane dla aplikacji Service Fabric obejmują pozwolenie dla poniższych elementów w wirtualnej sieci waszego klastra:
- *download.microsoft.com
- *servicefabric.azure.com
- *.core.windows.net
Te reguły zapory uzupełniają dozwolone grupy zabezpieczeń sieciowych dla ruchu wychodzącego, obejmując takie usługi, jak ServiceFabric i Storage, jako dozwolone miejsca docelowe z waszej sieci wirtualnej.
TLS 1.2
Platforma Microsoft Azure zaleca, aby wszyscy klienci ukończyli migrację do rozwiązań obsługujących protokół TRANSPORT Layer Security (TLS) 1.2 i upewnili się, że protokół TLS 1.2 jest domyślnie używany.
Usługi platformy Azure, w tym usługa Service Fabric, zakończyły prace inżynieryjne w celu usunięcia zależności od protokołów TLS 1.0/1.1 i zapewniają pełną obsługę klientom, którzy chcą mieć skonfigurowane obciążenia do akceptowania i inicjowania tylko połączeń TLS 1.2.
Klienci powinni domyślnie konfigurować obciążenia hostowane na platformie Azure i aplikacje lokalne współdziałające z usługami platformy Azure w celu korzystania z protokołu TLS 1.2. Poniżej przedstawiono sposób konfigurowania węzłów i aplikacji klastra usługi Service Fabric pod kątem używania określonej wersji protokołu TLS.
Windows Defender
Domyślnie program antywirusowy Windows Defender jest instalowany w systemie Windows Server 2016. Aby uzyskać szczegółowe informacje, zobacz Program antywirusowy Windows Defender w systemie Windows Server 2016. Interfejs użytkownika jest domyślnie instalowany w przypadku niektórych jednostek SKU, ale nie jest to wymagane. Aby zmniejszyć wpływ na wydajność i obciążenie związane z zużyciem zasobów spowodowane przez usługę Windows Defender, i jeśli twoje zasady zabezpieczeń umożliwiają wykluczanie procesów i ścieżek dla oprogramowania open-source, zadeklaruj następujące właściwości szablonu Resource Manager rozszerzenia zestawu skalowania maszyn wirtualnych, aby wykluczyć klaster usługi Service Fabric ze skanowania:
{
"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
}
}
Uwaga
Jeśli nie używasz usługi Windows Defender, zapoznaj się z dokumentacją dotyczącą reguł konfiguracji chroniących przed złośliwym oprogramowaniem. Usługa Windows Defender nie jest obsługiwana w systemie Linux.
Hostowanie niezaufanych aplikacji w klastrze usługi Service Fabric
Klaster usługi Service Fabric jest zaprojektowany jako jedno-dziedziczne, a hostowane aplikacje są uznawane za zaufane. W związku z tym aplikacje mają przyznany dostęp do środowiska uruchomieniowego usługi Service Fabric, które manifestuje się w różnych formach, z których niektóre to: zmienne środowiskowe wskazujące ścieżki plików na hoście odpowiadającym plikom aplikacji i plikom sieci Szkieletowej, ścieżki hostów instalowane z dostępem do zapisu na obciążeniach kontenerów, punkt końcowy komunikacji między procesami, który akceptuje żądania specyficzne dla aplikacji, oraz certyfikat klienta, którego sieć szkieletowa oczekuje, że aplikacja będzie używać do uwierzytelniania się.
Jeśli rozważasz hostowanie niezaufanych aplikacji, musisz wykonać dodatkowe kroki, aby zdefiniować i zarządzać trudnym środowiskiem wielodostępnym dla klastra usługi Service Fabric. Będzie to wymagało rozważenia wielu aspektów w kontekście scenariusza, w tym, ale nie tylko, następujących elementów:
- Szczegółowy przegląd zabezpieczeń interakcji niezaufanych aplikacji z innymi aplikacjami, samym klastrem i podstawową infrastrukturą obliczeniową.
- Zastosowanie najsilniejszej technologii izolacji piaskownicy (np. właściwych trybów izolacji dla obciążeń kontenerowych).
- Ocena ryzyka niezaufanych aplikacji uciekających przed technologią piaskownicy, ponieważ następną granicą zaufania i zabezpieczeń jest sam klaster.
- Usunięcie niezaufanego dostępu aplikacji do środowiska uruchomieniowego usługi Service Fabric.
UsuńDostępDoŚrodowiskaUruchomieniowegoServiceFabric
Dostęp do środowiska uruchomieniowego usługi Service Fabric można usunąć przy użyciu następującej deklaracji w sekcji Zasady manifestu aplikacji:
<ServiceManifestImport>
<Policies>
<ServiceFabricRuntimeAccessPolicy RemoveServiceFabricRuntimeAccess="true"/>
</Policies>
</ServiceManifestImport>
Następne kroki
- Utwórz klaster na maszynach wirtualnych lub komputerach z systemem Windows Server: tworzenie klastra usługi Service Fabric dla systemu Windows Server.
- Utwórz klaster na maszynach wirtualnych lub komputerach z systemem Linux: tworzenie klastra systemu Linux.
- Dowiedz się więcej o opcjach pomocy technicznej usługi Service Fabric.