基于阿里云SLS日志服务的数据安全管理

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 伴随云原生的发展,以应用为核心的可观测监控越发得到广泛应用。在应用的可观测性中,日志的收集及内容监控是可观测性监控的一个重要内容,然而日志的监控数据,并不同于某项指标的测量结果数据,其往往都会包含业务或与用户相关的敏感性信息,因此,在落实日志的收集和监控的同时,我们也要注意日志数据的安全管理。

基于阿里云SLS日志服务的数据安全管理

伴随云原生的发展,以应用为核心的可观测监控越发得到广泛应用。在应用的可观测性中,日志的收集及内容监控是可观测性监控的一个重要内容,然而日志的监控数据,并不同于某项指标的测量结果数据,其往往都会包含业务或与用户相关的敏感性信息,因此,在落实日志的收集和监控的同时,我们也要注意日志数据的安全管理。

阿里云SLS

阿里云日志服务SLS是云原生观测与分析平台,其可为Log、Metric、Trace等数据提供大规模、低成本、实时的存储、归档、监控等一系列的数据服务,其包括一站式提供数据采集、加工、查询与分析、可视化、告警、消费与投递等功能,可满足研发、运维、运营、安全等场景的数据管理能力。

                    阿里云SLS功能特性

如图所示,其功能特点如下:

  • 数据采集

    • 日志服务提供50多种数据接入方案,支持采集服务器与应用相关的日志、时序数据和链路数据。
    • 支持基于Logtail 采集物联网设备、阿里云产品日志、移动端等数据。
    • 支持Logstash、Flume、Beats、FluentD、Telegraph等开源软件中数据的接入。
    • 支持通过HTTP、HTTPS、Syslog、Kafka、Prometheus等标准协议接入数据。
  • 查询与分析

    • 支持上下文查询、日志聚类、LiveTail、重建索引等功能。
    • 支持标准的SQL 92语法。
  • 数据加工

    • 日志服务提供数据加工功能,用于数据的规整、富化、流转、脱敏和过滤。
    • 日志脱敏可对数据中包含的密码、手机号、地址等敏感信息进行脱敏。
  • 消费与投递

    • 日志服务提供消费与投递功能,支持通过SDK、API实时消费数据;支持通过控制台将数据实时投递至OSS、MaxCompute等阿里云产品中。
  • 数据可视化

    • 日志服务支持可视化展示查询和分析结果。提供表格、线图、柱状图等多种统计图表
    • 支持直接对接Grafana、DataV等第三方图表
  • 内容告警

    • 日志服务提供告警监控、降噪、事务管理、通知分派的智能运维平台
    • 支持通过告警策略对所接收到的告警进行路由分派、抑制、去重、静默、合并等操作,然后发送给通知(行动)管理系统。
    • 支持通过Webhook方式接收外部监控系统中的告警消息(例如Grafana告警、Prometheus告警),并完成告警管理、告警通知等操作。
  • 日志审计

    • 覆盖基础(ActionTrail、容器服务Kubernetes版)、存储(OSS、NAS)、网络(SLB、API网关)、数据库(关系型数据库RDS、云原生分布式数据库PolarDB-X、PolarDB MySQL云原生数据库)、安全(WAF、DDoS防护、云防火墙、云安全中心)等云产品。

阿里云的数据安全方案

阿里云SLS 被定位一个集中化的数据管理平台,如上所述,其涵盖了数据从采集到审计归档的全生命周期内容。对于数据的安全,可包含两个方面的内容,分别是数据脱敏和用户安全。

数据脱敏

数据脱敏,是指数据的内容在被用户查询过程中,用户所看到的内容不会出现违反安全法规限定的内容,同时也无法根据不同的内容碎片组成违反安全法规限定的内容。阿里云SLS 提供了在采集端和服务端数据加工两种方案来满足这一需求。

采集端控制

这是一种常见的数据脱敏方法,通常日志在采集后经过相关策略的处理,再把脱敏的数据传送到SLS服务端进行存储,这种方法相对较为安全,但是由于采集端的多样性,若采集端软件不同,各采集端配置上则会较为分散,也不方便管理。此处以阿里云日志采集端logtail的配置为例来了解采集端数据脱敏的配置方法。Logtail 的日志处理流程如下图所示:

基于logtail 实现数据脱敏有字段丢弃、数据脱敏、字段加密、数据编码与解码等方法,logtail 脱敏配置样例如下:

