你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用托管标识验证外部表
外部表是引用存储在 Azure 数据资源管理器数据库外部的数据的架构实体。 可以定义外部表以引用 Azure 存储或 SQL Server 中的数据,并支持各种身份验证方法。
本文介绍如何创建使用托管标识进行身份验证的外部表。
先决条件
1 - 配置用于外部表的托管标识
托管标识分为两种类型:
系统分配:系统分配的标识将连接到群集,删除该群集时也会删除该标识。 对于每个群集,只能分配一个系统分配的标识。
用户分配:用户分配的托管标识是独立的 Azure 资源。 可以将多个用户分配的标识分配给群集。
选择以下选项卡之一来设置首选的托管标识类型。
按照步骤向群集添加用户分配的标识,并保存“对象(主体) ID”供以后使用。
运行以下 .alter-merge policy managed_identity 命令。 此命令对群集设置托管标识策略,这样就能将托管标识用于外部表。 请将
<objectId>
替换为在上一步骤中保存的“对象(主体) ID”。.alter-merge cluster policy managed_identity ```[ { "ObjectId": "<objectId>", "AllowedUsages": "ExternalTable" } ]```
注意
若要对特定数据库设置策略,请使用
database <DatabaseName>
而不是cluster
。
2 - 授予托管标识对外部资源的权限
托管标识必须对外部资源拥有权限才能成功完成身份验证。
选择与相关外部资源类型对应的选项卡,并分配所需的权限。
下表显示了外部资源所需的权限。 若要从外部资源导入或查询数据,请为托管标识授予读取权限。 若要将数据导出到外部资源,请为托管标识授予写入权限。
外部数据存储 | 读取权限 | 写入权限 | 授予权限 |
---|---|---|---|
Azure Blob 存储 | 存储 Blob 数据读取者 | 存储 Blob 数据参与者 | 分配 Azure 角色 |
Data Lake Storage Gen2 | 存储 Blob 数据读取者 | 存储 Blob 数据参与者 | 分配 Azure 角色 |
Data Lake Storage Gen1 | 读取器 | 参与者 | 分配 Azure 角色 |
3 - 创建外部表
有两种支持使用托管标识进行身份验证的外部表:Azure 存储外部表和 SQL Server 外部表。
选择以下选项卡之一来设置 Azure 存储或 SQL Server 外部表。
若要创建 Azure 存储外部表,请执行以下步骤:
基于存储连接字符串模板创建连接字符串。 此字符串指示要访问的资源及其身份验证信息。 指定托管标识身份验证方法。
运行 .create 或 .alter external table 以创建表。 使用在上一步骤中获取的连接字符串作为 storageConnectionString 参数。
示例
以下命令创建 MyExternalTable
,该表引用 Azure Blob 存储中 mystorageaccount
的 mycontainer
中的 CSV 格式数据。 该表有两列,一列包含整数 x
,另一列包含字符串 s
。 连接字符串以 ;managed_identity=system
结尾,表示使用系统分配的托管标识进行身份验证以访问数据存储。
.create external table MyExternalTable (x:int, s:string) kind=storage dataformat=csv
(
h@'https://mystorageaccount.blob.core.windows.net/mycontainer;managed_identity=system'
)
注意
若要使用用户分配的托管标识进行身份验证,请将 system
替换为托管标识对象 ID。
相关内容
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