الحد الأدنى من فرض إصدار TLS للخدمة الذاتية في Azure Cosmos DB

ينطبق على: NoSQL MongoDB كاساندرا العفريت جدول

تتناول هذه المقالة كيفية فرض إصدار الحد الأدنى من بروتوكول TLS لحساب Cosmos DB الخاص بك، باستخدام واجهة برمجة تطبيقات الخدمة الذاتية.

كيفية عمل الحد الأدنى من فرض إصدار TLS في Azure Cosmos DB

نظرا للطبيعة متعددة المستأجرين ل Cosmos DB، فإن الخدمة مطلوبة لتلبية احتياجات الوصول والأمان لكل مستخدم. لتحقيق ذلك، يفرض Cosmos DB الحد الأدنى من بروتوكولات TLS في طبقة التطبيق، وليس الطبقات السفلية في مكدس الشبكة حيث تعمل TLS. يحدث هذا الإنفاذ على أي طلب مصادق عليه لحساب قاعدة بيانات معين، وفقا للإعدادات التي تم تعيينها على هذا الحساب من قبل العميل.

الحد الأدنى للإصدار المقبول على مستوى الخدمة هو TLS 1.0. يمكن تغيير هذا التحديد على أساس كل حساب، كما تمت مناقشته في القسم التالي.

كيفية تعيين الحد الأدنى من إصدار TLS لحساب قاعدة بيانات Cosmos DB الخاص بي

بدءا من إصدار واجهة برمجة التطبيقات 2022-11-15 من واجهة برمجة تطبيقات موفر موارد Azure Cosmos DB، يتم عرض خاصية جديدة لكل حساب قاعدة بيانات Cosmos DB، يسمى minimalTlsVersion. يقبل إحدى القيم التالية:

  • Tls لتعيين الحد الأدنى للإصدار إلى TLS 1.0.
  • Tls11 لتعيين الحد الأدنى للإصدار إلى TLS 1.1.
  • Tls12 لتعيين الحد الأدنى للإصدار إلى TLS 1.2.

القيمة الافتراضية للحسابات الجديدة هي Tls12.

تعيين الحد الأدنى من بروتوكول TLS في Azure Cosmos DB باستخدام المدخل

تتوفر ميزة الخدمة الذاتية هذه في المدخل أثناء إنشاء حساب وتحريره. تفرض حسابات Azure Cosmos DB بروتوكول TLS 1.2. ومع ذلك، يدعم Azure Cosmos DB أيضا بروتوكولات TLS التالية اعتمادا على نوع واجهة برمجة التطبيقات المحدد.

  • MongoDB: TLS 1.2

  • Cassandra: TLS 1.2

  • Table وSQL وGraph: TLS 1.0 وTLS 1.1 وTLS 1.2

خطوات لتعيين الحد الأدنى من بروتوكول TLS أثناء إنشاء حساب

إذا كنت تستخدم نوع API يدعم TLS 1.2 فقط، فستلاحظ في علامة التبويب Networking أسفل بروتوكول TLS معطلا.

لقطة شاشة لنوع واجهة برمجة التطبيقات التي تدعم TLS 1.2 فقط.

إذا كنت تستخدم نوع API الذي يقبل بروتوكولات TLS متعددة، فيمكنك الانتقال إلى علامة التبويب Networking ويتوفر الخيار Minimum Transport Layer Security Protocol. يمكنك تغيير البروتوكول المحدد بالنقر فقط فوق القائمة المنسدلة وتحديد البروتوكول المطلوب.

لقطة شاشة لنوع واجهة برمجة التطبيقات الذي يقبل بروتوكولات TLS متعددة.

بعد إعداد حسابك، يمكنك المراجعة في علامة التبويب Review + create، في الجزء السفلي داخل قسم Networking، التي تم تعيين بروتوكول TLS المحدد كما حددتها.

تم تعيين لقطة شاشة لبروتوكول TLS المحدد كما حددت.

خطوات لتعيين الحد الأدنى من بروتوكول TLS أثناء تحرير حساب

  1. انتقل إلى حساب Azure Cosmos DB الخاص بك على مدخل Azure.

  2. حدد Networking من القائمة اليسرى، ثم حدد علامة التبويب Connectivity.

  3. ستجد خيار بروتوكول أمان طبقة النقل الأدنى. إذا كنت تستخدم نوع واجهة برمجة التطبيقات الذي يدعم TLS 1.2 فقط، فستلاحظ تعطيل هذا الخيار. وإلا، ستتمكن من تحديد بروتوكول TLS المطلوب بالنقر فوقه فقط.

لقطة شاشة لخيار بروتوكول أمان طبقة النقل الأدنى.

  1. انقر فوق حفظ بمجرد تغيير بروتوكول TLS.

