Compartilhar via

使用 Azure 数据工厂 或 Synapse Analytics 从 Microsoft 365 (Office 365) 复制到Azure

适用于: Azure 数据工厂 Azure Synapse Analytics

Azure 数据工厂和 Synapse Analytics 管道与 Microsoft Graph 数据连接 集成,使你能够将Microsoft 365(Office 365)租户中的丰富组织数据引入Azure以可缩放的方式构建分析应用程序,并根据这些有价值的数据资产提取见解。 与特权访问管理的集成为Microsoft 365(Office 365)中的有价值的精选数据提供安全的访问控制。 有关Microsoft Graph 数据连接概述,请参阅 此链接

本文概述了如何使用复制活动从Microsoft 365(Office 365)复制数据。 有关复制数据的介绍,请阅读复制活动概述

支持的功能

以下功能支持此Microsoft 365(Office 365)连接器:

支持的功能 IR
复制操作 (source/-)

(1) Azure集成运行时 (2) 自承载集成运行时

ADF Microsoft 365(Office 365) 连接器和 Microsoft Graph Data Connect 可大规模引入已启用Exchange电子邮件的邮箱中的不同类型的数据集,包括通讯簿联系人、日历事件、电子邮件、用户信息、邮箱设置等。 请参阅此处以查看可用数据集的完整列表。

目前,在一次复制活动中,只能将数据从 Microsoft 365(Office 365)以 JSON 格式引入到 Azure Blob 存储Azure Data Lake Storage Gen2(类型为 setOfObjects)。 复制到Azure Blob 存储时,输出是包含 JSON 文本的 blob。 如果要将Microsoft 365(Office 365)加载到其他类型的数据存储或其他格式,可以将第一个复制活动与后续活动链接在一起,以进一步将数据加载到任何支持的 ADF 目标存储(请参阅“支持的数据存储和格式”表中的“支持作为接收器”列)。

重要

  • 包含数据工厂或 Synapse 工作区以及接收数据存储的 Azure 订阅必须在同一 Microsoft Entra 租户下,该租户与 Microsoft 365(Office 365)租户相同。
  • 确保用于复制活动的Azure Integration Runtime区域以及目标位于Microsoft 365(Office 365)租户用户的邮箱所在的同一区域中。 请参阅 here 了解如何确定Azure IR 位置。 有关支持的 Office 区域和相应Azure区域的列表,请参阅此处table
  • 服务主体身份验证是Azure Blob 存储支持的唯一身份验证机制,Azure Data Lake Storage Gen2作为目标存储。

注意

请在源和接收器链接服务中使用Azure集成运行时。 不支持自承载集成运行时和托管的虚拟网络集成运行时。

先决条件

若要将数据从 Microsoft 365 (Office 365) 复制到 Azure,需要完成以下先决条件步骤:

  • Microsoft 365(Office 365)租户管理员必须完成入职操作,如此处所述。
  • 在 Microsoft Entra ID 中创建和配置Microsoft Entra Web 应用程序。 有关说明,请参阅 创建Microsoft Entra应用程序
  • 记下以下值,用于定义Microsoft 365的链接服务(Office 365):
  • 将发起数据访问请求的用户标识添加为 Microsoft Entra 网络应用的所有者(在 Microsoft Entra 网络应用>的设置>所有者部分中>添加所有者)。
    • 用户标识必须位于要从中获取数据的 Microsoft 365 (Office 365) 组织中,并且不能是来宾用户。

批准新的数据访问请求

如果这是你首次请求此上下文(要访问的数据表、要将数据加载到的目标帐户和发出数据访问请求的用户标识的组合)的数据,则复制活动状态将显示为“正在进行”;仅当单击“操作”下的“详细信息”链接时,状态才显示为“正在请求同意”。 在继续执行数据提取之前,数据访问审批者组的成员需要在 Privileged Access Management 中审批该请求。

请参阅此处,了解审批者如何批准数据访问请求。

入门

提示

有关使用 Microsoft 365(Office 365)连接器的演练,请参阅从 Microsoft 365(Office 365)加载数据一文。

可以使用以下工具或 SDK 之一创建包含复制活动的管道。 选择一个链接进入教程,教程中有创建包含复制活动的管道的分步说明。

使用 UI 创建指向Microsoft 365(Office 365)的链接服务

使用以下步骤在Azure门户 UI 中创建指向Microsoft 365(Office 365)的链接服务。

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

  2. 搜索Microsoft 365(Office 365),然后选择Microsoft 365(Office 365)连接器。

    Microsoft 365(Office 365)连接器的屏幕截图。

  3. 配置服务详细信息、测试连接并创建新的链接服务。

     Microsoft 365(Office 365)联机服务配置的屏幕截图

