鴻蒙OS 應用權(quán)限管理

2020-09-15 10:13 更新

HarmonyOS 中所有的應用均在應用沙盒內(nèi)運行。默認情況下,應用只能訪問有限的系統(tǒng)資源,系統(tǒng)負責管理應用對資源的訪問權(quán)限。

應用權(quán)限管理是由接口提供方(Ability)、接口使用方(應用)、系統(tǒng)(包括云側(cè)和端側(cè))以及用戶等多方共同參與的整個流程,保證受限接口是在約定好的規(guī)則下被正常使用,避免接口被濫用而導致用戶、應用和設備受損。

權(quán)限聲明

  • 應用需要在 config.json 中使用“reqPermissions”屬性對需要的權(quán)限逐個進行聲明。
  • 若使用到的三方庫也涉及權(quán)限使用,也需統(tǒng)一在應用的config.json中逐個聲明。
  • 沒有在config.json中聲明的權(quán)限,應用就無法獲得此權(quán)限的授權(quán)。

動態(tài)申請敏感權(quán)限

動態(tài)申請敏感權(quán)限基于用戶可知可控的原則,需要應用在運行時主動調(diào)用系統(tǒng)動態(tài)申請權(quán)限的接口,系統(tǒng)彈框由用戶授權(quán),用戶結(jié)合應用運行場景的上下文,識別出應用申請相應敏感權(quán)限的合理性,從而做出正確的選擇。

即使用戶向應用授予了請求的權(quán)限,應用在調(diào)用受此權(quán)限管控的接口前,也應該先檢查自己有無此權(quán)限,而不能把之前授予的狀態(tài)持久化,因為用戶在動態(tài)授予后還可以通過設置取消應用的權(quán)限。

有關于應用動態(tài)申請敏感權(quán)限的詳細信息,請參閱動態(tài)申請權(quán)限。

自定義權(quán)限

HarmonyOS 為了保證應用對外提供的接口不被惡意調(diào)用,需要對調(diào)用接口的調(diào)用者進行鑒權(quán)。

大多情況下,系統(tǒng)已定義的權(quán)限滿足了應用的基本需要,若有特殊的訪問控制需要,應用可在config.json中以"defPermissions": []屬性來定義新的權(quán)限,并通過“availableScope”和“grantMode”兩個屬性分別確定權(quán)限的開放范圍和授權(quán)方式,使得權(quán)限定義更加靈活且易于理解。有關 HarmonyOS 權(quán)限開放范圍和授權(quán)方式詳細的描述,請參閱權(quán)限授予方式字段說明權(quán)限限制范圍字段說明。

為了避免應用自定義新權(quán)限出現(xiàn)重名的情況,建議應用對新權(quán)限的命名以包名的前兩個字段開頭,這樣可以防止不同開發(fā)者的應用間出現(xiàn)自定義權(quán)限重名的情況。

權(quán)限保護方法

  • 保護 Ability:通過在config.json里對應的 Ability 中配置"permissions": ["權(quán)限名"]屬性,即可實現(xiàn)保護整個 Ability 的目的,無指定權(quán)限的應用不能訪問此 Ability。
  • 保護 API:若 Ability 對外提供的數(shù)據(jù)或能力有多種,且開放范圍或保護級別也不同,可以針對不同的數(shù)據(jù)或能力在接口代碼實現(xiàn)中通過verifyPermission(String permissionName, int pid, int uid)來對 uid 標識的調(diào)用者進行鑒權(quán)。

權(quán)限使用原則

  • 權(quán)限申請最小化。跟用戶提供的功能無關的權(quán)限,不要申請;盡量采用其他無需權(quán)限的操作來實現(xiàn)相應功能(如:通過intent拉起系統(tǒng) UI 界面由用戶交互、應用自己生成uuid代替設備 ID 等)。
  • 權(quán)限申請完整。應用所需權(quán)限(包括應用調(diào)用到的三方庫依賴的權(quán)限)都要逐個在應用的config.json中按格式聲明。
  • 滿足用戶可知。應用申請的敏感權(quán)限的目的需要真實準確告知用戶。
  • 權(quán)限就近申請。應用在用戶觸發(fā)相關業(yè)務功能時,就近提示用戶授予實現(xiàn)此功能所需的權(quán)限。
  • 權(quán)限不擴散。在用戶未授權(quán)的情況下,不允許提供給其他應用使用。
  • 應用自定義權(quán)限防止重名。建議以包名為前綴來命名權(quán)限,防止跟系統(tǒng)定義的權(quán)限重名。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號