在 Azure HDInsight 中使用受控識別進行 SQL 資料庫 驗證
HDInsight 已新增受控識別選項,以在其叢集供應專案內驗證 SQL 資料庫,並提供更安全的驗證機制。
本文概述建立 HDInsight 叢集時,使用受控識別 (MSI) 選項進行 SQL 資料庫 驗證的程式。
受控識別 (MI) 選項適用於下列資料庫:
資料庫 | 主機代表 (HoBo) DB | 自備 (BYO) DB |
---|---|---|
Ambari | ✅ | ✅ |
Hive | ✅ | ✅ |
Oozie | ✅ | ✅ |
遊俠(ESP) | ❌ | ❌ |
注意
- 受控識別 (MI) 目前僅適用於公用區域。
- 預設不會啟用 MI 選項。 若要啟用,請使用您的訂用帳戶和區域詳細數據提交 支援票證 。
重要
- 建議您不要在叢集重新建立之後更新受控識別,因為它可能會中斷叢集作業。
- 當您重新建立具有相同名稱的 MSI 時,用戶必須重新建立包含的使用者並重新指派角色,因為即使名稱保持不變,新的 MSI 也會有不同的物件和用戶端標識碼。
在叢集建立期間使用受控識別的步驟,Azure 入口網站
在叢集建立期間,流覽至 [記憶體] 區段,然後選取Ambari/Hive/Oozie的 SQL 資料庫。 選擇 [受控識別] 作為 [驗證方法]。
選取要向 SQL 資料庫 進行驗證的受控識別。
在對應的 SQL 資料庫中建立具有受控識別的自主使用者。
請遵循 Azure SQL 資料庫查詢編輯器中的下列步驟來建立資料庫使用者,並授與讀寫許可權。 針對您要用於不同服務的每個 SQL 資料庫 執行這些步驟,例如Ambari、Hive或 Oozie。
注意
使用者名稱必須包含使用者定義後綴所延伸的原始 MSI 名稱。 最佳做法是後綴可以包含其對象標識碼的初始部分。 您可以從受控識別入口網站頁面上的入口網站取得受控識別的物件標識碼。
例如:
- MSI 名稱:contosoMSI
- 物件識別碼:
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
- user_name可能是
contosoMSI-2ba6c
CREATE USER {user_name} FROM EXTERNAL PROVIDER WITH OBJECT_ID={object id of cluster managed identity}; ALTER ROLE db_datareader ADD MEMBER {user_name}; ALTER ROLE db_ddladmin ADD MEMBER {user_name}; ALTER ROLE db_datawriter ADD MEMBER {user_name};
注意
如果您的資料庫中已經定義角色
db_executor
、db_view_def
和db_view_state
,就不需要繼續進行後續步驟。CREATE ROLE db_executor; GRANT EXECUTE TO db_executor; ALTER ROLE db_executor ADD MEMBER {user_name}; CREATE ROLE db_view_def; GRANT VIEW DEFINITION TO db_view_def; ALTER ROLE db_view_def ADD MEMBER {user_name}; CREATE ROLE db_view_db_state; GRANT VIEW DATABASE STATE TO db_view_db_state; ALTER ROLE db_view_def ADD MEMBER {user_name};
輸入必要的詳細數據之後,請繼續進行入口網站上建立叢集。