阿里云日志服务 SLS 通过提供一个Splunk插件 Add-on 实现SLS与Splunk的日志对接,?以便确保阿里云上的所有法规、审计、与其他相关日志能够导入到客户的安全运维中心 SOC 中。本文主要介绍如何在该Splunk?Add-on中使用ECS实例RAM角色的鉴权方式 完成日志服务 SLS 到Splunk的日志投递过程。
SLS介绍阿里云的日志服务 log?service 是针对日志类数据的一站式服务 无需开发就能快捷完成海量日志数据的采集、消费、投递以及查询分析等功能 提升运维、运营效率。日志服务主要包括?实时采集与消费、数据投递、查询与实时分析?等功能 适用于从实时监控到数据仓库的各种开发、运维、运营与安全场景。
日志库 Logstore 日志服务中日志数据的采集、存储和查询单元。每个日志库隶属于一个项目 且每个项目可以创建多个日志库。您可以根据实际需求为某一个项目生成多个日志库 其中常见的做法是为一个应用中的每类日志创建一个独立的日志库。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 实现。
阿里云日志服务Splunk?Add-on从阿里云日志服务 SLS 采集日志并投递到Splunk。主要的特性如下
通过Splunk?data?input创建SLS消费组 并从阿里云日志服务进行实时日志消费。更详细关于SLS?Splunk?Add-on的介绍可以参考阿里云日志服务Splunk?Add-on
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实例关联起来。?
为RAM角色授予权限为上一步创建的RAM角色授予访问日志服务SLS的权限{ 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名称 请根据实际情况替换 名字替换支持通配符*。
这里提供两种通过Splunk?web?UI安装Splunk?Add-on的方式
管理应用- 浏览更多应用- 搜索“Splunk?Add-on?for?Alibaba?Cloud?Log?Service”- 点击“安装”- 点击“重启?Splunk服务”。通过Splunk?Web?UI?选择应用 进入 Splunk?Add-on?for?Alibaba?Cloud?Log?Service 界面。
全局账号配置在“配置-Account”界面,?配置ECS实例的RAM角色信息
添加一个账号 用户名固定不变为ECS_RAM_ROLE 密码是步骤“为ECS实例绑定RAM角色中所创建的RAM角色名称。在“输入”界面 点击 Create?New?Input 可以创建新的data?input。具体的配置参数如下
其中SLS?AccessKey参数选择【全局账号配置】步骤中配置的账号参数
必选项? ?格式
描述
取值举例
名字
Yes,?String
全局唯一的Data?input名
间隔
Yes,?Integer
Splunk?data?input退出后的重启时间。
单位 s。
默认值:?10(s)
索引
Yes,?String
Splunk索引
Yes,?String
全局账号配置中配置的 Account?name 。
Yes,?String
阿里云日志服务入口。
关于HTTPS的更多信息 详见“规格及安全--HTTPS”部分。
cn-huhehaote.log.aliyuncs.com?
https://cn-huhehaote.log.aliyuncs.com
Yes,?String
日志服务Project。
-
Yes,?String
日志服务Logstore。
-
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
Yes 只有Event?protocol选择HEC时有效 String。
HEC?host。
-
HEC?port
Yes 只有Event?protocol选择HEC时有效 Integer。
HEC端口。
-
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临时凭证 无需特别管理。
【51CTO.com快译】 数据可视化工具不断发展,提供更强大的功能,同时改善可访问...
在Python语言中有如下3种方法: 成员方法 类方法(classmethod) 静态方法(staticm...
信息化2.0时代提出开展智慧教育创新发展行动。2019年2月,中共中央、国务院印发...
建站 什么 虚拟主机 够用?这要看搭建的是什么类型的网站。比如个人博客类型的网...
从 10.0.0 版开始,异步迭代器就出现在 Node 中了,在本文中,我们将讨论异步迭...
本文整理自直播《Hologres 数据导入/导出实践-王华峰(继儒)》 视频链接: https:/...
摘要 元旦期间 订单业务线 告知 推送系统 无法正常收发消息,作为推送系统维护者...
前提条件 请您在购买前确保已完成注册和充值。详细操作请参见 如何注册公有云管...
2021年3月24日,主题为《数据的世界,世界的数据》的星环科技2021春季新品发布会...
Docker生成新镜像版本的两种方式 There are two ways Docker can generate new m...