基于ECS实例RAM角色的SLS与Splunk集成方案

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 阿里云日志服务(SLS)通过提供一个Splunk插件(Add-on)实现SLS与Splunk的日志对接, 以便确保阿里云上的所有法规、审计、与其他相关日志能够导入到客户的安全运维中心(SOC)中。本文主要介绍如何在该Splunk Add-on中使用ECS实例RAM角色的鉴权方式,完成日志服务(SLS)到Splunk的日志投递过程。

背景信息

阿里云日志服务(SLS)通过提供一个Splunk插件(Add-on)实现SLS与Splunk的日志对接, 以便确保阿里云上的所有法规、审计、与其他相关日志能够导入到客户的安全运维中心(SOC)中。本文主要介绍如何在该Splunk Add-on中使用ECS实例RAM角色的鉴权方式,完成日志服务(SLS)到Splunk的日志投递过程。

SLS介绍

阿里云的日志服务(log service)是针对日志类数据的一站式服务,无需开发就能快捷完成海量日志数据的采集、消费、投递以及查询分析等功能,提升运维、运营效率。日志服务主要包括 实时采集与消费、数据投递、查询与实时分析 等功能,适用于从实时监控到数据仓库的各种开发、运维、运营与安全场景。

  • 日志库(Logstore):日志服务中日志数据的采集、存储和查询单元。每个日志库隶属于一个项目,且每个项目可以创建多个日志库。您可以根据实际需求为某一个项目生成多个日志库,其中常见的做法是为一个应用中的每类日志创建一个独立的日志库。
  • 分区(Shard):Logstore读写日志必定保存在某一个分区(Shard)上。每个日志库(Logstore)分若干个分区,每个分区由MD5左闭右开区间组成,每个区间范围不会相互覆盖,并且所有的区间的范围是MD5整个取值范围。
  • 服务入口(Endpoint):日志服务入口是访问一个项目(Project)及其内部日志数据的 URL。它和 Project 所在的阿里云区域(Region)及 Project 名称相关。包括公网服务入口、经典/VPC网络服务入口、全球加速服务入口。
  • 访问密钥(AccessKey):阿里云访问密钥是阿里云为用户使用 API(非控制台)来访问其云资源设计的安全口令。您可以用它来签名 API 请求内容以通过服务端的安全验证。
  • 消费组(Consumer Group):一个消费组由多个消费者构成,同一个消费组下面的消费者共同消费一个logstore中的数据,消费者之间不会重复消费数据。
  • 消费者(Consumer):消费组的构成单元,实际承担消费任务,同一个消费组下面的消费者名称必须不同。

Splunk介绍

Splunk是一个功能完备的企业级产品,提供了命令行窗口,web图形界面接口和其他接口,查询结果展示,数据查询,权限控制,分布式管理服务,数据索引,网络端口监听,数据警报,文件监听等等。

一个典型的Splunk分布式部署由三部分组成:

- 转发器(Forwarder):转发器可获取数据,然后通常会将数据继续转发至索引器。

- 索引器(Indexer):索引器会对从转发器组传入的数据进行索引;响应搜索头的搜索请求。

- 搜索头(Search Head):搜索头与用户交互,将搜索请求指向一组索引器,并合并结果返回给用户。

上图是一个典型的Splunk集群部署。索引集群由如下节点类型组成:

•单个主节点,用于管理群集。主节点是一种特殊类型的索引器。

• 多个对等节点,用于处理群集的索引功能、维护数据的多个副本及为其建立索引,以及对数据执行搜索。

• 一个或多个搜索头,用于协调所有对等节点的搜索。 索引器群集功能会自动从一个对等节点故障转移到下一个对等节点。这意味着,如果一个或多个对等节点出现故障,可继续为传入数据创建索引,且索引数据继续保持可搜索状态。 转发器分为如下三种类型: - 通用转发器(universal forwarder ):仅包含转发数据所需的组件。 - 重型转发器(heavy forwarder):完整的Splunk实例,能够索引、搜索、更改数据,同时也可以转发数据。如果需要分析数据或更改数据或根据内容做控制,则需要使用重型转发器。 - 轻型转发器:已废弃。


