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.
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.
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.