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 Namesağ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

Microsoft Azure, tüm müşterilerin aktarım katmanı güvenliği (TLS) 1.2'yi destekleyen çözümlere geçişi tamamlamalarını ve TLS 1.2'nin varsayılan olarak kullanıldığından emin olmalarını önerir .

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.