本文提到的阿里云日志服务的Splunk Add-on就是运行在Splunk Heavy Forwarder上的一种组件。Forwarder与Indexer之间进行消息通信,可以使用Splunk私有的事件协议实现,也可以基于Http事件接收器(Splunk Http Event Collector,简称HEC)实现。


SLS Splunk Add-on

阿里云日志服务Splunk Add-on从阿里云日志服务(SLS)采集日志并投递到Splunk。主要的特性如下:

  • 通过Splunk data input创建SLS消费组,并从阿里云日志服务进行实时日志消费。
  • 将采集到的日志通过Splunk私有协议(private protocol)或者HTTP Event Collector(HEC)投递到Splunk indexer。

更详细关于SLS Splunk Add-on的介绍可以参考阿里云日志服务Splunk Add-on


ECS实例RAM角色

ECS实例RAM角色允许将一个角色关联到ECS实例,在ECS实例内部基于STS(Security Token Service)临时凭证访问其他云产品的API,临时凭证将周期性更新。即可以保证云账号AccessKey安全,还可以借助访问控制RAM实现精细化控制和权限管理。

应用场景

ECS实例上部署的应用程序在云产品通信中,通过云账号或者RAM用户的AccessKey访问阿里云其他云产品(例如SLS、OSS、VPC、RDS等)的API。为了方便和快速地调用,部分用户直接把AccessKey固化在实例中,如写在配置文件中。这种方式存在权限过高、泄露信息和难以维护等问题。ECS实例RAM角色能避免此类问题,例如在ECS实例中使用STS临时凭证访问阿里云的其他云服务。

ECS实例RAM(Resource Access Management)角色让ECS实例扮演具有某些权限的角色,从而赋予实例一定的访问权限。关于角色的详细描述,请参见RAM角色概览

功能优势

使用实例RAM角色的优势在于:

  • 借助实例RAM角色,将角色和ECS实例关联起来。
  • 使用STS临时凭证访问阿里云的其他云服务。
  • 为不同的实例赋予包含不同授权策略的角色,使它们对不同的云资源具有不同的访问权限,实现更精细粒度的权限控制。
  • 无需自行在实例中保存AccessKey,通过修改角色的授权即可变更权限,快捷地维护ECS实例所拥有的访问权限。


使用步骤

准备工作

  • 确保Splunk运行在阿里云ECS上
  • 如果运行在非阿里云ECS上,只能使用阿里云访问密钥AccessKey ID和AccessKey Secret来访问日志服务,其配置步骤参考阿里云日志服务Splunk Add-on
  • 检查Splunk版本及运行环境
  • 确保使用最新的Add-on版本
  • 操作系统:Linux、Mac OS、Windows
  • Splunk版本:Splunk heavy forwarder 8.0及以上版本、Splunk indexer 7.0及以上版本。
  • 配置Splunk HTTP Event Collector
  • 如果需要使用HEC来发送event,请确保HEC配置成功。如果选择Splunk私有协议,则可以跳过该步骤。
  • 请参见Configure HTTP Event Collector on Splunk Enterprise
  • 目前创建Event Collector token时,不支持开启indexer acknowledgment功能。

为ECS实例绑定RAM角色

  1. 创建实例RAM角色
  • 云账号登录RAM控制台,在左侧导航栏,单击RAM角色管理->创建RAM角色,当前可信实体类型选择为阿里云服务,单击下一步;选择角色类型为普通服务角色,输入角色名称(记住这个角色名称,后面配置SLS Splunk Add-on时会用到),受信服务为云服务器,点击完成。

1.png 

  1. 为RAM角色授予权限
  • 为上一步创建的RAM角色授予访问日志服务SLS的权限
  • 您可以通过权限助手配置RAM权限,详情请参见配置权限助手。常用的RAM配置如下:
{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "log:ListShards",
        "log:GetCursorOrData",
        "log:GetConsumerGroupCheckPoint",
        "log:UpdateConsumerGroup",
        "log:ConsumerGroupHeartBeat",
        "log:ConsumerGroupUpdateCheckPoint",
        "log:ListConsumerGroup",
        "log:CreateConsumerGroup"
      ],
      "Resource": [
        "acs:log:*:*:project/<Project name>/logstore/<Logstore name>",
        "acs:log:*:*:project/<Project name>/logstore/<Logstore name>/*"
      ],
      "Effect": "Allow"
    }
  ]
}

