Ağ etkinliği günlük kaydı

Bu belgede, bir cihaz politikası denetleyicisinin (DPC) ağı nasıl günlüğe kaydettiği açıklanmaktadır. etkinliği'ne dokunun. DPC'nize ağ günlük kaydını nasıl ekleyeceğinizi öğrenmek için okumaya devam edin.

Genel Bakış

Ağ etkinliğini günlüğe kaydetmek, kurumların spam içeren sızıntıları tespit edip tespit edebilirsiniz. DPC'niz TCP'yi bildirmek için ağ günlük kaydı API'lerini çağırabilir bağlantı ve DNS aramaları için kullanılabilir.

Genellikle DPC'niz günlükleri BT yöneticisine sunulmak üzere bir sunucuya gönderir. Günlükleri sunucunuzda daha fazla veya yerel olarak olanak tanır. Örneğin, BT'yi algılayıp uyarmak için DNS ret listeleri oluşturabilirsiniz. yöneticilerini şüpheli davranış hakkında bilgilendirin.

Kullanılabilirlik

Ağ günlük kaydı, cihaz sahipleri için Android 8 ve sonraki sürümlerde desteklenir. Eğer bu özellik etkinleştirildiğinde cihazın ağ etkinliği hakkında veri toplar. Aynı zamanda yönetilen bir profilin sahibi olan kullanıcılar için Android 12 ve sonraki sürümlerde desteklenir. DELEGATION_NETWORK_LOGGING ile yetki verilmiş bir uygulama. Profil sahibi ağ günlük kaydını etkinleştirdiğinde, ağ günlükleri yalnızca ve iş profilinin ağ etkinliğini içerir ve kişisel profil.

Daha fazla bilgi edinmek için İlişkili kullanıcılar başlıklı makaleyi okuyun.

Olay günlükleri

Ağ günlük kaydı etkin olduğunda Android, sistem ağ kitaplıkları. Ağ günlük kaydı iki tür etkinlik kaydeder:

  • DNS aramaları
  • Ağ bağlantıları

DNS aramaları

Ağ günlük kaydı, sistem ağının bir parçası olan DNS aramaları için bir etkinlik kaydeder. kabul edersiniz. Günlükler, ana makine adını bir IP olarak çözümleyen her DNS isteğini yakalar. girin. Alan adı sunucusu keşfi gibi desteklenen diğer DNS sorguları kaydedilir.

Ağ etkinliği günlük kaydı API'leri, her DNS aramasını bir DnsEvent örneği. Tablo 1’de alanlar ve tipik bir değerler DnsEvent içine kaydedilir.

Tablo 1. DNS etkinlik alanları

Veri Örnek Açıklama
Ana makine adı ana_makine.example.com DNS sorgusunda gönderilen ana makinenin adı.
Inet adresleri 203.0.113.9, 198.51.100.25 Ana makine adı için DNS sorgusunun çözümlendiği bir IPv4 veya IPv6 adresi listesi. Günlük boyutunu yönetilebilir düzeyde tutmak için sonuçlar tüm IP adreslerini içermeyebilir. Bir sonraki satırdaki adres sayısına bakın.
Adres sayısı 4 DNS sorgusu çözümlemesinden döndürülen IP adreslerinin sayısı. Kaydedilen IP adreslerinin, sonuçların bir alt kümesi olup olmadığını öğrenmek için bunu kullanın. 0 (sıfır) değeri, ana makine adının bir IP adresine çözümlenmediği anlamına gelir.
Paket adı com.android.chrome DNS sorgusunu yapan uygulamanın paket adı.
Zaman damgası 1506297600000 DNS araması gerçekleştiğinde bir zaman damgası kaydı. Değer, DNS araması ile 1 Ocak 1970 (UTC) gece yarısı arasındaki milisaniye aralığıdır.
Kimlik 25 Tekdüze şekilde artan sayısal kimlik. Android 9.0 (API düzeyi 28) veya sonraki sürümlerde kullanılabilir.

