存储连接字符串

Azure 数据资源管理器可以与外部存储服务交互。 例如,可以创建 Azure 存储外部表,以查询存储在外部存储中的数据。

支持以下类型的外部存储:

  • Azure Blob 存储
  • Azure Data Lake Storage Gen2
  • Azure Data Lake Storage Gen1
  • Amazon S3

每种类型的存储都有用于描述存储资源及其访问方式的相应连接字符串格式。 Azure 数据资源管理器使用 URI 格式描述这些存储资源以及访问这些资源所需的属性,如安全凭据。

注意

不支持未实现整个 Azure Blob 存储 API 集的 HTTP Web 服务,即使它们在某些情况下似乎可以工作。

存储连接字符串模板

每个存储类型都有不同的连接字符串格式。 有关每个存储类型的连接字符串模板,请参阅下表。

存储类型 Scheme URI 模板
Azure Blob 存储 https:// https://StorageAccountName.blob.core.chinacloudapi.cn/Container[/BlobName][CallerCredentials]
Azure Data Lake Storage Gen2 https:// https://StorageAccountName.dfs.core.chinacloudapi.cn/Filesystem[/PathToDirectoryOrFile][CallerCredentials]
Azure Data Lake Storage Gen2 abfss:// abfss://Filesystem@StorageAccountName.dfs.core.chinacloudapi.cn/[PathToDirectoryOrFile][CallerCredentials]
Azure Data Lake Storage Gen1 adl:// adl://StorageAccountName.azuredatalakestore.net/PathToDirectoryOrFile[CallerCredentials]
Amazon S3 https:// https://BucketName.s3.RegionName.amazonaws.com/ObjectKey[CallerCredentials]

注意

若要防止机密显示在跟踪中,请使用模糊字符串字面量

存储身份验证方法

若要在 Azure 数据资源管理器中与非公共外部存储进行交互,必须将身份验证方式指定为外部存储连接字符串的一部分。 该连接字符串定义要访问的资源及其身份验证信息。

Azure 数据资源管理器支持以下身份验证方法:

按存储类型划分的受支持的身份验证

下表汇总了不同外部存储类型可用的身份验证方法。

身份验证方法 是否在 Blob 存储中可用? 是否在 Azure Data Lake Storage Gen 2 中可用? 是否在 Azure Data Lake Storage Gen 1 中可用? 是否在 Amazon S3 中可用? 何时应使用此方法?
模拟 当需要对外部存储进行复杂访问控制时,用于参与的流。 例如在连续导出流中。 还可以在用户级别限制存储访问。
托管的标识 在无人参与的流中使用,其中无法派生 Microsoft Entra 主体来执行查询和命令。 托管标识是唯一的身份验证解决方案。
共享访问 (SAS) 密钥 SAS 令牌具有过期时间。 在有限时间内访问存储时使用。
Microsoft Entra 访问令牌 Microsoft Entra 令牌具有到期时间。 在有限时间内访问存储时使用。
存储帐户访问密钥 需要持续访问资源时。
Amazon Web Services 编程访问密钥 需要持续访问 Amazon S3 资源时。
Amazon Web Services S3 预签名 URL 需要使用临时预签名 URL访问 Amazon S3 资源时。

模拟

Azure 数据资源管理器模拟请求者的主体标识来访问资源。 若要使用模拟,请将 ;impersonate 追加到连接字符串。

示例
"https://fabrikam.blob.core.chinacloudapi.cn/container/path/to/file.csv;impersonate"

主体必须拥有执行该操作所需的权限。 例如,在 Azure Blob 存储中,若要从 Blob 中读取数据,主体需有存储 Blob 数据读取者角色;若要导出到 Blob,主体需有存储 Blob 数据参与者角色。 有关详细信息,请参阅 Azure Blob 存储/Data Lake Storage Gen2 访问控制

托管标识

Azure 数据资源管理器代表托管标识发出请求,并使用其标识访问资源。 对于系统分配的托管标识,请将 ;managed_identity=system 追加到连接字符串。 对于用户分配的托管标识,请将 ;managed_identity={object_id} 追加到连接字符串。

托管标识类型 示例
系统分配 "https://fabrikam.blob.core.chinacloudapi.cn/container/path/to/file.csv;managed_identity=system"
用户分配 "https://fabrikam.blob.core.chinacloudapi.cn/container/path/to/file.csv;managed_identity=12345678-1234-1234-1234-1234567890ab"

托管标识必须拥有执行该操作所需的权限。 例如,在 Azure Blob 存储中,若要从 Blob 中读取数据,托管标识需有存储 Blob 数据读取者角色;若要导出到 Blob,托管标识需有存储 Blob 数据参与者角色。 有关详细信息,请参阅 Azure Blob 存储/Data Lake Storage Gen2 访问控制

注意

托管标识仅在特定的 Azure 数据资源管理器流中受支持,并且要求设置托管标识策略。 有关详细信息,请参阅托管标识概述

共享访问 (SAS) 令牌

在 Azure 门户中,使用所需的权限生成 SAS 令牌

例如,若要从外部存储读取数据,请指定“读取”和“列出”权限;若要导出到外部存储,请指定“写入”权限。 有关详细信息,请参阅使用共享访问签名委托访问权限

使用 SAS URL 作为连接字符串。

示例
"https://fabrikam.blob.core.chinacloudapi.cn/container/path/to/file.csv?sv=...&sp=rwd"

Microsoft Entra 访问令牌

要添加 base-64 编码的 Microsoft Entra 访问令牌,请将 ;token={AadToken} 追加到连接字符串。 该令牌必须用于资源 https://storage.azure.com/

有关如何生成 Microsoft Entra 访问令牌的详细信息,请参阅《获取用于授权的访问令牌》。

示例
"https://fabrikam.blob.core.chinacloudapi.cn/container/path/to/file.csv;token=1234567890abcdef1234567890abcdef1234567890abc..."

存储帐户访问密钥

若要添加存储帐户访问密钥,请将该密钥追加到连接字符串。 在 Azure Blob 存储中,将 ;{key} 追加到连接字符串。 对于 Azure Data Lake Storage Gen 2,请将 ;sharedkey={key} 追加到连接字符串。

存储帐户 示例
Azure Blob 存储 "https://fabrikam.blob.core.chinacloudapi.cn/container/path/to/file.csv;ljkAkl...=="
Azure Data Lake Storage Gen2 "abfss://fs@fabrikam.dfs.core.chinacloudapi.cn/path/to/file.csv;sharedkey=sv=...&sp=rwd"

Amazon Web Services 编程访问密钥

若要添加 Amazon Web Services 访问密钥,请将 ;AwsCredentials={ACCESS_KEY_ID},{SECRET_ACCESS_KEY} 追加到连接字符串。

示例
"https://yourbucketname.s3.us-east-1.amazonaws.com/path/to/file.csv;AwsCredentials=AWS1234567890EXAMPLE,1234567890abc/1234567/12345678EXAMPLEKEY"

Amazon Web Services S3 预签名 URL

使用 S3 预签名 URL 作为连接字符串。

示例
"https://yourbucketname.s3.us-east-1.amazonaws.com/file.csv?12345678PRESIGNEDTOKEN"