أمان Azure Service Fabric

لمزيد من التفاصيل حول أفضل ممارسات أمان Azure، راجع أفضل ممارسات أمان AzureService Fabric

المخزن الرئيسي

Azure Key Vault هي خدمة إدارة البيانات السرية الموصى بها لتطبيقات ونظام مجموعات Azure Service Fabric.

إشعار

إذا تم توزيع شهادات/بيانات سرية من Key Vault إلى مجموعة مقياس الجهاز الظاهري كبيانات سرية لتغير سعة الجهاز الظاهري، فيجب أن يكون Key Vault ومجموعة تغير سعة الجهاز الظاهري في موقع مشترك.

إنشاء شهادة المرجع المصدق الصادر عن شهادة Service Fabric

من الممكن إنشاء شهادة Azure Key Vault أو استيرادها إلى Key Vault. عند إنشاء شهادة Azure Key Vault، يتم إنشاء المفتاح الخاص داخل Azure Key Vault ولا يتم عرضه أبدا لمالك الشهادة. فيما يلي طرق إنشاء الشهادة في Azure Key Vault.

  • إنشاء شهادة موقعة ذاتيا لإنشاء زوج مفاتيح عامة -خاصة وإقرانها بالشهادة. سيتم توقيع الشهادة بواسطة مفتاحها الخاص.
  • إنشاء شهادة جديدة يدويا لإنشاء زوج من المفاتيح المزدوجة العامة والخاصة وإنشاء طلب توقيع شهادة X.509. يمكن توقيع طلب التوقيع بواسطة مرجع التسجيل أو المرجع المصدق. يمكن دمج شهادة x509 الموقعة مع زوج المفاتيح المعلق لإكمال شهادة KV في Key Vault. على الرغم من أن هذه الطريقة تتطلب المزيد من الخطوات، إلا أنها توفر لك مزيداً من الأمان لأن المفتاح الخاص يتم إنشاؤه في Key Vault وحصره. هذا موضح في الرسم البياني أدناه.

مراجعةأساليب إنشاء شهادة Azure Keyvault للحصول على تفاصيل إضافية.

توزيع شهادات Key Vault إلى نظام مجموعات تغير سعة الجهاز الظاهري لفئة Service Fabric

لتوزيع الشهادات من مخزن مفاتيح مشترك إلى مجموعة تغير سعة الجهاز الظاهري، استخدم مجموعة تغير سعة الجهاز الظاهري osProfile. فيما يلي الخصائص الخاصة بقالب Resource Manager:

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

إشعار

يجب تمكين المخزن لتوزيع القالب Resource Manager.

تطبيق قائمة التحكم في الوصول (ACL) على شهادتك لنظام مجموعة Service Fabric الخاصة بك

يتم استخدام ملحقات مجموعة تغير سعة الجهاز الظاهري الناشر Microsoft.Azure.ServiceFabric لتكوين أمان العقد. لتطبيق قائمة التحكم بالوصول (ACL) على شهاداتك لعمليات نظام مجموعة Service Fabric الخاصة بك، استخدم الخصائص الخاصة بقالب Resource Manager التالية:

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

تأمين شهادة نظام مجموعة Service Fabric بالاسم الشائع

لتأمين نظام مجموعة Service Fabric حسب الشهادةCommon Name، استخدم خاصية قالب Resource Manager شهادة الملكيةCommonNames، كما يلي:

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

إشعار

ستستخدم نظام مجموعات Service Fabric أول شهادة صالحة تعثر عليها في مخزن الشهادات الخاص بالمضيف. في النوافذ، ستكون هذه هي الشهادة التي تحتوي على آخر تاريخ انتهاء صلاحية يطابق اسمك الشائع وبصمة إبهام جهة الإصدار.

إن مجالات Azure، مثل *<YOUR SUBDOMAIN.cloudapp.azure.com> أو <SUBDOMAIN.trafficmanager.net>، مملوكة لشركة Microsoft. لن تصدر السلطات المصدقة شهادات للمجالات للمستخدمين غير المصرح لهم. سيحتاج معظم المستخدمين إلى شراء المجال من جهة تسجيل، أو أن يكونوا مسؤول المجال معتمدا، حتى يتمكن المرجع المصدق من إصدار شهادة لك بهذا الاسم الشائع.