لقطة شاشة للحفظ بعد التغيير.

  1. بمجرد حفظه، ستتلقى إعلاما بنجاح. ومع ذلك، قد يستغرق هذا التغيير ما يصل إلى 15 دقيقة حتى يصبح ساري المفعول بعد اكتمال تحديث التكوين.

لقطة شاشة لإع إعلام النجاح.

تعيين عبر Azure CLI

لتعيين باستخدام Azure CLI، استخدم الأمر :

rg="myresourcegroup"
dbName="mycosmosdbaccount"
minimalTlsVersion="Tls12"
az cosmosdb update -n $dbName -g $rg --minimal-tls-version $minimalTlsVersion

تعيين عبر Azure PowerShell

لتعيين استخدام Azure PowerShell، استخدم الأمر :

$minimalTlsVersion = 'Tls12'
$patchParameters = @{
  ResourceGroupName = 'myresourcegroup'
  Name = 'mycosmosdbaccount'
  ResourceProviderName = 'Microsoft.DocumentDB'
  ResourceType = 'databaseaccounts'
  ApiVersion = '2022-11-15'
  Payload = "{ 'properties': {
      'minimalTlsVersion': '$minimalTlsVersion'
  } }"
  Method = 'PATCH'
}
Invoke-AzRestMethod @patchParameters

تعيين عبر قالب ARM

لتعيين هذه الخاصية باستخدام قالب ARM، قم بتحديث القالب الموجود أو تصدير قالب جديد للتوزيع الحالي، ثم أضف "minimalTlsVersion" إلى خصائص databaseAccounts الموارد، مع الحد الأدنى المطلوب لقيمة إصدار TLS. يتوفر هنا مثال أساسي لقالب Azure Resource Manager مع إعداد الخاصية هذا، باستخدام معلمة.

{
    {
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "name": "mycosmosdbaccount",
      "apiVersion": "2022-11-15",
      "location": "[parameters('location')]",
      "kind": "GlobalDocumentDB",
      "properties": {
        "consistencyPolicy": {
          "defaultConsistencyLevel": "[parameters('defaultConsistencyLevel')]",
          "maxStalenessPrefix": 1,
          "maxIntervalInSeconds": 5
        },
        "locations": [
          {
            "locationName": "[parameters('location')]",
            "failoverPriority": 0
          }
        ],
        "locations": "[variable('locations')]",
        "databaseAccountOfferType": "Standard",
        "minimalTlsVersion": "[parameters('minimalTlsVersion')]",
      }
    }
}

هام

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

للحسابات الجديدة

يمكنك إنشاء حسابات مع تعيين الخاصية minimalTlsVersion باستخدام قالب ARM أعلاه، أو عن طريق تغيير أسلوب PATCH إلى PUT على Azure CLI أو Azure PowerShell. تأكد من تضمين الخصائص الأخرى لحسابك.

هام

إذا كان الحساب موجودا وتم minimalTlsVersion إرسال الخاصية في طلب PUT، إعادة تعيين الخاصية إلى قيمتها الافتراضية، بدءا من إصدار واجهة برمجة التطبيقات 2022-11-15.

كيفية التحقق من الحد الأدنى من فرض إصدار TLS

نظرا لأن Cosmos DB يفرض الحد الأدنى من إصدار TLS في طبقة التطبيق، فإن الماسحات الضوئية التقليدية ل TLS التي تتحقق مما إذا كانت عمليات تأكيد الاتصال مقبولة من قبل الخدمة لإصدار TLS معين غير موثوق بها لاختبار التنفيذ في Cosmos DB. للتحقق من الإنفاذ، راجع أداة cosmos-tls-scanner الرسمية مفتوحة المصدر.

يمكنك أيضا الحصول على القيمة الحالية للخاصية minimalTlsVersion باستخدام Azure CLI أو Azure PowerShell.

الحصول على القيمة الحالية عبر Azure CLI

للحصول على القيمة الحالية للخاصية باستخدام Azure CLI، قم بتشغيل الأمر :

subId=$(az account show --query id -o tsv)
rg="myresourcegroup"
dbName="mycosmosdbaccount"
az rest --uri "/subscriptions/$subId/resourceGroups/$rg/providers/Microsoft.DocumentDB/databaseAccounts/$dbName?api-version=2022-11-15" --method GET

الحصول على القيمة الحالية عبر Azure PowerShell

للحصول على القيمة الحالية للخاصية باستخدام Azure PowerShell، قم بتشغيل الأمر :

$getParameters = @{
  ResourceGroupName = 'myresourcegroup'
  Name = 'mycosmosdbaccount'
  ResourceProviderName = 'Microsoft.DocumentDB'
  ResourceType = 'databaseaccounts'
  ApiVersion = '2022-11-15'
  Method = 'GET'
}
Invoke-AzRestMethod @getParameters

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

لمزيد من المعلومات حول الأمان في Azure Cosmos DB، راجع نظرة عامة على أمان قاعدة البيانات في Azure Cosmos DB .