连接器配置详细信息

以下部分提供有关用于定义特定于Microsoft 365(Office 365)连接器的数据工厂实体的属性的详细信息。

链接服务属性

Microsoft 365(Office 365)链接服务支持以下属性:

财产 描述 必需
类型 type 属性必须设置为:Office 365
office365TenantId Azure Microsoft 365(Office 365)帐户所属的租户 ID。
服务主体租户ID 指定Microsoft Entra Web 应用程序所在的租户信息。
服务主体ID 指定应用程序的客户端 ID。
服务主体凭证类型 指定要用于服务主体身份验证的凭据类型。 允许的值为 ServicePrincipalKeyServicePrincipalCert
适用于 ServicePrincipalKey
servicePrincipalKey 指定应用程序的密钥。 将此字段标记为 SecureString 以安全地存储该字段,或引用存储在 Azure 密钥保管库 中的机密。 否(当 servicePrincipalCredentialTypeServicePrincipalKey 时为必需项)
适用于ServicePrincipalCert
服务主体嵌入证书 (servicePrincipalEmbeddedCert) 指定在 Azure Active Directory 中注册的应用程序的 base64 编码证书。 将此字段标记为 SecureString 以安全地存储该字段,或引用存储在 Azure 密钥保管库 中的机密。 转到此 section 了解如何在Azure 密钥保管库中保存证书。 否(当 servicePrincipalCredentialTypeServicePrincipalCert 时为必需项)
服务主体嵌入证书密码 如果证书具有密码,并且使用的是 AadServicePrincipal 身份验证,请指定证书的密码。 将此字段标记为 SecureString 以安全地存储该字段,或引用存储在 Azure 密钥保管库 中的机密。
connectVia 用于连接到数据存储的Integration Runtime(集成运行时)。 如果未指定,则使用默认Azure Integration Runtime。

注意

office365TenantIdservicePrincipalTenantId之间的差异以及提供的相应值:

  • 如果您是企业开发人员,并为贵组织的内部使用开发 Microsoft 365(Office 365)数据应用程序,那么您应为这两个属性提供相同的租户 ID,即贵组织的 Microsoft Entra 租户 ID。
  • 如果你是为客户开发应用程序的 ISV 开发人员,则 office365TenantId 将是客户的(应用程序安装程序)Microsoft Entra租户 ID,servicePrincipalTenantId 将是公司的Microsoft Entra租户 ID。

示例 1:使用服务主体密钥身份验证