{
  "processors":[
    {
      "type":"processor_drop",
      "detail": {
        "DropKeys": ["aaa1","aaa2"]
      }
    },
    {
      "type" : "processor_desensitize",
      "detail" : {
        "SourceKey" : "password",
        "Method" : "const",
        "Match" : "full",
        "ReplaceString": "********"
      }
    },
    {
       "type" : "processor_desensitize",
       "detail" : {
          "SourceKey" : "content",
          "Method" : "md5",
          "Match" : "regex",
          "RegexBegin": "'password':'",
          "RegexContent": "[^']*"
       }
    },
    {
       "type" : "processor_encrypt",
       "detail" : {
          "SourceKey" : ["field1","field2"],
          "EncryptionParameters" : {
            "Key": "18b2eda21fbca92d6d3442e951c15208d0ae50d0a3e5d9e45bbaea0f5121a09d519c90a676133f36d48a0288e2a928bbe83f67d9f7ef5ba5508cbe8f63b3ecb79b2394b132467424395bdb40c97f3929fad2ae627117367d9e425f4776b229af0d934e0f95a04087286bf58dda46fa16aae77db19567709ead743631ba48fe80998bdecc5ea23d66d37ce821828ab840660738c696eda24c222e1cc64929b13b391655b9056cd0729bbc44231e98e3301fbe0b401c4628a682cbf1a3b9c9b5d7ddffe196034f2a66e866e37ffa64f81235026d32c72744c5bdc831fdfc5624c53eaae44134b169de665bd3d7fb5eeeab3853c301aea39dd5358766e004702fdc6f5ae79edc975936c50c80c8d4853ead9e8b52531cbef3747cde2308f7bfe2df25b65e738035b485b58fa23772814b396ee787a9aa8c6826921d4af7e450715fae0f77ed5684631912c198430a19c50fe22ac0e2eda4e7ae91d271f2560078aa6ff88b5ffec53de505d04be1876174bebb9fdb8fbbd2faaed65c8e37669d731e9404bb52c54af5e02d4d6816534bdf72504d97581a0049aa041f773e8b4ebc21a021c728215d13d1f28fd9b9fe0a3623b19c4e03e3c056116a765f9ef594b63815eb747aade065772504dee454116a60fa29dd1b3b74ef4477e74aa1d8aee6f5c36e9f30fbe51b5561c8c3ad0d31d0ec1726d4e3166986f526800c9f358652df"
          }
       }
    },
    {
       "type" : "processor_base64_encoding",
       "detail" : {
          "SourceKey" : "content",
          "NewKey" : "content_base64"
       }
    },
    {
       "type" : "processor_base64_decoding",
       "detail" : {
          "SourceKey" : "content_base64",
          "NewKey" : "content"
       }
    },
    {
       "type" : "processor_base64_md5",
       "detail" : {
          "SourceKey" : "content",
          "NewKey" : "content"
       }
    }
  ]
}
数据加工

数据加工则是在数据存储到SLS 服务端后,通过相关的数据处理规则实现数据内容的脱敏,该方法易于数据的集中处理,缺点是未脱敏的数据仍会被存储到在SLS服务端,需要做好相关的用户权限控制来解决这一弊端。

  • 数据加工原理

数据加工的原理如图所示,其过程是将源存储的日志中数据同步到目标的日志库中,在同步的过程中按照数据加工规则,将加工后的数据存储到目标日志库中。

  • 数据加工规则引擎

使用SLS DSL提供的内置函数编写加工规则,每个函数可以看做一个加工步骤,规则引擎按步骤顺序执行函数。


配置样例

# 过滤所有健康检测的日志
e_if(e_search("actuator/health"), e_drop())
# 过滤掉无用字段
e_drop_fields("field1","field2")
# 替换掉手机号
e_set(
    "message",
    regex_replace(
        v("message"),
        r"((13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8})",
        replace=r"[MASKED_PHONE]",
    ),
)
e_set(
    "log", 
    regex_replace(
        v("log"), r"(?i)(\suser\s).*", replace=r"\1[MASKED_NAME]"
    ),
)
  • 性能优化

根据加工原理,数据加工任务的总体速度取决于源Shard的数量、用户配置的规则逻辑和规则复杂度。一般可以按照每Shard处理1MB/s(压缩前)流量规划,也就是大约85 GB每天每Shard规划。例如:源Logstore的数据写入速度是每天1 TB,那么需要分裂源Logstore的Shard数量为1024GB/85=12个。

  • 成本优化

根据加工原理和性能指南,官方推荐节约成本的方案是使用一个或多个Logstore快速接入数据,然后使用数据加工进行快速分发,并根据实际需求设置不同目标Logstore的存储时间以及索引配置,进而降低使用成本。

举例某应用的日志,每天的写入量为100 GB,存储30天并建立全文索引,那么日志服务的成本大约是2248元/每月。官方推荐使用如下加工方案实现成本的节约。

* 构建接入源Logstore,存储3天不建立索引。
* 构建目标Logstore1,用于存储操作日志与错误日志,存储30天并建立索引。
* 构建目标logstore2,用于存储一般性日志,存储7天并建立索引。

这种情况下您的成本约为1672元/每月,与加工之前相比大约可以节省25%的成本。

用户安全

用户安全,是指数据使用者是在授权下使用数据,其所有的操作,是在权限控制下的,且不会在操作过程中,对数据产生安全风险。基于这一需求,我们可以通过阿里云提供的权限控制服务实现这一需求。

阿里云的RAM 中的相关概念如下:

  • RAM用户

是一个身份实体,它通常代表您的组织中需要访问云资源的人员或应用程序。

  • 用户组

