你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
HDInsight 添加了托管标识(MI)选项,用于在其群集产品/服务中对 SQL 数据库进行身份验证并提供更安全的身份验证机制。
本文概述了在创建 HDInsight 群集时将托管标识选项用于 SQL 数据库身份验证的过程。
托管标识选项适用于以下数据库:
| 数据库 | 代表主机 (HoBo) 数据库 | 自带 (BYO) 数据库 |
|---|---|---|
| Ambari | ✅ | ✅ |
| Hive | ✅ | ✅ |
| Oozie | ✅ | ✅ |
| Ranger (ESP) | ❌ | ❌ |
重要
- 建议不要在群集重新创建后更新托管标识,因为它可能会中断群集作。
- 重新创建具有相同名称的托管标识时,必须重新创建包含的用户并重新分配角色,因为新的托管标识具有不同的对象 ID 和客户端 ID,即使名称保持不变也是如此。
在 Azure 门户中创建群集期间使用托管标识的步骤
在创建群集过程中,导航到“存储”部分,然后选择 Ambari/Hive/Oozie 的 SQL 数据库。 选择托管标识作为身份验证方法。
选择托管标识以用于通过 SQL 数据库进行身份验证。
在相应的 SQL 数据库中创建一个具有托管身份的受限用户。
按照 Azure SQL 数据库查询编辑器中的这些步骤创建数据库用户并向其授予读写权限。 针对要用于不同服务(如 Ambari、Hive 或 Oozie)的每个 SQL 数据库执行这些步骤。
注意
用户名必须包含原始管理身份名称以及用户定义的后缀。 作为最佳做法,后缀可以包含其对象 ID 的初始部分。 可以从门户上的托管标识门户页获取托管标识的对象 ID。
例如:
- MI 名称: contosoMSI
- 对象 ID:
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb - user_name 可能是
contosoMSI_aaaaaaaa
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};输入必要的详细信息后,在门户中继续创建群集。