您可以使用操作审计创建跟踪,将操作事件持续投递到日志服务SLS或对象存储OSS中。Terraform可以完成自动化创建。

前提条件

运行Terraform程序前,请确保您已开通以下云服务:

  • 日志服务SLS
  • 对象存储OSS
说明 日志服务和对象存储在超出免费额度后,会产生少量费用。更多信息,请参见日志服务计算说明对象存储计算说明

背景信息

Terraform是一个开源的自动化资源编排工具,帮助您自动化构建、配置和管理云上资源。您可以通过Terraform模板创建跟踪。更多信息,请参见Terraform Alibaba Cloud Provider

创建跟踪

您可以通过Terraform程序将跟踪分别投递到日志服务SLS或对象存储OSS,或者同时进行投递。关于如何选择存储服务,请参见将事件持续投递到指定服务

当您需要将跟踪投递到SLS时,仅需在Cloud Shell部署SLS相关程序,即可自动创建跟踪。

  1. 访问使用Terraform创建操作审计的跟踪
  2. 在弹出的对话框中,单击确认,克隆代码到CloudShell。
  3. 先单击右上角的编辑器,再单击左侧目录的tutorial-actiontrail-createdby-terraform,打开trail-sls目录下的variables.tf文件。
  4. 设置文件variables.tf中各个参数的default的值。
    • region:资源归属的地域。
    • trail_name:跟踪名称。
    • sls_project_name:日志服务SLS的Project名称。说明:请您根据所需设置该参数,确保其唯一。
    • account_id:阿里云账号。
  5. 单击保存
  6. 输入以下命令,定位用来创建跟踪的Terraform模板的目录。
    cd ~/tutorial-actiontrail-createdby-terraform/trail-sls
  7. 输入以下命令,加载Terraform Alibaba Cloud Provider。
    terraform init
  8. 输入以下命令,创建跟踪。
    terraform apply

    如果返回Resources: X added(X表示新增资源的个数),说明跟踪创建成功,示例如下。

    Apply complete! Resources: 3 added, 0 changed, 0 destroyed.
    
    Outputs:
    
    sls_project_id = [
      [
        "tutorial-terraform-actiontrail",
      ],
    ]
    trail_id = [
      [
        "tutorial-actiontrail",
      ],
    ]

当您需要将跟踪投递到OSS时,仅需在Cloud Shell部署OSS相关程序,即可自动创建跟踪。

  1. 访问使用Terraform创建操作审计的跟踪
  2. 在弹出的对话框中,单击确认,克隆代码到CloudShell。
  3. 先单击右上角的编辑器,再单击左侧目录的tutorial-actiontrail-createdby-terraform,打开trail-oss目录下的variables.tf文件。
  4. 设置文件variables.tf中各个参数的default的值。
    • region:资源归属的地域。
    • trail_name:跟踪名称。
    • oss_bucket_name:对象存储OSS的Bucket名称。说明:请您根据所需设置该参数,确保其唯一。
    • account_id:阿里云账号。
  5. 单击保存
  6. 输入以下命令,定位用来创建跟踪的Terraform模板的目录。
    cd ~/tutorial-actiontrail-createdby-terraform/trail-oss
  7. 输入以下命令,加载Terraform Alibaba Cloud Provider。
    terraform init
  8. 输入以下命令,创建跟踪。
    terraform apply

    如果返回Resources: X added(X表示新增资源的个数),说明跟踪创建成功,示例如下。

    Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
    
    Outputs:
    
    oss_bucket_id = [
      [
        "tutorial-terraform-actiontrail",
      ],
    ]
    trail_id = [
      [
        "tutorial-actiontrail",
      ],
    ]

当您需要将跟踪同时投递到SLS和OSS时,仅需在Cloud Shell部署程序,即可自动创建跟踪。

  1. 访问使用Terraform创建操作审计的跟踪
  2. 在弹出的对话框中,单击确认,克隆代码到CloudShell。
  3. 先单击右上角的编辑器,再单击左侧目录的tutorial-actiontrail-createdby-terraform,打开trail目录下的variables.tf文件。
  4. 设置文件variables.tf中各个参数的default的值。
    • region:资源归属的地域。
    • trail_name:跟踪名称。
    • oss_bucket_name:对象存储OSS的Bucket名称。说明:请您根据所需设置该参数,确保其唯一。
    • sls_project_name:日志服务SLS的Project名称。说明:请您根据所需设置该参数,确保其唯一。
    • account_id:阿里云账号。
  5. 单击保存
  6. 输入以下命令,定位用来创建跟踪的Terraform模板的目录。
    cd ~/tutorial-actiontrail-createdby-terraform/trail
  7. 输入以下命令,加载Terraform Alibaba Cloud Provider。
    terraform init
  8. 输入以下命令,创建跟踪。
    terraform apply

    如果返回Resources: X added(X表示新增资源的个数),说明跟踪创建成功,示例如下。

    Apply complete! Resources: 3 added, 0 changed, 0 destroyed.
    
    Outputs:
    
    oss_bucket_id = [
      [
        "tutorial-terraform-actiontrail",
      ],
    ]
    sls_project_id = [
      [
        "tutorial-terraform-actiontrail",
      ],
    ]
    trail_id = [
      [
        "tutorial-actiontrail",
      ],
    ]

