将Azure Database for PostgreSQL灵活服务器连接到 Azure 数据工厂 和 Synapse Analytics

重要

Azure Database for PostgreSQL 2.0 版增强了对 Azure Database for PostgreSQL 的原生支持。 如果在解决方案中使用 Azure Database for PostgreSQL 版本 1.0,请尽早升级Azure Database for PostgreSQL链接服务。

什么是 Azure 数据工厂

Azure 数据工厂 是一项完全托管的无服务器数据集成服务,旨在协调和实施复杂的混合提取-转换-加载 (ETL)、提取-加载-转换 (ELT) 以及数据集成项目。 Azure 集成运行时 支持使用可公开访问的终结点连接数据存储和计算服务。 如果启用Azure集成运行时的托管虚拟网络功能,则它支持在专用网络环境中使用 Azure 专用链接 服务连接到数据存储。

Azure 数据工厂提供 Azure Database for PostgreSQL 连接器,支持 各种功能,具体取决于所选的集成运行时。

关联服务

在 Azure 数据工厂中, 链接服务 是与数据源的连接。 使用Azure Database for PostgreSQL时,可以使用 JSON 以编程方式指定连接详细信息来定义链接服务。 此方法适用于自动化、版本控制和部署方案。 JSON 定义包括服务器名称、数据库名称、身份验证类型和其他连接参数等属性。 通过创建链接服务,可以轻松连接到Azure Database for PostgreSQL灵活服务器并在Azure 数据工厂中执行数据集成任务。

可以使用 Azure 数据工厂 UI 或通过 JSON 以编程方式创建链接服务。 通过链接服务,可以连接到Azure Database for PostgreSQL灵活服务器并在Azure 数据工厂中执行数据集成任务。

先决条件

通过 Azure 门户创建链接服务

可以使用 Azure 数据工厂 UI 或通过 JSON 以编程方式创建链接服务。 通过链接服务,可以连接到Azure Database for PostgreSQL灵活服务器并在Azure 数据工厂中执行数据集成任务。

  1. 转到Azure 数据工厂或 Synapse 工作区中的“管理”选项卡,选择“链接服务”,然后选择“新建”:

    使用 Azure 数据工厂 UI 创建新的链接服务的屏幕截图。

  2. 在链接服务页中,通过选择“ + 新建”创建新的链接服务。 此时会打开一个窗口,其中包含所有 Azure 数据工厂连接器的列表。 搜索 Azure Database for PostgreSQL,将其选中,然后选择“ 继续”。

    在新的链接服务字段中搜索“Azure Database for PostgreSQL”的屏幕截图。

  3. 确保已选择 版本 2.0

    Azure Database for PostgreSQL 连接器的“新建链接服务”窗口的屏幕截图。

Authentication

身份验证支持四种方法:基本身份验证、服务主体、系统分配的托管标识和用户分配的托管标识。

基本身份验证
  1. 选择 “基本身份验证 ”作为身份验证类型。 输入 Azure PostgreSQL 灵活服务器连接详细信息,包括服务器名称用户名和密码

    Azure Database for PostgreSQL 连接器的新链接服务窗口的屏幕截图,其中包含基本身份验证类型。

  2. 选择“从Azure订阅”或“在帐户选择方法中手动输入”。

    选择 Azure 订阅服务器名称和数据库名称。 此外,输入 端口

    Azure 订阅的帐户选择方法的屏幕截图。

  3. 输入用户名和密码

    用户名和密码的屏幕截图。

  4. 现在可以 测试连接 并创建链接服务。

服务主体身份验证

