基于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临时凭证,无需特别管理。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
机器学习/深度学习 API 数据安全/隐私保护
视觉智能平台常见问题之一直提示ram没有权限但是我在角色中已经有添加相应的权限如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
|
21天前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
15 3
|
19天前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
53 0
|
22天前
|
前端开发 JavaScript API
Web服务器与前端技术的集成
【8月更文第28天】随着Web开发技术的发展,现代前端框架如React、Vue.js等已经成为构建复杂Web应用的标准工具。为了提供更好的用户体验,这些前端应用通常需要与后端Web服务器进行紧密集成。本文将详细介绍如何将React和Vue.js与后端Web服务器无缝集成,以创建高性能且用户友好的Web应用。
19 0
|
2月前
|
存储 弹性计算 运维
可观测性体系问题之ECS管控集成到云产品status大盘中如何解决
可观测性体系问题之ECS管控集成到云产品status大盘中如何解决
38 2
|
2月前
|
弹性计算 Linux 云计算
云服务器 ECS产品使用问题之幻兽帕鲁服务器角色存档丢失,该怎么办
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
2月前
|
弹性计算 云计算
云服务器 ECS产品使用问题之如何解决更新后进游戏要重新创建角色的问题
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
3月前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
【6月更文挑战第23天】Java Web开发中,Servlet和JSP是构建动态Web应用的基础。Servlet处理逻辑,JSP专注展示。示例展示了Servlet如何通过`request.setAttribute`传递数据给JSP渲染。JSP自定义标签提升页面功能,如创建`WelcomeTag`显示欢迎消息。Servlet过滤器,如`CacheControlFilter`,用于预处理数据或调整响应头。这些集成和扩展技术增强了应用效率、安全性和可维护性,是Java服务器端开发的关键。
50 7
|
2月前
|
分布式计算 自然语言处理 DataWorks
MaxCompute产品使用合集之在DataWorks中,当涉及到MC的投递功能时,所指的自定义RAM角色是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
3月前
|
SQL DataWorks 数据管理
DataWorks操作报错合集之在查找支持实例错误的时候提示:无法承担用户的角色,请检查RAM角色配置,该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。

热门文章

最新文章

相关产品

  • 日志服务