说明:为您的日志服务Project名称,为您的日志服务Logstore名称,请根据实际情况替换,名字替换支持通配符*。


  1. 为ECS实例绑定RAM角色
  • 登录ECS管理控制台,在左侧导航栏点击实例与镜像->实例,找到要操作的ECS实例,选择更多->实例设置->授予/收回RAM角色,在弹窗重,选择创建前面步骤中创建好的实例RAM角色,点击确定完成授予。
  • 用户也可以在创建ECS实例时,在系统配置页面的RAM角色属性中为实例选择已创建好的实例RAM角色。

安装SLS Splunk Add-on

这里提供两种通过Splunk web UI安装Splunk Add-on的方式:

  1. 管理应用->浏览更多应用->搜索“Splunk Add-on for Alibaba Cloud Log Service”->点击“安装”->点击“重启 Splunk服务”。
  2. 管理应用->从文件安装应用->上传.tgz文件,可以从https://splunkbase.splunk.com/apps下载->选择“升级应用程序选中它将覆盖已存在的应用程序”->点击“上载”按钮->点击“重启 Splunk服务”。

配置SLS Splunk Add-on

通过Splunk Web UI 选择应用,进入"Splunk Add-on for Alibaba Cloud Log Service"界面。

全局账号配置

在“配置-Account”界面, 配置ECS实例的RAM角色信息

  • 添加一个账号,用户名固定不变为ECS_RAM_ROLE,密码是步骤“为ECS实例绑定RAM角色中所创建的RAM角色名称。

添加data input

在“输入”界面,点击"Create New Input"可以创建新的data input。具体的配置参数如下:

  • 其中SLS AccessKey参数选择【全局账号配置】步骤中配置的账号

参数

必选项 & 格式

描述

取值举例

名字

Yes, String

全局唯一的Data input名

间隔

Yes, Integer

Splunk data input退出后的重启时间。

单位:s。

默认值: 10(s)

索引

Yes, String

Splunk索引

SLS AccessKey

Yes, String

全局账号配置中配置的"Account name"。

SLS endpoint

Yes, String

阿里云日志服务入口。

关于HTTPS的更多信息,详见“规格及安全--HTTPS”部分。

cn-huhehaote.log.aliyuncs.com 

https://cn-huhehaote.log.aliyuncs.com

SLS project

Yes, String

日志服务Project。

-

SLS logstore

Yes, String

日志服务Logstore。

-

SLS consumer group

Yes, String

日志服务消费组。

扩容时,多个data input需要配置相同的消费组名称。

更多信息详见“机制”部分。 

-

SLS cursor start time 

Yes, String

消费起始时间。

该参数只有消费组首次创建时有效。非首次创建日志都是从上次的保存点开始消费。

注意:这里的时间是日志到达时间。

取值:“begin”、“end”、“ISO格式的时间(例如2018-12-26 0:0:0+8:00)”。

SLS heartbeat interval

Yes, Integer

SLS消费者与Sever间的心跳间隔。

单位:s。

默认值: 60(s)

SLS data fetch interval

Yes, Integer

日志拉取间隔,如果日志频率较低,建议不要设的太小。

单位:s。

默认值: 1(s)

Topic filter

No, String

Topic过滤字符串,以;间隔区分多个过滤的Topic。

如果日志的topic被命中,则该日志会被忽略掉,从而不能投递到Splunk。

“TopicA;TopicB”意味着topic为“TopicA”or “TopicB”的日志将被忽略。

Unfolded fields

No, Json

Json格式的topic到字段列表的映射关系。

{"topicA": ["field_nameA1", "field_nameA2", ...], "topicB": ["field_nameB1", "field_nameB2", ...], ...}

{"actiontrail_audit_event": ["event"] } 意味着对于topic为 "actiontrail_audit_event"的日志, 该日志的 "event"字段将从字符串展开成Json格式。

Event source

No, String

Splunk event数据源

-

Event source type