للحصول على معلومات إضافية حول كيفية تكوين خدمة DNS لحل مجالك إلى عنوان IP ل Microsoft، راجع كيفية تكوين Azure DNS لاستضافة مجالك.

إشعار

بعد تفويض خادم DNS إلى خوادم أسماء منطقة Azure DNS، أضف السجلين التاليين إلى منطقة DNS:

  • سجل 'A' للمجال APEX غير Alias record set موجود لكافة عناوين IP التي سيتم حل المجال المخصص لها.
  • سجل 'C' للمجالات الفرعية ل Microsoft التي قمت بتوفيرها ليست Alias record set . على سبيل المثال، يمكنك استخدام اسم DNS الخاص بمدير حركة نسبة استخدام الشبكة أو موازنة التحميل.

لتحديث البوابة الإلكترونية لعرض اسم DNS مخصص لنظام مجموعة Service Fabric"managementEndpoint"، قم بتحديث الخصائص الخاصة بقالب Resource Manager مجموعة Service Fabric التالية:

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

تشفير القيم البيانات السرية لحزمة Service Fabric

تتضمن القيم الشائعة التي يتم تشفيرها في Service Fabric بيانات اعتماد تسجيل حاوية Azure (ACR) ومتغيرات البيئة والإعدادات ومفاتيح حساب تخزين المكون الإضافي لوحدة تخزين Azure.

لإعداد شهادة تشفير وتشفير البيانات السرية على Windows نظام المجموعات:

إنشاء شهادة موقعة ذاتيا لتشفير بياناتك السرية:

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

استخدم الإرشادات الموجودة في توزيع شهادات Key Vault إلى نظام مجموعات مقياس الجهاز الظاهري لمجموعة Service Fabric لتوزيع شهادات Key Vault إلى مجموعات مقياس الجهاز الظاهري Service Fabric الخدمة الخاصة بك.

تشفير البيانات السرية الخاصة بك باستخدام الأمر PowerShell التالي ثم قم بتحديث بيان تطبيق Service Fabric الخاص بك بالقيمة المشفرة:

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

لإعداد شهادة تشفير وتشفير البيانات السرية على نظام مجموعات Linux :

إنشاء شهادة موقعة ذاتيا لتشفير بياناتك السرية:

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

استخدم الإرشادات الواردة في توزيع شهادات Key Vault إلى مجموعات مقياس الجهاز الظاهري لمجموعة Service Fabric إلى مجموعات مقياس الجهاز الظاهري الخاصة بنظام مجموعات Service Fabric .

تشفير البيانات السرية الخاصة بك باستخدام الأوامر التالية، ومن ثم قم بتحديث بيان تطبيق Service Fabric الخاص بك بالقيمة المشفرة:

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

بعد تشفير القيم المحمية، حدد البيانات السرية المشفرةفي تطبيق Service Fabric، وقم بفك تشفير البيانات السرية المشفرة من تعليمة برمجية الخدمة.

تضمين شهادة نقطة النهاية في تطبيقات Service Fabric

لتكوين شهادة نقطة نهاية التطبيق، قم بتضمين الشهادة عن طريق إضافة عنصر EndpointCertificate جنبا إلى جنب مع عنصر المستخدم للحساب الأساسي إلى بيان التطبيق. الحساب الأساسي هو NetworkService بشكل افتراضي. سيوفر هذا إدارة المفتاح الخاص لشهادة التطبيق ACL للمدير المقدم.

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

تضمين الشهادة السرية في تطبيقات Service Fabric

لمنح تطبيقك حق الوصول إلى البيانات السرية، قم بتضمين الشهادة عن طريق إضافة عنصر SecretsCertificate إلى بيان التطبيق.

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

مصادقة تطبيقات بنية الخدمة إلى موارد Azure باستخدام الهوية الخاصة بالخدمة المدارة (MSI)

