【问题标题】:Azure blob storage networking rules (Ip) for Azure data warehouseAzure 数据仓库的 Azure Blob 存储网络规则 (Ip)
【发布时间】:2018-07-21 10:18:44
【问题描述】:

我需要使用 Polybase 将外部数据(在 blob 存储中)加载到我的 Azure 数据仓库。当我使用经典 Azure 存储时,它运行良好。

最近,我必须将我们的存储更新到 ARM,但我不知道如何将 ARM 存储上的防火墙规则设置为我的 Azure 数据仓库。如果我将防火墙设置为“所有网络”,一切都会无缝运行。但是,我不能让 blob 大开。

我尝试使用 nslookup 来查找我们 Azure 数据仓库的出站 ip,并将该值放入存储的防火墙中;我得到“此请求无权执行此操作。”错误

有没有办法可以找到 Azure 数据仓库的 IP 地址?或者我应该使用不同的方法来使其工作?

欢迎提出任何建议。

凯文

【问题讨论】:

    标签: azure azure-storage data-warehouse


    【解决方案1】:

    在 1.1 创建凭据部分下,它指出:

    如果您使用本教程作为模板来加载您自己的数据,请不要跳过此步骤。要通过凭据访问数据,请使用以下脚本创建数据库范围的凭据,然后在定义数据源的位置时使用它。

      -- A: Create a master key.
    -- Only necessary if one does not already exist.
    -- Required to encrypt the credential secret in the next step.
    
    CREATE MASTER KEY;
    
    
    -- B: Create a database scoped credential
    -- IDENTITY: Provide any string, it is not used for authentication to Azure storage.
    -- SECRET: Provide your Azure storage account key.
    
    
    CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
    WITH
        IDENTITY = 'user',
        SECRET = '<azure_storage_account_key>'
    ;
    
    
    -- C: Create an external data source
    -- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure blob storage.
    -- LOCATION: Provide Azure storage account name and blob container name.
    -- CREDENTIAL: Provide the credential created in the previous step.
    
    CREATE EXTERNAL DATA SOURCE AzureStorage
    WITH (
        TYPE = HADOOP,
        LOCATION = 'wasbs://<blob_container_name>@<azure_storage_account_name>.blob.core.windows.net',
        CREDENTIAL = AzureStorageCredential
    );
    

    编辑:(通过使用 SAS 从 ADW 访问 Blob 的其他方法):

    您还可以使用共享访问签名创建存储链接服务。它为数据工厂提供对存储中所有/特定资源(blob/容器)的受限/有时限访问。

    共享访问签名提供对存储帐户中资源的委派访问。您可以使用共享访问签名向客户端授予在指定时间内对您的存储帐户中的对象的有限权限。您不必共享您的帐户访问密钥。共享访问签名是一个 URI,它在其查询参数中包含对存储资源进行身份验证访问所需的所有信息。客户端要使用共享访问签名访问存储资源,只需要将共享访问签名传入相应的构造函数或方法即可。有关共享访问签名的更多信息,请参阅共享访问签名:了解共享访问签名模型。 完整文档可以找到here

    【讨论】:

    • 亚当,感谢您花时间回答我的问题。澄清一下,我在连接到 ADW(Azure 数据仓库)时没有问题。我的问题是,在将 Azure 存储帐户从经典移动到 ARM 后,我无法使用 ADW 中的外部表来读取存储在 Azure Blob 存储中的(blob)文件。如果我向公众开放 Azure 存储,我本可以这样做,但这在我的环境中行不通。如果可能,我想将 Azure 存储的访问(Azure 存储中的防火墙设置)限制在 ADW。
    • Kevin,感谢您的澄清,如果您的 blob 未设置为公共,您应该使用不同的方法,特别是本文档中提到的脚本:docs.microsoft.com/en-us/azure/sql-data-warehouse/…,在 1.1 部分下:不要如果您将本教程用作加载您自己的数据的模板,请跳过此步骤。要通过凭据访问数据,请使用以下脚本...如果可行,请告诉我,我可以编辑我的答案。
    • Adam,我已经在 ADW 中创建了这些对象,并且它在 classic Azure 存储上完美运行。仅当我将其设置为公共时,它才适用于 ARM 存储。我想限制对存储的访问仅限于 ADW 或没有订阅的服务(至少),但我不知道该怎么做。
    • 我使用以下信息添加了对答案的编辑。请注意,您仍应通过初始提供的响应访问 blob,而不将 blob 设为公开。我建议检查下面的 SAS,如果您有 NSG 来验证某些资源的访问是否不受限制或禁用:您还可以使用共享访问签名创建存储链接服务。它为数据工厂提供了对存储中所有/特定资源(blob/容器)的受限/有时限访问。
    • 我也尝试过 SAS。 仅当我在存储的 [防火墙和虚拟网络] 上选择“所有网络”时,它才起作用。如果我想限制访问并选择“选定的网络”,我必须提供地址范围来指定连接请求的来源(即 ADW)。这是我不知道该放什么的,或者还有其他更好的设置我不知道。
    猜你喜欢
    • 2017-12-16
    • 2017-01-04
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 2021-01-26
    • 2021-05-30
    相关资源
    最近更新 更多