若要设置服务主体身份验证,需要在 Azure 数据工厂 或 Synapse Analytics 中设置链接服务以连接到Azure Database for PostgreSQL。 此过程涉及选择适当的身份验证方法、配置连接详细信息和验证连接。 在继续作之前,请确保具备必要的先决条件和权限。

  1. 注册Microsoft Entra 应用并创建服务主体

  2. 选择 “服务主体 ”作为身份验证类型。

    服务主体凭据有两种类型。 这两种服务主体方法都需要租户服务主体 IDAzure云类型值。

    Azure Database for PostgreSQL 连接器的“新建链接服务”窗口的屏幕截图,其中包含服务主体身份验证类型。

  3. 选择“从Azure订阅”或“在帐户选择方法中手动输入”。

    选择 Azure 订阅服务器名称和数据库名称。 此外,输入 端口

    Azure 订阅的帐户选择方法的屏幕截图。

  4. 输入您的服务主体名称,该名称也显示为服务主体密钥的显示名称

  5. 在“身份验证参考方法”中选择“内联”

    服务主体内联身份验证参考方法的屏幕截图。

  6. 输入 租户。 租户 ID 位于 Azure 中,在其中创建了服务主体名称。

    Azure 上的服务主体租户的屏幕截图。

  7. 输入 服务主体 ID。 可以在 Azure 中找到创建服务主体名称的客户端 ID。

    Azure 上的服务主体 ID 的屏幕截图。

  8. 在服务主体凭据类型中选择服务主体证书或服务主体密钥

    服务主体证书 身份验证需要 服务主体证书服务主体密码(可选)。

    Azure Database for PostgreSQL 连接器中使用服务主体证书身份验证类型的新建链接服务窗口的屏幕截图。

  9. 选择 Azure 云类型

  10. 现在可以 测试连接 并创建链接服务。

系统分配的托管身份认证

若要使用系统分配的托管标识作为 Azure 数据工厂 或 Synapse Analytics 中链接服务中的身份验证类型来连接到Azure Database for PostgreSQL,请完成以下步骤。 此过程涉及选择适当的身份验证方法、配置连接详细信息和验证连接。 在继续作之前,请确保具备必要的先决条件和权限。

  1. 在 Azure Database for PostgreSQL 资源中的“安全性”下

    1. 选择 “标识”

    2. 确保 系统分配的托管标识On

      Azure Database for PostgreSQL 服务器资源中系统分配的托管标识配置的屏幕截图。

  2. 在 Azure 数据工厂资源中,

    1. 选择“设置”,然后选择“托管标识”

    2. “系统分配 ”选项卡下,确保状态为 “打开”

      Azure 数据工厂资源中系统分配的托管标识配置的屏幕截图。

  3. 在 Azure Database for PostgreSQL 资源中的“安全性”下

    1. 选择 身份验证

    2. 仅选择 Microsoft Entra 身份验证PostgreSQL 和 Microsoft Entra 身份验证身份验证方法。

    3. 选择 “+ 添加 Microsoft Entra 管理员”

    4. 将 Azure 数据工厂资源的由系统分配的托管标识添加为 Microsoft Entra 管理员之一

      在 Azure Database for PostgreSQL 资源中添加 Azure 数据工厂系统分配的托管标识配置的屏幕截图。

  4. 在 Azure 数据工厂的链接服务中,选择 系统分配的托管标识 作为身份验证类型。

    已选择系统分配的托管身份的屏幕截图。

  5. 选择“从Azure订阅”或“在帐户选择方法中手动输入”。

    选择 Azure 订阅服务器名称和数据库名称。 此外,输入 端口

    Azure 订阅的帐户选择方法的屏幕截图。

  6. 现在可以 测试连接 并创建链接服务。

用户分配的托管身份身份验证

