使用 Terraform 一键创建跟踪

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 1个月
简介: 操作审计(ActionTrail)帮您监控并记录阿里云账号的活动,包括通过阿里云控制台、OpenAPI、开发者工具对云上产品和服务的访问和使用行为。

hailuo_665225908_RF.jpg

通过操作审计的跟踪,可以将您的云账号操作日志持续且实时地投递到您的日志服务(SLS)或对象存储(OSS)中。本文主要介绍如何通过 Terraform 一键创建跟踪。如果您尚不了解 Terraform,请参考 Terraform Alibaba Cloud Provider

创建跟踪

下面是一个创建跟踪的 terraform 模板,该模板将在杭州创建一个名为 trail 的跟踪,该跟踪将把所有地域的所有事件投递到 OSS Bucket trail-bucket 和日志服务 trail-project 中。

provider "alicloud" {
  access_key = "${var.access_key}"
  secret_key = "${var.secret_key}"
  region = "cn-hangzhou"
}

resource "alicloud_actiontrail_trail" "default" {
  role_name       = "aliyunserviceroleforactiontrail"
  trail_name      = "trail"
  oss_bucket_name = "trail-bucket"
  event_rw        = "All"
  trail_region    = "All"
  sls_project_arn = "acs:log:cn-hangzhou:1111111:project/trail-project"
  sls_write_role_arn = "acs:ram::1111111:role/aliyunserviceroleforactiontrail"
}

您可以复制该模板并进行简单修改,然后运行init 加载 alicloud providers:

$ terraform init

接下来就可以一键创建跟踪:

$ terraform init

参数说明

trail_name:跟踪名称。
event_rw:(选填)事件读写类型,可选值 ReadWrite All。默认是 Write

Read:读类型,指本身没有在云上增加、删除或修改配置的操作意图,仅读取云上产品和资源的信息的事件
Write:写类型,指可能增加、删除或修改云上资源的操作的事件

All:所有类型事件

oss_bucket_name:(选填)对象存储 OSS Bucket 名称。
oss_key_prefix:(选填)OSS Bucket 中审计事件文件的前缀,默认为空。
role_name:(选填)用户允许操作审计服务扮演的 RAM 角色名称,操作审计将用该角色将日志投递到您的存储服务,默认值:aliyunserviceroleforactiontrail。如果该角色不存在则会自动创建,参考 操作审计服务关联角色
sls_project_arn:(选填)日志服务 Log Project ARN 配置。格式为 acs:log:::project/
sls_write_role_arn:(选填)日志服务角色 ARN,操作审计将用该角色来将审计日志写入对应 SLS,格式为 acs:ram:::role/。默认将使用服务关联角色。
trail_region:(选填)跟踪地域。默认跟踪所有地域,即 All。也可以指定地域,值为逗号分割的 region_id,例如 cn-beijing,cn-hangzhou。默认值 All
mns_topic_arn:(选填)MNS 消息主题的 ARM。如果配置了该选项,则当事件投递到 OSS 后,操作审计将向对应主题发送一条消息。
status:(选填)跟踪状态,Enable 启用跟踪, Disable 禁用跟踪。默认为 Enable

oss_bucket_namesls_project_arn 至少指定一个

注意事项

如果使用已有 OSS Bucket,则需要先创建好 Bucket。
如果使用已有 SLS 日志项目(Log Project),则需要先创建好日志项目(Log Project)及日志库(LogStore)。并且 LogStore 的命名规则为:actiontrail_{trail_name}trail_name 是跟踪名称。如果要查询投递日志,则还需要为 Log Store 创建索引。
对于 role_namesls_write_role_arn,如果您不是很了解阿里云 RAM 授权,则默认为空即可。

配置 OSS Bucket、SLS

上述模板是创建跟踪,并指定投递到已有的 OSS Bucket,您也可以在 terraform 中创建新的 Bucket。

resource "alicloud_oss_bucket" "oss" {
  bucket = "${var.oss_bucket_name}"
}

