Microsoft Teams

集成版本:23.0

本文档提供了有关如何将 Microsoft Teams 与 Google Security Operations (Google SecOps) 集成的指南。

配置 Microsoft Teams 集成以与 Google Security Operations 搭配使用

  1. 确保用于集成配置的账号已启用 Microsoft Teams 许可。为此,请前往 Microsoft 管理中心,查看所需用户应用了哪些许可。

    Microsoft 管理中心 - 应用于 Microsoft Teams 用户的许可

  2. 确认所需用户拥有许可后,您就可以开始创建 Microsoft Teams 应用了。首先,您需要依次前往 Azure Active Directory > 应用注册

    Microsoft 管理中心 - 应用注册标签页

  3. 点击新注册,然后提供以下信息:

    • Teams 应用的名称
    • 重定向 URI:“https://localhost”

    请务必将重定向 URI 保存到某个位置,因为您稍后需要用到它。

  4. 前往概览页面,然后复制:

    • 应用(客户端)ID:对应于集成配置中的“客户端 ID”参数
    • 目录(租户)ID:它对应于集成配置中的“租户”参数

    Microsoft 管理中心 - Microsoft Teams 概览页面

  5. 添加必要的权限。所有应用的权限均为“委托”,应如下所示:

    添加必要的应用权限

    请务必为相应权限授予管理员同意。

  6. 前往证书和密钥标签页,然后添加新的客户端密钥。生成客户端密钥后,您需要复制列中的数据。集成配置的“客户端密钥”参数需要此值。

  7. 前往 Google SecOps SOAR 配置页面,然后输入以下参数:

    • 客户端 ID
    • 客户端密钥
    • 重定向 URI
    • 租户

    为“刷新令牌”参数输入占位符字符串,然后保存配置。

    初始 Microsoft Teams 集成配置

  8. 前往支持请求标签页,然后打开任意支持请求。如果您没有保护壳,可以模拟一个。

    案例模拟

  9. 选择支持请求中的某个提醒,然后点击手动操作

    “提醒详细信息”窗格 - “人工处置措施”按钮

  10. 前往 Microsoft Teams 集成,然后运行“获取授权”操作。此操作会生成一个用于向应用进行身份验证的链接。

    获取授权操作

  11. 如需获取结果,请前往“支持请求墙”标签页,然后点击查看结果

    “查看结果”按钮

    您应该会看到类似如下所示的输出:

    查看结果输出

  12. 点击操作提供的链接。确保您登录的用户是用于此集成的用户。在浏览器中打开该链接后,您会发现系统将您重定向到了其他网页。此页面应如下所示:https://localhost/?code=0.ATwAylKP1BpbCEeO0…&session_state=a149d18b-4131-4649-8956-2f0d09a98743# Copy everything till "&session_state",例如:https://localhost/?code=0.ATwAylKP1BpbCEeO0…

  13. 运行“生成令牌”操作。

    生成令牌操作

  14. 前往案例墙标签页查看结果。在输出消息中,您会找到一个令牌。复制此令牌并将其粘贴到“刷新令牌”参数中。

    “获取授权”操作 - 刷新令牌值

  15. 如果一切操作正确无误,您会看到一个绿色对勾标记。

    已完成 Microsoft Teams 集成配置

在 Google SecOps 中配置 Microsoft Teams 集成

有关如何在 Google SecOps 中配置集成的详细说明,请参阅配置集成

集成参数

使用以下参数配置集成:

参数名称 类型 默认 是否为必需属性 说明
实例名称 字符串 不适用 您打算为其配置集成的实例的名称。
说明 字符串 不适用 实例的说明。
客户端 ID 字符串 不适用 不适用
密钥 ID 密码 不适用 不适用
租户 字符串 不适用 不适用
刷新令牌 密码 不适用 不适用
重定向网址 字符串 http://localhost 指定将用于对集成进行身份验证的重定向网址。默认值为 http://localhost。此参数会影响“获取授权”和“生成令牌”操作。

操作

等待回复

说明

操作等待指定消息中的预期回复。

此操作会异步运行。根据需要调整 Google SecOps IDE 中操作的脚本超时值。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
团队名称 字符串 不适用 指定球队名称。
频道名称 字符串 不适用 指定频道的名称。
邮件 ID 字符串 不适用 指定预期会收到回复的消息的 ID。
预期回复 字符串 不适用

指定预期回复的文本。

如果未提供此值,则操作会在收到任何回复时停止执行。

等待方法 DDL

查看首次回复

可能的值:

  • 查看首次回复
  • 等待直至超时

指定操作的等待方法。

如果选择了 Check First Reply,该操作会返回第一个回复或将其与预期值进行比较。

如果选择等待直至超时,该操作会等待预期值,直到超时,或者返回超时期间发送的所有消息。

运行于

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False

生成令牌

说明

使用在上一步中收到的授权网址获取访问令牌。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
授权网址 字符串 不适用 使用在上一步中收到的授权网址请求访问令牌。

