Azure Service Fabric güvenliği
Azure Güvenlik en iyi yöntemleri hakkında daha fazla bilgi için Azure Service Fabric güvenlik en iyi yöntemleri'ne bakın
Key Vault
Azure Key Vault , Azure Service Fabric uygulamaları ve kümeleri için önerilen gizli dizi yönetimi hizmetidir.
Not
Key Vault'tan alınan sertifikalar/gizli diziler Sanal Makine Ölçek Kümesi'ne Sanal Makine Ölçek Kümesi Gizli Dizisi olarak dağıtılırsa Key Vault ve Sanal Makine Ölçek Kümesi birlikte bulunmalıdır.
Sertifika yetkilisi tarafından verilen Service Fabric sertifikası oluşturma
Azure Key Vault sertifikası oluşturulabilir veya Key Vault'a aktarılabilir. Bir Key Vault sertifikası oluşturulduğunda, özel anahtar Key Vault içinde oluşturulur ve sertifika sahibine hiçbir zaman gösterilmez. Key Vault'ta sertifika oluşturmanın yolları şunlardır:
- Ortak-özel anahtar çifti oluşturmak ve bunu bir sertifikayla ilişkilendirmek için otomatik olarak imzalanan bir sertifika oluşturun. Sertifika kendi anahtarıyla imzalanır.
- Ortak-özel anahtar çifti oluşturmak ve X.509 sertifika imzalama isteği oluşturmak için el ile yeni bir sertifika oluşturun. İmzalama isteği, kayıt yetkiliniz veya sertifika yetkiliniz tarafından imzalanabilir. İmzalı x509 sertifikası, Key Vault'taki KV sertifikasını tamamlamak için bekleyen anahtar çiftiyle birleştirilebilir. Bu yöntem daha fazla adım gerektirse de, özel anahtar içinde oluşturulduğundan ve Key Vault ile sınırlı olduğundan size daha fazla güvenlik sağlar. Bu, aşağıdaki diyagramda açıklanmıştır.
Ek ayrıntılar için Azure Keyvault Sertifika Oluşturma Yöntemleri'ni gözden geçirin.
Key Vault sertifikalarını Service Fabric kümesi sanal makine ölçek kümelerine dağıtma
Sertifikaları birlikte bulunan bir anahtar kümesinden Sanal Makine Ölçek Kümesine dağıtmak için Sanal Makine Ölçek Kümesi osProfile'ı kullanın. Resource Manager şablon özellikleri şunlardır:
"secrets": [
{
"sourceVault": {
"id": "[parameters('sourceVaultValue')]"
},
"vaultCertificates": [
{
"certificateStore": "[parameters('certificateStoreValue')]",
"certificateUrl": "[parameters('certificateUrlValue')]"
}
]
}
]
Not
Resource Manager şablon dağıtımı için kasanın etkinleştirilmesi gerekir.
Service Fabric kümeniz için sertifikanıza Erişim Denetim Listesi (ACL) uygulama
Sanal Makine Ölçek Kümesi uzantıları yayımcısı Microsoft.Azure.ServiceFabric, Düğüm Güvenliğinizi yapılandırmak için kullanılır. Service Fabric Kümesi işlemleriniz için sertifikalarınıza bir ACL uygulamak için aşağıdaki Resource Manager şablon özelliklerini kullanın:
"certificate": {
"commonNames": [
"[parameters('certificateCommonName')]"
],
"x509StoreName": "[parameters('certificateStoreValue')]"
}
Service Fabric küme sertifikasının güvenliğini ortak ada göre sağlama
Service Fabric kümenizin güvenliğini sertifikayla Common Name
sağlamak için Resource Manager şablon özellik sertifikasıCommonNames'i aşağıdaki gibi kullanın:
"certificateCommonNames": {
"commonNames": [
{
"certificateCommonName": "[parameters('certificateCommonName')]",
"certificateIssuerThumbprint": "[parameters('certificateIssuerThumbprint')]"
}
],
"x509StoreName": "[parameters('certificateStoreValue')]"
}
Not
Service Fabric kümeleri, konakınızın sertifika deposunda bulduğu ilk geçerli sertifikayı kullanır. Windows'ta bu, Ortak Ad ve Veren parmak izinizle eşleşen en son sona erme tarihine sahip sertifika olacaktır.
*<YOUR SUBDOMAIN.cloudapp.azure.com veya <YOUR SUBDOMAIN.trafficmanager.net>> gibi Azure etki alanları Microsoft'a aittir. Sertifika Yetkilileri, yetkisiz kullanıcılara etki alanları için sertifika vermez. Sertifika yetkilisinin size bu ortak ada sahip bir sertifika verebilmek için kullanıcıların çoğunun bir kayıt şirketinden etki alanı satın alması veya yetkili etki alanı yöneticisi olması gerekir.
Etki alanınızı bir Microsoft IP adresine çözümlemek için DNS Hizmetini yapılandırma hakkında ek ayrıntılar için Azure DNS'yi etki alanınızı barındıracak şekilde yapılandırmayı gözden geçirin.
Not
Etki alanları ad sunucularınızı Azure DNS bölgesi ad sunucularınıza atadıktan sonra, DNS Bölgenize aşağıdaki iki kaydı ekleyin:
- Özel etki alanınızın tüm IP Adresleri için DEĞİl etki alanı APEX için bir
Alias record set
'A' kaydı çözümlenir. - Sağladığınız Microsoft alt etki alanları için BIR DEĞİl
Alias record set
'C' kaydı. Örneğin Traffic Manager veya Load Balancer'ınızın DNS adını kullanabilirsiniz.
Portalınızı Service Fabric Kümeniz "managementEndpoint"
için özel bir DNS adı görüntüleyecek şekilde güncelleştirmek için aşağıdaki Service Fabric Kümesi Resource Manager şablon özelliklerini güncelleştirin:
"managementEndpoint": "[concat('https://<YOUR CUSTOM DOMAIN>:',parameters('nt0fabricHttpGatewayPort'))]",
Service Fabric paket gizli anahtarı değerlerini şifreleme
Service Fabric Paketlerinde şifrelenen yaygın değerler Arasında Azure Container Registry (ACR) kimlik bilgileri, ortam değişkenleri, ayarlar ve Azure Volume eklentisi depolama hesabı anahtarları yer alır.
Windows kümelerinde şifreleme sertifikası ayarlamak ve gizli dizileri şifrelemek için:
Gizli dizinizi şifrelemek için otomatik olarak imzalanan bir sertifika oluşturun:
New-SelfSignedCertificate -Type DocumentEncryptionCert -KeyUsage DataEncipherment -Subject mydataenciphermentcert -Provider 'Microsoft Enhanced Cryptographic Provider v1.0'
Key Vault Sertifikalarını Service Fabric Kümenizin Sanal Makine Ölçek Kümeleri dağıtmak için Key Vault sertifikalarını Service Fabric kümesi sanal makine ölçek kümelerine dağıtma başlığındaki yönergeleri kullanın.
Aşağıdaki PowerShell komutunu kullanarak gizli dizinizi şifreleyin ve ardından Service Fabric uygulama bildiriminizi şifrelenmiş değerle güncelleştirin:
Invoke-ServiceFabricEncryptText -CertStore -CertThumbprint "<thumbprint>" -Text "mysecret" -StoreLocation CurrentUser -StoreName My
Linux kümelerinde şifreleme sertifikası ayarlamak ve gizli dizileri şifrelemek için:
Gizli dizilerinizi şifrelemek için otomatik olarak imzalanan bir sertifika oluşturun:
openssl req -newkey rsa:2048 -nodes -keyout TestCert.prv -x509 -days 365 -out TestCert.pem
cat TestCert.prv >> TestCert.pem
Key Vault sertifikalarını Service Fabric kümesi sanal makine ölçek kümelerine Service Fabric Kümenizin Sanal Makine Ölçek Kümeleri dağıtma başlığındaki yönergeleri kullanın.
Aşağıdaki komutları kullanarak gizli dizinizi şifreleyin ve ardından Service Fabric Uygulama Bildiriminizi şifrelenmiş değerle güncelleştirin:
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
Korumalı değerlerinizi şifreledikten sonra Service Fabric Uygulaması'nda şifrelenmiş gizli dizileri belirtin ve hizmet kodundaki şifrelenmiş gizli dizilerin şifresini çözün.
Service Fabric uygulamalarına uç nokta sertifikası ekleme
Uygulama uç noktası sertifikanızı yapılandırmak için, uygulama bildirimine asıl hesabın User öğesiyle birlikte bir EndpointCertificate öğesi ekleyerek sertifikayı ekleyin. Varsayılan olarak asıl hesap NetworkService'tir. Bu, sağlanan sorumlu için uygulama sertifikası özel anahtar ACL'sinin yönetimini sağlar.
<ApplicationManifest … >
...
<Principals>
<Users>
<User Name="Service1" AccountType="NetworkService" />
</Users>
</Principals>
<Certificates>
<EndpointCertificate Name="MyCert" X509FindType="FindByThumbprint" X509FindValue="[YourCertThumbprint]"/>
</Certificates>
</ApplicationManifest>
Service Fabric uygulamalarına gizli dizi sertifikası ekleme
Uygulamanıza gizli dizilere erişim vermek için, uygulama bildirimine bir SecretsCertificate öğesi ekleyerek sertifikayı ekleyin.
<ApplicationManifest … >
...
<Certificates>
<SecretsCertificate Name="MyCert" X509FindType="FindByThumbprint" X509FindValue="[YourCertThumbprint]"/>
</Certificates>
</ApplicationManifest>
Yönetilen Hizmet Kimliği (MSI) kullanarak Azure Kaynakları'na Service Fabric uygulamalarının kimliğini doğrulama
Azure kaynakları için yönetilen kimlikler hakkında bilgi edinmek için bkz . Azure kaynakları için yönetilen kimlikler nedir?. Azure Service Fabric kümeleri, Yönetilen Hizmet Kimliği'ni destekleyen Sanal Makine Ölçek Kümeleri üzerinde barındırılır. MSI'nin kimlik doğrulaması için kullanabileceği hizmetlerin listesini almak için bkz . Microsoft Entra kimlik doğrulamasını destekleyen Azure Hizmetleri.
Bir sanal makine ölçek kümesi veya mevcut bir sanal makine ölçek kümesi oluşturulurken sistem tarafından atanan yönetilen kimliği etkinleştirmek için aşağıdaki "Microsoft.Compute/virtualMachinesScaleSets"
özelliği bildirin:
"identity": {
"type": "SystemAssigned"
}
Daha fazla bilgi için bkz. Azure kaynakları için yönetilen kimlikler nedir?
Kullanıcı tarafından atanan bir yönetilen kimlik oluşturduysanız, şablonunuzda aşağıdaki kaynağı bildirerek sanal makine ölçek kümenize atayın. değerini, oluşturduğunuz kullanıcı tarafından atanan yönetilen kimliğin adıyla değiştirin \<USERASSIGNEDIDENTITYNAME\>
:
"identity": {
"type": "userAssigned",
"userAssignedIdentities": {
"[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('<USERASSIGNEDIDENTITYNAME>'))]": {}
}
}
Service Fabric uygulamanızın yönetilen kimliği kullanabilmesi için önce kimlik doğrulaması yapması gereken Azure Kaynaklarına izin verilmesi gerekir. Aşağıdaki komutlar bir Azure Kaynağına erişim verir:
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>"
Service Fabric uygulama kodunuzda, rest değerini aşağıdakine benzer hale getirerek Azure Resource Manager için bir erişim belirteci alın:
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']")
Service Fabric uygulamanız, Active Directory'yi destekleyen Azure Kaynakları'na kimlik doğrulaması yapmak için erişim belirtecini kullanabilir. Aşağıdaki örnekte, Azure Cosmos DB kaynağı için bunun nasıl yapıldığını gösterilmektedir:
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'])")
Windows güvenlik temelleri
Kendiniz bir temel oluşturmanın aksine Microsoft güvenlik temelleri gibi yaygın olarak bilinen ve iyi test edilmiş bir endüstri standardı yapılandırma uygulamanızı öneririz; bunları Sanal Makine Ölçek Kümeleri'nizde sağlama seçeneği, VM'leri çevrimiçi olduklarında yapılandırmak için Azure İstenen Durum Yapılandırması (DSC) uzantı işleyicisini kullanmaktır; böylece üretim yazılımını çalıştırırlar.
Azure Güvenlik Duvarı
Azure Güvenlik Duvarı, Azure Sanal Ağ kaynaklarınızı koruyan yönetilen, bulut tabanlı bir güvenlik hizmetidir. Yerleşik yüksek kullanılabilirlik oranı ve kısıtlamasız bulut ölçeklenebilirliğiyle hizmet olarak tam durum bilgisi olan bir güvenlik duvarıdır.; bu, giden HTTP/S trafiğini joker karakterler de dahil olmak üzere belirtilen tam etki alanı adları (FQDN) listesiyle sınırlandırma olanağı sağlar. Bu özellik TLS/SSL sonlandırması gerektirmez. Windows Güncelleştirmeleri için Azure Güvenlik Duvarı FQDN etiketlerinden yararlanmanız ve Microsoft Windows Update uç noktalarına ağ trafiğinin güvenlik duvarınızdan akabilmesini etkinleştirmeniz önerilir. Şablon kullanarak Azure Güvenlik Duvarı dağıtma, Microsoft.Network/azureFirewalls kaynak şablonu tanımı için bir örnek sağlar. Service Fabric Uygulamaları için yaygın olarak kullanılan güvenlik duvarı kuralları, kümeleriniz sanal ağı için aşağıdakilere izin vermektir:
- *download.microsoft.com
- *servicefabric.azure.com
- *.core.windows.net
Bu güvenlik duvarı kuralları, sanal ağınızdan izin verilen hedefler olarak ServiceFabric ve Depolama dahil izin verilen giden Ağ Güvenlik Gruplarınızı tamamlar.
TLS 1.2
Service Fabric de dahil olmak üzere Azure hizmetleri, TLS 1.0/1.1 protokollerine bağımlılığı kaldırmak ve iş yüklerinin yalnızca TLS 1.2 bağlantılarını kabul edip başlatacak şekilde yapılandırılmasını isteyen müşterilere tam destek sağlamak için mühendislik çalışmalarını tamamladı.
Müşterilerin Azure hizmetleriyle etkileşim kuran Azure tarafından barındırılan iş yüklerini ve şirket içi uygulamalarını varsayılan olarak TLS 1.2 kullanacak şekilde yapılandırmaları gerekir. Service Fabric küme düğümlerini ve uygulamalarını belirli bir TLS sürümünü kullanacak şekilde yapılandırma burada açıklandı.
Windows Defender
Varsayılan olarak, Windows Defender virüsten koruma, Windows Server 2016'da yüklüdür. Ayrıntılar için bkz . Windows Server 2016'da Windows Defender Virüsten Koruma. Kullanıcı arabirimi bazı SKU'lara varsayılan olarak yüklenir, ancak gerekli değildir. Windows Defender tarafından tahakkuk eden performans etkisini ve kaynak tüketimi ek yükünü azaltmak için ve güvenlik ilkeleriniz açık kaynak yazılım işlemlerini ve yollarını dışlamanıza izin verirse, Service Fabric kümenizi taramaların dışında tutmak için aşağıdaki Sanal Makine Ölçek Kümesi Uzantısı Kaynak Yöneticisi şablon özelliklerini bildirin:
{
"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
}
}
Not
Windows Defender kullanmıyorsanız yapılandırma kuralları için Kötü amaçlı yazılımdan koruma belgelerinize bakın. Windows Defender Linux'ta desteklenmez.
Service Fabric kümesinde güvenilmeyen uygulamaları barındırma
Service Fabric kümesi tasarım gereği tek kiracıdır ve barındırılan uygulamalar güvenilir olarak kabul edilir. Bu nedenle, uygulamalara, farklı biçimlerde bildirimde bulunan Service Fabric çalışma zamanına erişim verilir; bazıları şunlardır: uygulama ve Doku dosyalarına karşılık gelen konaktaki dosya yollarına işaret eden ortam değişkenleri , kapsayıcı iş yüklerine yazma erişimiyle bağlanmış konak yolları, uygulamaya özgü istekleri kabul eden işlemler arası iletişim uç noktası ve Fabric'in uygulamanın kimliğini doğrulamak için kullanmasını beklediği istemci sertifikası.
Güvenilmeyen uygulamaları barındırmayı düşünüyorsanız, Service Fabric kümeniz için saldırgan çok kiracılı deneyimi tanımlamak ve sahip olmak için ek adımlar uygulamanız gerekir. Bu, senaryonuz bağlamında aşağıdakiler dahil ancak bunlarla sınırlı olmamak üzere birden çok yönü göz önünde bulundurmanızı gerektirir:
- Güvenilmeyen uygulamaların diğer uygulamalarla, kümenin kendisiyle ve temel işlem altyapısıyla etkileşimlerinin kapsamlı bir güvenlik incelemesi.
- Uygulanabilir en güçlü korumalı alan teknolojisinin kullanımı (örneğin, kapsayıcı iş yükleri için uygun yalıtım modları ).
- Sonraki güven ve güvenlik sınırı kümenin kendisi olduğundan, korumalı alan teknolojisinden kaçan güvenilmeyen uygulamaların risk değerlendirmesi.
- Güvenilmeyen uygulamaların Service Fabric çalışma zamanına erişiminin kaldırılması.
RemoveServiceFabricRuntimeAccess
Service Fabric çalışma zamanına erişim, uygulama bildiriminin İlkeler bölümünde aşağıdaki bildirim kullanılarak kaldırılabilir:
<ServiceManifestImport>
<Policies>
<ServiceFabricRuntimeAccessPolicy RemoveServiceFabricRuntimeAccess="true"/>
</Policies>
</ServiceManifestImport>
Sonraki adımlar
- Windows Server: Windows Server için Service Fabric kümesi oluşturma'yı çalıştıran VM'lerde veya bilgisayarlarda bir küme oluşturun.
- Linux çalıştıran VM'lerde veya bilgisayarlarda küme oluşturma: Linux kümesi oluşturma.
- Service Fabric destek seçenekleri hakkında bilgi edinin.