Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Ceph安全体系概览

Ceph安全体系概览

作者头像
用户1260683
发布于 2019-07-30 07:48:13
发布于 2019-07-30 07:48:13
2.5K00
代码可运行
举报
运行总次数:0
代码可运行

Ceph安全体系概览

安全是整个存储必不可少的一环,但是很少有人能够比较全面的总结一下Ceph的安全体系,于是老司机在这里“鬼话连篇”。

CephX 认证体系

默认情况下整个ceph内部服务组件之间都是启用了cephx认证的,每个服务实例都会有一个keyring,各个服务之间进行通信会使用keyring进行消息内容签名,从而避免“中间人攻击”,这里需要注意的是传输的消息内容是不加密的(明文传输),传输的数据包内容仍然可以通过网络嗅探一类方式截获,官方也意到该问题,并且在新版本的消息通信模块上做了更新并堵上了这一块漏洞。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"auth_client_required": "cephx",
"auth_cluster_required": "cephx",
"auth_service_required": "cephx",

http://docs.ceph.com/docs/master/rados/configuration/auth-config-ref/ http://docs.ceph.com/docs/master/architecture/#high-availability-authentication

OSD数据存储加密

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
LUKS (Linux Unified Key Setup)是 Linux 硬盘加密的标准。 通过提供标准的磁盘格式,它不仅可以促进发行版之间的兼容性,还可以提供对多个用户密码的安全管理。 与现有解决方案相比,LUKS 将所有必要的设置信息存储在分区信息首部中,使用户能够无缝传输或迁移其数据。

OSD在filestore时代就已经通过LUKS支持磁盘级别的加密,之后Bluestore使用的LVM仍然沿用LUKS方案,但是有几个需要注意的细节

  • only LUKS (version 1) is used
  • Logical Volumes are encrypted, while their underlying PVs (physical volumes) aren’t
  • Non-LVM devices like partitions are also encrypted with the same OSD key

通过使用ceph-volume命令,在创建OSD的时候启动磁盘级的加密

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ceph-volume lvm create --dmcrypt

参考资料:http://docs.ceph.com/docs/mimic/ceph-volume/lvm/encryption/

MGR模块的插件安全

MGR的出现带来了很多插件,极大降低了Ceph的运维与集成难度,但是同时默认启用的restful存在一定的安全隐患,一方面会泄露集群信息,另一方面一些危险性的操作还会容易被入侵滥用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@demohost supdev]# ceph mgr module ls
{
    "enabled_modules": [

        "restful",
        "status"
    ],
    "disabled_modules": [
        "balancer",
        "dashboard",
        "influx",
        "localpool",
        "prometheus",
        "selftest",
        "zabbix"
    ]
}

restful模块功能列表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/config/cluster: GET
/config/osd: GET, PATCH
/crush/rule: GET
/mon: GET
/osd: GET
/pool: GET, POST
/pool/<arg>: DELETE, GET, PATCH
/request: DELETE, GET, POST
/request/<arg>: DELETE, GET
/server: GET

默认访问需要身份认证

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@demohost supdev]# curl -k https://localhost:8003/
{
    "api_version": 1,
    "auth": "Use \"ceph restful create-key <key>\" to create a key pair, pass it as HTTP Basic auth to authenticate",
    "doc": "See /doc endpoint",
    "info": "Ceph Manager RESTful API server"
}
[root@demohost supdev]# curl -k https://localhost:8003/osd/1
{
    "message": "auth: No HTTP username/password"
}

创建用户,并使用指定用户访问restful接口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@demohost supdev]# ceph restful create-key admin
203b7fae-85ba-45a7-aaa7-d42593aa7307
[root@demohost supdev]# curl -k https://localhost:8003/osd/1 -u admin:203b7fae-85ba-45a7-aaa7-d42593aa7307
{
    "cluster_addr": "192.168.60.210:6806/507000",
    "down_at": 54,
    "heartbeat_back_addr": "192.168.60.210:6807/507000",
    "heartbeat_front_addr": "192.168.60.210:6808/507000",
    "in": 1,
    "last_clean_begin": 28,
    "last_clean_end": 53,
    "lost_at": 0,
    "osd": 1,
    "pools": [
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11
    ],
    "primary_affinity": 1.0,
    "public_addr": "192.168.60.210:6805/507000",
    "reweight": 1.0,
    "server": "demohost",
    "state": [
        "exists",
        "up"
    ],
    "up": 1,
    "up_from": 56,
    "up_thru": 169,
    "uuid": "d2eed5f8-fca6-595d-8e00-d20487e23307",
    "valid_commands": [
        "scrub",
        "deep-scrub",
        "repair"
    ],
    "weight": 1.0

生产上最好通过下面的方式关闭该插件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@demohost supdev]# ceph mgr module disable restful
[root@demohost supdev]# ceph mgr module ls
{
    "enabled_modules": [
        "status"
    ],
    "disabled_modules": [
        "balancer",
        "dashboard",
        "influx",
        "localpool",
        "prometheus",
        "restful",
        "selftest",
        "zabbix"
    ]
}

