从 Azure Data Lake Gen2 数据存储创建 Azure ML 数据集时出现 AuthenticationException

AuthenticationException when creating Azure ML Dataset from Azure Data Lake Gen2 Datastore

我有一个带有 public 端点的 Azure Data Lake Gen2 和一个标准的 Azure ML 实例。 我与我的用户一起创建了这两个组件,并且我被列为贡献者。

我想在 Azure ML 中使用来自这个数据湖的数据。

我已使用服务主体身份验证将数据湖添加为数据存储。

然后我尝试使用 Azure ML GUI 创建表格数据集我收到以下错误:

访问被拒绝 您没有指定路径或文件的权限。

{
  "message": "ScriptExecutionException was caused by StreamAccessException.\n  StreamAccessException was caused by AuthenticationException.\n    'AdlsGen2-ListFiles (req=1, existingItems=0)' for '[REDACTED]' on storage failed with status code 'Forbidden' (This request is not authorized to perform this operation using this permission.), client request ID '1f9e329b-2c2c-49d6-a627-91828def284e', request ID '5ad0e715-a01f-0040-24cb-b887da000000'. Error message: [REDACTED]\n"
}

我试过让我们的 Azure 门户管理员对 Azure ML 和 Data Lake 具有管理员访问权限,但她也遇到了同样的错误。

我尝试使用 Python sdk 创建数据集并得到类似的错误:

ExecutionError: 
Error Code: ScriptExecution.StreamAccess.Authentication
Failed Step: 667ddfcb-c7b1-47cf-b24a-6e090dab8947
Error Message: ScriptExecutionException was caused by StreamAccessException.
  StreamAccessException was caused by AuthenticationException.
    'AdlsGen2-ListFiles (req=1, existingItems=0)' for 'https://mydatalake.dfs.core.windows.net/mycontainer?directory=mydirectory/csv&recursive=true&resource=filesystem' on storage failed with status code 'Forbidden' (This request is not authorized to perform this operation using this permission.), client request ID 'a231f3e9-b32b-4173-b631-b9ed043fdfff', request ID 'c6a6f5fe-e01f-0008-3c86-b9b547000000'. Error message: {"error":{"code":"AuthorizationPermissionMismatch","message":"This request is not authorized to perform this operation using this permission.\nRequestId:c6a6f5fe-e01f-0008-3c86-b9b547000000\nTime:2020-11-13T06:34:01.4743177Z"}}
| session_id=75ed3c11-36de-48bf-8f7b-a0cd7dac4d58

我已经创建了普通 blob 存储和托管 sql 数据库的数据存储和数据集,没有任何问题,我只有贡献者访问这些,所以我不明白为什么我不应该被授权添加数据湖。我们的管理员遇到同样的错误这一事实让我相信还有其他问题。

我希望你能帮助我确定它是什么,或者给我一些线索,让我知道还需要测试什么。

编辑: 我知道我可能重复了这个 post: 我将测试该解决方案并关闭此 post 如果它有效

这实际上是 的副本。

解决方案是为 Azure ML 用于访问数据湖的服务主体提供存储 Blob 数据 Reader 访问权限。请注意,您必须至少等待几分钟才能生效。