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