{
    "name": "Office365LinkedService",
    "properties": {
        "type": "Office365",
        "typeProperties": {
            "office365TenantId": "<Microsoft 365 (Office 365) tenant id>",
            "servicePrincipalTenantId": "<AAD app service principal tenant id>",
            "servicePrincipalCredentialType": "ServicePrincipalKey",
            "servicePrincipalId": "<AAD app service principal id>",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<AAD app service principal key>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

示例 2:使用服务主体证书身份验证

{
    "name": "Office365LinkedService",
    "properties": {
        "type": "Office365",
        "typeProperties": {
            "office365TenantId": "<Microsoft 365 (Office 365) tenant id>",
            "servicePrincipalTenantId": "<AAD app service principal tenant id>",
            "servicePrincipalCredentialType": "ServicePrincipalCert",            
            "servicePrincipalId": "<AAD app service principal id>",
            "servicePrincipalEmbeddedCert": "<AAD app service principal cert in base64>",
            "servicePrincipalEmbeddedCertPassword": "<AAD app service principal cert password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

将服务主体证书保存在 Azure 密钥保管库

可以使用两个选项在 Azure 密钥保管库 中保存服务主体证书:

  • 选项 1

    1. 将服务主体证书转换为 base64 字符串。 有关详细信息,请参阅本文

    2. 将 base64 字符串另存为Azure 密钥保管库中的机密。

      机密的屏幕截图。

      机密值的屏幕截图。

  • 方法 2

    如果无法从 Azure 密钥保管库 下载证书,则可以使用此 template 将转换的服务主体证书保存为Azure 密钥保管库中的机密。

    屏幕截图显示用于将服务主体证书作为机密保存到 AKV 中的模板管道。

数据集属性

有关可用于定义数据集的各部分和属性的完整列表,请参阅数据集一文。 本部分提供Microsoft 365(Office 365)数据集支持的属性列表。

若要从Microsoft 365(Office 365)复制数据,支持以下属性:

财产 描述 必需
类型 数据集的 type 属性必须设置为:Office365Table
表名称 要从Microsoft 365中提取的数据集的名称(Office 365)。 有关可用于提取的Microsoft 365 Office 365数据集列表,请参阅 here

如果在数据集中设置了 dateFilterColumnstartTimeendTimeuserScopeFilterUri,则仍按原样支持该数据集,但建议你以后在活动源中使用新模型。

示例

{
    "name": "DS_May2019_O365_Message",
    "properties": {
        "type": "Office365Table",
        "linkedServiceName": {
            "referenceName": "<Microsoft 365 (Office 365) linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [],
        "typeProperties": {
            "tableName": "BasicDataSet_v0.Event_v1"
        }
    }
}

复制活动 属性

有关可用于定义活动的各部分和属性的完整列表,请参阅管道一文。 本部分提供Microsoft 365(Office 365)源支持的属性列表。

Microsoft 365 (Office 365) 作为源

若要从 Microsoft 365 (Office 365) 复制数据,复制活动 source 节支持以下属性:

财产 描述 必需
类型 复制活动源的类型属性必须设置为 Office365Source
allowedGroups 组选择谓词。 可以使用此属性选择最多 10 个将为其检索数据的用户组。 如果未指定任何组,则会为整个组织返回数据。
userScopeFilterUri(用户范围过滤URI) 如果未指定 allowedGroups 属性,则可以使用应用于整个租户的谓词表达式来筛选要从Microsoft 365(Office 365)中提取的特定行。 谓词格式应与Microsoft Graph API 的查询格式匹配,例如https://microsoftgraph.chinacloudapi.cn/v1.0/users?$filter=Department eq 'Finance'
日期筛选列 日期/时间筛选器列的名称。 使用此属性可限制提取Microsoft 365(Office 365)数据的时间范围。 是的,如果数据集中有一个或多个日期时间列。 有关需要此日期/时间筛选器的数据集的列表,请参阅此处
开始时间 筛选时所依据的开始日期/时间值。 如果指定了 dateFilterColumn,则为"是"
结束时间 筛选时所依据的结束日期/时间值。 如果指定了 dateFilterColumn,则为"是"
输出列 要复制到接收器的列的数组。

示例:

"activities": [
    {
        "name": "CopyFromO365ToBlob",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Microsoft 365 (Office 365) input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "Office365Source",
                "dateFilterColumn": "CreatedDateTime",
                "startTime": "2019-04-28T16:00:00.000Z",
                "endTime": "2019-05-05T16:00:00.000Z",
                "userScopeFilterUri": "https://microsoftgraph.chinacloudapi.cn/v1.0/users?$filter=Department eq 'Finance'",
                "outputColumns": [
                    {
                        "name": "Id"
                    },
                    {
                        "name": "CreatedDateTime"
                    },
                    {
                        "name": "LastModifiedDateTime"
                    },
                    {
                        "name": "ChangeKey"
                    },
                    {
                        "name": "Categories"
                    },
                    {
                        "name": "OriginalStartTimeZone"
                    },
                    {
                        "name": "OriginalEndTimeZone"
                    },
                    {
                        "name": "ResponseStatus"
                    },
                    {
                        "name": "iCalUId"
                    },
                    {
                        "name": "ReminderMinutesBeforeStart"
                    },
                    {
                        "name": "IsReminderOn"
                    },
                    {
                        "name": "HasAttachments"
                    },
                    {
                        "name": "Subject"
                    },
                    {
                        "name": "Body"
                    },
                    {
                        "name": "Importance"
                    },
                    {
                        "name": "Sensitivity"
                    },
                    {
                        "name": "Start"
                    },
                    {
                        "name": "End"
                    },
                    {
                        "name": "Location"
                    },
                    {
                        "name": "IsAllDay"
                    },
                    {
                        "name": "IsCancelled"
                    },
                    {
                        "name": "IsOrganizer"
                    },
                    {
                        "name": "Recurrence"
                    },
                    {
                        "name": "ResponseRequested"
                    },
                    {
                        "name": "ShowAs"
                    },
                    {
                        "name": "Type"
                    },
                    {
                        "name": "Attendees"
                    },
                    {
                        "name": "Organizer"
                    },
                    {
                        "name": "WebLink"
                    },
                    {
                        "name": "Attachments"
                    },
                    {
                        "name": "BodyPreview"
                    },
                    {
                        "name": "Locations"
                    },
                    {
                        "name": "OnlineMeetingUrl"
                    },
                    {
                        "name": "OriginalStart"
                    },
                    {
                        "name": "SeriesMasterId"
                    }
                ]
            },
            "sink": {
                "type": "BlobSink"
            }
        }
    }
]

关于复制活动支持作为源和汇聚器的数据存储列表,请参阅支持的数据存储