Android安全模型之Android安全機制(應用權限)

進程沙箱爲互不信任的應用程序之間提供了隔離機制,SharedUserID則爲具有信任關係的應用程序提供了共享資源的機制。然而,因爲用戶自行安裝的應用程序也不具有可信性,在默認狀況下,Android應用程序沒有任何權限,不能訪問保護的設備API與資源。所以,權限機制是Android安全機制的基礎,決定容許仍是限制應用程序訪問受限的API系統資源。應用程序的權限須要明肯定義,在安裝時被用戶確認,而且在運行時檢查,執行,授予和撤銷權限。在定製權限下,文件和內容提供者也能夠受到保護。android

具體而言,應用程序在安裝時都分配有一個用戶標誌(UID)以區別於其餘應用程序,保護本身的數據不被其餘應用獲取。Android根據不一樣的用戶和組,分配不一樣權限,好比訪問網絡,訪問GPS數據等,這些Android權限在底層映射爲Linux的用戶與組權限安全

權限機制的實現層次簡要歸納以下:網絡

  • 應用層顯式聲明權限:應用程序包(.apk文件)的權限信息在AndroidManifest.xml文件中經過<permission><premission-group><permission-tree>等標籤指定。須要申請某個權限,使用<uses-permission>指定。框架

  • 權限聲明包含權限名稱,屬於的權限組與保護級別工具

  • 權限組是權限按功能分紅的不一樣集合,其中包含多個具體權限,例如,發短信,無線上網與撥打電話的權限可列入一個產生費用的權限組。ui

  • 權限的保護級別分爲NormalDangerousSignatureSignatureorsystem四種,不一樣的級別限定了應用程序行使此權限時的認證方式。好比,Normal只要申請就可用,Dangerous權限在安裝時經用戶確認纔可用,Signature與Signatureorsystem權限須要應用程序必須爲系統用戶,如OEM製造商或ODM製造商等。spa

  • 框架層與系統層逐級驗證,若是某權限未在AndroidManifest.xml中聲明,那麼程序運行時會出錯。經過命令行調試工具logcat查看系統日誌可發現須要某權限的錯誤信息。命令行

  • 共享UID的應用程序可與系統另外一用戶程序同一簽名,也可同一權限。通常可在AndroidManifest文件中設置sharedUserId,如android:sharedUserId="android.uid.shared",以得到系統權限。可是,這種程序屬性一般由OEM植入,也就是說對系統軟件起做用。調試

Android的權限管理模塊在2.3版本以後,即便有root權限,仍沒法執行不少底層命令和API。例如,su到root用戶,執行ls等命令都會出現沒有權限的錯誤。
日誌

相關文章
相關標籤/搜索