使用 “版本 ”下拉列表切换服务。 了解有关导航的详细信息。
适用于:✅ Azure Data Explorer
在以下情况下,应使用托管标识配置连续导出作业:
- 当外部表使用模拟身份验证时
- 当查询引用其他数据库中的表时
- 当查询引用启用了行级别安全性策略的表时
使用托管标识配置的连续导出作业将代表该托管标识执行。
本文介绍了如何配置系统分配或用户分配的托管标识,以及使用该标识创建连续导出作业。
先决条件
- 群集和数据库。 创建群集和数据库。
- 对数据库拥有管理员权限权限。
配置托管标识
托管标识分为两种类型:
系统分配:系统分配的标识将连接到群集,删除该群集时也会删除该标识。 对于每个群集,只能分配一个系统分配的标识。
用户分配:用户分配的托管标识是独立的Azure资源。 可以将多个用户分配的标识分配给群集。
选择以下选项卡之一来设置首选的托管标识类型。
按照步骤添加用户分配的标识。
在Azure portal的托管标识资源的左侧菜单中,选择Properties。 复制并保存“租户 ID”和“主体 ID”,以便在后续步骤中使用。
具有托管标识 IDs. 运行以下 .alter-merge policy managed_identity 命令,将
<objectId>替换为在上一步骤中获取的托管标识对象 ID。 此命令对群集设置托管标识策略,以便能够将托管标识用于连续导出。.alter-merge cluster policy managed_identity ```[ { "ObjectId": "<objectId>", "AllowedUsages": "AutomatedFlows" } ]```注意
若要对特定数据库设置策略,请使用
database <DatabaseName>而不是cluster。运行以下命令,授予托管标识 Database Viewer 用于连续导出的所有数据库的权限,例如包含外部表的数据库。
.add database <DatabaseName> viewers ('aadapp=<objectId>;<tenantId>')将
<DatabaseName>替换为相关数据库,将<objectId>替换为步骤 2 中的托管标识 Principal Id,将<tenantId>替换为步骤 2 中的 Microsoft Entra ID Tenant Id。
设置一个外部表
外部表是指位于Azure Storage中的数据,例如Azure Blob Storage、Azure Data Lake Storage Gen1、Azure Data Lake Storage Gen2或SQL Server。
选择以下选项卡之一以设置Azure Storage或SQL Server外部表。
基于 storage connection string 模板创建connection string。 此字符串指示要access的资源及其身份验证信息。 对于连续导出流,建议实现身份验证。
运行 .create 或 .alter external table 命令以创建表。 使用上一步中的connection string作为 storageConnectionString 参数。
例如,以下命令创建
MyExternalTable,该数据引用Azure Blob Storage中mystorageaccountmycontainer的 CSV 格式数据。 该表有两列,一列包含整数x,另一列包含字符串s。 connection string以;impersonate结尾,指示使用模拟身份验证access数据存储。.create external table MyExternalTable (x:int, s:string) kind=storage dataformat=csv ( h@'https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer;impersonate' )授予托管标识对相关外部数据存储的写入权限。 托管标识之所以需要写入权限,是因为连续导出作业代表该托管标识将数据导出到数据存储。
外部数据存储 所需的权限 授予权限 Azure Blob Storage Storage Blob 数据参与者 分配Azure角色 Data Lake Storage Gen2 Storage Blob 数据参与者 分配Azure角色 Data Lake Storage Gen1 参与者 分配Azure角色
创建一个连续导出作业
选择以下选项卡之一来创建代表用户分配或系统分配的托管标识运行的连续导出作业。
运行 .create-or-alter continuous-export 命令并将 managedIdentity 属性设置为托管标识对象 ID。
例如,以下命令创建一个名为 MyExport 的连续导出作业,以代表用户分配的托管标识将 MyTable 中的数据导出到 MyExternalTable。
<objectId> 应是托管标识对象 ID。
.create-or-alter continuous-export MyExport over (MyTable) to table MyExternalTable with (managedIdentity=<objectId>, intervalBetweenRuns=5m) <| MyTable