resource "alicloud_actiontrail_trail" "default" {
  trail_name      = "${var.trail_name}"
  oss_bucket_name     = "${var.oss_bucket_name}"
  event_rw        = "All"
  trail_region    = "All"
  
  depends_on = [
    "alicloud_oss_bucket.oss"
  ]
}

创建新的 SLS

同理,也可以在 terraform 中新建 SLS。只是 SLS 需要配置日志项目(Log Project)、日志库(Log Store),并为日志库配置索引。

注意:LogStore 的命名规则为:actiontrail_{trail_name}

data "alicloud_account" "this" {}

resource "alicloud_log_project" "sls" {
  name = "${var.sls_project_name}"
}

resource "alicloud_log_store" "logstore" {
  project               = "${alicloud_log_project.sls.name}"
  name                  = "actiontrail_${var.trail_name}"
  shard_count           = 2
  auto_split            = true
  max_split_shard_count = 64
  retention_period      = 3650
}

resource "alicloud_log_store_index" "logstoreindex" {
  project  = "${alicloud_log_project.sls.name}"
  logstore = "${alicloud_log_store.logstore.name}"
  full_text {
    token   = ", '\";=()[]{}?@&<>/:\n\t\r"
  }
  field_search {
    name             = "event"
    type             = "json"
    token            = ", '\";=()[]{}?@&<>/:\n\t\r"
    enable_analytics = false
    json_keys {
      name = "acsRegion"
      type = "text"
    }
    json_keys {
      name = "apiVersion"
      type = "text"
    }
    json_keys {
      name = "errorMessage"
      type = "text"
    }
    json_keys {
      name = "eventId"
      type = "text"
    }
    json_keys {
      name = "eventName"
      type = "text"
    }
    json_keys {
      name = "eventSource"
      type = "text"
    }
    json_keys {
      name = "eventType"
      type = "text"
    }
    json_keys {
      name = "eventVersion"
      type = "text"
    }
    json_keys {
      name = "requestId"
      type = "text"
    }
    json_keys {
      name = "requestParameters.HostId"
      type = "text"
    }
    json_keys {
      name = "requestParameters.Name"
      type = "text"
    }
    json_keys {
      name = "requestParameters.Region"
      type = "text"
    }
    json_keys {
      name = "serviceName"
      type = "text"
    }
    json_keys {
      name = "sourceIpAddress"
      type = "text"
    }
    json_keys {
      name = "userAgent"
      type = "text"
    }
    json_keys {
      name = "userIdentity.accessKeyId"
      type = "text"
    }
    json_keys {
      name = "userIdentity.accountId"
      type = "text"
    }
    json_keys {
      name = "userIdentity.principalId"
      type = "text"
    }
    json_keys {
      name = "userIdentity.type"
      type = "text"
    }
    json_keys {
      name = "userIdentity.userName"
      type = "text"
    }
  }
}

resource "alicloud_actiontrail_trail" "default" {
  trail_name      = "${var.trail_name}"
  oss_bucket_name     = "${var.oss_bucket_name}"
  sls_project_arn     =  "acs:log:${var.region}:${data.alicloud_account.this.id}:project/${var.sls_project_name}"
  event_rw        = "All"
  trail_region    = "All"
  
  depends_on = [
    "alicloud_log_store_index.logstoreindex"
  ]
}

在 Cloud Shell 中使用 Terraform 创建跟踪

以上模板也更新到了阿里云 Cloud Shell 实验室教程中,您可以点击链接 https://api.aliyun.com/#/lab ,找到 《使用 Terraform 创建操作审计的跟踪》 进行体验。

图1.png

总结

本文主要介绍了如何通过 Terraform 一键创建跟踪,并详细解释了相关参数。为了方便,您可以在 Cloud Shell 中找到 Terraform 模板创建跟踪。创建跟踪时,可以使用已有的 OSS Bucket 或 SLS Project,也可以使用 Terraform 新建 OSS Bucket 或 SLS Project通过 Terraform 创建跟踪,能极大提升工作效率。创建跟踪后,就可以对云账号的操作日志进行自定义分析了。

相关阅读