运行于

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_connected True/False is_connected:False

获取授权

说明

运行操作并浏览收到的网址。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
重定向网址 字符串 不适用 使用在上一步中收到的授权网址请求访问令牌。

运行于

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_connected True/False is_connected:false

获取团队 ID

说明

检索特定团队的属性。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
团队名称 字符串 不适用 球队名称。

运行于

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False

获取用户详细信息

说明

检索特定用户的属性和关系。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
用户名 字符串 不适用 Microsoft Team 的用户名

运行于

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "isResourceAccount": null,
    "mailNickname": "username.co#EXT#",
    "surname": null,
    "deletedDateTime": null,
    "assignedLicenses": [{
        "skuId": "16ddbbfc-09ea-4de2-b1d7-312db6112d70",
        "disabledPlans": []
    }],
    "userPrincipalName": "username.co#EXT#@tenant.onmicrosoft.com",
    "faxNumber": null,
    "consentProvidedForMinor": null,
    "userType": "Member",
    "officeLocation": null,
    "usageLocation": "IL",
    "city": null,
    "employeeId": null,
    "onPremisesImmutableId": null,
    "preferredLanguage": null,
    "streetAddress": null,
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users/$entity",
    "id": "5e457a85-a705-4b65-8a9f-3a3d2ad7715c",
    "state": null,
    "businessPhones": [],
    "postalCode": null,
    "mail": "john_doe@example.com",
    "onPremisesSamAccountName": null,
    "onPremisesLastSyncDateTime": null,
    "accountEnabled": true,
    "mobilePhone": null,
    "refreshTokensValidFromDateTime": "2018-11-12T13:28:53Z",
    "companyName": null,
    "deviceKeys": [],
    "jobTitle": null,
    "preferredDataLocation": null,
    "showInAddressList": false,
    "department": null,
    "proxyAddresses": ["SMTP:mail"],
    "externalUserStateChangeDateTime": "2018-11-12T13:29:41Z",
    "onPremisesProvisioningErrors": [],
    "legalAgeGroupClassification": null,
    "onPremisesSyncEnabled": null,
    "onPremisesExtensionAttributes": {
        "extensionAttribute4": null,
        "extensionAttribute5": null,
        "extensionAttribute6": null,
        "extensionAttribute7": null,
        "extensionAttribute12": null,
        "extensionAttribute1": null,
        "extensionAttribute2": null,
        "extensionAttribute3": null,
        "extensionAttribute10": null,
        "extensionAttribute11": null,
        "extensionAttribute8": null,
        "extensionAttribute9": null,
        "extensionAttribute14": null,
        "extensionAttribute15": null,
        "extensionAttribute13": null
    },
    "assignedPlans": [{
        "capabilityStatus": "Enabled",
        "servicePlanId":
        "617d9209-3b90-4879-96e6-838c42b2701d",
        "service": "MicrosoftCommunicationsOnline",
        "assignedDateTime": "2018-11-12T13:28:57Z"
    }, {
        "capabilityStatus": "Enabled",
        "servicePlanId": "902b47e5-dcb2-4fdc-858b-c63a90a2bdb9",
        "service": "SharePoint",
        "assignedDateTime": "2018-11-12T13:28:57Z"
    }, {
        "capabilityStatus": "Enabled",
        "servicePlanId": "4fa4026d-ce74-4962-a151-8e96d57ea8e4",
        "service": "TeamspaceAPI",
        "assignedDateTime": "2018-11-12T13:28:57Z"
    }],
    "passwordProfile": null,
    "passwordPolicies": null,
    "externalUserState": "Accepted",
    "otherMails": ["mail"],
    "displayName": "name",
    "imAddresses": [],
    "provisionedPlans": [{
        "capabilityStatus": "Enabled",
        "provisioningStatus": "Success",
        "service": "SharePoint"
    }],
    "createdDateTime": "2018-11-12T13:28:53Z",
    "country": null,
    "onPremisesDistinguishedName": null,
    "onPremisesSecurityIdentifier": null,
    "onPremisesDomainName": null,
    "onPremisesUserPrincipalName": null,
    "givenName": null,
    "ageGroup": null
}

列出频道

说明

获取特定团队中所有频道的详细信息。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
团队名称 字符串 不适用 球队名称。

运行于

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
all_channels_details 不适用 不适用

列出团队

说明

检索所有团队的详细信息。

参数

此操作没有输入参数。