ولمعرفة المزيد عن الهويات المدارة الخاصة بموارد Azure، راجع الهويات المدارة لموارد Azure. تتم استضافة مجموعات Azure Service Fabric على مجموعات مقياس الجهاز الظاهري، والتي تدعم الهوية الخاصة بالخدمة المدارة. للحصول على قائمة بالخدمات التي يمكن استخدام MSI للمصادقة عليها، راجع خدمات Azure التي تدعم مصادقة Microsoft Entra.

لتمكين الهوية المدارة المعينة الخاصة بالنظام أثناء إنشاء مجموعة مقياس أجهزة ظاهرية أو مجموعة مقياس أجهزة ظاهرية موجودة، قم بالإعلان عن الخاصية التالية "Microsoft.Compute/virtualMachinesScaleSets":

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

راجع ما هي الهويات المدارة لموارد Azure؟ لمزيد من التفاصيل.

في حالة قمت بإنشاء هوية مدارة معينة من قبل المستخدم، فقم بالإعلان عن المورد التالي في القالب لتعيينه إلى مجموعة مقياس الجهاز الظاهري. تأكد من الاستبدال \<USERASSIGNEDIDENTITYNAME\> باسم الهوية المُدارة التي أنشأتها والتي عينها المستخدم.

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

قبل عملية تمكين تطبيق Service Fabric من الاستفادة من هوية مدارة، يجب منح الأذونات لموارد Azure التي يحتاج إلى المصادقة معها. تزودك الأوامر التالية حق الوصول إلى مورد 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>"

في التعليمات البرمجية لتطبيق Service Fabric، احصل على رمز الوصول المميز ل Azure Resource Manager عن طريق إجراء REST مشابهة لما يلي:

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 الخاص بك بعد ذلك استخدام الرمز مميز للوصول للمصادقة على موارد Azure التي تدعم Active Directory. يوضح المثال التالي كيفية القيام بذلك لمورد 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'])")

نوافذ أساسات الأمان

ننصح بتنفيذ تكوين متوافق مع معايير الصناعة معروف على نطاق واسع ومختبر، مثل خطوط أمان Microsoft، بدلا من إنشاء خط أساس بنفسك؛ أحد الخيارات لتوفير هذه العناصر على مجموعات مقاييس الجهاز الظاهري هو استخدام معالج ملحق تكوين الحالة المطلوبة (DSC) من Azure، لتكوين الأجهزة الظاهرية عند اتصالها بالإنترنت، بحيث تقوم بتشغيل برنامج الإنتاج.

جدار حماية Azure

يُعد Azure Firewall هو خدمة أمان شبكة مدارة تعتمد على مجموعة النظراء تحمي موارد الشبكة الظاهرية لـ Azure. تتسم هذه الخدمة بأنها جدار حماية ذي حالة خاصة بالكامل ذي قابلية وصول عالية مضمنة وقابلية توسع سحابة غير مقيدة.; وهذا يمكن القدرة على الحد من حركة مرور HTTP/S الصادرة إلى قائمة محددة من أسماء المجالات المؤهلة بالكامل (FQDN) بما في ذلك البطاقات البرية. لا تتحتاج هذه الميزة إنهاء TLS/SSL. يوصى بالاستفادة من علامات جدار حماية Azure FQDN للحصول على تحديثات النوافذ، ولتمكين نسبة استخدام الشبكة إلى Microsoft Windows Update يمكن أن تتدفق نقاط النهاية عبر جدار الحماية الخاص بك. يوفر توزيع جدار حماية Azure باستخدام قالب عينة لتعريف قالب مورد Microsoft.Network/azureFirewalls. قواعد جدار الحماية الشائعة في تطبيقات Service Fabric هي السماح بما يلي لشبكة نظام المجموعات الظاهرية:

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

تكمل قواعد جدار الحماية هذه مجموعات أمان الشبكة الصادرة المسموح بها، والتي ستتضمن ServiceFabric والتخزين، كوجهات مسموح بها من شبكتك الظاهرية.

TLS 1.2

تنصح Microsoft Azure جميع العملاء بإكمال الترحيل نحو الحلول التي تدعم أمان طبقة النقل (TLS) 1.2 والتأكد من استخدام TLS 1.2 بشكل افتراضي.