如果关闭不了,那么也要做到以下几点

  • 使用HTTPS方式认证,最好有正式的签名证书,不要用自签名那种。
  • 严格限制创建的用户数量,同时控制好相应的账号密码不要被泄露和滥用。
  • 对restful接口,比如默认的8003开启防火墙白名单限制,只允许指定IP的访问。

RGW安全防护

RGW默认情况下会直接与Client进行交互,走的也是HTTP,因此有条件的一定要用到HTTPS,并且不要使用自签名证书,如果暴露在公网或者其他安全性比较敏感的环境,最好在RGW前端架设一层防火墙或者其他安全设备对流量进行清洗过滤。

接下来再讲一讲对RGW的网络攻击类型,RGW的写入是一个非常值得关注的风险点,也是最容易遭受攻击的部分。简单一句话介绍,RGW在接收到客户端写入请求的时候,会开启内存buffer用于缓存数据,只有当整个request请求数据全部接收完成,才会往后端OSD发送写入请求。针对整个写入过程,大概有下面几种攻击方式

  1. "飞头"攻击 针对"100 continue"特性,整个客户端请求可以分为2部分进行,先发送header部分,之后再传输Body内容,如果客户端先发送header,之后再以极慢的速度传输Body内容,你会发现RGW的网络连接数会被极大的耗尽…
  2. "胖体"攻击 客户端传输一个极大的body(默认单request最大5G),然后开很多个并发,很快你就会发现你的buffer内存耗尽,最终RGW节点的内存被这些胖子们吃干耗尽…
  3. "垃圾回收风暴"攻击 客户端频繁覆盖写同一个object或者频繁大量删除object,最终导致RGW在执行GC的时候耗尽磁盘的IO,影响集群的正常数据访问。
  4. 其他 灵活组合上面几种攻击方式,对RGW进行惨无人道的蹂躏… 至于如何防护上面讲到的攻击,这里要结合具体的业务场景和硬件环境,限于篇幅就不详细展开。最后补充一句话,任何方式去提升系统安全都是有代价的。

用户数据安全

这里只讨论RGW场景,RBD和Cephfs就不再展开了。当用户将数据存储到Ceph的时候,就面临一些安全性问题,比如数据比较敏感,必须加密,但是限于客户端有限的条件,只能把加密放服务端。所以这个时候就需要在服务端启用加密特性,关于如何启用服务端加密就不再这里展开,之前有文档介绍这一块内容。另外一块安全的需求,就是用户需要对上传的数据进行安全扫描,比如用户上传进来的文档、软件包等需要经过病毒扫描,以确定其安全性。RGW原生是没有这块支持的,但是可以通过其他方式去实现,这里介绍一种通用解决方案。

安全扫描——异步方式

客户端通过启用PubSub 模块,采用兼容S3 Bucket Notifications API的方式完成异步通信,具体内容如下图。

参考:http://docs.ceph.com/docs/master/radosgw/s3-notification-compatibility/

最后

限于时间和能力有限,基本上Ceph安全相关的内容就总结到这里,后面有时间再慢慢补充。