运行于

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
teams 不适用 不适用
JSON 结果
[
    {
        "mailNickname": "Test",
        "classification": null,
        "deletedDateTime": null,
        "renewedDateTime": "2018-11-12T15:03:50Z",
        "onPremisesProvisioningErrors": [],
        "membershipRuleProcessingState": null,
        "preferredLanguage": null,
        "expirationDateTime": null,
        "id": "43b559d5-f63d-47dd-9e6c-b3470b6446ee",
        "theme": null,
        "preferredDataLocation": null,
        "mail": "john_doe@example.com",
        "membershipRule": null,
        "onPremisesLastSyncDateTime": null,
        "description": "Test",
        "securityEnabled": false,
        "proxyAddresses": ["SPO:SPO_eaf75319-582a-46cf-8812-9e787d757c4e@SPO_a4a936ec-735f-488a-bfc0-7665f87aab47", "SMTP:Test@tenant.onmicrosoft.com"],
        "visibility": "Public",
        "resourceProvisioningOptions": ["Team"],
        "displayName": "Test",
        "groupTypes": ["Unified"],
        "onPremisesSyncEnabled": null,
        "createdDateTime": "2018-11-12T15:03:50Z",
        "resourceBehaviorOptions": ["HideGroupInOutlook", "SubscribeMembersToCalendarEventsDisabled", "WelcomeEmailDisabled"],
        "onPremisesSecurityIdentifier": null,
        "mailEnabled": true
    }, {
        "mailNickname": "user",
        "classification": null,
        "deletedDateTime": null,
        "renewedDateTime": "2018-11-28T13:46:50Z",
        "onPremisesProvisioningErrors": [],
        "membershipRuleProcessingState": null,
        "preferredLanguage": null,
        "expirationDateTime": null,
        "id": "67149c85-7139-4062-bfae-059d18ee7e5d",
        "theme": null,
        "preferredDataLocation": null,
        "mail": "john_doe@example.com",
        "membershipRule": null,
        "onPremisesLastSyncDateTime": null,
        "description": "user",
        "securityEnabled": false, "proxyAddresses": ["SPO:SPO_781470a6-2db5-454d-a8e3-71752b3b829e@SPO_a4a936ec-735f-488a-bfc0-7665f87aab47", "SMTP:user@tenant.onmicrosoft.com"],
        "visibility": "Public",
        "resourceProvisioningOptions": ["Team"],
        "displayName": "user",
        "groupTypes": ["Unified"],
        "onPremisesSyncEnabled": null,
        "createdDateTime": "2018-11-28T13:46:50Z",
        "resourceBehaviorOptions": ["HideGroupInOutlook", "SubscribeMembersToCalendarEventsDisabled", "WelcomeEmailDisabled"],
        "onPremisesSecurityIdentifier": null,
        "mailEnabled": true
    }

列出用户

说明

获取所有用户的详细信息。

参数

此操作没有输入参数。

运行于

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
用户 不适用 不适用
JSON 结果
[{
    "mailNickname": "Test",
    "classification": null,
    "deletedDateTime": null,
    "renewedDateTime": "2018-11-12T15:03:50Z",
    "onPremisesProvisioningErrors": [],
    "membershipRuleProcessingState": null,
    "preferredLanguage": null,
    "expirationDateTime": null,
    "id": "43b559d5-f63d-47dd-9e6c-b3470b6446ee",
    "theme": null,
    "preferredDataLocation": null,
    "mail": "john_doe@example.com",
    "membershipRule": null,
    "onPremisesLastSyncDateTime": null,
    "description": "Test",
    "securityEnabled": false,
    "proxyAddresses": ["SPO:SPO_eaf75319-582a-46cf-8812-9e787d757c4e@SPO_a4a936ec-735f-488a-bfc0-7665f87aab47", "SMTP:Test@tenant.onmicrosoft.com"],
    "visibility": "Public",
    "resourceProvisioningOptions": ["Team"],
    "displayName": "Test",
    "groupTypes": ["Unified"],
    "onPremisesSyncEnabled": null,
    "createdDateTime": "2018-11-12T15:03:50Z",
    "resourceBehaviorOptions": ["HideGroupInOutlook", "SubscribeMembersToCalendarEventsDisabled", "WelcomeEmailDisabled"],
    "onPremisesSecurityIdentifier": null,
    "mailEnabled": true
}, {
    "mailNickname": "user",
    "classification": null,
    "deletedDateTime": null,
    "renewedDateTime": "2018-11-28T13:46:50Z",
    "onPremisesProvisioningErrors": [],
    "membershipRuleProcessingState": null,
    "preferredLanguage": null,
    "expirationDateTime": null,
    "id": "67149c85-7139-4062-bfae-059d18ee7e5d",
    "theme": null,
    "preferredDataLocation": null,
    "mail": "john_doe@example.com",
    "membershipRule": null,
    "onPremisesLastSyncDateTime": null,
    "description": "user",
    "securityEnabled": false,
    "proxyAddresses": ["SPO:SPO_781470a6-2db5-454d-a8e3-71752b3b829e@SPO_a4a936ec-735f-488a-bfc0-7665f87aab47", "SMTP:user@tenant.onmicrosoft.com"],
    "visibility": "Public",
    "resourceProvisioningOptions": ["Team"],
    "displayName": "user",
    "groupTypes": ["Unified"],
    "onPremisesSyncEnabled": null,
    "createdDateTime": "2018-11-28T13:46:50Z",
    "resourceBehaviorOptions": ["HideGroupInOutlook", "SubscribeMembersToCalendarEventsDisabled", "WelcomeEmailDisabled"],
    "onPremisesSecurityIdentifier": null,
    "mailEnabled": true
}]

Ping

说明

测试连接性。

参数

此操作没有输入参数。

运行于

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_connected True/False is_connected:False

发送消息

说明

向特定频道发送消息。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
团队名称 字符串 不适用 团队名称。
频道名称 字符串 不适用 渠道名称。
消息 字符串 不适用 Message 的正确子类。

运行于

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
[{
    "@odata.context":"https://graph.microsoft.com/beta/$metadata#teams('192c0699-fad2-4d02-88a2-84efd6369894')/channels('19%3Ae3acbb17a8754cae9df724f493b5342f%40thread.tacv2')/messages/$entity",
    "id":"1601372154742",
    "replyToId":null,
    "etag":"1601372154742",
    "messageType":"message",
    "createdDateTime":"2020-09-29T09:35:54.742Z",
    "lastModifiedDateTime":"2020-09-29T09:35:54.742Z",
    "lastEditedDateTime":null,
    "deletedDateTime":null,
    "subject":null,
    "summary":null,
    "chatId":null,
    "importance":"normal",
    "locale":"en-us",
    "webUrl":"https://teams.microsoft.com/l/message/19%3Ae3acbb17a8754cae9df724f493b5342f%40thread.tacv2/1601372154742?groupId=192c0699-fad2-4d02-88a2-84efd6369894&tenantId=d48f52ca-5b1a-4708-8ed0-ebb98a26a46a&createdTime=1601372154742&parentMessageId=1601372154742",
    "policyViolation":null,
    "from":{
        "application":null,
        "device":null,
        "conversation":null,
        "user":{
            "id":"b786d3cf-e97d-4511-b61c-0559e9f4da75",
            "displayName":"u05D2'u05D9u05D9u05DEu05E1 u05D1u05D5u05E0u05D3",
            "userIdentityType":"aadUser"
        }},
    "body":{
        "contentType":"text",
        "content":"Hello there"
    },
    "channelIdentity":{
        "teamId":"192c0699-fad2-4d02-88a2-84efd6369894",
        "channelId":"19:e3acbb17a8754cae9df724f493b5342f@thread.tacv2"
    },
    "attachments":[],
    "mentions":[],
    "reactions":[]
}]

发送用户消息

说明

在 Microsoft Teams 中向用户发送聊天消息。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
用户标识符 CSV 不适用

指定要向其发送消息的用户标识符的逗号分隔列表。

注意:该操作会合并此参数中提供的有效实体和值,并将消息发送给所有这些实体和值。

文本 字符串 不适用 指定消息的内容。
等待回复 复选框 勾选 如果启用,操作会等待,直到收到所有实体的回复。
内容类型 DDL 勾选 指定消息的内容类型。
用户选择 DDL

文本

可能的值:

  • 文本
  • HTML

来自实体和用户标识符

可能的值:

  • 来自实体和用户标识符
  • 来自实体
  • 来自用户标识符

指定应为用户使用的选择类型。

如果选择“来自实体和用户标识符”,操作会同时在相关实体和“用户标识符”参数中提供的值中进行搜索。

如果提供了“来自实体”,则操作仅适用于相关实体,并忽略“用户标识符”参数中提供的值。

如果选择“来自用户标识符”,则该操作仅适用于“用户标识符”中的值,并且“用户标识符”参数会变为必需参数。

运行于

此操作适用于以下实体:

  • 用户名
  • 电子邮件地址

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "id": "1632820681737",
    "replyToId": null,
    "etag": "1632820681737",
    "messageType": "message",
    "createdDateTime": "2021-09-28T09:18:01.737Z",
    "lastModifiedDateTime": "2021-09-28T09:18:01.737Z",
    "lastEditedDateTime": null,
    "deletedDateTime": null,
    "subject": null,
    "summary": null,
    "chatId": "19:5af81bea-9c9f-4f9f-8745-9df1fdba8e12_b786d3cf-e97d-4511-b61c-0559e9f4da75@unq.gbl.spaces",
    "importance": "normal",
    "locale": "en-us",
    "webUrl": null,
    "channelIdentity": null,
    "policyViolation": null,
    "from": {
        "application": null,
        "device": null,
        "user": {
            "id": "b786d3cf-e97d-4511-b61c-0559e9f4da75",
            "displayName": "ג'יימס בונד",
            "userIdentityType": "aadUser"
        }
    },
    "body": {
        "contentType": "text",
        "content": "qqq"
    },
    "attachments": [],
    "mentions": [],
    "reactions": []
}
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行