在 Azure 数据工厂或 Synapse Analytics 的链接服务中,将身份验证类型设为用户分配的托管标识,以连接到 Azure Database for PostgreSQL,需要执行以下步骤。 此过程涉及选择适当的身份验证方法、配置连接详细信息和验证连接。 在继续作之前,请确保具备必要的先决条件和权限。

  1. 在Azure门户中创建用户分配的托管标识资源。 若要了解详细信息,请参阅 “管理用户分配的托管标识”。

  2. 将用户分配的托管标识应用于 Azure Database for PostgreSQL 资源

    1. 在 Azure Database for PostgreSQL 服务器资源中的“安全性”下

    2. 选择 身份验证

    3. 仅选择 Microsoft Entra 身份验证PostgreSQL 和 Microsoft Entra 身份验证身份验证方法。

    4. 选择“+ 添加Microsoft Entra管理员”,然后选择用户分配的托管标识

      Azure Database for PostgreSQL 服务器中用户分配的托管标识配置的屏幕截图。

  3. 用户分配的托管标识 分配给 Azure 数据工厂资源

    1. 选择“设置”,然后选择“托管标识”

    2. 在“ 用户分配 ”选项卡下,选择“ + 添加 ”,然后选择用户托管标识

      Azure 数据工厂资源中用户分配的托管标识配置的屏幕截图。

  4. 在Azure 数据工厂的链接服务中,选择“用户分配的托管标识”作为身份验证类型

    在链接服务中的身份验证类型下选择的用户分配的托管标识的屏幕截图。

  5. 选择“从Azure订阅”或“在帐户选择方法中手动输入”。

    选择 Azure 订阅服务器名称和数据库名称。 此外,输入 端口

    Azure 订阅的帐户选择方法的屏幕截图。

  6. “凭据”上,选择用户分配的托管标识凭据,或使用 “+ 新建”创建新凭据。

    凭据下拉菜单中已选择项的屏幕截图。

    1. 如果需要创建新凭据,请选择“ + 新建”。

    2. 确保 类型用户分配的托管标识

    3. 选择你的 Azure 订阅

    4. 用户分配的托管标识中,选择 “分配给数据工厂” 下的托管标识,然后选择“ 创建”。

      “创建凭据”的屏幕截图,其中选择了您的用户托管标识。

  7. 现在可以 测试连接 并创建链接服务。

测试连接

  1. 填写所有必需的连接字段后,右下角将显示 “测试连接 ”按钮。 测试连接按钮验证链接服务是否可以连接到 Azure Database for PostgreSQL 服务器。

    Azure Database for PostgreSQL 连接器测试连接的新链接服务窗口的屏幕截图。

  2. 选择“创建”

链接服务 JSON

下表描述了 Azure Database for PostgreSQL 的链接服务的属性。 这些属性以 JSON 格式定义,用于以编程方式创建链接服务。

资产 Description 必选
姓名 链接服务的名称。 请参阅 命名规则 是的
类型 链接服务的类型。 使用 AzurePostgreSql 是的
服务器 Azure Database for PostgreSQL 灵活服务器的完全限定主机名 是的
移植 Azure Database for PostgreSQL 灵活服务器的端口号 是的
数据库 数据库名称 是的
SSL模式 表示 SSL 连接配置的数值。 0 表示禁用,1 表示允许,2 表示首选,3 表示要求,4 表示验证 CA,5 表示完全验证 是的
验证类型 指定要使用的身份验证。 BasicAuthServicePrincipalSystemAssignedManagedIdentityUserAssignedManagedIdentity 是的
凭据 将用户分配的托管标识指定为凭据对象。 UserAssignedManagedIdentity 是必需的。 否则,不需要
用户名 基本身份验证的用户名,或服务主体身份验证的服务主体名称 是的
密码 基本身份验证的用户名密码 BasicAuth 时是必需的。 否则,不需要
租户 租户 ID ServicePrincipal 身份验证类型必需
服务主体ID 服务主体 ID ServicePrincipal 身份验证类型必需
servicePrincipalCredentialType 服务主体类型。 ServicePrincipalCertServicePrincipalKey 是的
servicePrincipalEmbeddedCert 服务主体证书 ServicePrincipalCert 时是必需的。 否则,不需要
servicePrincipalEmbeddedCertPassword(服务主体嵌入式证书密码) 服务主体证书密码
servicePrincipalKey 服务主体密钥 如果 ServicePrincipalKey 是 servicePrincipalCredentialType,则是必需的。 否则,不需要

