Android izinleri

Android izinleri, kullanıcıların farkındalığını artıran ve uygulamaların hassas verilere erişimini sınırlayan kontroller sağlar. Android 8.0 ve önceki sürümlerde izinleri yapılandırmak için izin verilenler listesi oluşturulması gerekir. Aksi takdirde, 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 eklenmemiş uygulamaları kullanmaya çalışan cihazlar başlatılmaz.

Android 10, rol kavramını tanıttı. Rol, sistem içinde belirli koşullar ve ayrıcalıklarla ilişkili benzersiz bir addır. 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ı Uygulamalara (PHA) karşı artırılan koruma önlemleri sayesinde:

  • Potansiyel zararlı uygulama davranışları hakkında şeffaflık.
  • Uygulama davranışı üzerinde kullanıcı kontrolü.
  • Uygulama geliştiricilerin, izinlerle korunan özel verileri kullanırken takdir yetkisi.

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 sonraki sürümlerde izin kontrolü işlevi ayrı bir pakette, PermissionController (//packages/apps/PermissionController) bulunur. Şekil 1'de iki paketin Android 10'daki konumu gösterilmektedir.

Sistem uygulamaları ve kullanıcı tarafından yüklenen uygulamalar için paket yükleme ile izin kontrolü işlevlerinin ayrılması

1. şekil. 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, tehlikeli izinlere çalışma zamanında erişim isteğinde bulunur. Android 10, kullanıcıdan tehlikeli izinleri değiştirmesini veya bunlara izin vermesini isteyen etkinlik tanıma (AR) çalışma zamanı izinlerini 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 başlatılamaz.

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 İçin Ad Alanları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 cihazın ekran içeriğine erişebilmesi için hem imza izinlerine hem de kullanıcı iznine sahip olması gerekir. 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.

Android 15, sistem dışı uygulamalar tarafından istenen veya sistem uygulamalarındaki güncellemelerle yeni istenen platform imzası izinlerini /etc/permissions dizinindeki sistem yapılandırması XML dosyalarında açıkça izin verilenler listesine eklemenizi zorunlu kılar.

Şeffaflık ve gizlilik

Android 6.0 ve sonraki sürümlerde, cihazın fabrika MAC adresi, kablosuz hizmet sağlayıcılar ve paket analizörleri tarafından erişime karşı korunur. Android 10'dan itibaren geçerli olan 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 (kimlikler) erişmesini engeller. ( Bağlantı bölümünde, bu durum operatörleri etkilediği için Cihaz Tanımlayıcıları hakkında ilgili bir tartışma yer almaktadır.)

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

Basitleştirilmiş yapılandırmalar

Android 6.0 ve sonraki sürümlerde izin yapılandırmaları basitleştirildi.

  • init tarafından başlatılan hizmetler için çevre 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 fs_config.c kullanarak yapılandırın.
  • Android 7.x ve önceki sürümlerde, dosya sistemi özelliklerini ve/veya özel cihaz üreticisi AID'lerini belirtmek için cihaza özel bir android_filesystem_config.hdosya kullanılarak Android kimlikleri (AID'ler) mekanizması genişletilir. Android 8.0 ve sonraki sürümlerde dosya sistemi özelliklerini genişletmek için yeni bir yöntem desteklenir.
  • Android 8.0'da USB komutlarının işlenmesi cihaza özgü init komut dosyalarından (HAL katmanlarının yerine kullanılan) çıkarılıp yerel bir USB daemon'a taşındı. Android 8.0 ve sonraki sürümlerde başlatılan her cihazda USB HAL arayüzü uygulanmalıdır.