无法使用系统管理标识将查询结果导出到存储 blob

问题描述 投票:0回答:1

我正在尝试将 kusto 查询结果导出到具有托管身份的 azure blob。我按照 copilot 提供的步骤进行操作,并在 kusto 中启用了系统托管身份,然后将其分配为我的存储帐户的存储 Blob 数据贡献者角色。我还使用 'AllowedUsages': 'All' 设置托管身份策略。并授予托管标识数据库查看者权限。但是,当在 kusto 查询中运行导出命令时,我收到错误:export_to_blob:此流程禁用了托管身份验证。

.将异步导出为 json (h@https://.blob.core.windows.net//;management_identity=system) <| YourKustoQuery

遵循副驾驶步骤和文档:https://learn.microsoft.com/en-us/kusto/management/data-export/continuous-export-with-management-identity?view=azure-data-explorer&preserve-view= true&tabs=用户分配%2Cazure-storage

azure-data-explorer
1个回答
0
投票

enter image description here

根据文档

模拟、SAS 令牌、Microsoft Entra 访问令牌和存储帐户访问密钥,仅支持这些作为

.export
云存储的身份验证和授权。

这就是您收到上述错误的原因,因为不支持导出到云存储的托管身份。

如果您有访问SAS或存储帐户访问密钥,您可以使用它来实现您的要求。

使用SAS:

.export
  async to json (
    h@"https://<storage_account_name>.blob.core.windows.net/<container_name>/test.json?<SAS_of_container>"
  )
  <| 
  mytable1

enter image description here

使用存储帐户访问密钥:

.export
  async to json (
    h@"https://<storage_account_name>.blob.core.windows.net/<container_name>/test.json;<access_key>"
  )
  <| 
  mytable1

如果您只想使用系统管理身份来实现您的要求,您可以使用外部表。

首先将 AllDatabaseadmin 权限分配给您的主体 ID。这是更改托管身份策略所必需的。

现在,更改数据库管理身份策略,如下所示。

.alter-merge database <Database_name> policy managed_identity ```[
    {
      "ObjectId": "system",
      "AllowedUsages": "All"
    }
]```

然后,使用托管标识创建外部表,如下所示。

.create external table <external_table_name> (x:int, y:string) kind=blob dataformat=json
( 
    h@'https://<storage_account_name>.blob.core.windows.net/<container>/path/<filename>.json;managed_identity=system'
)

enter image description here

现在,将 Kusto 表导出到此外部表。

.export to table <external_table_name> <| mytable1;

enter image description here

Blob 中的结果 JSON 文件:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.