如果报告了 201 状态代码 (is_success = true)“已成功向 Microsoft Teams 中的以下用户发送消息:{entity.identifier}。”

如果未找到与实体相关的聊天(is_success = true)“无法在 Microsoft Teams 中向以下用户发送消息:{entity.identifier}。”

如果找不到与实体关联的所有对话 (is_success = false):“未向 Microsoft Teams 中提供的用户发送任何消息。”

异步消息

“正在等待以下用户的回复:{entity.identifier}。”

操作应失败并停止 playbook 执行

如果报告了严重错误:“执行操作‘发送用户消息’时出错。原因:{0}''.format(error.Stacktrace)

如果超时:“执行操作‘发送用户消息’时出错。原因:已发送消息,但在等待以下用户的回复时,操作超时:{entity.identifier}。”请在 IDE 中增加超时时间,然后重试。注意:如果您重试,系统会发送另一条消息。

常规

创建频道

说明

在 Microsoft Teams 中创建频道。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
团队名称 字符串 不适用 指定您需要创建频道的团队的名称。
频道名称 字符串 不适用 指定频道的唯一名称。
渠道类型 DDL

标准

可能的值:

  • 标准
  • 不公开
指定需要创建的渠道的类型。标准频道对团队的所有成员开放,而私密频道需要用户加入才能访问。
说明 字符串 不适用 指定频道的说明。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#teams('c084d2c7-a7e6-47a5-921b-0c32c3ab41d1')/channels/$entity",
    "id": "19:92ce922c1790450fae81f6713dbffbe3@thread.tacv2",
    "createdDateTime": "2021-11-18T11:37:39.8186647Z",
    "displayName": "Architecturea Discussion",
    "description": null,
    "isFavoriteByDefault": false,
    "email": "",
    "webUrl": "https://teams.microsoft.com/l/channel/19%3a92ce922c1790450fae81f6713dbffbe3%40thread.tacv2/Architecturea+Discussion?groupId=c084d2c7-a7e6-47a5-921b-0c32c3ab41d1&tenantId=d48f52ca-5b1a-4708-8ed0-ebb98a26a46a",
    "membershipType": "standard"
}
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行


