Microsoft Entra ID 中應用程式屬性的安全性最佳做法
安全性是在 Microsoft Entra ID 中註冊應用程式時的重要概念,也是其在組織中商務使用的重要部分。 應用程式的任何設定錯誤都可能導致停機時間或遭到入侵。 視新增至應用程式的許可權而定,可能會有整個組織的影響。
由於安全應用程式對組織而言很重要,因此任何因安全性問題而造成的停機時間可能會影響企業或業務相依的一些重要服務。 因此,請務必配置時間和資源,以確保應用程式一律處於狀況良好且安全的狀態。 定期對應用程式進行安全性與健康情況評估,就像程式碼的安全性威脅模型評估一樣。 如需組織安全性的更廣泛觀點,請參閱 安全性開發生命週期 (SDL)。
本文說明下列應用程式屬性的安全性最佳做法:
- 重新導向 URI
- 存取權杖 (用於隱含流程)
- 憑證與祕密
- 應用程式識別碼 URI
- 應用程式擁有權
重新導向 URI
務必將應用程式的重新導向 URI 保持最新狀態。 在 [Azure 入口網站 中應用程式的驗證] 下,必須為應用程式選取平臺,然後才能定義 [重新導向 URI] 屬性。
請考慮下列重新導向 URI 指引:
- 維護所有 URI 的擁有權。 其中一個重新導向 URI 擁有權的失效可能會導致應用程式遭到入侵。
- 請確定所有 DNS 記錄都會定期更新並監視變更。
- 請勿使用通配符回復 URL 或不安全的 URI 配置,例如 HTTP 或 URN。
- 讓清單保持小。 修剪任何不必要的 URI。 可能的話,請將URL從 Http 更新為 Https。
存取權杖 (用於隱含流程)
需要 隱含流程 的案例現在 可以使用驗證程式代碼流程 來降低與隱含流程誤用相關聯的危害風險。 在 [Azure 入口網站 中應用程式的驗證] 下,必須為應用程式選取平臺,然後可以設定 Access 令牌(用於隱含流程)屬性。
請考慮下列與隱含流程相關的指引:
- 瞭解是否需要 隱含流程。 除非明確要求,否則請勿使用隱含流程。
- 如果應用程式已設定為使用隱含流程接收存取令牌,但不主動使用這些令牌,請關閉設定以防止誤用。
- 針對有效的隱含流程案例使用個別的應用程式。
憑證與祕密
憑證和秘密,也稱為認證,是應用程式作為機密用戶端的重要部分。 在 Azure 入口網站 中應用程式的 [憑證和秘密] 下,可以新增或移除憑證和秘密。
請考慮下列與憑證和秘密相關的指引:
- 請盡可能使用 憑證認證 ,且不要使用密碼認證,也稱為 秘密。 雖然使用密碼密碼作為認證很方便,但盡可能使用 x509 憑證作為取得應用程式令牌的唯一認證類型。
- 設定 應用程式驗證方法原則 ,藉由限制其存留期或完全封鎖其使用,以控管秘密的使用。
- 使用 金鑰保存庫 搭配受控識別來管理應用程式的認證。
- 如果應用程式只作為公用用戶端應用程式使用(允許使用者使用公用端點登入),請確定應用程式對象上沒有指定認證。
- 檢閱應用程式中使用的認證,以取得使用和其到期日。 應用程式上未使用的認證可能會導致安全性缺口。 經常變換認證,且不會跨應用程式共享認證。 一個應用程式上沒有許多認證。
- 監視您的生產管線,以防止任何種類的認證認可至程式代碼存放庫。
- 認證掃描器 是靜態分析工具,可用來偵測原始程式碼中的認證(和其他敏感性內容)並建置輸出。
應用程式識別碼 URI
應用程式的 [應用程式識別碼 URI] 屬性會指定用來識別 Web API 的全域唯一 URI。 它是範圍和存取令牌的前置詞,也是物件宣告的值,而且必須使用已驗證的客戶擁有網域。 若為多租用戶應用程式,此值也必須是全域唯一的。 也稱為標識碼 URI。 在 [公開 Azure 入口網站 中應用程式的 API 底下,可以定義應用程式識別碼 URI 屬性。
請考慮下列與定義應用程式識別碼 URI 相關的指引:
- 建議使用 API 或 HTTPs URI 配置。 以支援的格式設定 屬性,以避免組織中的 URI 衝突。 請勿使用通配符。
- 在企業營運 (LoB) 應用程式中使用已驗證的網域。
- 保留組織中 URI 的清查,以協助維護安全性。
- 使用應用程式識別碼 URI 來公開組織中的 WebApi。 請勿使用應用程式識別碼 URI 來識別應用程式,而是改用應用程式 (用戶端) 識別碼屬性。
支援下列 API 和 HTTP 配置型應用程式識別碼 URI 格式。 請取代下表後面的清單中所述的佔位元值。
支援的應用程式識別碼 URI 格式 |
範例應用程式識別碼 URI |
---|---|
<api:// appId> | api://fc4d2d73-d05a-4a9b-85a8-4f2b3a5f38ed |
api://< tenantId/<appId>> | api://a8573488-ff46-450a-b09a-6eca0c6a02dc/fc4d2d73-d05a-4a9b-85a8-4f2b3a5f38ed |
api://< tenantId>/<string> | api://a8573488-ff46-450a-b09a-6eca0c6a02dc/api |
<api:// string>/<appId> | api://productapi/fc4d2d73-d05a-4a9b-85a8-4f2b3a5f38ed |
<https:// tenantInitialDomain.onmicrosoft.com/>< string> | https://contoso.onmicrosoft.com/productsapi |
<https:// verifiedCustomDomain>/<string> | https://contoso.com/productsapi |
https://< string>。<verifiedCustomDomain> | https://product.contoso.com |
https://< string>。<verifiedCustomDomain>/<string> | https://product.contoso.com/productsapi |
- <appId> - 應用程式物件的應用程式識別碼 (appId) 屬性。
- <string> - 主機或 API 路徑區段的字串值。
- <tenantId> - Azure 產生的 GUID,代表 Azure 內的租使用者。
- <tenantInitialDomain tenantInitialDomain.onmicrosoft.com>< - ,其中 <tenantInitialDomain>> 是租使用者建立者在租使用者建立時指定的初始功能變數名稱。
- <verifiedCustomDomain> - 為 Microsoft Entra 租使用者設定的已驗證自定義網域 。
注意
如果您使用 api:// 配置,則直接在 「api://」 後面新增字串值。 例如,api:// string>。< 該字串值可以是 GUID 或任意字串。 如果您新增 GUID 值,它必須符合應用程式識別碼或租使用者識別碼。 應用程式識別碼 URI 值對租使用者而言必須是唯一的。 如果您將 api://< tenantId> 新增為應用程式識別碼 URI,則任何其他應用程式都無法使用該 URI。 建議改為使用 api://< appId> 或 HTTP 配置。
重要
應用程式識別碼 URI 值不得以斜線 「/」 字元結尾。
應用程式擁有權設定
擁有者可以管理已註冊應用程式的所有層面。 請務必定期檢閱組織中所有應用程式的擁有權。 如需詳細資訊,請參閱 Microsoft Entra 存取權檢閱。 在 [Azure 入口網站 中應用程式的擁有者] 下,可以管理應用程式的擁有者。
請考慮下列與指定應用程式擁有者相關的指引:
- 應用程式擁有權應保留至組織內最少的一組人員。
- 系統管理員應該每隔幾個月檢閱擁有者清單一次,以確保擁有者仍然是組織的一部分,而且應該仍擁有應用程式。
整合助理
Azure 入口網站 中的整合小幫手可用來確保應用程式符合高品質的列,並提供安全的整合。 整合小幫手強調最佳做法和建議,有助於避免與 Microsoft 身分識別平台 整合時常見的監督。
下一步
- 如需驗證碼流程的詳細資訊,請參閱 OAuth 2.0 授權碼流程。