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