أكملت خدمات Azure، بما في ذلك Service Fabric، العمل الهندسي لإزالة التبعية على بروتوكولات TLS 1.0/1.1 وتوفير الدعم الكامل للعملاء الذين يرغبون في تكوين أحمال العمل الخاصة بهم لقبول اتصالات TLS 1.2 فقط وبدء تشغيلها.

يجب على العملاء تكوين أحمال العمل الخاصة بهم التي تستضيفها Azure والتطبيقات المحلية التي تتفاعل مع خدمات Azure لاستخدام TLS 1.2 بشكل افتراضي. فيما يلي كيفية تكوين ‏‏عقدة نظام المجموعة وتطبيقات مجموعة Service Fabric لاستخدام إصدار TLS محدد.

Windows Defender

بشكل افتراضي، يتم تثبيت Windows Defender مكافحة الفيروسات على Windows Server 2016. لمزيد من التفاصيل، راجع برنامج الحماية من الفيروسات لـ Windows Defender على Windows Server 2016. يتم تثبيت الواجهة الخاصة بالمستخدم بشكل افتراضي على بعض SKUs، ولكنها غير مطلوبة. لتقليل أي تأثير على الأداء والنفقات العامة لاستهلاك الموارد التي يتكبدها Windows Defender، وإذا كانت سياسات الأمان الخاصة بك تسمح لك باستبعاد العمليات والمسارات الخاصة بالبرامج مفتوحة المصدر، فقم بالإعلان عن الخصائص الخاصة بالقالب التالي Resource Manager مجموعة مجموعة أدوات الجهاز الظاهري لاستبعاد نظام مجموعة Service Fabric من عمليات الفحص:

 {
    "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
    }
}

إشعار

راجع وثائق مكافحة البرامج الضارة للحصول على قواعد التكوين إذا كنت لا تستخدم Windows Defender. Windows Defender غير مدعوم على Linux.

استضافة تطبيقات غير موثوق بها في نظام مجموعة Service Fabric

مجموعة نسيج الخدمة هي مستأجر واحد حسب التصميم وتعتبر التطبيقات المستضافة موثوقة. وبالتالي، يتم إعطاء التطبيقات حق الوصول إلى وقت تشغيل Service Fabric، الذي يظهر في أشكال مختلفة، وبعضها:متغيرات البيئة التي تشير إلى مسارات الملفات على المضيف المقابل لملفات التطبيق وFabric، ومسارات المضيف المثبتة مع الوصول إلى الكتابة على أحمال عمل الحاويات، ونقطة نهاية الاتصال بين العمليات التي تقبل الطلبات الخاصة بالتطبيق، وشهادة العميل التي تتوقع Fabric أن يستخدمها التطبيق لمصادقة نفسه.

في حالة كنت تفكر في استضافة تطبيقات غير موثوق بها، فيجب عليك اتخاذ خطوات إضافية لتحديد وامتلاك تجربة متعددة المستأجرين العدائية لمجموعة Service Fabric الخاصة بك. سيتطلب منك ذلك النظر في جوانب متعددة، في السياق الخاص بالسيناريو الخاص بك، بما في ذلك، على سبيل المثال لا الحصر، ما يلي:

  • مراجعة أمنية شاملة لتفاعلات التطبيقات غير الموثوق بها مع التطبيقات الأخرى، ونظام المجموعة نفسها، والبنية الأساسية للحوسبة.
  • استخدام أقوى تكنولوجيا وضع الحماية القابلة للتطبيق (على سبيل المثال، أوضاع العزل المناسبة لأحمال العمل الخاصة بالحاويات).
  • تقييم مخاطر التطبيقات غير الموثوق بها التي تهرب من تقنية بيئة الاختبار المعزولة، حيث أن حدود الثقة والأمن التالية هي نظام المجموعة نفسها.
  • محو وصول التطبيقات غير الموثوق بها إلى وقت تشغيل Service Fabric.

RemoveServiceFabricRuntimeAccess

يمكن إزالة الوصول إلى وقت التشغيل الخاص بـ Service Fabric باستخدام الإعلان التالي في قسم النهج في بيان التطبيق:

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

الخطوات التالية