DNS aramaları, BT yöneticilerine ağ bağlantılarını izlerseniz, ağ günlük kaydı DNS kayıt çözümüdür. Bir uygulamanın yapabileceği bazı DNS görevleri bu bilgiler:

  • Doğrudan DNS alan adı sunucusuyla iletişim kurma.
  • DNS sorguları yapmak için bir Java DNS kitaplığını çağırma.
  • DNS sorgusundan kaçınmak için sabit bir IP adresine bağlanın.

Ağ bağlantıları

Ağ günlük kaydı, sistem ağ isteği. Günlükler başarılı ve başarısız TCP yakalıyor bağlantılarında olduğu gibi, UDP aktarımları kaydedilmez.

Ağ etkinliği günlük kaydı API'leri her bağlantıyı ConnectEvent örneği. Tablo 2'de ve tipik değerler bir ConnectEvent içine kaydedilir.

Tablo 2. Etkinlik alanlarını bağla

Veri Örnek Açıklama
Inet adresleri 2001:db8::2f:abc:0 Cihazın bağlandığı IP adresi. Bu bir IPv4 veya IPv6 adresi olabilir.
Bağlantı noktası 80 Cihazın bağlandığı TCP bağlantı noktası numarası.
Paket adı com.android.chrome Bağlanan uygulamanın paket adı.
Zaman damgası 1506297600000 Ağ bağlantısı gerçekleştiğinde kaydedilen bir zaman damgası. Değer, bağlantı ile 1 Ocak 1970 (UTC) tarihinde gece yarısı arasındaki milisaniye aralığıdır.
Kimlik 26 Tekdüze şekilde artan sayısal kimlik. Android 9.0 (API düzeyi 28) veya sonraki sürümlerde kullanılabilir.

Uygulama standart ağ kitaplıklarını çağırdığında ağ günlük kaydı bir etkinlik kaydeder. Örneğin, Android'in yerleşik API'leri veya popüler üçüncü taraf kitaplıkları gibi daha fazla bilgi edindiniz. Doğrudan iletişim kurmak için sistem çağrıları yapan uygulamalar günlüğe kaydedilmez. UDP ağ iletişimi günlüğe kaydedilmediğinden bazı medya akışı, mesajlaşma ve oyun uygulamaları günlüklerde görünmeyebilir.

Kullanıcıları bilgilendirme

Sistem, ağ etkinliği günlük kaydının etkin olduğu konusunda cihaz kullanıcılarını uyarır. Kullanıcı Sayısı arayüzde aşağıdaki uyarıları görürsünüz:

  • Cihaz yönetimi iletişim kutusunda, DPC'nizin izleme işlemini yaptığını açıklayan bir bölüm ağ trafiği. Kullanıcılar, yönetilen cihaz bilgilerine dokunarak iletişim kutusunu görür etiketini Hızlı Ayarlar'da bulabilirsiniz.
  • Kullanıcı ağda yeniyken gösterilen kapatılabilir bir sistem bildirimi günlük kaydı. Bildirime dokunduğunuzda Cihaz izleme iletişim kutusu şu şekilde gösterilir: konusunda daha ayrıntılı bilgi edinebilirsiniz. Bildirim kaybolur DPC'niz ağ günlük kaydını devre dışı bıraktığında.

DPC'nize ağ günlük kaydı ekleyin

BT yöneticilerinin ağ günlüklerini incelemesine yardımcı olmak için DPC'nizin şu görevlerden yararlanabilirsiniz:

  • Ağ günlük kaydını açın ve kapatın.
  • Yeni bir grup hazır olduğunda kayıtlı günlükleri alın.
  • Günlüklerdeki faydalı verileri bir sunucuya gönderin.

Gereksinimler

Ağ günlük kaydı, Android 8.0 (API düzeyi 26) veya sonraki sürümlerde bir profil sahibi için Android 12 (API düzeyi 31) veya sonraki bir sürüme yönetilen profil. Ağ etkinliğini günlüğe kaydetmeden önce DPC'niz, bu etkinliklerin yönetilen bir profilin cihaz sahibi veya profil sahibi olabilir. Ağ günlükleri iş profili olan cihaz sahibinin ağ etkinliğini içermiyor Profil sahibi tarafından etkinleştirildiyse kişisel profilde.

Ağ günlük kaydını etkinleştir