(可选)删除资源

您可以根据场景选择不同的资源删除方法。删除后,自动投递跟踪程序将失效。

当您需要删除SLS和跟踪资源时,仅需输入删除命令,即可自动删除资源。

输入以下命令,删除程序中创建的所有资源。删除后,自动投递跟踪程序将失效。

terraform destroy

如果返回Resources: X destroyed(X表示删除资源的个数),说明资源删除成功,示例如下。

Destroy complete! Resources: 3 destroyed.

当您将跟踪投递到OSS时,您需要先停止跟踪,然后删除OSS Bucket中的所有文件,最后输入删除命令。

  1. 输入以下命令,停止跟踪。
    aliyun actiontrail StopLogging --region cn-hangzhou --Name your_trail_name

    说明:your_trail_name请替换为跟踪名称,本文示例中为tutorial-actiontrail。

  2. 等待1~2分钟,然后输入以下命令,删除OSS Bucket中的文件。
    aliyun oss rm oss://your_bucket_name -r --region cn-hangzhou

    说明:your_bucket_name请替换为OSS Bucket名称,本文示例中为tutorial-terraform-actiontrail。

  3. 输入以下命令,删除程序中创建的所有资源。删除后,自动投递跟踪程序将失效。
    terraform destroy

    如果返回Resources: X destroyed(X表示删除资源的个数),说明资源删除成功,示例如下。

    Destroy complete! Resources: 2 destroyed.

当您将跟踪同时投递到SLS和OSS时,您需要先停止跟踪,然后删除OSS Bucket中的所有文件,最后输入删除命令。

  1. 输入以下命令,停止跟踪。
    aliyun actiontrail StopLogging --region cn-hangzhou --Name your_trail_name

    说明:your_trail_name请替换为跟踪名称,本文示例中为tutorial-actiontrail。

  2. 等待1~2分钟,然后输入以下命令,删除OSS Bucket中的文件。
    aliyun oss rm oss://your_bucket_name -r --region cn-hangzhou

    说明:your_bucket_name请替换为OSS Bucket名称,本文示例中为tutorial-terraform-actiontrail。

  3. 输入以下命令,删除程序中创建的所有资源。删除后,自动投递跟踪程序将失效。
    terraform destroy

    如果返回Resources: X destroyed(X表示删除资源的个数),说明资源删除成功,示例如下。

    Destroy complete! Resources: 3 destroyed.

Terraform模板参数说明

当您需要修改Terraform程序中的代码时,您可以参考如下参数说明修改Terraform模板。例如:您可以将event_rw设置为Write,仅跟踪写事件。

参数 说明
trail_name 跟踪名称。
event_rw 阿里云操作事件的类型。取值:
  • Read:读事件。指的是仅读取云资源信息的事件。
  • Write:写事件。指的是增加、删除或修改云资源的事件。
  • All:所有事件。
oss_bucket_name OSS Bucket名称。
说明 oss_bucket_name和sls_project_arn需至少指定其中一个参数。
oss_key_prefix OSS Bucket中操作事件文件的前缀,默认为空。
role_name 用户允许操作审计服务扮演的RAM角色名称,操作审计使用该角色将操作事件投递到您的存储服务,默认值:aliyunserviceroleforactiontrail。

如果该角色不存在,系统会自动进行创建。更多信息,请参见操作审计服务关联角色

sls_project_arn 日志服务Project ARN。格式为acs:log:<region_id>:<account_id>:project/<project_name>
说明 oss_bucket_name和sls_project_arn需至少指定其中一个参数。
sls_write_role_arn 日志服务角色ARN。操作审计将用该角色来将操作事件写入对应SLS Logstore,格式为acs:ram::<account_id>:role/<role_name>。默认将使用服务关联角色。
trail_region 跟踪地域。默认值:All(跟踪所有地域)。

您也可以指定地域(region_id),多个地域用英文逗号(,)分隔,例如:cn-beijing,cn-hangzhou

mns_topic_arn MNS消息主题的ARN。如果设置了该参数,则当操作事件投递到OSS后,操作审计将向对应主题发送一条消息。
status 跟踪状态。取值:
  • Enable(默认值):启用跟踪。
  • Disable:禁用跟踪。