如果报告了 201 状态代码 (is_success = true):“已在 Microsoft Teams 的团队 "{team name}" 中成功创建频道 "{channel name}"。”

操作应失败并停止 playbook 执行

如果报告了严重错误:“执行操作‘创建频道’时出错。原因:{0}''.format(error.Stacktrace)

如果找不到团队:“执行操作‘创建频道’时出错。原因:在 Microsoft Teams 中找不到名称为 {team, name} 的团队。

如果报告了 400 状态代码:“执行操作‘创建频道’时出错。原因:{innerError/message}。

常规

删除通道

说明

删除 Microsoft Teams 中的频道。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
团队名称 字符串 不适用 指定需要删除相应频道的团队的名称。
频道名称 字符串 不适用 指定需要删除的渠道的名称。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行


如果报告了 204 状态代码 (is_success = true):“已成功删除 Microsoft Teams 中团队 "{team name}" 中的频道 "{channel name}"。”

如果未找到频道(is_success = true):“频道 "{channel name}" 在 Microsoft Teams 的团队 "{team name}" 中本来就不存在。”

操作应失败并停止 playbook 执行

如果系统报告严重错误:“执行操作‘删除频道’时出错。原因:{0}''.format(error.Stacktrace)

如果找不到团队:“执行操作‘删除频道’时出错。原因:在 Microsoft Teams 中找不到名称为 {team, name} 的团队。

常规

向频道添加用户

说明

将用户添加到 Microsoft Teams 中的私密频道。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
团队名称 字符串 不适用 指定要在哪个团队中搜索频道。
频道名称 字符串 不适用 指定要向其中添加用户的频道的名称。

运行于

此操作适用于以下实体:

  • 用户名
  • 电子邮件地址

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行


如果报告了一个实体的 201 状态代码 (is_success = true):“已成功将以下用户从 Microsoft Teams 中的团队“{team name}”添加到频道“{Channel Name}”:{entity.identifier}”

如果未找到某个实体的用户 (is_success = true):“操作无法在 Microsoft Teams 中找到以下用户:{entity.identifier}”

如果报告了某个实体的 400 状态代码 (is_success = true):“无法将以下用户从 Microsoft Teams 中的团队“{team name}”添加到频道“{Channel Name}”:{entity.identifier}。确保用户是“{team name}”团队的成员。

如果找不到任何用户(is_success = false):“在 Microsoft Teams 中找不到任何提供的用户。”

如果报告了所有用户的 400 状态代码 (is_success = false):“无法将所提供的用户从 Microsoft Teams 中的团队 "{team name}" 添加到频道 "{Channel Name}"。确保用户是“{team name}”团队的成员。

操作应失败并停止 playbook 执行

如果报告了严重错误:“执行操作‘将用户添加到频道’时出错。原因:{0}''.format(error.Stacktrace)

