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 önceki sürümlerde izinlerin yapılandırılması, izin verilenler listesine eklemeyi içerir; bu olmadan ayrıcalıklı uygulamalar, priv-app yolunda olsalar bile devre dışı bırakılır. Android 9 ve sonraki sürümlerde, uygun şekilde izin verilenler listesine eklenmeyen uygulamaları kullanmaya çalışan bir cihaz önyükleme yapmayacaktır.

Android 10, sistem içinde belirli gereksinimler ve ayrıcalıklarla ilişkilendirilen benzersiz bir ad olan rol kavramını tanıttı. Belirli bir amaca yönelik izinleri vermek için uygulamalara roller atayın ve platform yapılandırma kaynaklarını kullanarak varsayılan rolleri yapılandırın.

Potansiyel Olarak Zararlı Uygulamalara (PHA'lar) karşı artan korumalar iyileşiyor

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

Paket yükleme ve izin

Android 9 ve önceki sürümlerde, paket yükleme ve izin kontrolü işlevleri, PackageInstaller paketinde ( //packages/apps/PackageInstaller ) yer alıyordu. Android 10 ve üzeri sürümlerde, izin kontrolü işlevi ayrı bir paket olan PermissionController ( //packages/apps/PermissionController ) bulunur. Şekil 1, iki paketin Android 10'da nerede bulunduğunu göstermektedir.

Sistem uygulamaları ve kullanıcı tarafından yüklenen uygulamalar tarafından kullanılan paket yükleme ve izin kontrolü işlevlerinin ayrılması
Şekil 1. Android 10'daki paket yükleme ve izin kontrolü işlevleri

İzin verilenler listeleri 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ıyı tehlikeli izinleri değiştirmeye veya izin vermeye yönlendiren etkinlik tanıma (AR) çalışma zamanı izinleri ekler.

Android 8.0, /etc/permissions dizinindeki sistem yapılandırması XML dosyalarında ayrıcalıklı uygulamaları açıkça izin verilenler listesine eklemenizi gerektiriyordu. Android 9 ve sonraki sürümlerde ayrıcalıklı izinlerin izin verilenler listesine eklenmesi gerekir, aksi takdirde cihaz önyükleyemez.

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ı kullanıma sundu. Bu, sistem kitaplıklarını uygulama kitaplıklarından ayırır ve cihaz üreticileri kendi yerel kitaplıklarını ekleyebilir.

Android 10'dan itibaren uygulamalar , bir cihazın ekran içeriğine erişim için hem imza izinlerine hem de kullanıcı onayına 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ın fabrikasının MAC adresi, Wi-Fi servis sağlayıcıları ve paket analizörlerinin erişimine karşı korunur. Android 10'dan itibaren ek kısıtlamalar , ayrıcalıklı izinler için izin verilenler listesine eklenmedikleri sürece uygulamaların değişmez cihaz tanımlayıcılarına (ID'ler) erişmesini sınırlamaktadır. ( Bağlantı 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 izni verirken kalıcı seçimler yapar. Android 10'dan başlayarak, üç durumlu konum izinleri özelliği, kullanıcılara uygulamanın bir cihazın konumuna erişmesine izin vermek için üç seçenek sunuyor. Bu izin gereksinimleri, hedef SDK'dan bağımsız olarak Android 10'daki uygulamalara uygulanır.

Android 10'dan itibaren diğer şeffaflık ve gizlilik özelliklerine ilişkin izinleri yapılandırın

  • Arka planda erişim konumu hatırlatıcısı, bir uygulamanın arka planda ACCESS_FINE_LOCATION iznini kullanarak cihaz konumlarına eriştiğini kullanıcılara gösterir.
  • Kişi Sağlayıcı bileşeni tarafından yönetilen, kişiler yakın ilgi alanıyla ilgili verilere farklı şekilde erişilir: Uygulamalar, veritabanındaki kişi yakın ilgi alanı verilerine yazamaz veya bu verilerden okuyamaz. Bu, arayanla ilgili API'leri etkiler.

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

İzin yapılandırmaları Android 6.0 ve üzeri için kolaylaştırıldı.

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