Azure Data Lake Storage Gen2的托管服务身份配置

时间:2019-08-28 11:21:32

标签: azure-active-directory azure-data-lake

尝试通过控制台中的Hadoop客户端使用MSI(Azure托管身份)连接到Azure Data Lake Storage Gen2并收到错误 ls: AADToken: HTTP connection failed for getting token from AzureAD. Http response: 400 Bad Request*

通过共享密钥的连接可以正常工作。

完成了什么

  1. 在Azure中创建Windows 10 VM,并从Apache站点和JRE 1.8.0安装Haddop客户端3.2
  2. 使用https://docs.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-quickstart-create-account创建的存储帐户
  3. 使用https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal创建的Azure AD应用程序
  4. 按如下所述为VM打开系统分配的托管身份 https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/qs-configure-portal-windows-vm
  5. 按照https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/howto-assign-access-portal
  6. 中的说明为存储帐户分配了托管身份访问权限

要使用以下命令进行连接:

hadoop fs -Dfs.azure.ssl.channel.mode=Default_JSSE -Dfs.azure.account.oauth.provider.type=org.apache.hadoop.fs.azurebfs.oauth2.MsiTokenProvider -Dfs.azure.account.auth.type=OAuth -Dfs.azure.account.oauth2.msi.tenant=<tenant_ID> -Dfs.azure.account.oauth2.client.id=<Client_ID> -ls abfss://<filesystem_name>2@<storage_account_name>.dfs.core.windows.net/

是错还是错过?请指教。

谢谢!

1 个答案:

答案 0 :(得分:1)

添加我的评论作为答案:

无需执行步骤3,如果启用了VM的MSI,它将自动在租户中创建一个服务主体,它与VM的名称相同,具有自己的客户端ID。您可以在门户的Azure Active Directory中找到它->企业应用程序->使用您的VM名称(用All Applications进行过滤)搜索。

在步骤5中,您需要赋予MSI Storage Blob Data Owner角色。