
# 使用云审计服务（CTS）触发器
本节介绍如何通过函数工作流控制台创建CTS触发器，实现通过增加自定义操作触发函数运行，然后通过云审计服务获取操作记录。
#### CTS触发器触发事件说明
[云审计服务](https://support.huaweicloud.com/productdesc-cts/cts_01_0003.html)（Cloud Trace Service，以下简称CTS），是华为云安全解决方案中专业的日志审计服务，提供对各种云资源操作记录的收集、存储和查询功能，可用于支撑安全分析、合规审计、资源跟踪、问题回溯和问题定位等常见应用场景。
在FunctionGraph中使用CTS触发器，可以通过编写FunctionGraph函数，依据CTS云审计服务类型和操作订阅所需事件通知。当CTS获取已订阅的操作记录后，将通过CTS触发器将采集到的操作记录作为参数（[CTS示例事件]）传递给FunctionGraph函数。函数对日志中的关键信息进行分析和处理，对系统、网络等业务模块实施自动修复，或通过短信、邮件等形式发送告警，通知业务人员处理。
"拉美-圣保罗一"区域支持为共享函数配置CTS触发器。
云审计服务（CTS）触发器的示例事件
- 云审计服务CTS示例事件，具体参数解释参考[表1]。
  ```
  {
      "cts": {
          "time": 1529974447000,
          "user": {
              "name": "userName",
              "id": "5b726c4fbfd84821ba866bafaaf56aax",
              "domain": {
                  "name": "domainName",
                  "id": "b2b3853af40448fcb9e40dxj89505ba"
              }
          },
          "request": {},
          "response": {},
          "code": 204,
          "service_type": "FunctionGraph",
          "resource_type": "graph",
          "resource_name": "workflow-2be1",
          "resource_id": "urn:fgs:region:projectId:graph:workflow-2be1",
          "trace_name": "deleteGraph",
          "trace_type": "ConsoleAction",
          "record_time": 1529974447000,
          "trace_id": "69be64a7-0233-11e8-82e4-e5d37911193e",
          "trace_status": "normal"
      }
  }
  ```
   表1CTS示例事件参数说明 
  | 参数            | 类型     | 示例值                                  | 描述                              |
  |:---|:---|:---|:---|
  | time          | Long   | 参考示例代码                               | 本次请求的时间，13位时间戳格式。               |
  | user          | Map    | 参考示例代码                               | 本次请求的发起用户信息。                    |
  | request       | Map    | 参考示例代码                               | 事件请求内容。                         |
  | response      | Map    | 参考示例代码                               | 事件响应内容。                         |
  | code          | Int    | 204                                  | 事件响应码，例如200、400。                |
  | service_type  | String | FunctionGraph                        | 发送方的简写，比如vpc，ecs等。              |
  | resource_type | String | graph                                | 发送方资源类型，比如vm，vpn等。              |
  | resource_name | String | workflow-2be1                        | 资源名称，例如ECS服务中某个虚拟机的名称。          |
  | trace_name    | String | deleteGraph                          | 事件名称，例如：startServer, shutDown等。 |
  | trace_type    | String | ConsoleAction                        | 事件发生源头类型，例如ApiCall。             |
  | record_time   | Long   | 参考示例代码                               | CTS服务接收到这条trace的时间，13位时间戳格式。    |
  | trace_id      | String | 69be64a7-0233-11e8-82e4-e5d37911193e | 事件的唯一标识符。                       |
  | trace_status  | String | normal                               | 事件的状态。                          |
     
  
 
#### 约束与限制
- CTS触发器支持使用的区域和具体运行时函数请以控制台展示为准。
- CTS触发器最多支持添加10个服务，每个服务10个操作，总共可添加100个操作，服务及操作详情可参见[云审计服务支持的FunctionGraph操作列表](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0130.html)。
 
#### 前提条件
- 已[开通CTS服务并授权](https://support.huaweicloud.com/usermanual-cts/cts_03_0136.html)。
- 已配置函数的CTS委托权限，操作过程请参见[配置函数的委托权限](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0920.html)。
 
#### 创建CTS触发器
以创建一个Python函数为例，介绍如何在函数中配置CTS触发器。
1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，在左侧的导航栏选择"函数 \> 函数列表"。
2. 单击右上方的"创建函数"，进入"创建函数"页面。
3. 设置以下函数信息。
   - 函数名称：输入您自定义的函数名称，例如：HelloWorld。
   
   - 委托名称：选择含CTS服务权限的委托。
   
   - 企业项目：选择"default"。
   
   - 运行时语言：选择"Python 2.7"。
    
4. 单击"创建函数"，完成函数的创建。
5. 在"代码"页签下，复制如下代码至代码编辑区，部分参数信息请参考[表2]补充，完成后单击"部署代码"。
   ```
   # -*- coding:utf-8 -*-
   '''
   CTS trigger event:
   {
     "cts":  {
           "time": "",
           "user": {
               "name": "userName",
               "id": "",
               "domain": {
                   "name": "domainName",
                   "id": ""
               }
           },
           "request": {},
           "response": {},
           "code": 204,
           "service_type": "FunctionGraph",
           "resource_type": "",
           "resource_name": "",
           "resource_id": {},
           "trace_name": "",
           "trace_type": "ConsoleAction",
           "record_time": "",
           "trace_id": "",
           "trace_status": "normal"
       }
   }
   '''
   def handler (event, context):
       trace_name = event["cts"]["resource_name"]
       timeinfo = event["cts"]["time"]
       print(timeinfo+' '+trace_name)
   ```
    表2参数说明 
   | 参数          | 说明                          |
   |:---|:---|
   | time        | 13位时间戳格式，例如"1738805309469"。 |
   | record_time | 13位时间戳格式，例如"1738805309469"。 |
      
   
6. 选择"设置 \> 触发器"，单击"创建触发器"，弹出"创建触发器"对话框。
   图1创建触发器   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002082254022.png "点击放大") 
7. 配置以下参数。
   表3CTS触发器参数说明 
   | 参数    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | 取值样例                                   |
   |:---|:---|:---|
   | 触发器类型 | 必选参数。 选择"云审计服务（CTS）"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 云审计服务（CTS）                             |
   | 通知名称  | 必选参数。 自定义CTS触发器的通知名称。支持汉字、字母、数字和下划线，且长度不能超过64个字节。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | CTS_fg                                 |
   | 自定义操作 | 必选参数。 最多支持添加10个服务，100个操作，配置参数如下： - 服务类型：选择"FunctionGraph"。 当服务类型选择全局级云服务时，例如对象存储服务（OBS）、统一身份认证服务（IAM）等，CTS触发器只能在"北京四"区域才能触发。如需了解更多全局级云服务请[提交工单](https://console.huaweicloud.com/ticket/?agencyId=e4ebeeb18baa4ae58946b5342fa6159d#/ticketindex/createIndex)咨询。   - 资源类型：所选服务下对应的资源类型，如触发器、实例、函数等。  - 操作名称：所选资源类型下对应的操作，如创建、删除触发器等。   | FunctionGraph；Functions；createFunction |
      
   
8. 单击"确定"，完成CTS触发器的创建。
 
#### 为共享函数配置CTS触发器
"拉美-圣保罗一"区域支持为共享函数配置CTS触发器，关于共享函数的相关介绍请参考[基于RAM共享函数资源](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0383.html)。
1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，在左侧的导航栏选择"函数 \> 函数列表"。
2. 选择"共享函数"页签，单击函数名称进入函数详情页。
3. 后续创建步骤与普通函数相同，请参考[6]开始操作。
 
#### 配置CTS事件触发函数
1. 返回函数工作流控制台，在左侧的导航栏选择"函数 \> 函数列表"。
2. 选择待配置的函数，单击进入函数详情页。
3. 在HelloWorld函数详情页，选择函数版本，单击"测试"，弹出"配置测试事件"对话框。
4. 填写如[表4]所示测试信息后，单击"创建"。
   
    表4测试信息 
   | 参数     | 说明                                                                       |
   |:---|:---|
   | 配置测试事件 | 可创建新的测试事件，也可编辑已有的测试事件。 选择"创建新的测试事件"。 |
   | 事件模板   | 选择"云审计服务（CTS）"模板，使用系统内置CTS事件模板。                                          |
   | 事件名称   | 自定义的事件名称，例如：cts-test。                                                    |
   | 测试事件   | 自动加载系统内置CTS事件模板，可以根据实际情况修改。                                              |
      
   
   
5. 单击"测试"，可以得到函数运行结果记录。
 
#### 相关文档
除使用控制台外，函数工作流支持通过API的方式管理函数触发器，详情请参见[函数触发器API](https://support.huaweicloud.com/api-functiongraph/FunctionTriggers.html)。
