Azure Data Lake:对 Azure Data Lake Store 的请求未经授权

Azure Data Lake : The request to Azure Data Lake Store was unauthorized

我们正在尝试将我们的数据从 Azure Table 存储移动到 Azure 数据湖。所以我们创建了一个数据工厂(具有链接服务、数据集和管道)。管道是使用复制操作创建的。

其中一个我们选择的链接服务"Azure Data Lake Store"我们授权配置,最终配置如下

{
    "name": "XXXXXStoreLinkedService",
    "properties": {
        "description": "",
        "hubName": "XXXXXXdatafactory_hub",
        "type": "AzureDataLakeStore",
        "typeProperties": {
            "dataLakeStoreUri": "https://XXXXXX.azuredatalakestore.net/webhdfs/v1",
            "authorization": "**********",
            "sessionId": "**********",
            "subscriptionId": "XXXXXXXXXXXXXXXXXXX",
            "resourceGroupName": "XXXXXXXXXXXXXXX"
        }
    }
}

创建管道后,似乎正在进行数据移动。但是我们收到此错误

Copy activity encountered a user error: ErrorCode=UserErrorAdlsUnauthorizedAccess,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=The request to 'Azure Data Lake Store' was unauthorized,Source=Microsoft.DataTransfer.ClientLibrary,''Type=System.Net.WebException,Message=The remote server returned an error: (403) Forbidden.,Source=System,'

从这个错误来看,我们似乎有一个未经授权的请求。但是如上所述,我们正确授权了 Azure Data Lake 存储链接服务。

任何人都可以告诉我们,这个错误的可能情况是什么以及我们需要在这里做什么。

能否请您确认您为其获取授权信息的用户是否已被允许访问相应的 Data Lake Store 帐户?

https://azure.microsoft.com/en-us/documentation/articles/data-lake-store-secure-data/

详情见上link。这是一个三步过程。所以,请确保您已全部完成。

谢谢, 萨钦

A​​zure 数据湖项目经理

我们解决这个问题的方法是通过选中 "All Users and Groups" 旁边的三个框来打开访问权限:

我以 Owner 身份创建了所有数据工厂和数据湖存储资产,但仍然出现与您相同的授权错误。唯一的区别是我的数据工厂与 Data Lake Store 的订阅不同。我认为这无关紧要,因为我是两个订阅的管理员,具有相同的 Microsoft 登录名,并且是 Data Lake Store 的所有者......可能有更集中的方法来执行此操作,但 AAD 中引用的内容接受的答案对我不起作用...直到那时它才有效。

您需要在根级别设置递归执行权限才能对目录结构下的文件执行操作。这在图像中更容易解释。请参阅 -

https://azure.microsoft.com/en-gb/documentation/articles/data-lake-store-access-control/#common-scenarios-related-to-permissions