Android İzinleri

Android izinleri, kullanıcı farkındalığını artıran ve bir uygulamanın hassas verilere erişimini sınırlayan kontroller sağlar. Android 8.0 ve daha düşük sürümlerde izinlerin yapılandırılması, ayrıcalıklı uygulamaların, özel priv-app yolunda olsalar bile devre dışı bırakıldığı beyaz listeye almayı içerir. Android 9 ve sonraki sürümlerde, doğru şekilde beyaz listeye alınmamış uygulamaları kullanmaya çalışan bir cihaz önyükleme yapmaz.

Android 10, sistem içinde belirli gereksinimler ve ayrıcalıklarla ilişkilendirilen benzersiz bir ad olan rol kavramını tanıttı. Uygulamalara belirli bir amaç için izinler vermek üzere roller atayın ve platform yapılandırma kaynaklarını kullanarak varsayılan rolleri yapılandırın.

Potansiyel Olarak Zararlı Uygulamalara (PHA) karşı artırılmış korumalar

  • Potansiyel olarak zararlı uygulama davranışına karşı şeffaflık.
  • Uygulama davranışı üzerinde kullanıcı kontrolü.
  • İzinlerle korunan özel verileri kullanırken uygulama geliştiricilerinin takdir yetkisi.

Paket yükleme ve izin

Android 9 ve önceki sürümlerde, paket yükleme ve izin denetimi işlevleri PackageInstaller paketinde ( //packages/apps/PackageInstaller ) bulunuyordu. Android 10 ve sonraki sürümlerde, izin denetimi işlevi ayrı bir pakette bulunur, PermissionController ( //packages/apps/PermissionController ). Şekil 1 , iki paketin Android 10'da nerede bulunduğunu gösterir.

Sistem uygulamaları için ve kullanıcı tarafından yüklenen uygulamalar tarafından kullanıldığı şekliyle paket yükleme ve izin kontrol işlevlerinin ayrılması
Şekil 1. Android 10'da paket yükleme ve izin kontrol işlevleri

Beyaz listeler ve erişim

Android 6.0 ve sonraki sürümlerde, uygulamalar çalışma zamanında tehlikeli izinlere erişim ister. Android 10, kullanıcıdan tehlikeli izinleri değiştirmesini veya izin vermesini isteyen etkinlik tanıma (AR) çalışma zamanı izinleri ekler.

Android 8.0, /etc/permissions dizinindeki sistem yapılandırma XML dosyalarındaki ayrıcalıklı uygulamaları açıkça beyaz listeye almanızı gerektiriyordu. Android 9 ve sonraki sürümlerde, ayrıcalıklı izinler beyaz listeye alınmalıdır, aksi takdirde cihaz önyükleme yapamaz.

Dahili API görünürlüğünü sınırlamak ve uygulamaların yanlışlıkla platform kitaplıklarına erişmesini önlemek için Android 7.0 , Yerel Kitaplıklar için Ad Alanlarını tanıttı. Bu, sistem kitaplıklarını uygulama kitaplıklarından ayırır ve cihaz üreticileri kendi yerel kitaplıklarını ekleyebilir.

Android 10'da başlayan uygulamalar, bir cihazın ekran içeriğine erişmek için hem imza izinlerine hem de kullanıcı iznine sahip olmalıdır. Ekran görüntüsü alma gibi sessiz yakalama işlevine dayanan ayrıcalıklı uygulamalar bunun yerine MediaProjection sınıfını kullanmalıdır.

Şeffaflık ve gizlilik

Android 6.0 ve sonraki sürümlerde, bir cihaz fabrikası MAC adresi, Wi-Fi servis sağlayıcıları ve paket analizörleri tarafından erişime karşı korunur. Android 10'dan itibaren ek kısıtlamalar, ayrıcalıklı izinler için beyaz listeye alınmadıkları sürece uygulamaların değişmez cihaz tanımlayıcılarına (ID'ler) erişmesini sınırlar. ( Bağlanabilirlik bölümü, taşıyıcıları etkilediği için Cihaz Tanımlayıcıları hakkında ilgili bir tartışma sağlar.)

Android 9 ve önceki sürümlerde, kullanıcılar uygulamalara konum erişimi verirken kalıcı seçimler yapar. Android 10'dan başlayarak, üç durumlu konum izinleri özelliği, kullanıcılara bir cihazın konumuna uygulama erişimine izin vermek için üç seçenek sunar. Bu izin gereksinimleri, hedef SDK'dan bağımsız olarak Android 10'daki uygulamalara uygulanır.

Android 10'dan başlayarak diğer şeffaflık ve gizlilik özellikleri için izinleri yapılandırın

Kolaylaştırılmış konfigürasyonlar

İzin yapılandırmaları, Android 6.0 ve sonraki sürümler için kolaylaştırılmıştır.

  • init tarafından başlatılan hizmetler için ortam yetenekleri , hizmet yapılandırmasının tüm yönlerini tek bir .rc dosyasında tutar. init tarafından başlatılmayan hizmetler için yetenekleri ayarlarken, dosya sistemi yeteneklerini bunun yerine fs_config.c kullanarak yapılandırın.
  • Android 7.x ve önceki sürümleri, dosya sistemi yeteneklerini ve/veya özel cihaz üreticisi AID'lerini belirtmek için cihaza özel bir android_filesystem_config.h dosyası kullanarak Android Kimlikleri (AID'ler) mekanizmasını genişletir. Android 8.0 ve üstü, dosya sistemi yeteneklerini genişletmek için yeni bir yöntemi destekler.
  • Android 8.0'da, USB komutlarının işlenmesi, cihaza özgü init komut dosyalarından (HAL katmanlarının bir ikamesi) dışına ve yerel bir USB arka plan programına taşındı. USB HAL arabirimi, Android 8.0 ve sonraki sürümlerde başlatılan her cihazda uygulanmalıdır.