إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
| المنتج /الخدمة | مقالة |
|---|---|
| مركز الحدث Azure | |
| Dynamics CRM | |
| مصنع بيانات Azure | |
| خادم الهوية | |
| تطبيق ويب | |
| قاعدة بيانات | |
| تخزين Azure | |
| عميل الجوال | |
| WCF | |
| واجهة برمجة تطبيقات الويب | |
| Azure أدارت ريديس | |
| بوابة حقل IoT | |
| بوابة سحابة IoT |
الاتصال الآمن بمركز الأحداث باستخدام SSL/TLS
| العنوان | التفاصيل |
|---|---|
| المكون | Azure Event Hub |
| مرحلة SDL | بنى |
| التقنيات المعمول بها | العام |
| السمات | غير متوفر |
| المراجع | نظرة عامة على نموذج الأمان ومصادقة مراكز الأحداث |
| الخطوات | تأمين اتصالات AMQP أو HTTP بمركز الأحداث باستخدام SSL/TLS |
تحقق من امتيازات حساب الخدمة وتحقق من أن الخدمات المخصصة أو ASP.NET Pages تحترم أمان CRM
| العنوان | التفاصيل |
|---|---|
| المكون | دايناميكس CRM |
| مرحلة SDL | بنى |
| التقنيات المعمول بها | العام |
| السمات | غير متوفر |
| المراجع | غير متوفر |
| الخطوات | تحقق من امتيازات حساب الخدمة وتحقق من أن الخدمات المخصصة أو ASP.NET Pages تحترم أمان CRM |
استخدام بوابة إدارة البيانات أثناء توصيل SQL Server المحلي ب Azure Data Factory
| العنوان | التفاصيل |
|---|---|
| المكون | Azure Data Factory |
| مرحلة SDL | نشر |
| التقنيات المعمول بها | العام |
| السمات | أنواع الخدمات المرتبطة - Azure والأماكن المحلية |
| المراجع | نقل البيانات بين المحلي وAzure Data Factory |
| الخطوات | أداة بوابة إدارة البيانات (DMG) مطلوبة للاتصال بمصادر البيانات المحمية خلف corpnet أو جدار حماية.
|
تأكد من أن جميع نسبة استخدام الشبكة إلى Identity Server عبر اتصال HTTPS
| العنوان | التفاصيل |
|---|---|
| المكون | خادم الهوية |
| مرحلة SDL | نشر |
| التقنيات المعمول بها | العام |
| السمات | غير متوفر |
| المراجع | غير متوفر |
| الخطوات | بشكل افتراضي، يتطلب IdentityServer جميع الاتصالات الواردة لتأتي عبر HTTPS. من الإلزامي تماما أن يتم الاتصال مع IdentityServer عبر وسائل النقل الآمنة فقط. هناك بعض سيناريوهات التوزيع مثل تفريغ TLS حيث يمكن تخفيف هذا المطلب. راجع صفحة نشر Identity Server في المراجع للحصول على مزيد من المعلومات. |
تحقق من شهادات X.509 المستخدمة لمصادقة اتصالات SSL وTLS وDTLS
| العنوان | التفاصيل |
|---|---|
| المكون | تطبيق ويب |
| مرحلة SDL | بنى |
| التقنيات المعمول بها | العام |
| السمات | غير متوفر |
| المراجع | غير متوفر |
| الخطوات | يجب أن تتحقق التطبيقات التي تستخدم SSL أو TLS أو DTLS بشكل كامل من شهادات X.509 للكيانات التي تتصل بها. يتضمن ذلك التحقق من الشهادات من أجل:
|
تكوين شهادة TLS/SSL للمجال المخصص في "Azure App Service"
| العنوان | التفاصيل |
|---|---|
| المكون | تطبيق ويب |
| مرحلة SDL | بنى |
| التقنيات المعمول بها | العام |
| السمات | EnvironmentType - Azure |
| المراجع | تمكين HTTPS لتطبيق في "Azure App Service" |
| الخطوات | بشكل افتراضي، يقوم Azure بالفعل بتمكين HTTPS لكل تطبيق مع شهادة حرف بدل لمجال *.azurewebsites.net. ومع ذلك، مثل جميع مجالات أحرف البدل، فإنه ليس آمنا مثل استخدام مجال مخصص مع الشهادة الخاصة الرجوع. يوصى بتمكين TLS للمجال المخصص الذي سيتم الوصول إلى التطبيق المنشور من خلاله |
فرض كل نسبة استخدام الشبكة إلى "Azure App Service" عبر اتصال HTTPS
| العنوان | التفاصيل |
|---|---|
| المكون | تطبيق ويب |
| مرحلة SDL | بنى |
| التقنيات المعمول بها | العام |
| السمات | EnvironmentType - Azure |
| المراجع | فرض HTTPS على "Azure App Service" |
| الخطوات | على الرغم من أن Azure تمكن بالفعل HTTPS لخدمات تطبيق Azure مع شهادة حرف بدل للمجال *.azurewebsites.net، فإنه لا يفرض HTTPS. لا يزال بإمكان الزوار الوصول إلى التطبيق باستخدام HTTP، مما قد يعرض أمان التطبيق للخطر، وبالتالي يجب فرض HTTPS بشكل صريح. يجب أن تستخدم تطبيقات MVC ASP.NET عامل التصفية RequireHttps الذي يفرض إعادة إرسال طلب HTTP غير آمن عبر HTTPS. بدلا من ذلك، يمكن استخدام وحدة إعادة كتابة عنوان URL المضمنة مع "Azure App Service" لفرض HTTPS. تمكن وحدة إعادة كتابة عنوان URL المطورين من تحديد القواعد التي يتم تطبيقها على الطلبات الواردة قبل تسليم الطلبات إلى التطبيق الخاص بك. يتم تعريف قواعد إعادة كتابة عنوان URL في ملف web.config مخزن في جذر التطبيق |
مثل
يحتوي المثال التالي على قاعدة إعادة كتابة عنوان URL الأساسية التي تفرض على جميع حركة المرور الواردة استخدام HTTPS
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Force HTTPS" enabled="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
تعمل هذه القاعدة عن طريق إرجاع رمز حالة HTTP 301 (إعادة توجيه دائمة) عندما يطلب المستخدم صفحة باستخدام HTTP. يعيد 301 توجيه الطلب إلى نفس عنوان URL الذي طلبه الزائر، ولكنه يستبدل جزء HTTP من الطلب ب HTTPS. على سبيل المثال، HTTP://contoso.com ستتم إعادة توجيه إلى HTTPS://contoso.com.
تمكين أمان النقل الصارم HTTP (HSTS)
| العنوان | التفاصيل |
|---|---|
| المكون | تطبيق ويب |
| مرحلة SDL | بنى |
| التقنيات المعمول بها | العام |
| السمات | غير متوفر |
| المراجع | ورقة المعلومات المرجعية لأمان النقل الصارم ل OWASP HTTP |
| الخطوات | HTTP Strict Transport Security (HSTS) هو تحسين أمان الاشتراك الذي يحدده تطبيق ويب من خلال استخدام عنوان استجابة خاص. بمجرد أن يتلقى المستعرض المدعوم هذا العنوان، سيمنع المستعرض إرسال أي اتصالات عبر HTTP إلى المجال المحدد وسيرسل بدلا من ذلك جميع الاتصالات عبر HTTPS. كما أنه يمنع النقر فوق HTTPS من خلال المطالبات على المستعرضات. لتنفيذ HSTS، يجب تكوين عنوان الاستجابة التالي لموقع ويب بشكل عام، إما في التعليمات البرمجية أو في التكوين. Strict-Transport-Security: max-age=300; يتضمنSubDomains HSTS يعالج التهديدات التالية:
|
تأكد من تشفير اتصال خادم SQL والتحقق من صحة الشهادة
| العنوان | التفاصيل |
|---|---|
| المكون | قاعدة البيانات |
| مرحلة SDL | بنى |
| التقنيات المعمول بها | SQL Azure |
| السمات | إصدار SQL - الإصدار 12 |
| المراجع | أفضل الممارسات حول كتابة سلاسل الاتصال الآمنة لقاعدة بيانات SQL |
| الخطوات | يتم تشفير جميع الاتصالات بين قاعدة بيانات SQL وتطبيق العميل باستخدام بروتوكول أمان طبقة النقل (TLS)، المعروف سابقا باسم طبقة مآخذ التوصيل الآمنة (SSL)، في جميع الأوقات. لا تدعم قاعدة بيانات SQL الاتصالات غير المشفرة. للتحقق من صحة الشهادات باستخدام التعليمات البرمجية للتطبيق أو الأدوات، اطلب اتصالا مشفرا بشكل صريح ولا تثق في شهادات الخادم. إذا كانت التعليمات البرمجية أو الأدوات الخاصة بالتطبيق الخاص بك لا تطلب اتصالا مشفرا، فإنها ستظل تتلقى اتصالات مشفرة ومع ذلك، قد لا يتحققون من صحة شهادات الخادم وبالتالي سيكونون عرضة لهجمات "الرجل في الوسط". للتحقق من صحة الشهادات باستخدام التعليمات البرمجية للتطبيق ADO.NET، قم بتعيين |
فرض الاتصال المشفر على خادم SQL
| العنوان | التفاصيل |
|---|---|
| المكون | قاعدة البيانات |
| مرحلة SDL | بنى |
| التقنيات المعمول بها | OnPrem |
| السمات | إصدار SQL - MsSQL2016، إصدار SQL - MsSQL2012، إصدار SQL - MsSQL2014 |
| المراجع | تمكين الاتصالات المشفرة إلى مشغل قاعدة البيانات |
| الخطوات | يؤدي تمكين تشفير TLS إلى زيادة أمان البيانات المرسلة عبر الشبكات بين مثيلات SQL Server والتطبيقات. |
تأكد من أن الاتصال ب تخزين Azure عبر HTTPS
| العنوان | التفاصيل |
|---|---|
| المكون | تخزين Azure |
| مرحلة SDL | نشر |
| التقنيات المعمول بها | العام |
| السمات | غير متوفر |
| المراجع | تشفير Transport-Level تخزين Azure - باستخدام HTTPS |
| الخطوات | لضمان أمان بيانات تخزين Azure أثناء النقل، استخدم دائما بروتوكول HTTPS عند استدعاء واجهات برمجة تطبيقات REST أو الوصول إلى الكائنات في التخزين. أيضا، تتضمن توقيعات الوصول المشترك، التي يمكن استخدامها لتفويض الوصول إلى كائنات تخزين Azure، خيارا لتحديد أنه يمكن استخدام بروتوكول HTTPS فقط عند استخدام توقيعات الوصول المشترك، ما يضمن أن أي شخص يرسل ارتباطات مع رموز SAS المميزة سيستخدم البروتوكول المناسب. |
التحقق من صحة تجزئة MD5 بعد تنزيل blob إذا تعذر تمكين HTTPS
| العنوان | التفاصيل |
|---|---|
| المكون | تخزين Azure |
| مرحلة SDL | بنى |
| التقنيات المعمول بها | العام |
| السمات | نوع التخزين - Blob |
| المراجع | نظرة عامة على Windows Azure Blob MD5 |
| الخطوات | توفر خدمة Windows Azure Blob آليات لضمان تكامل البيانات في كل من طبقات التطبيق والنقل. إذا كنت بحاجة لأي سبب من الأسباب إلى استخدام HTTP بدلا من HTTPS وكنت تعمل مع الكائنات الثنائية كبيرة الحجم للكتلة، يمكنك استخدام التحقق من MD5 للمساعدة في التحقق من سلامة الكائنات الثنائية كبيرة الحجم التي يتم نقلها سيساعد هذا في الحماية من أخطاء طبقة الشبكة/النقل، ولكن ليس بالضرورة مع الهجمات الوسيطة. إذا كان يمكنك استخدام HTTPS، الذي يوفر أمان مستوى النقل، فإن استخدام التحقق من MD5 زائد عن الحاجة وغير ضروري. |
استخدام عميل متوافق مع SMB 3.x لضمان تشفير البيانات أثناء النقل إلى مشاركات ملفات Azure
| العنوان | التفاصيل |
|---|---|
| المكون | عميل الجوال |
| مرحلة SDL | بنى |
| التقنيات المعمول بها | العام |
| السمات | StorageType - ملف |
| المراجع | ملفات Azure، دعم SMB لملفات Azure لعملاء Windows |
| الخطوات | تدعم ملفات Azure HTTPS عند استخدام واجهة برمجة تطبيقات REST، ولكنها تستخدم بشكل أكثر شيوعا كمشاركة ملف SMB مرفقة بجهاز ظاهري. لا يدعم SMB 2.1 التشفير، لذلك يسمح بالاتصالات فقط داخل نفس المنطقة في Azure. ومع ذلك، يدعم SMB 3.x التشفير ويمكن استخدامه مع Windows Server 2012 R2 وWindows 8 وWindows 8.1 وWindows 10، ما يسمح بالوصول عبر المناطق وحتى الوصول على سطح المكتب. |
تنفيذ تثبيت الشهادة
| العنوان | التفاصيل |
|---|---|
| المكون | تخزين Azure |
| مرحلة SDL | بنى |
| التقنيات المعمول بها | عام، Windows Phone |
| السمات | غير متوفر |
| المراجع | تثبيت الشهادة والمفتاح العام |
| الخطوات | تدافع شهادة التثبيت ضد هجماتThe-Middle (MITM). التثبيت هو عملية ربط مضيف بشهادة X509 المتوقعة أو المفتاح العام. بمجرد معرفة شهادة أو مفتاح عام أو رؤيته لمضيف، يتم إقران الشهادة أو المفتاح العام أو "تثبيته" بالمضيف. وبالتالي، عندما يحاول الخصم القيام بهجوم TLS MITM، أثناء تأكيد اتصال TLS، سيكون المفتاح من خادم المهاجم مختلفا عن مفتاح الشهادة المثبتة، وسيتم تجاهل الطلب، وبالتالي يمكن تحقيق منع تثبيت شهادة MITM من خلال تنفيذ مفوض ServicePointManager |
مثل
using System;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography;
namespace CertificatePinningExample
{
class CertificatePinningExample
{
/* Note: In this example, we're hardcoding the certificate's public key and algorithm for
demonstration purposes. In a real-world application, this should be stored in a secure
configuration area that can be updated as needed. */
private static readonly string PINNED_ALGORITHM = "RSA";
private static readonly string PINNED_PUBLIC_KEY = "3082010A0282010100B0E75B7CBE56D31658EF79B3A1" +
"294D506A88DFCDD603F6EF15E7F5BCBDF32291EC50B2B82BA158E905FE6A83EE044A48258B07FAC3D6356AF09B2" +
"3EDAB15D00507B70DB08DB9A20C7D1201417B3071A346D663A241061C151B6EC5B5B4ECCCDCDBEA24F051962809" +
"FEC499BF2D093C06E3BDA7D0BB83CDC1C2C6660B8ECB2EA30A685ADE2DC83C88314010FFC7F4F0F895EDDBE5C02" +
"ABF78E50B708E0A0EB984A9AA536BCE61A0C31DB95425C6FEE5A564B158EE7C4F0693C439AE010EF83CA8155750" +
"09B17537C29F86071E5DD8CA50EBD8A409494F479B07574D83EDCE6F68A8F7D40447471D05BC3F5EAD7862FA748" +
"EA3C92A60A128344B1CEF7A0B0D94E50203010001";
public static void Main(string[] args)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://azure.microsoft.com");
request.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) =>
{
if (certificate == null || sslPolicyErrors != SslPolicyErrors.None)
{
// Error getting certificate or the certificate failed basic validation
return false;
}
var targetKeyAlgorithm = new Oid(certificate.GetKeyAlgorithm()).FriendlyName;
var targetPublicKey = certificate.GetPublicKeyString();
if (targetKeyAlgorithm == PINNED_ALGORITHM &&
targetPublicKey == PINNED_PUBLIC_KEY)
{
// Success, the certificate matches the pinned value.
return true;
}
// Reject, either the key or the algorithm does not match the expected value.
return false;
};
try
{
var response = (HttpWebResponse)request.GetResponse();
Console.WriteLine($"Success, HTTP status code: {response.StatusCode}");
}
catch(Exception ex)
{
Console.WriteLine($"Failure, {ex.Message}");
}
Console.WriteLine("Press any key to end.");
Console.ReadKey();
}
}
}
تمكين HTTPS - قناة النقل الآمن
| العنوان | التفاصيل |
|---|---|
| المكون | WCF |
| مرحلة SDL | بنى |
| التقنيات المعمول بها | إطار عمل NET 3 |
| السمات | غير متوفر |
| المراجع | MSDN، Fortify Kingdom |
| الخطوات | يجب أن يضمن تكوين التطبيق استخدام HTTPS لجميع الوصول إلى المعلومات الحساسة.
من وجهة نظر عملية، لا يتتبع الأشخاص المسؤولون عن تأمين الشبكة دائما المتطلبات الأمنية للتطبيق أثناء تطورها. |
WCF: تعيين مستوى حماية أمان الرسائل إلى EncryptAndSign
مثل
يتم عرض تكوين الخدمة والعملية لتوقيع الرسالة فقط في الأمثلة التالية. مثال على عقد الخدمة ل ProtectionLevel.Sign: فيما يلي مثال على استخدام ProtectionLevel.Sign على مستوى عقد الخدمة:
[ServiceContract(Protection Level=ProtectionLevel.Sign]
public interface IService
{
string GetData(int value);
}
مثل
مثال عقد العملية ل ProtectionLevel.Sign (لعنصر التحكم الحبيبي): فيما يلي مثال على استخدام ProtectionLevel.Sign على مستوى OperationContract:
[OperationContract(ProtectionLevel=ProtectionLevel.Sign]
string GetData(int value);
WCF: استخدام حساب الأقل امتيازا لتشغيل خدمة WCF
فرض جميع حركة المرور إلى واجهات برمجة تطبيقات الويب عبر اتصال HTTPS
| العنوان | التفاصيل |
|---|---|
| المكون | واجهة API للويب |
| مرحلة SDL | بنى |
| التقنيات المعمول بها | MVC5، MVC6 |
| السمات | غير متوفر |
| المراجع | فرض SSL في وحدة تحكم واجهة برمجة تطبيقات الويب |
| الخطوات | إذا كان أحد التطبيقات يحتوي على كل من HTTPS وربط HTTP، فلا يزال بإمكان العملاء استخدام HTTP للوصول إلى الموقع. لمنع ذلك، استخدم عامل تصفية إجراء للتأكد من أن طلبات واجهات برمجة التطبيقات المحمية دائما عبر HTTPS. |
مثل
تظهر التعليمات البرمجية التالية عامل تصفية مصادقة واجهة برمجة تطبيقات الويب الذي يتحقق من TLS:
public class RequireHttpsAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
{
ReasonPhrase = "HTTPS Required"
};
}
else
{
base.OnAuthorization(actionContext);
}
}
}
أضف عامل التصفية هذا إلى أي إجراءات واجهة برمجة تطبيقات ويب تتطلب TLS:
public class ValuesController : ApiController
{
[RequireHttps]
public HttpResponseMessage Get() { ... }
}
تأكد من أن التواصل مع Azure Managed Redis يتم عبر TLS
| العنوان | التفاصيل |
|---|---|
| المكون | Azure Managed Redis |
| مرحلة SDL | بنى |
| التقنيات المعمول بها | العام |
| السمات | غير متوفر |
| المراجع | دعم Azure Redis TLS |
| الخطوات | خادم Redis لا يدعم TLS من العلبة المباشرة، لكن Azure Managed Redis يدعم. إذا كنت تتصل ب Azure Managed Redis وعميلك يدعم TLS، مثل StackExchange.Redis، فعليك استخدام TLS. افتراضيا، يتم تعطيل المنفذ غير TLS لنسخ Redis المدارة الجديدة من Azure. تأكد من عدم تغيير الإعدادات الافتراضية الآمنة ما لم يكن هناك تبعية على دعم TLS لعملاء redis. |
يرجى ملاحظة أن Redis مصمم للوصول إليه من قبل عملاء موثوق بهم داخل بيئات موثوق بها. وهذا يعني أنه عادة ما يكون من غير الجيد عرض مثيل Redis مباشرة على الإنترنت أو، بشكل عام، إلى بيئة حيث يمكن للعملاء غير الموثوق بهم الوصول مباشرة إلى منفذ Redis TCP أو مأخذ توصيل UNIX.
اتصال Secure Device إلى Field Gateway
| العنوان | التفاصيل |
|---|---|
| المكون | بوابة حقل IoT |
| مرحلة SDL | بنى |
| التقنيات المعمول بها | العام |
| السمات | غير متوفر |
| المراجع | غير متوفر |
| الخطوات | بالنسبة للأجهزة المستندة إلى IP، يمكن عادة تغليف بروتوكول الاتصال في قناة SSL/TLS لحماية البيانات أثناء النقل. بالنسبة للبروتوكولات الأخرى التي لا تدعم SSL/TLS، تحقق مما إذا كانت هناك إصدارات آمنة من البروتوكول توفر الأمان في طبقة النقل أو الرسائل. |
اتصال Secure Device إلى Cloud Gateway باستخدام SSL/TLS
| العنوان | التفاصيل |
|---|---|
| المكون | بوابة سحابة IoT |
| مرحلة SDL | بنى |
| التقنيات المعمول بها | العام |
| السمات | غير متوفر |
| المراجع | اختر بروتوكول الاتصال الخاص بك |
| الخطوات | بروتوكولات HTTP/AMQP أو MQTT الآمنة باستخدام SSL/TLS. |