如果找不到团队:“执行操作‘将用户添加到频道’时出错。原因:在 Microsoft Teams 中找不到名称为 {team, name} 的团队。

如果找不到频道:“执行操作‘将用户添加到频道’时出错。原因:在 Microsoft Teams 中找不到名为 {channel name} 的频道。

如果频道的“membershipType”不等于“private”:“执行操作‘向频道添加用户’时出错。原因:名称为 {channel name} 的频道不是私享频道。

常规

从频道中移除用户

说明

从 Microsoft Teams 中的私密频道移除用户。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
团队名称 字符串 不适用 指定要在哪个团队中搜索频道。
频道名称 字符串 不适用 指定要从中移除用户的频道的名称。

运行于

此操作适用于以下实体:

  • 用户名
  • 电子邮件地址(与电子邮件正则表达式匹配的用户名)

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行


如果报告了某个实体的 201 状态代码 (is_success = true):“已成功从 Microsoft Teams 中团队‘{team name}’的频道‘{Channel Name}’中移除以下用户:{entity.identifier}”

如果用户不是频道成员 (is_success = true):“以下用户已不是 Microsoft Teams 中团队 "{team name}" 的频道 "{Channel Name}" 的成员:{entity.identifier}”

如果所有用户都不是相应频道的成员 (is_success = true):“所提供的用户都不是 Microsoft Teams 中团队 "{team name}" 的频道 "{Channel Name}" 的成员。”

操作应失败并停止 playbook 执行

如果系统报告严重错误:“执行操作‘从频道中移除用户’时出错。原因:{0}''.format(error.Stacktrace)

如果找不到团队:“执行操作‘将用户从频道中移除’时出错。原因:在 Microsoft Teams 中找不到名称为 {team, name} 的团队。

如果找不到频道:“执行操作‘从频道中移除用户’时出错。原因:在 Microsoft Teams 中找不到名为 {channel name} 的频道。

如果频道的“membershipType”不等于“private”:“执行操作‘从频道中移除用户’时出错。原因:名称为 {channel name} 的频道不是私享频道。

常规

创建聊天

说明

在 Microsoft Teams 中创建用户聊天。

参数

此操作没有输入参数。

运行于

此操作适用于以下实体:

  • 用户名
  • 电子邮件地址(与电子邮件正则表达式匹配的用户名)

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#chats/$entity",
    "id": "19:b786d3cf-e97d-4511-b61c-0559e9f4da75_cb786032-1ba9-439a-b714-99286e185921@unq.gbl.spaces",
    "topic": null,
    "createdDateTime": "2021-10-13T11:24:15.696Z",
    "lastUpdatedDateTime": "2021-10-13T11:24:15.696Z",
    "chatType": "oneOnOne"
}
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

如果报告了 201 状态代码 (is_success = true):“已成功在 Microsoft Teams 中与以下用户创建聊天:{entities}”

如果找不到用户 (is_success = true):“在 Microsoft Teams 中找不到以下用户:{entities}”

如果找不到所有用户 (is_success = false):“在 Microsoft Teams 中找不到任何提供的用户:{entities}”

如果报告了某个实体的 400 状态代码 (is_success = true):“无法在 Microsoft Teams 中与以下用户创建聊天:{entities}”

如果所有实体的状态代码均为 400(is_success = false):“无法在 Microsoft Teams 中与指定用户创建聊天。”

操作应失败并停止 playbook 执行

如果报告了严重错误:“执行操作‘创建聊天’时出错。原因:{0}''.format(error.Stacktrace)

常规

列出聊天

说明

列出 Microsoft Teams 中的可用对话。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
聊天类型 DDL

全部

可能的值:

  • 全部
  • 群聊
  • 会议聊天
  • 一对一聊天
指定应返回哪种类型的聊天。
过滤键 DDL

选择一项

可能的值:

  • 主题
  • 会员显示名称
  • 成员电子邮件地址
指定需要用于过滤对话的键。
过滤逻辑 DDL

未指定

可能的值:

  • 未指定
  • 等于
  • 包含