欢迎订阅本公众号cephbook,干货满满,专业老司机教你搞"对象"存储

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Ceph对象存储方案 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ceph-简介及安装(luminous)版
Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式的存储系统。Ceph 独一无二地用统一的系统提供了对象、块、和文件存储功能,它可靠性高、管理简便、并且是开源软件。 Ceph 的强大足以改变贵公司的 IT 基础架构、和管理海量数据的能力。Ceph 可提供极大的伸缩性——供成千用户访问 PB 乃至 EB 级的数据。 Ceph 节点以普通硬件和智能守护进程作为支撑点, Ceph 存储集群组织起了大量节点,它们之间靠相互通讯来复制数据、并动态地重分布数据。
yuezhimi
2020/09/30
9450
ceph-简介及安装(luminous)版
每天10分钟玩转Ceph(一)让Ceph集群运行起来
要学习使用Ceph,首先需要有一个Ceph集群,本文通过ceph-deploy一个自动化部署Ceph的工具部署一个Ceph集群,掌握Ceph集群部署的方法。
HappyLau谈云计算
2020/03/02
5.8K0
ceph v12版本直升v14
一个RGW环境的更新,ceph 12.2.12升级到14.2.4流程,跳过中间的13版本。 注意:升级很危险,操作需谨慎。升级没有后悔药,本人不承担任何因升级及相关操作导致的任何数据丢失风险。
用户1260683
2019/12/05
1.8K0
Ceph 自动化四大天王
每一个Ceph新手,都或多或少被文中提到的四大天(坑)王吊打过,或钢筋铁骨成为大神,或删库跑路沦为亡魂。因此有必要给大家早早普及一下这四大天王的手段,帮各位早脱苦海。本文建立在你已经基本了解Ceph的构架和基本原理,如果不熟悉的同学可以看下面内容
用户1260683
2021/12/04
1.3K1
Ceph:关于 Ceph 用户创建/认证/授权管理的一些笔记
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
山河已无恙
2023/08/21
1.5K0
Ceph:关于 Ceph 用户创建/认证/授权管理的一些笔记
Ceph Luminous版本DashBoard预览
今天来聊一聊Ceph新版本功能,Ceph会在今年秋季发布一个长期支持稳定版本Luminous(12.x.x),现在已经出RC版了,Luminous版本新增了很多功能,比如新增一个内置的Dashboard、底层的存储引擎的变更、消息方式的改变等等。
DevinGeng
2019/04/09
1.1K0
Ceph Luminous版本DashBoard预览
Ceph:关于部署 Ceph 存储集群的一些笔记
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
山河已无恙
2023/08/21
1K0
Ceph:关于部署 Ceph 存储集群的一些笔记
Ceph对象存储集群部署
集群架构 192.168.10.186 ceph1 admin、mon、mgr、osd、rgw 192.168.10.187 ceph2 mon、mgr、osd、rgw 192.168.10.188 ceph3 mon、mgr、osd、rgw 部署 [root@10dot186 ~]# vim /etc/hosts 192.168.10.186 ceph1 192.168.10.187 ceph2 192.168.10.188
院长技术
2020/06/11
7890
手动部署ceph octopus集群
所有 Ceph 群集至少需要一个monitor,并且至少需要与存储在群集上的对象副本一样多的 OSD。引导初始mon是部署 Ceph 存储群集的第一步,这里我直接在node1、node2、node3创建三个mon。
没有故事的陈师傅
2021/02/01
2.7K2
关于 Ceph 存储集群配置的一些笔记
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
山河已无恙
2023/08/21
1.1K0
关于 Ceph 存储集群配置的一些笔记
《大话 Ceph 》之 CephX 那点事儿
腾讯云TStack
2017/09/27
8.1K1
《大话 Ceph 》之 CephX 那点事儿
Ceph 故障排查笔记 | 万字经验总结
删除当前 osd 的所有数据,并且重新加载 osd,此操作一定要保证有冗余可用的 osd,否则会造成整个 osd 数据损坏。
米开朗基杨
2021/05/11
8K0
kubernetes(十九) Ceph存储入门
Ceph是当前非常流行的开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点,同时提供块存储服务(rbd)、对象存储服务(rgw)以及文件系统存储服务(cephfs),Ceph在存储的时候充分利用存储节点的计算能力,在存储每一个数据时都会通过计算得出该数据的位置,尽量的分布均衡。目前也是OpenStack的主流后端存储,随着OpenStack在云计算领域的广泛使用,ceph也变得更加炙手可热。国内目前使用ceph搭建分布式存储系统较为成功的企业有华为,xsky,杉岩数据,中兴,华三,浪潮,中移动等。
alexhuiwang
2020/09/23
3.9K0
kubernetes(十九) Ceph存储入门
Ceph分布式存储文件系统基础学习与实践
[TOC] 0x00 前言简述 CEPH 简介 Q: 什么是CEPH? 答: Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。 Ceph 项目最早起源于Sage就读博士
全栈工程师修炼指南
2022/09/29
9730
Ceph:关于 Ceph 中 BlueStore 架构以及 OSD 创建的一些笔记
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
山河已无恙
2023/08/21
2.3K0
Ceph:关于 Ceph 中 BlueStore 架构以及 OSD 创建的一些笔记
ceph在信创操作系统和服务器上安装
之前想通过cephadm的方式去部署,结果发现cephadm不支持kylin v10的操作系统,那么剩下的就只有手动部署和编译安装的方式,kylin v10系统已经自带了ceph luminous版本的包,如果想用新版的ceph那只能通过编译安装的方式了
没有故事的陈师傅
2022/04/05
3.5K0
ceph在信创操作系统和服务器上安装
容器实战|手把手带你部署Ceph集群
部署Ceph之前我们需要对自身机器的环境做初始化。主要涉及到防火墙,主机名等设置。
灵雀云
2021/11/25
5K0
容器实战|手把手带你部署Ceph集群
Ceph:关于Ceph 集群如何访问的一些笔记
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
山河已无恙
2023/08/21
6490
Ceph:关于Ceph 集群如何访问的一些笔记
Luminous下删除和新建OSD的正确姿势
L版本开始极大的降低了对运维操作复杂度,新增了很多命令去确保数据安全,很多新手在删除OSD的时候很容易忽视了集群PGs的状态最终导致数据丢失,因此官方加入以下几个命令
用户1260683
2018/07/31
3.3K0
centos7搭建ceph集群
ceph需要epel源的包,所以安装的节点都需要yum install epel-release
匿名用户的日记
2021/12/31
1.7K0
相关推荐
ceph-简介及安装(luminous)版
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验