Android izinleri

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 izinleri yapılandırırken izin verilenler listesine ekleme işlemi de yapılır. Bu işlem yapılmazsa ayrıcalıklı uygulamalar, priv-app yolunda olsalar bile devre dışı bırakılır. Android 9 ve sonraki sürümlerde, izin verilenler listesine düzgün şekilde eklenmemiş uygulamaları kullanmaya çalışan cihazlar başlatılmaz.

Android 10, sistemde belirli koşullar ve ayrıcalıklarla ilişkili benzersiz bir ad olan rol kavramını kullanıma sundu. Uygulamalara belirli bir amaç için izin vermek üzere roller atayın ve platform yapılandırma kaynaklarını kullanarak varsayılan rolleri yapılandırın.

Potansiyel Zararlı Uygulamalar'a (PHA'lar) karşı artan korumalar şunları iyileştirir:

  • Potansiyel olarak zararlı uygulama davranışlarıyla ilgili şeffaflık
  • Uygulama davranışı üzerinde kullanıcı kontrolü.
  • Uygulama geliştiricilerin, izinlerle korunan gizli verileri kullanma konusundaki 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) yer alıyordu. Android 10 ve sonraki sürümlerde izin denetimi işlevi ayrı bir pakette (PermissionController) bulunur (//packages/apps/PermissionController). Şekil 1, iki paketin Android 10'daki yerini gösterir.

Sistem uygulamaları ve kullanıcı tarafından yüklenen uygulamalar tarafından kullanılan paket yükleme ve izin denetimi işlevlerinin ayrılması

Şekil 1. Android 10'da 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ının tehlikeli izinleri değiştirmesini veya bunlara izin vermesini isteyen etkinlik tanıma (AR) çalışma zamanı izinleri ekler.

Android 8.0, ayrıcalıklı uygulamaları /etc/permissions dizinindeki sistem yapılandırması XML dosyalarında açıkça izin verilenler listesine eklemenizi gerektiriyordu. Android 9 ve sonraki sürümlerde ayrıcalıklı izinler izin verilenler listesine eklenmelidir. Aksi takdirde cihaz önyükleme yapamaz.

Android 7.0, dahili API görünürlüğünü sınırlamak ve uygulamaların platform kitaplıklarına yanlışlıkla erişmesini önlemek için yerel kitaplıklar için ad alanını kullanıma sundu. Bu sayede sistem kitaplıkları uygulama kitaplıklarından ayrılır ve cihaz üreticileri kendi yerel kitaplıklarını ekleyebilir.

Android 10'dan itibaren uygulamaların bir cihazın ekran içeriğine erişebilmesi için hem imza izinlerine hem de kullanıcı iznine sahip olması gerekir. Sessiz yakalama işlevini kullanan ayrıcalıklı uygulamalar (ör. ekran görüntüsü alma) bunun yerine MediaProjection sınıfını kullanmalıdır.

Android 15, sistem dışı uygulamalar tarafından istenen veya sistem uygulamalarının güncellemeleri tarafından yeni istenen platform imza izinlerini /etc/permissions dizinindeki sistem yapılandırması XML dosyalarında açık bir şekilde izin verilenler listesine eklemenizi gerektirir.

Şeffaflık ve gizlilik

Android 6.0 ve sonraki sürümlerde, cihazın fabrika MAC adresi, kablosuz ağ servis sağlayıcıları ve paket analiz araçlarının erişimine karşı korunur. Android 10'dan itibaren geçerli olan ek kısıtlamalar, ayrıcalıklı izinler için izin verilenler listesine eklenmeyen uygulamaların değişmez cihaz tanımlayıcılarına erişimini sınırlandırmaktadır. ( Bağlantı bölümünde, operatörleri etkilediği için cihaz tanımlayıcılar hakkında ilgili bir tartışma sunulur.)

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

Android 10'dan itibaren diğer şeffaflık ve gizlilik özellikleri için izinleri yapılandırma

  • Arka planda konum erişimi hatırlatıcısı, bir uygulamanın arka planda ACCESS_FINE_LOCATION izinini kullanarak cihaz konumlarına eriştiği durumlarda kullanıcılara gösterilir.
  • Kişi Sağlayıcı bileşeni tarafından yönetilen, kişilerle ilgili yakınlık verilerine farklı şekilde erişilir: Uygulamalar, veritabanındaki kişi yakınlık verilerine yazamaz veya bu verileri okuyamaz. Bu durum, arayanla ilgili API'leri etkiler.

Geliştirilmiş yapılandırmalar

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

  • init tarafından başlatılan hizmetler için çevresel özellikler, hizmet yapılandırmasının tüm yönlerini tek bir .rc dosyasında tutar. init tarafından başlatılmayan hizmetlerin özelliklerini ayarlarken bunun yerine fs_config.c'ü kullanarak dosya sistemi özelliklerini yapılandırın.
  • Android 7.x ve önceki sürümler, dosya sistemi özelliklerini 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 sonraki sürümler, dosya sistemi özelliklerini 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çer) ve yerel bir USB arka plan programına taşınmıştır. USB HAL arayüzü, Android 8.0 ve sonraki sürümlerde kullanıma sunulan her cihazda uygulanmalıdır.