指定应应用哪些过滤条件逻辑。过滤逻辑基于“过滤键”参数中提供的值运行。
过滤条件值 字符串 不适用 指定应在过滤条件中使用什么值。如果选择“相等”,操作会尝试在结果中找到完全匹配项。如果选择“包含”,操作会尝试查找包含该子字符串的结果。如果此参数中未提供任何内容,则不会应用过滤条件。过滤逻辑基于“过滤键”参数中提供的值运行。
要返回的记录数上限 整数 50 指定要返回的记录数。如果未提供任何内容,则操作将返回 50 条记录。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "id": "19:5af81bea-9c9f-4f9f-8745-9df1fdba8e12_b786d3cf-e97d-4511-b61c-0559e9f4da75@unq.gbl.spaces",
    "topic": null,
    "createdDateTime": "2021-04-12T08:36:52.572Z",
    "lastUpdatedDateTime": "2021-09-28T09:31:58.045Z",
    "chatType": "oneOnOne",
    "members@odata.context": "https://graph.microsoft.com/v1.0/$metadata#chats('19%3A5af81bea-9c9f-4f9f-8745-9df1fdba8e12_b786d3cf-e97d-4511-b61c-0559e9f4da75%40unq.gbl.spaces')/members",
    "members": [
        {
            "@odata.type": "#microsoft.graph.aadUserConversationMember",
            "id": "MCMjZDQ4ZjUyY2EtNWIxYS00NzA4LThlZDAtZWJiOThhMjZhNDZhIyMxOTo1YWY4MWJlYS05YzlmLTRmOWYtODc0NS05ZGYxZmRiYThlMTJfYjc4NmQzY2YtZTk3ZC00NTExLWI2MWMtMDU1OWU5ZjRkYTc1QHVucS5nYmwuc3BhY2VzIyM1YWY4MWJlYS05YzlmLTRmOWYtODc0NS05ZGYxZmRiYThlMTI=",
            "roles": [
                "Owner"
            ],
            "displayName": "yuriy",
            "visibleHistoryStartDateTime": "0001-01-01T00:00:00Z",
            "userId": "5af81bea-9c9f-4f9f-8745-9df1fdba8e12",
            "email": null,
            "tenantId": "d48f52ca-5b1a-4708-8ed0-ebb98a26a46a"
        },
        {
            "@odata.type": "#microsoft.graph.aadUserConversationMember",
            "id": "MCMjZDQ4ZjUyY2EtNWIxYS00NzA4LThlZDAtZWJiOThhMjZhNDZhIyMxOTo1YWY4MWJlYS05YzlmLTRmOWYtODc0NS05ZGYxZmRiYThlMTJfYjc4NmQzY2YtZTk3ZC00NTExLWI2MWMtMDU1OWU5ZjRkYTc1QHVucS5nYmwuc3BhY2VzIyNiNzg2ZDNjZi1lOTdkLTQ1MTEtYjYxYy0wNTU5ZTlmNGRhNzU=",
            "roles": [
                "Owner"
            ],
            "displayName": "ג'יימס בונד",
            "visibleHistoryStartDateTime": "0001-01-01T00:00:00Z",
            "userId": "b786d3cf-e97d-4511-b61c-0559e9f4da75",
            "email": "james.bond@siemplifycyarx.onmicrosoft.com",
            "tenantId": "d48f52ca-5b1a-4708-8ed0-ebb98a26a46a"
        }
    ]
}
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

如果数据可用(is_success = true):“已成功在 Microsoft Teams 中找到符合所提供条件的对话”。

如果数据不可用 (is_success=false):“未在 Microsoft Teams 中找到符合所提供条件的对话。”

如果“过滤值”参数字段为空 (is_success=true)

“未应用过滤条件,因为参数‘过滤条件值’的值为空。”

操作应失败并停止 playbook 执行

如果“过滤键”形参设置为“选择一个”,并且“过滤逻辑”形参设置为“等于”或“包含”

“执行操作‘{action name}’时出错。原因:您需要从“过滤键”参数中选择一个字段。

如果为“要返回的最大记录数”参数提供的值无效

“执行操作‘{action name}’时出错。原因:为“要返回的最大记录数”提供的值无效:。应提供正数"。"

如果出现严重错误,例如凭据错误、无法连接到服务器、其他错误

“执行操作‘{action name}’时出错。原因:{0}''.format(error.Stacktrace)

常规
“案例墙”表格

表格名称:Available Chats

表格列

  • ID - id
  • 类型 - chatType
  • 成员 - 包含成员/显示信息的 CSV 文件
  • 名称主题 - 主题
常规

发送聊天消息

说明

在 Microsoft Teams 中发送聊天消息。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
聊天 ID DDL 不适用 指定要向哪个聊天发送消息。
文本 字符串 不适用 指定消息的内容。
等待回复 复选框 勾选 如果已启用,则操作会等待回复。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "id": "1632820681737",
    "replyToId": null,
    "etag": "1632820681737",
    "messageType": "message",
    "createdDateTime": "2021-09-28T09:18:01.737Z",
    "lastModifiedDateTime": "2021-09-28T09:18:01.737Z",
    "lastEditedDateTime": null,
    "deletedDateTime": null,
    "subject": null,
    "summary": null,
    "chatId": "19:5af81bea-9c9f-4f9f-8745-9df1fdba8e12_b786d3cf-e97d-4511-b61c-0559e9f4da75@unq.gbl.spaces",
    "importance": "normal",
    "locale": "en-us",
    "webUrl": null,
    "channelIdentity": null,
    "policyViolation": null,
    "from": {
        "application": null,
        "device": null,
        "user": {
            "id": "b786d3cf-e97d-4511-b61c-0559e9f4da75",
            "displayName": "ג'יימס בונד",
            "userIdentityType": "aadUser"
        }
    },
    "body": {
        "contentType": "text",
        "content": "qqq"
    },
    "attachments": [],
    "mentions": [],
    "reactions": []
}
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