No, String

Splunk event数据源类型

-

Event retry times

No, Integer

0表示无限重传。

默认值: 0次

Event protocol

Yes

Splunk event发送协议。如果选择私有协议,后续参数可以忽略。

HTTP for HEC

HTTPS for HEC

Private protocol

HEC host

Yes,只有Event protocol选择HEC时有效,String。

HEC host。

-

HEC port

Yes,只有Event protocol选择HEC时有效,Integer。

HEC端口。

-

HEC token

Yes,只有Event protocol选择HEC时有效,String。

HEC token。

HEC timeout

Yes,只有Event protocol选择HEC时有效,Integer。

HEC超时时间。

默认: 120(s)


总结

以往用户在使用SLS Splunk Add-on将日志从SLS投递到Splunk时,需要借助AccessKeyID和AccessKeySecret来实现。用户需要为对应的AK做严格的权限控制,并且在Splunk的账号配置中保存相应的AK_ID和AK_Secret。这在一定程度上增加了AK管理的复杂性,并且降低了AK的保密性。如果用户需要实现多地域部署,AK会随着多台实例扩的创建而散出去。这种情况下,当用户需要更换AK时,用户就需要逐台更新和重新部署实例中的AK信息。


现在借助于ECS实例RAM角色,用户可以将RAM角色和ECS实例关联起来,在ECS实例内部可以通过STS临时凭证访问日志服务SLS。其中STS临时凭证由系统自动生成和更新,SLS Splunk Add-on可以使用指定的实例元数据URL获取STS临时凭证,无需特别管理。

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
1天前
|
弹性计算 大数据 数据处理
阿里云服务器实例哪些属于入门级,哪些是企业级?有何区别?
阿里云服务器的实例规格从级别上来说分为入门级和企业级,从实例规格种类上来说,又分为突发性能型、共享型、计算型、通用型、内存型、大数据型等,2024年截止目前在阿里云的活动中,可选的云服务器实例规格有轻量应用服务器、经济型e、通用算力型u1、计算型c7、计算型c7a、计算型c8a、计算型c8y、通用型g7、通用型g7a、通用型g8a、通用型g8i、通用型g8y、内存型r7、内存型r8y等,有的新手用户不是很清楚2024年阿里云活动中的云服务器实例哪些属于入门级,哪些是企业级?有何区别?下面根据官方的各种资料介绍为大家解答下这些疑问,帮助您能更清楚地了解阿里云服务器,快速找到自己对云服务器产品的需
阿里云服务器实例哪些属于入门级,哪些是企业级?有何区别?
|
1天前
|
云安全 弹性计算 安全
电子好书发您分享《阿里云第八代企业级ECS实例,为企业提供更安全的云上防护》
阿里云推出第八代企业级ECS实例,强化云安全,搭载英特尔TDX技术,结合CIPU与飞天系统,提供高效且安全的云服务解决方案。[阅读详情](https://developer.aliyun.com/ebook/8303/116162?spm=a2c6h.26392459.ebook-detail.5.5c0b7e5aZhSJ9V)
18 2
|
1天前
|
存储 数据采集 Kubernetes
一文详解K8s环境下Job类日志采集方案
本文介绍了K8s中Job和Cronjob控制器用于非常驻容器编排的场景,以及Job容器的特点:增删频率高、生命周期短和突发并发大。文章重点讨论了Job日志采集的关键考虑点,包括容器发现速度、开始采集延时和弹性支持,并对比了5种采集方案:DaemonSet采集、Sidecar采集、ECI采集、同容器采集和独立存储采集。对于短生命周期Job,建议使用Sidecar或ECI采集,通过调整参数确保数据完整性。对于突发大量Job,需要关注服务端资源限制和采集容器的资源调整。文章总结了不同场景下的推荐采集方案,并指出iLogtail和SLS未来可能的优化方向。
|
1天前
|
存储 编解码 安全
阿里云服务器计算型、通用型、内存型主要实例性能及选择参考
在阿里云的活动中,属于计算型实例规格的云服务器主要有计算型c7、计算型c7a、计算型c8a、计算型c8y、计算型c8i这几个实例规格,属于通用型实例规格的云服务器有通用型g7、通用型g7a、通用型g8a、通用型g8y、通用型g8i,属于内存型实例规格的云服务器有内存型r7、内存型r8a、内存型r8y、内存型r8i等实例。不同实例规格的云服务器在架构、计算、存储、网络、安全等方面有着不同,因此,其适用场景也有所不同。本文来详细介绍一下阿里云服务器计算型、通用型、内存型主要实例计算、存储等性能及其适用场景,以供参考。
阿里云服务器计算型、通用型、内存型主要实例性能及选择参考
|
1天前
|
存储 编解码 网络协议
阿里云服务器计算型c7、计算型c7a、计算型c8a、计算型c8y实例区别及选择参考
在阿里云的活动中,属于计算型实例规格的云服务器一般会有计算型c7、计算型c7a、计算型c8a、计算型c8y这几个实例规格,与经济型e实例相比,这些实例均属于企业级实例,与通用算力u1实例相比的话这些实例规格等性能更强,这些计算型实例主要适用于网站应用、批量计算、视频编码等各种类型和规模的企业级应用,本文为大家介绍计算型c7、c7a、c8a、c8y实例区别,以供参考。
阿里云服务器计算型c7、计算型c7a、计算型c8a、计算型c8y实例区别及选择参考
|
1天前
|
存储 缓存 安全
阿里云服务器实例规格选型参考,根据上云场景选择适合自己的实例规格
对于很多新手用户来说,在初次选择阿里云服务器实例规格的时候,面对众多实例规格往往不知道如何选择,因为云服务器实例规格不同,价格也不一样,本文通过一些常见的选型场景推荐,便于大家在选择云服务器实例规格时做个参考。
阿里云服务器实例规格选型参考,根据上云场景选择适合自己的实例规格
|
1天前
|
编解码 缓存 安全
阿里云目前活动内各云服务器实例规格适用场景与价格参考
目前阿里云的活动中,云服务器有多种不同实例规格可选,实例规格定义了实例的基本属性:CPU和内存(包括CPU型号、主频等),但是不同实例规格所适用的场景是不一样的,价格也有很大差别,有的用户初次选购阿里云服务器可能并不知道这些实例规格的具体适用场景,下面是小编整理汇总的2024年截止目前阿里云的活动中云服务器实例规格适用场景与活动价格,以供参考。
阿里云目前活动内各云服务器实例规格适用场景与价格参考
|
1天前
|
弹性计算 供应链
阿里云服务器付费模式包年包月、按量付费、抢占式实例选择说明
阿里云ECS提供包年包月、按量付费和抢占式实例三种计费方式。选择建议:稳定需求选包年包月,动态需求选按量付费,无状态应用选抢占式实例以降低成本。可结合使用按量付费、预留实例券和节省计划以平衡灵活性和成本。需要资源保障则组合按量付费和资源保障。具体详情和规定可参考阿里云ECS官方文档
42 7
|
1天前
|
存储 弹性计算 运维
深度解读:阿里云服务器ECS经济型e实例配置整理和性能参数表
阿里云推出经济型ECS e系列服务器,适用于个人开发者、学生和小微企业。该系列采用Intel Xeon Platinum处理器,支持多种CPU内存配比,性价比高,2核2G3M配置只需99元/年,新老用户不限量购买且续费不涨价。提供相同可用性SLA和安全标准,具备ESSD Entry云盘等企业级特性。适合中小型网站、开发测试和轻量级应用
|
1天前
|
存储 弹性计算 运维
阿里云服务器ECS经济型e实例特点、适用场景和使用常见问题解答
阿里云新推经济型e系列服务器,适用于个人开发者、学生和小微企业。该系列基于Intel Xeon Platinum处理器,提供1:1、1:2、1:4内存比选项,性价比高,不限购,续费不涨价。2核2G3M配置只需99元/年,企业用户2核4G5M服务器199元/年。具备价格优惠、品质保障、充足供应和多样化配置等特点。支持IPv4/IPv6,仅限专有网络VPC。实例规格和性能指标详表见原文,适合中小型网站、开发测试和轻量级应用。更多信息访问阿里云ECS页面。

相关产品

  • 日志服务