《操作审计最佳实践》系列由阿里云操作审计团队出品,旨在向集团输出云上审计相关的业务知识和技术,更多相关内容可以查看下面的系列文章。

相关文章
|
8天前
|
人工智能 自然语言处理 API
阿里云Qwen Cloud正式发布 面向Agent时代全新云服务全解析
随着AI智能体技术迎来爆发式增长,智能体已经不再是辅助工具,逐步演变成为云服务消费的核心主体。传统云平台以人类用户为中心设计的界面交互、操作逻辑,已经难以适配AI Agent无规律弹性调用、短时任务瞬时启停、自动化流程高频运行的全新需求。面对全球市场AI算力需求持续攀升,智能体带动模型调用量与云资源消耗呈指数级增长的行业现状,阿里云于5月26日在新加坡面向全球市场正式重磅推出Qwen Cloud全新云服务平台。
358 1
|
11月前
|
人工智能 自然语言处理 算法
2025智能客服选型指南:核心原理、关键功能与价值剖析(附2025趋势洞察)
2025年智能客服核心趋势:情感分析、全渠道整合、预测引擎及知识图谱自进化能力构成关键选型维度。以合力亿捷等先进方案为例,其融合大模型与业务流自动化技术,助力某零售企业客服效率提升50%,用户满意度增长25%。聚焦业务适配、数据治理与渐进式部署是成功核心。
|
机器学习/深度学习 人工智能 算法
强化学习:Gym的库的实践——小车上山(包含强化学习基础概念,环境配置国内镜像加速)——手把手教你入门强化学习(一)
本文开启“手把手教你入门强化学习”专栏,介绍强化学习基础概念及实践。强化学习通过智能体与环境交互,学习最优策略以最大化累积奖励,适用于复杂动态决策问题。文章讲解智能体、环境等核心概念,并使用Gym库进行案例实操,如CartPole和MountainCar环境的代码实现。最后预告下期将深入马尔科夫决策过程(MDP)。适合初学者系统了解强化学习并动手实践。创作不易,欢迎关注、点赞与收藏!
1890 4
|
数据可视化 安全 Cloud Native
AntV 你的保姆级数据可视化解决方案
AntV 你的保姆级数据可视化解决方案
2460 0
|
JavaScript 前端开发 开发者
成功解决:el-popconfirm组件来确认删除、修改等操作无效
这篇文章提供了解决Element UI中el-popconfirm组件在执行确认删除、修改等操作时无效问题的步骤和方法,包括确认方法创建、检查版本兼容性、解决组件作用域问题、确保文本和CSS无冲突、检查事件绑定、预期问题和调试提示。
成功解决:el-popconfirm组件来确认删除、修改等操作无效
|
安全 Swift iOS开发
【Swift开发专栏】Swift基础语法详解
【4月更文挑战第30天】Swift是苹果2014年发布的编程语言,适用于iOS、macOS等多个平台。它比Objective-C更安全、现代、易学。本文主要介绍Swift基础:常量变量(`let`和`var`),数据类型(整数、浮点数、布尔、字符串),元组,可选类型(Optional)。此外,还涉及运算符(算术、比较、逻辑)、控制流(`if`、`for`、`while`、`switch`)以及函数和闭包的使用。通过这些基础知识的学习,可以帮助初学者快速上手Swift。
518 1
|
Java Android开发 开发者
17. 【Android教程】开关控件ToggleButton/Switch
17. 【Android教程】开关控件ToggleButton/Switch
951 2
|
Ubuntu
安装
安装
248 0
安装
|
程序员
fail-fast 机制
标题master 集合元素个数的增加或删除,均会导致子列表的遍历、增加、删除进而产生 fail fast 异常。
245 0
|
消息中间件 分布式计算 NoSQL
硅谷飘来五个字,SMACK

上次我们跟大家分享了「少打一局王者荣耀就能上手Spring Cloud?!」,学到就是赚到,翘课的同学抓紧补习了。本期为大家带来全新「与硅谷大数据工程师吃着火锅唱着歌就把SMACK入门了」篇。
28747 0

热门文章

最新文章