Ağ etkinliğini günlüğe kaydetmeye başlamak için DevicePolicyManager numarasını arayın setNetworkLoggingEnabled() yöntemi ve true enabled bağımsız değişkeni olarak kullanılır. DPC'niz arayabilir Ağ olup olmadığını kontrol etmek için isNetworkLoggingEnabled() etkinlik kaydedilir.

DPC'niz ağ günlük kaydını etkinleştirdikten sonra ilk günlük grubu hazır. BT departmanının teslimatla ilgili beklentilerini yöneticileri tarafından kontrol edilir.

Ağ etkinliğini günlüğe kaydetmeyi durdurmak için setNetworkLoggingEnabled() numaralı telefonu arayıp geçin false. BT yöneticisi ağ günlük kaydını kapatırsa sistem, raporlanmayan günlüklerin durumunu gösterir.

Günlükleri alma

DPC'niz günlükleri toplu olarak alabilir. Ağ günlük kaydı API'leri tek tek geçmiş girişlere rastgele erişim. Yeni bir günlük grubu mevcut olduğunda DPC'nizin DeviceAdminReceiver alt sınıfı onNetworkLogsAvailable() geri arama. Geri çağırma DPC'nizin günlükleri almak için kullanabileceği bir toplu jeton bulunur. DPC'niz DevicePolicyManager yöntemi retrieveNetworkLogs() ile ağ etkinliklerinin listesini almak

Aşağıdaki örnek, DeviceAdminReceiver alt sınıf:

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'niz günlükleri hemen alır çünkü sistem günlüklere bakın. Bu belgenin yerel kopyasını saklamak isteyebilirsiniz emin olun.

Tüm günlükleri işleyin

Bir günlük grubu genellikle DnsEvent ve ConnectEvent örnek. Google Cloud'un veri alanları hakkında daha fazla bilgi DNS aramaları ve ağ bağlantıları için Etkinlik günlükleri başlıklı makaleyi inceleyin. Etkinlikler kronolojik sıradadır ve her grup en fazla 1.200 etkinlik içerir.

Günlükleri almak için yaptığınız çağrıdan sonra, döndürülen değerin null olup olmadığını kontrol edin. İlgili içeriği oluşturmak için kullanılan değeri, aşağıdakilerden biri gerçekleştiğinde null olabilir:

  • Toplu jeton tarafından temsil edilen grup artık kullanılamıyor. DPC'niz grup alamıyor ve bir sonraki grubu beklemesi gerekiyor.
  • BT yöneticisi ağ günlük kaydını devre dışı bıraktı.

Aşağıdaki basitleştirilmiş örnekte, DPC'nin DNS ana makine adlarını nasıl çıkarabileceği gösterilmektedir çözüme ulaştırıldı. DPC'niz daha gelişmiş işleme ve raporlamaya ihtiyaç duyar.

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());
  }
}

Önceki örnek, her bir veri için sayısal kimliği nasıl alabileceğinizi de etkinlikleri içeren etkinlikler. Çünkü kimlik, her etkinlik için Monoton olarak artar, böylece BT yöneticilerinin konulardaki eksiklikleri . Bir DPC günlük kaydını etkinleştirdiğinde veya yeniden başlatılır.

DPC'niz koleksiyonun tamamını bir sunucuya gönderebilir veya cihazdaki etkinlikleri filtreleyin. Örneğin, izin verilenler listesine eklenmiş BT yöneticileri için raporlama.

Geliştirme ve test

Geliştirme ve test aşamasındayken, değerlendirme sorularına yanıt almak için onNetworkLogsAvailable() geri arama yüzlerce web sayfasına göz atabilirsiniz. Android 9.0 (API düzeyi 28) veya sonraki sürümlerde şunları yapabilirsiniz: birkaç örnek ağ isteği gönderin ve sistemi, mevcut günlükler içeren bir günlükler göndermeye zorlayın geri arama. Aşağıdaki Android Debug Bridge (adb) komutunu terminal:

adb shell dpm force-network-logs

Sistem, aracı kullanabileceğiniz sıklığı sınırlandırır ve terminal çıkışında kasıtlı olarak yavaşlatılması gerekir. Rapor yoksa DPC'niz geri arama almaz.