使用最低權限原則加強安全性
最低權限的資訊安全性原則主張使用者和應用程式應該只獲授與執行其工作所需資料和作業的存取權。 如果其發生在 Microsoft 身分識別平台整合式應用程式中時,請遵循此處的指引,以協助減少應用程式的攻擊面和安全性缺口 (「爆炸半徑」) 的影響。
建議一覽
- 撤銷未使用和可縮減權限,以防止權限過高的應用程式。
- 使用身分識別平台的同意架構,要求人員同意應用程式的要求以存取受部護的資料。
- 在所有開發階段期間,記住最低權限來建置應用程式。
- 定期稽核部署的應用程式以識別權限過高的項目。
權限過高的應用程式
任何授與「未使用」或「可縮減」權限的應用程式皆會視為權限過高。 未使用和可縮減權限可能會提供未經授權或非預期的存取權,以存取並非應用程式或其使用者執行其工作所需的資料或作業。 僅授與適當的權限,以避免因未使用和可縮減權限所造成的安全性風險。 適當的權限是應用程式或使用者執行其必要工作所需的最低權限。
未使用權限
未使用權限是已授與應用程式的權限,但該權限公開的 API 或作業在預期使用時未由應用程式進行呼叫。
範例:應用程式會藉由呼叫 Microsoft Graph API 並使用 Files.Read 權限,來顯示已登入使用者 OneDrive 中儲存的檔案清單。 不過,應用程式也已授與 Calendars.Read 權限,但不提供行事曆功能,也不會呼叫行事曆 API。
安全性風險:未使用權限會造成「水平權限提升」安全性風險。 在應用程式中惡意探索安全性弱點的實體,可以使用未使用權限,以存取在預期使用時應用程式通常不支援或允許的 API 或作業。
風險降低:移除應用程式所進行 API 呼叫中未使用的任何權限。
可縮減權限
可縮減權限是具有較低特殊權限對應項目的權限,這些對應項目仍會提供應用程式及其使用者執行其必要工作所需的存取權。
範例:應用程式會藉由呼叫 Microsoft Graph API 來顯示已登入使用者的設定檔資訊,但不支援設定檔編輯。 不過,應用程式已授與 User.ReadWrite.All 權限。 User.ReadWrite.All 權限會被視為可縮減,因為較不寬鬆的 User.Read.All 權限授與使用者設定檔資料的足夠唯讀存取權。
安全性風險:可縮減權限會造成「垂直權限提升」安全性風險。 在應用程式中惡意探索安全性弱點的實體,可能會使用可縮減權限來對資料進行未經授權的存取,或執行該實體角色通常不允許的作業。
風險降低:將應用程式中的每個可縮減權限取代為仍能啟用應用程式所需功能的最低對應權限。
使用同意來控制資料的存取
大部分應用程式都需要對受保護資料的存取權,而該資料的擁有者必須同意該存取。 有數種方式可以授與同意,包括透過可以同意 Microsoft Entra 租用戶中「所有」使用者的租用戶管理員,或透過可以授與存取權的應用程式使用者本身。
每當在裝置中執行的應用程式要求存取受保護的資料時,應用程式應該在授與受保護資料的存取權之前,先要求使用者同意。 使用者必須先授與 (或拒絕) 同意所要求的權限,然後應用程式才能繼續進行。
應用程式開發期間的最低權限
應用程式的安全性和其存取的使用者資料是開發人員的責任。
在應用程式開發期間遵守這些指導方針,以協助避免應用程式權限過高:
- 充分了解應用程式需要進行 API 呼叫所需的權限。
- 了解應用程式必須使用 Graph 總管進行每個 API 呼叫的最低特殊權限。
- 找出從最低特殊權限到最高特殊權限的對應權限。
- 如果應用程式進行具有重疊權限的 API 呼叫,請移除任何重複的權限集。
- 選擇權限清單中最低的特殊權限,僅將最低特殊權限集套用至應用程式。
已部署應用程式的最低權限
組織通常不會馬上修改執行中的應用程式,以避免影響其一般商務作業。 不過,組織應該將減輕由於使用權限過高而造成可能或更嚴重的安全性事件風險,視為適合排程的應用程式更新。
在組織中進行以下標準實務,以協助確保部署的應用程式不會權限過高,而且不會隨著時間而變得權限過高:
- 評估從應用程式進行的 API 呼叫。
- 使用 Graph 總管和 Microsoft Graph 文件,以取得必要和最低特殊權限。
- 稽核授與使用者或應用程式的權限。
- 使用最低特殊權限集來更新應用程式。
- 定期檢閱權限,以確保所有授權的權限仍相關。