使用 “版本 ”下拉列表切换服务。 了解有关导航的详细信息。
适用于:✅ Azure Data Explorer
Kusto 服务可以与外部storage服务进行交互。 例如,可以创建Azure Storage外部表,以便查询存储在外部存储中的数据。
支持以下类型的外部storage服务:
- Azure Blob Storage(用于读取/写入的块 blob、用于读取的追加 blob)
- Azure Data Lake Storage Gen2
- Azure Data Lake Storage Gen1
- Amazon S3
每种storage都有相应的connection string格式,用于描述storage资源以及如何access它们。 URI 格式用于描述这些storage资源以及access这些资源所需的属性,例如安全凭据。
注意
HTTP Web 服务支持仅限从任意 HTTP Web 服务检索资源。 不支持其他操作(例如写入资源)。
Storage connection string模板
每个storage类型具有不同的connection string格式。 有关每个storage类型的connection string模板,请参阅下表。
| Storage类型 | Scheme | URI 模板 |
|---|---|---|
| Azure Blob Storage | 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://
文件系统@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] |
| HTTP Web 服务 | https:// |
https://
主机名/PathAndQuery |
注意
若要防止机密显示在跟踪中,请使用模糊字符串字面量。
Storage身份验证方法
若要与非公共外部storage交互,必须指定身份验证方式作为外部storage connection string的一部分。 connection string定义要access的资源及其身份验证信息。
支持以下身份验证方法:
- 共享Access密钥
- Microsoft Entra access token
- Storage帐户access密钥
- Amazon Web 服务以编程方式Access密钥
- Amazon Web Services S3 预签名 URL
storage类型支持的身份验证
下表汇总了不同外部storage类型的可用身份验证方法。
| 身份验证方法 | Blob storage中提供? | Azure Data Lake Storage Gen 2 中提供? | Azure Data Lake Storage第 1 代中提供? | 是否在 Amazon S3 中可用? | 何时应使用此方法? |
|---|---|---|---|---|---|
| 模拟 | ✔️ | ✔️ | ✔️ | ❌ | 当需要通过外部storage进行复杂的access control时,用于参与的流。 例如在连续导出流中。 还可以在用户级别限制storage access。 |
| 托管的标识 | ✔️ | ✔️ | ✔️ | ❌ | 在无人参与的流中使用,其中无法派生 Microsoft Entra 主体来执行查询和命令。 托管标识是唯一的身份验证解决方案。 |
| 共享Access密钥 | ✔️ | ✔️ | ❌ | ❌ | SAS 令牌具有过期时间。 访问storage的时间有限时使用。 |
| Microsoft Entra access token | ✔️ | ✔️ | ✔️ | ❌ | Microsoft Entra 令牌具有到期时间。 访问storage的时间有限时使用。 |
| Storage帐户access密钥 | ✔️ | ✔️ | ❌ | ❌ | 需要持续access资源时。 |
| Amazon Web 服务以编程方式Access密钥 | ❌ | ❌ | ❌ | ✔️ | 需要持续access Amazon S3 资源时。 |
| Amazon Web Services S3 预签名 URL | ❌ | ❌ | ❌ | ✔️ | 需要使用临时预签名 URL access Amazon S3 资源时。 |
模拟
Kusto 模拟请求者的主体标识来access资源。 若要使用模拟,请将 ;impersonate 追加到connection string。
| 示例 |
|---|
"https://fabrikam.blob.core.chinacloudapi.cn/container/path/to/file.csv;impersonate" |
主体必须拥有执行该操作所需的权限。 例如,Azure Blob Storage中,若要从 blob 中读取主体,主体需要Storage Blob 数据读取者角色,并导出到主体需要Storage Blob 数据参与者角色的 Blob。 若要了解详细信息,请参阅 Azure Blob Storage/Data Lake Storage Gen2 access control。
托管标识
Azure Data Explorer代表托管标识发出请求,并使用其标识来access资源。 对于系统分配的托管标识,请将 ;managed_identity=system 追加到connection string。 对于用户分配的托管标识,请将 ;managed_identity={object_id} 追加到connection string。
| 托管标识类型 | 示例 |
|---|---|
| 系统分配 | "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 Storage中,若要从 blob 中读取托管标识,需要Storage Blob 数据读取者角色,并导出到托管标识需要Storage Blob 数据参与者角色的 Blob。 若要了解详细信息,请参阅 Azure Blob Storage/Data Lake Storage Gen2 access control。
注意
托管标识仅在特定的Azure Data Explorer流中受支持,并且需要设置托管标识策略。 有关详细信息,请参阅托管标识概述。
共享Access (SAS) 令牌
在Azure portal中,使用所需权限生成 SAS 令牌。
例如,若要从外部读取storage指定读取和列出权限,并导出到外部storage指定写入权限。 若要了解详细信息,请参阅删除access使用共享access签名。
使用 SAS URL 作为connection string。
| 示例 |
|---|
"https://fabrikam.blob.core.chinacloudapi.cn/container/path/to/file.csv?sv=...&sp=rwd" |
Microsoft Entra access 令牌
若要添加 base-64 编码的Microsoft Entra access 令牌,请将 ;token={AadToken} 追加到connection string。 令牌必须为资源https://storage.azure.com/。
有关如何生成Microsoft Entra access 令牌的详细信息,请参阅 获取用于授权的access令牌。
| 示例 |
|---|
"https://fabrikam.blob.core.chinacloudapi.cn/container/path/to/file.csv;token=1234567890abcdef1234567890abcdef1234567890abc..." |
Storage帐户access密钥
若要添加storage帐户access密钥,请将密钥追加到connection string。 在Azure Blob Storage中,将 ;{key}追加到connection string。 对于第 2 代Azure Data Lake Storage,请将 ;sharedkey={key}追加到connection string。
| Storage帐户 | 示例 |
|---|---|
| Azure Blob Storage | "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 编程access密钥
若要添加 Amazon Web Services access密钥,请将 ;AwsCredentials={ACCESS_KEY_ID},{SECRET_ACCESS_KEY} 追加到connection string。
| 示例 |
|---|
"https://yourbucketname.s3.us-east-1.amazonaws.com/path/to/file.csv;AwsCredentials=AWS1234567890EXAMPLE,1234567890abc/1234567/12345678EXAMPLEKEY" |
Amazon Web Services S3 预签名 URL
使用 S3 预签名 URL 作为connection string。
| 示例 |
|---|
"https://yourbucketname.s3.us-east-1.amazonaws.com/file.csv?12345678PRESIGNEDTOKEN" |
相关内容
有关如何使用storage连接字符串的示例,请参阅: