日志审计多账号采集方案升级-资源目录集成-阿里云(云淘科技)

本文为您介绍通过资源目录集成采集多账号日志。

背景

日志审计服务是在SLS平台能力基础上提供的一款审计服务,支持多账户场景下实时自动化、中心化地采集阿里云上的云产品日志。具有如下优点:

  • 丰富的云产品支持,目前覆盖基础(ActionTrail、容器服务Kubernetes版)、存储(OSS、NAS)、网络(SLB、API网关)、数据库(关系型数据库RDS、云原生分布式数据库PolarDB-X 1.0、云原生数据库PolarDB)、安全(WAF、DDoS防护、云防火墙、云安全中心)。
  • 跨账号:与阿里云资源目录集成,支持将多个主账号下的日志采集到一个中心主账号下。
  • 一键式采集:一次性配置采集规则后,即可完成自动实时发现新资源并实时采集日志。
  • 中心化存储:将采集到的日志存储到某个地域的中心化Project中,方便后续查询分析、可视化与告警、二次开发等。
  • 丰富的内置告警规则,一键建立安全防护网。

日志审计多账号管理现状

跨账号采集是日志审计服务的一大特色,当进行跨账号采集云产品日志时,首先要解决的是中心主账号和其他主账号的双向授权问题。目前日志审计的授信关系建立是基于RAM开发的自定义鉴权机制,但是该机制存在如下不足:

  • 需要每个成员账号,提供具有RAM写权限的AK用于信任关系的建立。或者针对每个成员账号,手动建立被中心账号信任的RAM角色。
  • 创建出的RAM角色因为是自定义角色,会被用户有意或无意修改导致授权失效等问题。

RD(Resource Directory,资源目录)作为一套面向企业客户的多级账号管理服务,正好解决了日志审计多账号场景下账号间授信关系建立的问题。

资源目录简介

资源目录RD(Resource Directory)是阿里云面向企业客户提供的一套多级账号和资源关系管理服务。

名称 说明
管理账号
  • 是RD的超级管理员,也是一个企业中开通RD的初始账号
  • 企业管理账号,具有组织内所有成员账号的Full Access管理权限
  • 每个RD有且只有一个企业管理员账号
资源夹
  • 即分组,代表企业的组织单元,通常用于指代企业的分公司、业务线或产品项目
  • 资源夹不是账号,也不是云资源,可以理解成类似电脑的文件夹
  • 最多支持创建五层级的资源夹(不包含Root资源夹)
Root资源夹
  • Root资源夹位于资源目录的顶层,没有父资源夹。资源关系依据Root资源夹向下分布。
成员
  • 成员账号有两种类型:云账号和资源账号。
  • 云账号就是普通的阿里云账号,通常账号密码登录官网。
  • 资源账号是特殊的阿里云账号,被限制了root登录,即不能通过账号密码直接登录官网,而是通过用户(RAM user或role)访问。
  • 企业管理员账号可以创建新的资源账号,或邀请已有的云账号加入rd组织
委派管理员
  • 指在某个指定云服务中,代表组织执行管理任务的成员账号
  • 只有企业管理员账号,可以将组织的成员账号设置为某个云服务的委派管理员

日志审计与资源目录集成后的优势

  • 账号间信任关系建立 — 解决审计场景下账号间信任关系建立问题。
  • 利用RD体系创建新账号:省去人工创建账号并做实名认证的繁琐流程。
  • 邀请已有阿里云账号加入组织:如果企业已经在阿里云有账号,可通过邀请方式将已有账号加入企业RD组织。
  • 依据企业业务环境构建目录结构 — 通过订阅资源目录分组,可以解决企业内组织多账号自动发现的问题。
  • 客户根据自己的业务情况,按照应用程序、环境、团队或任何其他对业务有意义的业务单元进行账号分组管理,建立树状的组织多账号结构。
  • 为集成产品在组织成员账号中创建服务关联角色 — 解决RAM角色被用户有意或无意修改问题。
  • 支持在云服务中指定委派管理员 — 通过委派管理员账号,可以将组织管理任务与业务管理任务相分离,管理账号执行资源目录的组织管理任务。

使用资源目录采集多账号日志

要使用资源目录完成跨账号中心化采集,需要以下几个步骤:

  • 开通资源目录,并邀请成员账号。并设置委派管理员。具体操作,请参考资源目录。
  • 将委派管理员作为日志审计的中心账号,完成日志审计服务的开通。在日志审计服务中,添加要采集的成员账号(全选或者指定RD中的特定成员账号)。
  • 开启对应的云产品采集开关,就可以建立跨账号采集链路了。

注意 在通过日志审计服务完成日志的中心化采集后,成员账号还保留单独采集,比如RDS使用RDS审计中心app,SLB(在SLB控制台)。以下针对控制台和Terraform分别介绍日志审计如何使用资源目录管理模式设置多账号采集。

控制台操作

以下两种账号控制台操作需要以子账号的身份操作,这样符合最佳实践。

委派管理员账号登录

点击日志审计服务-多账号配置-全局配置tab页修改可选择配置账号的两种模式:全员、自定义。

  • 全员模式,会自动采集委派管理员所在资源目录下的所有成员账号的日志审计。
  • 新增资源目录成员,该成员会自动纳入委派管理员的日志审计采集账号。
  • 移除资源目录成员,该成员会自动移出委派管理员的日志审计采集账号。
  • 自定义模式,只会采集配置时设置的采集账号。
  • 新增资源目录成员,该成员不会纳入委派管理员的日志审计采集账号。
  • 移除资源目录成员,若该成员在自定义勾选的账号内,该成员会自动移出委派管理员的日志审计采集账号。

普通账号登录

普通账号仅支持使用自定义鉴权管理模式(需要手动密钥授权,在无RD的场景下推荐使用)。访问资源目录管理模式页面仅展示多账号管理的引导步骤,无法勾选设置多账号采集。

Terraform

Terraform是一种开源工具,用于安全高效地预览、配置和管理云基础架构和资源。Terraform的命令行接口(CLI)提供了一种简单机制,用于将配置文件部署到阿里云或其他任意支持的云上,并对其进行版本控制。在使用前请确保已安装和配置Terraform。请参见Cloud Shell中使用Terraform链接、在本地安装和配置Terraform完成配置操作。

操作步骤准备:

创建一个Terraform工作目录sls,并在该目录下执行terraform init初始化工作目录,完成后创建一个名为terraform.tf的文件。步骤一:配置身份信息使用Terraform进行RD多账号采集配置的身份认证支持主账号、子账号(环境变量、静态aksk设置)、ECS Role以及AssumeRole,下面围绕这几种方式分开介绍,详情可参考Terraform认证方式设置:

  • 方式一:环境变量中配置用户身份以及日志审计服务的中心Project所在地域

export ALICLOUD_ACCESS_KEY=”AK****”
export ALICLOUD_SECRET_KEY=”SK****”
export ALICLOUD_REGION=”cn-huhehaote”

  • 方式二:静态AKSK设置

terraform.tf中配置provider信息provider “alicloud” {
access_key = “AK****”
secret_key = “SK****”
region = “cn-huhehaote”
}

  • 方式三: ECS Role

借助实例RAM角色,可将角色和ECS实例关联起来,使用STS临时凭证访问阿里云的日志审计服务,并且无需自行在实例中保存AccessKey。

  • 云账号登录RAM控制台,在左侧导航栏,单击RAM角色管理->创建RAM角色,当前可信实体类型选择为阿里云服务,单击下一步;选择角色类型为普通服务角色,输入角色名称,受信服务为云服务器,点击完成。
  • 为创建的RAM角色授予访问日志服务SLS的权限,参见权限附录说明日志审计所需最小权限
  • 为ECS绑定RAM角色,登录ECS管理控制台,在左侧导航栏点击实例与镜像->实例,找到要操作的ECS实例,选择更多->实例设置->授予/收回RAM角色,在弹窗重,选择创建前面步骤中创建好的实例RAM角色,点击确定完成授予。
  • 也可以在创建ECS实例时,在系统配置页面的RAM角色属性中为实例选择已创建好的实例RAM角色。provider “alicloud” {
    ecs_role_name = “创建的RAM角色名”
    region = “cn-huhehaote”
    }

    • 方式四、AssumeRole

    主账号给子账号授予AliyunSTSAssumeRoleAccess权限,并创建RAM角色(RAM角色需添加自定义的日志审计所需最小写权限),为受信账号下的RAM用户授予AssumeRole权限、获取RAM用户角色的临时安全令牌,参见授予用户角色。provider “alicloud” {
    assume_role {
    role_arn = “acs:ram::主账号uid:role/sls-test”
    session_name = “AuditRoleSession”
    session_expiration = 999
    }
    }步骤二:配置日志审计采集terraform.tf文件中配置日志审计采集参数如下,日志审计采集配置的完整参数说明请查看Terraform-Aliyun Log Audit。

    参数 说明
    display_name 采集配置名称。自定义配置。
    aliuid 阿里云账号ID。
    multi_account 多账号采集时,需配置多个阿里云账号ID。
    resource_directory_type 资源目录管理模式:

    • resource_directory_type不存在,自定义鉴权管理模式
    • resource_directory_type=custom,资源目录管理自定义模式,此时multi_account的账号数组代表资源目录自定义配置的多账号
    • resource_directory_type=all,资源目录管理全员模式,此时multi_account为空数据或者不传入该字段
    actiontrail_enabled 是否开启操作审计(Actiontrail)日志的采集,取值:

    • true:开启。
    • false:关闭。
    actiontrail_ttl 设置操作审计日志的存储时间。

    terraform.tf配置示例:resource “alicloud_log_audit” “rdtest” {
    display_name = “tf-audit-rd-test”
    aliuid = “主账号uid”
    variable_map = {
    “actiontrail_enabled” = “false”,
    “actiontrail_ttl” = “180”
    }
    multi_account = [“11212279087***”]
    resource_directory_type=”custom”
    }步骤三:使terraform.tf文件中的采集配置生效

  • 执行如下命令。terraform apply
  • 输入yes。如果返回结果中提示Apply complete!,表示应用采集配置成功,日志审计服务将按照采集配置进行日志采集和存储。
  • 多账号采集模式切换说明

    委派管理员设置资源目录管理模式以及自定义鉴权模式这两种模式之前的切换注意点:

    • 委派管理员设置过资源目录管理模式后前端页面会显示无法切换至自定义鉴权管理模式,如需切换,需清除所有的采集账号才可切换使用自定义鉴权管理模式。

    • 自定义鉴权管理模式可覆盖切换成资源目录管理模式。

    附录

    日志审计所需最小写权限该配置也是控制台和terraform操作开通配置的最小权限{
    “Version”: “1”,
    “Statement”: [
    {
    “Effect”: “Allow”,
    “Action”: [
    “log:GetApp”,
    “log:CreateApp”
    ],
    “Resource”: [
    “acs:log:*:*:app/audit”
    ]
    },
    {
    “Effect”: “Allow”,
    “Action”: [
    “log:Get*”,
    “log:List*”,
    “log:CreateJob”,
    “log:UpdateJob”,
    “log:CreateProject”
    ],
    “Resource”: [
    “acs:log:*:*:project/slsaudit-*”
    ]
    }
    ]
    }​

    发表评论