多个可具有相同策略的RAM用户集合。

  • RAM角色

是一种虚拟用户,没有确定的身份认证密钥,需要被一个受信的实体用户关联才能正常使用。其可实现同一实体用户的多身份切换,方便权限策略的管理。

  • 权限策略

用于描述一组权限集,RAM 支持两种类型的权限策略:由阿里云管理的系统策略和由客户管理的自定义策略。系统策略,统一由阿里云创建,只能使用而不能修改。自定义策略则可更具实际的情况自主创建、更新和删除,相对更为灵活。

  • RAM相关概念关系

image.png
如图所示,RAM用户、用户组及RAM角色都可以直接与权限策略关联,权限策略则可针对阿里云各服务产品的读、写和列表权限实现控制,为增强权限控制的能力,其还可以对每个产品下的资源,即用户的具体云产品的实例实现更细粒度的管理。同时,阿里云的RAM 策略增加了条件控制,对RAM用户的访问方式实现在时间、源IP、安全通道(https)、多因素认证等方式进行了识别,增加了更多的安全管控方法。

  • 策略脚本结构及语法

自定义策略可以通过可视化编辑器及脚本编辑器创建,由于阿里云产品更新的较快,可视化编辑器的可选项与实际可用权限会存在不同步的情况,建议使用脚本编辑器创建。RAM中使用权限策略描述授权的具体内容,权限策略由效果(Effect)、操作(Action)、资源(Resource)、条件(Condition)和授权主体(Principal)等基本元素组成。

权限策略结构包括:版本号(Version)和授权语句列表(Statement)。每条授权语句包括授权效果(Effect)、操作(Action)、资源(Resource)以及条件(Condition,可选项)。

策略脚本样例

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "log:GetConfig",
        "log:GetConsumerGroupCheckPoint",
        "log:GetDashboard"
      ],
      "Resource": [],
      "Condition": {}
    }
  ]
}

策略脚本结构

<version_block> = "Version" : ("1")
// Statement 是个列表,可以添加多个授权语句
<statement_block> = "Statement" : [ <statement>, <statement>, ... ]

// 每个Statement 由effect、action、resource、condition 组成。
<statement> = { 
    <effect_block>,
    <action_block>,
    <resource_block>,
    <condition_block?>
}

// effect 的可选项为"Allow" 或 "Deny"
<effect_block> = "Effect" : ("Allow" | "Deny")  

// action 是各产品的操作描述符
<action_block> = "Action" : 
    ("*" | [<action_string>, <action_string>, ...])

// resource 是各产品具体的用户实例
<resource_block> = "Resource" : 
    ("*" | [<resource_string>, <resource_string>, ...])

// condition 是用户访问方式的识别
<condition_block> = "Condition" :
{
  <condition_type_string> : { 
      <condition_key_string> : [<condition_value>, <condition_value>, ...],
      <condition_key_string> : [<condition_value>, <condition_value>, ...],
      ...
  },
  <condition_type_string> : {
      <condition_key_string> : [<condition_value>, <condition_value>, ...],
      <condition_key_string> : [<condition_value>, <condition_value>, ...],
      ...
  }, ...
}  

<condition_key_string> = ("acs:CurrentTime"|"acs:SecureTransport"|"acs:SourceIp"|"acs:MFAPresent")
<condition_value> = ("String" | "Number" | "Boolean" | "Date and time" | "IP address")
  • 用户角色的设定

基于实际的工作需求,建议由如下四类用户,并根据用户组和RAM角色对每个用户实现更细粒度的管控。

用户 说明 管理
超管账户 可管理所有的阿里云资源 基于审计实现管理控制
权限管理员 用户的权限设定 仅有权限控制产品的操作权限
运维人员 云产品资源配置 仅有被授权产品可工作的最小权限
使用者 业务范围使用者 仅有被授权产品可工作的最小权限
  • 权限策略判断流程

参考文档

https://help.aliyun.com/product/28958.html
https://help.aliyun.com/product/28625.html
https://www.nginxbar.com/pages/7f0a9e

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
363 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
16天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
|
2月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
336 3
|
26天前
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
|
2月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1712 14
|
1月前
|
存储 监控 安全
什么是日志管理,如何进行日志管理?
日志管理是对IT系统生成的日志数据进行收集、存储、分析和处理的实践,对维护系统健康、确保安全及获取运营智能至关重要。本文介绍了日志管理的基本概念、常见挑战、工具的主要功能及选择解决方案的方法,强调了定义管理目标、日志收集与分析、警报和报告、持续改进等关键步骤,以及如何应对数据量大、安全问题、警报疲劳等挑战,最终实现日志数据的有效管理和利用。
113 0
|
2月前
|
Python
log日志学习
【10月更文挑战第9天】 python处理log打印模块log的使用和介绍
47 0
|
2月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
287 0
|
2月前
|
存储 分布式计算 NoSQL
大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge
大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge
67 0
|
2月前
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
78 0

相关产品

  • 日志服务