تسجيل أنشطة الشبكة

يوضح هذا المستند كيف تقوم وحدة التحكم بسياسة الجهاز (DPC) بتسجيل الشبكة الأخرى. تابِع القراءة للتعرّف على كيفية إضافة ميزة تسجيل بيانات الشبكة إلى وحدة التحكّم بسياسة الجهاز (DPC).

نظرة عامة

يمكن أن يساعد نشاط شبكة التسجيل المؤسسات على اكتشاف وتتبع انتشار برامج ضارة على أجهزتهم. يمكن لوحدة التحكّم بسياسة الجهاز (DPC) طلب واجهات برمجة التطبيقات الخاصة بتسجيل الشبكة للإبلاغ عن بروتوكول التحكم بالنقل. الاتصالات وعمليات بحث نظام أسماء النطاقات من اتصالات شبكات النظام.

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

مدى توفّر الخدمة

يتوفَّر تسجيل الدخول إلى الشبكة في نظام التشغيل Android 8 والإصدارات الأحدث لمالك الجهاز. في حال حذف قيد التمكين، تجمع بيانات عن نشاط الشبكة للجهاز. من المهم أيضًا متاحة في الإصدار 12 من نظام التشغيل Android والإصدارات الأحدث لمالك الملف الشخصي المُدار تطبيق مفوَّض يتضمّن DELEGATION_NETWORK_LOGGING عندما يفعّل مالك الملف الشخصي تسجيل بيانات الشبكة، لا يتم تسجيل سوى نشاط شبكة ملف العمل ولا يتم جمع البيانات من ملفك الشخصي.

للمزيد من المعلومات، يمكنك قراءة مقالة المستخدمون التابعون.

سجلات الأحداث

عندما يكون تسجيل بيانات الشبكة نشطًا، يسجِّل Android كل حدث من التطبيقات التي تستخدم مكتبات شبكات الأنظمة. يسجِّل تسجيل بيانات الشبكة نوعَين من الأحداث:

  • عمليات بحث نظام أسماء النطاقات
  • اتصالات الشبكة

عمليات بحث نظام أسماء النطاقات

يسجّل تسجيل الشبكة حدثًا لعمليات بحث نظام أسماء النطاقات التي تشكّل جزءًا من شبكة النظام الطلبات. تسجل السجلات كل طلب من طلبات نظام أسماء النطاقات (DNS) الذي يحول اسم المضيف إلى عنوان IP الخاص بك. أمّا طلبات بحث نظام أسماء النطاقات الأخرى، مثل اكتشاف خادم الأسماء، فلا تسجيل البيانات.

تقدم واجهات برمجة التطبيقات لتسجيل نشاط الشبكة كل عملية بحث في نظام أسماء النطاقات على أنها مثيل DnsEvent. يصف الجدول 1 الحقول ونموذج تم تسجيل القيم في DnsEvent.

الجدول 1. حقول أحداث نظام أسماء النطاقات

