使用Terraform自动化创建跟踪

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

前提条件

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

说明

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

背景信息

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

创建跟踪

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

场景一:仅投递到SLS

当您需要将跟踪投递到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. 单击image.png图标。

  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

当您需要将跟踪投递到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. 单击image.png图标。

  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

当您需要将跟踪同时投递到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. 单击image.png图标。

  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和跟踪资源

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

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

terraform destroy

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

Destroy complete! Resources: 3 destroyed.

场景二:仅删除OSS和跟踪资源

当您将跟踪投递到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和跟踪资源

当您将跟踪同时投递到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

跟踪名称。

取值范围: 长度为6~36个字符,必须以小写英文字母开头,可包含小写英文字母、数字、短划线(-)和下划线(_)。

说明

同一个账号内跟踪名称不可重复。

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:禁用跟踪。