如果报告了 201 状态代码 (is_success = true):“已成功在 Microsoft Teams 中发送 ID 为 {Chat ID} 的聊天消息。”

如果回复可用(is_success = true):“已成功发送消息,并在 Microsoft Teams 中收到了 ID 为 {Chat ID} 的聊天回复。”

异步消息:正在等待回复…

操作应失败并停止 playbook 执行

如果报告了严重错误:“Error executing action "Send Chat Message". 原因:{0}''.format(error.Stacktrace)

如果报告了 404 状态代码:“执行操作‘发送聊天消息’时出错。原因:在 Microsoft Teams 中找不到相应 ID 的聊天。

如果超时:“执行操作‘发送 Chat 消息’时出错。”原因:已发送消息,但在等待回复时操作超时。请在 IDE 中增加超时时间,然后重试。注意:如果您重试,系统会再次发送消息。

常规

发送消息回复

说明

在 Microsoft Teams 中回复频道消息。

参数

参数 类型 默认值 为必需参数 说明
团队名称 字符串 不适用 指定要向哪个团队发送回复。
频道名称 字符串 不适用 指定要将回复发送到的渠道。
邮件 ID 字符串 不适用 指定您要回复的消息的 ID。
内容类型 DDL 文本

指定消息的内容类型。

可能的值:

  • 文本
  • HTML

文本 字符串 不适用 指定消息的内容。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#teams('192c0699-fad2-4d02-88a2-84efd6369894')/channels('19%3A4649fcf41fa5417f9aa78a5840bea442%40thread.tacv2')/messages('1686652339690')/replies/$entity",
"id": "1686653341151",
"replyToId": "1686652339690",
"etag": "1686653341151",
"messageType": "message",
"createdDateTime": "2023-06-13T10:49:01.151Z",
"lastModifiedDateTime": "2023-06-13T10:49:01.151Z",
"lastEditedDateTime": null,
"deletedDateTime": null,
"subject": null,
"summary": null,
"chatId": null,
"importance": "normal",
"locale": "en-us",
"webUrl": "https://teams.microsoft.com/l/message/19%3A4649fcf41fa5417f9aa78a5840bea442%40thread.tacv2/1686653341151?groupId=192c0699-fad2-4d02-88a2-84efd6369894&tenantId=d48f52ca-5b1a-4708-8ed0-ebb98a26a46a&createdTime=1686653341151&parentMessageId=1686652339690",
"policyViolation": null,
"eventDetail": null,
"from": {
"application": null,
"device": null,
"user": {
"@odata.type": "#microsoft.graph.teamworkUserIdentity",
"id": "b786d3cf-e97d-4511-b61c-0559e9f4da75",
"displayName": "ג'יימס בונד",
"userIdentityType": "aadUser"
}
},
"body": {
"contentType": "text",
"content": "Reply"
},
"channelIdentity": {
"teamId": "192c0699-fad2-4d02-88a2-84efd6369894",
"channelId": "19:4649fcf41fa5417f9aa78a5840bea442@thread.tacv2"
},
"attachments": [],
"mentions": [],
"reactions": []
}
案例墙
结果类型 值/说明 类型
输出消息* 该操作不应失败,也不应停止 playbook 执行:

如果返回 201(is_success = true)
打印“已成功向 Microsoft Teams 中的消息发送回复。”

操作应失败并停止 playbook 执行
如果出现严重错误
打印“执行操作‘发送消息回复’时出错”。原因:{0}''.format(error.Stacktrace)
如果未找到团队
print "Error executing action "Send Message Reply". 原因:在 Microsoft Teams 中找不到名为 {team name} 的团队。请检查拼写。
如果未找到频道
打印“Error executing action "Send Message Reply"”。原因:在 Microsoft Teams 中找不到名为 {channel name} 的频道。请检查拼写。
如果响应中包含“错误”
打印“执行操作‘发送消息回复’时出错”。原因:{error.message}。
常规

作业

如需在 Google Security Operations 中配置作业,请前往响应 > 作业调度器

刷新令牌续订作业

刷新令牌续订作业的目标是定期更新集成中使用的刷新令牌。

默认情况下,刷新令牌每 90 天过期一次,因此集成在过期后将无法使用。建议每 7 天或 14 天运行一次此作业,以确保刷新令牌是最新的。

作业输入

如需配置作业,请使用以下参数:

参数
登录 API 根地址 必需

用于向 Microsoft Identity Platform 进行身份验证的 API 根。

默认值为 https://login.microsoftonline.com

API 根 必需

Microsoft Graph 实例的 API 根。

默认值为 https://graph.microsoft.com

集成环境 可选

作业为其更新刷新令牌的集成环境。

此参数接受多个值,这些值以英文逗号分隔的字符串形式表示。请用引号 (" ") 将各个值括起来。

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。