應用權限管控概述
簡介
系統提供了一種允許應用訪問系統資源(如:通訊錄等)和系統能力(如:訪問攝像頭、麥克風等)的通用權限訪問方式,來保護系統數據(包括用戶個人數據)或功能,避免它們被不當或惡意使用。
應用權限保護的對象可以分為數據和功能:
- 數據包括個人數據(如照片、通訊錄、日歷、位置等)、設備數據(如設備標識、相機、麥克風等)。
- 功能包括設備功能(如訪問攝像頭/麥克風、打電話、聯網等)、應用功能(如彈出懸浮窗、創建快捷方式等)。
- 開發前請熟悉鴻蒙開發指導文檔 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
權限使用的基本原則
合理的使用場景有助于應用權限申請和使用。開發應用時權限申請需要滿足如下原則:
- 應用(包括應用引用的三方庫)所需權限必須在應用的配置文件中嚴格按照權限開發指導逐個聲明。
- 權限申請滿足最小化原則,禁止申請非必要的、已廢棄的權限。應用申請過多權限,會引起用戶對應用安全性的擔憂以及使用體驗變差,從而也會影響到應用的安裝率和留存率。
- 應用申請敏感權限時,必須填寫權限使用理由字段,敏感權限通常是指與用戶隱私密切相關的權限,包括地理位置、相機、麥克風、日歷、健身運動、身體傳感器、音樂、文件、圖片視頻等權限。
- 應用敏感權限須在對應業務功能執行前動態申請,滿足隱私最小化要求。
- 用戶拒絕授予某個權限后,應用與此權限無關的其他業務功能應允許正常使用。
授權方式
根據授權方式的不同,權限類型可分為system_grant(系統授權)和user_grant(用戶授權)。
system_grant(系統授權)
system_grant指的是系統授權類型,在該類型的權限許可下,應用被允許訪問的數據不會涉及到用戶或設備的敏感信息,應用被允許執行的操作對系統或者其他應用產生的影響可控。
如果在應用中申請了system_grant權限,那么系統會在用戶安裝應用時,自動把相應權限授予給應用。
user_grant(用戶授權)
user_grant指的是用戶授權類型,在該類型的權限許可下,應用被允許訪問的數據將會涉及到用戶或設備的敏感信息,應用被允許執行的操作可能對系統或者其他應用產生嚴重的影響。
該類型權限不僅需要在安裝包中申請權限,還需要在應用動態運行時,通過發送彈窗的方式請求用戶授權。在用戶手動允許授權后,應用才會真正獲取相應權限,從而成功訪問操作目標對象。
例如,在[應用權限列表]中,麥克風和攝像頭對應的權限都是屬于用戶授權權限,列表中給出了詳細的權限使用理由。應用需要在應用商店的詳情頁面,向用戶展示所申請的user_grant權限列表。
權限組和子權限
為了盡可能減少系統彈出的權限彈窗數量,優化交互體驗,系統將邏輯緊密相關的user_grant權限組合在一起,形成多個權限組。
當應用請求權限時,同一個權限組的權限將會在一個彈窗內一起請求用戶授權。權限組中的某個權限,稱之為該權限組的子權限。
權限組和權限的歸屬關系并不是固定不變的,一個權限所屬的權限組有可能發生變化。當前系統支持權限組請查閱[應用權限組列表]。
權限機制中的基本概念
TokenID
系統采用TokenID(Token identity)作為應用的唯一標識。權限管理服務通過應用的TokenID來管理應用的AT(Access Token)信息,包括應用身份標識APP ID、子用戶ID、應用分身索引信息、應用APL、應用權限授權狀態等。在資源使用時,系統將通過TokenID作為唯一身份標識映射獲取對應應用的權限授權狀態信息,并依此進行鑒權,從而管控應用的資源訪問行為。
值得注意的是,系統支持多用戶特性和應用分身特性,同一個應用在不同的子用戶下和不同的應用分身下會有各自的AT,這些AT的TokenID也是不同的。APL等級
為了防止應用過度索取和濫用權限,系統基于APL(Ability Privilege Level,元能力權限等級)等級,配置了不同的權限開放范圍。
元能力權限等級APL指的是應用的權限申請優先級的定義,不同APL等級的應用能夠申請的權限等級不同。應用APL等級
應用的等級可以分為以下三個等級,等級依次提高。APL級別 說明 normal 默認情況下,應用的APL等級都為normal等級。 system_basic 該等級的應用服務提供系統基礎服務。 system_core 該等級的應用服務提供操作系統核心能力。 應用APL等級不允許配置為system_core。 權限APL等級
根據權限對于不同等級應用有不同的開放范圍,權限類型對應分為以下三個等級,等級依次提高。APL級別 說明 HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
開放范圍 normal 允許應用訪問超出默認規則外的普通系統資源,如配置Wi-Fi信息、調用相機拍攝等。 這些系統資源的開放(包括數據和功能)對用戶隱私以及其他應用帶來的風險低。 APL等級為normal及以上的應用。 system_basic 允許應用訪問操作系統基礎服務(系統提供或者預置的基礎功能)相關的資源,如系統設置、身份認證等。 這些系統資源的開放對用戶隱私以及其他應用帶來的風險較高。 APL等級為system_basic及以上的應用。 system_core 涉及開放操作系統核心資源的訪問操作。這部分系統資源是系統最核心的底層服務,如果遭受破壞,操作系統將無法正常運行。 - APL等級為system_core的應用。 - 僅對系統應用開放。 訪問控制列表(ACL)
如上所述,權限APL等級和應用APL等級是一一對應的。原則上,擁有低APL等級的應用默認無法申請更高等級的權限。訪問控制列表ACL(Access Control List)提供了解決低等級應用訪問高等級權限問題的特殊渠道。
系統權限均定義了“ACL使能”字段,當該權限的ACL使能為TRUE,應用可以使用ACL方式跨級別申請該權限。具體單個權限的定義。
場景舉例:如開發者正在開發APL等級為normal的A應用,由于功能場景需要,A應用需要申請等級為system_basic的P權限。在P權限的ACL使能為TRUE的情況下,A應用可以通過ACL方式跨級申請權限P。
審核編輯 黃宇
-
框架
+關注
關注
0文章
398瀏覽量
17432 -
APl
+關注
關注
0文章
8瀏覽量
8068 -
鴻蒙
+關注
關注
57文章
2307瀏覽量
42738
發布評論請先 登錄
相關推薦
評論