البيانات مثال الوصف
اسم المضيف host.example.com اسم المضيف الذي تم إرساله في طلب بحث نظام أسماء النطاقات.
عناوين Inet 203.0.113.9، 198.51.100.25 قائمة IPv4 أو IPv6 التي تتناول طلب بحث نظام أسماء النطاقات الذي تم حله لاسم المضيف. لتسهيل إدارة حجم السجلّ، قد لا تتضمّن النتائج جميع عناوين IP. يُرجى الاطّلاع على عدد العناوين في الصف التالي.
عدد العناوين 4 عدد عناوين IP التي يتم عرضها من تحليل طلب بحث نظام أسماء النطاقات. ويمكنك استخدام هذا لمعرفة ما إذا كانت عناوين IP المسجّلة هي مجموعة فرعية من النتائج. تعني القيمة 0 (صفر) أن اسم المضيف لم يتم تحويله إلى عنوان IP.
اسم الحزمة com.android.chrome اسم حزمة التطبيق الذي أجرى طلب بحث نظام أسماء النطاقات.
الطابع الزمني 1506297600000 تسجيل طابع زمني عند إجراء بحث نظام أسماء النطاقات. القيمة هي الفاصل بالملي ثانية بين بحث نظام أسماء النطاقات ومن منتصف الليل، 1 كانون الثاني (يناير) 1970 بالتوقيت العالمي المتفق عليه.
رقم التعريف 25 معرّف رقمي يزداد بشكل رتيب. يتوفّر التطبيق في نظام التشغيل Android 9.0 (المستوى 28 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث.

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

  • الاتصال مباشرةً بخادم أسماء نظام أسماء النطاقات.
  • استدعاء مكتبة نظام أسماء نطاقات Java لإجراء استعلامات DNS.
  • تجنب طلب بحث نظام أسماء النطاقات من خلال الاتصال بعنوان IP ثابت.

اتصالات الشبكة

يسجل تسجيل الشبكة حدثًا لكل اتصال تمت محاولة إجرائه ويكون جزءًا من طلب شبكة نظام. تم التقاط السجلات بنجاح وفشل في بروتوكول التحكم بالنقل. الاتصالات: لا يتم تسجيل عمليات نقل UDP.

تقدم واجهات برمجة التطبيقات لتسجيل نشاط الشبكة كل اتصال كـ مثيل ConnectEvent. يصف الجدول 2 الحقول والقيم النموذجية المسجّلة في ConnectEvent.

الجدول 2. ربط حقول الأحداث

البيانات مثال الوصف
عناوين Inet 2001:db8::2f:abc:0 عنوان IP للجهاز الذي اتصل به. قد يكون هذا عنوان IPv4 أو IPv6.
المنفذ 80 رقم منفذ TCP الذي اتصل به الجهاز.
اسم الحزمة com.android.chrome اسم حزمة التطبيق المرتبط.
الطابع الزمني 1506297600000 تسجيل طابع زمني عند حدوث الاتصال بالشبكة. القيمة هي الفاصل بالملي ثانية بين الاتصال ومنتصف الليل، 1 كانون الثاني (يناير) 1970 بالتوقيت العالمي المتفق عليه.
رقم التعريف 26 معرّف رقمي يزداد بشكل رتيب. يتوفّر التطبيق في نظام التشغيل Android 9.0 (المستوى 28 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث.

يسجّل تسجيل الشبكة حدثًا عندما يستدعي أحد التطبيقات مكتبات الشبكات العادية، مثل واجهات برمجة التطبيقات المضمنة في Android أو مكتبات الجهات الخارجية الشائعة، للاتصال مضيفًا. ولا يتم تسجيل مكالمات النظام التي تصدر التطبيقات للاتصال مباشرةً. تذكر أن شبكات UDP لا يتم تسجيلها، لذلك لا يتم تسجيل بعض عمليات بث الوسائط والمراسلة الألعاب على الأجهزة الجوّالة في السجلات.

إعلام المستخدمين

يرسل النظام تنبيهًا إلى مستخدمي الأجهزة بأنّ عملية تسجيل أنشطة الشبكة نشطة. المستخدمون ستظهر التحذيرات التالية في الواجهة:

  • قسم في مربّع الحوار إدارة الأجهزة يوضّح أنّ وحدة التحكّم بسياسة الجهاز (DPC) تراقبها حركة بيانات الشبكة. يظهر مربع الحوار للمستخدمين من خلال النقر على معلومات الجهاز المُدار التصنيف في "الإعدادات السريعة"
  • إشعار نظام قابل للإغلاق يظهر عندما يكون المستخدم جديدًا على الشبكة التسجيل. يؤدي النقر على الإشعار إلى عرض مربّع الحوار مراقبة الجهاز مع شرح إضافي في قسم مراقبة الشبكة. يختفي الإشعار عندما توقِف وحدة التحكّم بسياسة الجهاز (DPC) تسجيل بيانات الشبكة.

إضافة تسجيل الشبكة إلى وحدة التحكّم بسياسة الجهاز (DPC)

لمساعدة مشرفي تكنولوجيا المعلومات في مراجعة سجلات الشبكة، يجب أن تكون وحدة التحكّم بسياسة الجهاز (DPC) قادرة على إكمال المهام التالية:

  • فعِّل ميزة تسجيل بيانات الشبكة أو أوقِفها.
  • يمكنك استرداد أي سجلات مسجَّلة عندما تكون الدفعة الجديدة جاهزة.
  • أرسل البيانات المفيدة الموجودة في السجلات إلى خادم.

المتطلبات

تتوفَّر ميزة تسجيل الدخول إلى الشبكة في الإصدار Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث مالك الجهاز ونظام التشغيل Android 12 (المستوى 31 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث لمالك الملف الشخصي مُدار. قبل تسجيل نشاط الشبكة، يجب أن تتحقّق وحدة التحكّم بسياسة الجهاز من مالك الجهاز أو مالك الملف الشخصي المُدار سجلات الشبكة في مالك الجهاز الذي لديه ملف شخصي للعمل لا يتضمَّن أنشطة الشبكة في الملف الشخصي إذا تم تفعيله من خلال مالك الملف الشخصي.

تفعيل تسجيل الشبكة

لبدء تسجيل نشاط الشبكة، اتّصِل بالرقم DevicePolicyManager. طريقة setNetworkLoggingEnabled() واجتياز true كوسيطة enabled. يمكن لوحدة التحكّم بسياسة الجهاز (DPC) الاتصال isNetworkLoggingEnabled() للتحقّق من الاتصال بالشبكة تسجيل النشاط.

بعد أن تقوم وحدة التحكم بسياسة الجهاز (DPC) بتسجيل الشبكة، قد يكون الأمر بعض الوقت قبل أن تتمكن الدفعة الأولى من السجلات جاهزة. قد ترغب في تحديد توقعات التسليم لقسم تكنولوجيا المعلومات المشرفين في واجهة المستخدم لديك.

لإيقاف تسجيل نشاط الشبكة، عليك الاتصال برقم setNetworkLoggingEnabled() واستخدام البطاقة. false عندما يوقف أحد مشرفي تكنولوجيا المعلومات تسجيل بيانات الشبكة، يحذف النظام أي والسجلات المجمّعة والتي لم يتم الإبلاغ عنها.

استرداد السجلات

يمكن لوحدة التحكّم بسياسة الجهاز (DPC) استرداد السجلات على دفعات، ولا توفرها واجهات برمجة التطبيقات لتسجيل الشبكة. الوصول العشوائي إلى الإدخالات الفردية السابقة. عندما تتوفر دفعة جديدة من السجلات، تتلقى الفئة الفرعية DeviceAdminReceiver التابعة لوحدة التحكّم بسياسة الجهاز رد الاتصال onNetworkLogsAvailable() معاودة الاتصال يتضمن رمزًا مجمّعًا يمكن لوحدة التحكّم بسياسة الجهاز استخدامه لاسترداد السجلّات. تطلب وحدة التحكّم بسياسة الجهاز طريقة DevicePolicyManager retrieveNetworkLogs() من أجل للحصول على قائمة بأحداث الشبكة.

يوضح المثال التالي أنه يمكنك استرداد السجلات في الفئة الفرعية DeviceAdminReceiver:

Kotlin

fun onNetworkLogsAvailable(
        context: Context, intent: Intent, batchToken: Long, networkLogsCount: Int) {

    val dpm = getManager(context)
    var logs: List<NetworkEvent>? = null

    // Fetch the batch of logs with the batch token from the callback's arguments.
    try {
        logs = dpm.retrieveNetworkLogs(getWho(context), batchToken)
    } catch (e: SecurityException) {
        // Perhaps an unaffiliated user - handle the exception ...
    }

    // Process any logs ...
}

Java

public void onNetworkLogsAvailable(
    Context context, Intent intent, long batchToken, int networkLogsCount) {

  DevicePolicyManager dpm = getManager(context);
  List<NetworkEvent> logs = null;

  // Fetch the next batch of logs using the callback's batch token argument.
  try {
    logs = dpm.retrieveNetworkLogs(getWho(context), batchToken);
  } catch (SecurityException e) {
    // Perhaps an unaffiliated user - handle the exception ...
  }

  // Process any logs ...
}

يجب أن تسترد وحدة التحكّم بسياسة الجهاز السجلات على الفور لأنّ النظام يحذف أو السجلات لتوفير مساحة للدفعات الجديدة. قد ترغب في الاحتفاظ بنسختك المحلية من إلى أن تتأكد من معالجة وحدة التحكّم بسياسة الجهاز (DPC) لها جميعًا بدون مشاكل.

معالجة أي سجلات

تحتوي دفعة السجلات عادةً على مزيج من DnsEvent ConnectEvent مثال لمعرفة المزيد حول حقول البيانات الخاصة عمليات بحث نظام أسماء النطاقات واتصالات الشبكة، يُرجى الاطّلاع على سجلات الأحداث. الفعاليات بترتيب زمني وأن كل دفعة لا تحتوي على أكثر من 1200 حدث.

بعد إجراء المكالمة لاسترداد السجلّات، تحقَّق من أنّ القيمة المعروضة ليست null. تشير رسالة الأشكال البيانية قد تكون null في حالة حدوث أي مما يلي:

  • الدُفعة الممثَّلة بالرمز المميّز للدُفعة لم تعُد متاحة. وحدة التحكّم بسياسة الجهاز (DPC) لم يتمكن من استرداد الدفعة ويجب انتظار الدفعة التالية.
  • أوقَف مشرف تكنولوجيا المعلومات ميزة تسجيل بيانات الشبكة.

يوضِّح المثال المبسّط التالي كيف يمكن لوحدة التحكّم بسياسة الجهاز (DPC) استخراج أسماء المضيفين لنظام أسماء النطاقات. تم حلها. تحتاج وحدة التحكّم بسياسة الجهاز إلى عمليات معالجة وإعداد تقارير أكثر تعقيدًا.

Kotlin

// Here, logs might be null. We can't fix because either the token doesn't match
// the current batch or network logging was deactivated.
// Confirm with isNetworkLoggingEnabled().

logs?.forEach {
    // For this example, report the DNS hosts and discard all other data.
    // Because we use the event ID, this example requires API level 28.
    if (it is DnsEvent) {
        reportDnsHostToServer(it.hostname, it.getTimestamp(), it.getId())
    }
}

Java

if (logs == null) {
  // Abandon processing because either the token doesn't match the current batch
  // or network logging was deactivated - confirm with isNetworkLoggingEnabled().
  return;
}

for (NetworkEvent event : logs) {
  // For this example, report the DNS hosts and discard all other data.
  // This example requires API level 28 because we use the event ID.
  if (event instanceof DnsEvent) {
    reportDnsHostToServer(
        ((DnsEvent) event).getHostname(), event.getTimestamp(), event.getId());
  }
}

يوضح المثال السابق أيضًا كيف يمكنك الحصول على المعرّف الرقمي الأحداث التي تم تضمينها في Android 9.0 (المستوى 28 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث. لأنّ المعرّف تزداد بشكل رتيب مع كل حدث، فيمكنك مساعدة مشرفي تقنية المعلومات على اكتشاف الفجوات في سجلاتهم. ويعيد النظام تعيين المعرّف عندما تتيح وحدة التحكم في سياسة الجهاز التسجيل أو عندما إعادة تشغيل الجهاز.

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

التطوير والاختبار

وأثناء قيامك بالتطوير والاختبار، قد ترغب في تلقي onNetworkLogsAvailable() طلبات معاودة الاتصال بدون الحاجة إلى إجراء تصفح المئات من صفحات الويب. في الإصدار 9.0 من نظام التشغيل Android (المستوى 28 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث، يمكنك: إجراء بعض نماذج طلبات الشبكة وفرض إرسال السجلات المتاحة معاودة الاتصال. شغِّل الأمر Android Debug Bridge (adb) في محطة طرفية:

adb shell dpm force-network-logs

يقيّد النظام عدد المرات التي يمكنك فيها استخدام الأداة ويُبلغ عن أي التباطؤ المتعمد في الإخراج الطرفي. إذا لم تكن هناك أي سجلات فلن تتلقى وحدة التحكّم بسياسة الجهاز (DPC) معاودة الاتصال.