根据身份验证类型,不同的字段需要不同的 JSON 有效负载。

以下示例显示了不同身份验证方法的 JSON 配置,包括基本身份验证、服务主体证书和服务主体密钥。 可以自定义这些 JSON 模板以满足特定要求。

使用 BasicAuth 的链接服务以 JSON 格式定义,如下所示:

{
    "name": "<Name of the linked service>",
    "properties": {
        "type": "AzurePostgreSql",
        "version": "2.0",
        "typeProperties": {
            "server": "<server host name>",
            "port": 5432,
            "database": "<database name>",
            "sslMode": 2,
            "username": "<Service Principal Name>",
            "authenticationType": "BasicAuth",
            "password": "<username password>"
        }
    }
}

使用 服务主体证书 的链接服务以 JSON 格式定义,如下所示:

{
    "name": "<Name of the linked service>",
    "properties": {
        "type": "AzurePostgreSql",
        "version": "2.0",
        "typeProperties": {
            "server": "<server host name>",
            "port": 5432,
            "database": "<database name>",
            "sslMode": 2,
            "username": "<Service Principal Name>",
            "authenticationType": "ServicePrincipal",
            "tenant": "<Tenant ID>",
            "servicePrincipalId": "<SP ID>",
            "servicePrincipalCredentialType": "ServicePrincipalCert",
            "servicePrincipalEmbeddedCert": "<Embedded certificate>",
            "servicePrincipalEmbeddedCertPassword": "<Service Principal certificate password>"
        }
    }
}

使用 服务主体密钥 的链接服务以 JSON 格式定义,如下所示:

{
    "name": "<Name of the linked service>",
    "properties": {
        "type": "AzurePostgreSql",
        "version": "2.0",
        "typeProperties": {
            "server": "<server host name>",
            "port": 5432,
            "database": "<database name>",
            "sslMode": 2,
            "username": "<Service Principal Name>",
            "authenticationType": "ServicePrincipal",
            "tenant": "<Tenant ID>",
            "servicePrincipalId": "<SP ID>",
            "servicePrincipalCredentialType": "ServicePrincipalKey",
            "servicePrincipalKey": "<Service Principal Key>"
        }
    }
}

系统 分配的托管身份的示例:

{
    "name": "AzurePostgreSqlLinkedService",
    "type": "Microsoft.DataFactory/factories/linkedservices",
    "properties": {
        "annotations": [],
        "type": "AzurePostgreSql",
        "version": "2.0",
        "typeProperties": {
            "server": "<server name>",
            "port": 5432,
            "database": "<database name>",
            "sslMode": 2,
            "authenticationType": "SystemAssignedManagedIdentity"
        }
    }
}

使用用户分配的托管标识的示例:

{
    "name": "AzurePostgreSqlLinkedService",
    "type": "Microsoft.DataFactory/factories/linkedservices",
    "properties": {
        "annotations": [],
        "type": "AzurePostgreSql",
        "version": "2.0",
        "typeProperties": {
            "server": "<server name>",
            "port": 5432,
            "database": "<database name>",
            "sslMode": 2,
            "authenticationType": "UserAssignedManagedIdentity",
            "credential": {
                "referenceName": "<your credential>",
                "type": "CredentialReference"
            }
        }
    }
}

通过 API 创建链接服务

可以使用管理中心和引用链接服务的任何活动、数据集或数据流,在 Azure 数据工厂 门户中创建链接服务。

可以使用以下工具之一创建链接服务: .NET APIPowerShellREST APIAzure 资源管理器模板Azure 门户

创建链接服务时,需要对指定服务进行适当的授权。 如果没有足够的访问权限,则看不到可用的资源,并且必须使用手动输入选项。

Activities

活动是管道中可以执行特定任务的任务。 通过使用脚本活动,可以运行 PostgreSQL 脚本来查询或修改数据库。