Linux——redis理论、安全模型

一、redis 主要的data type

  1. redis 的原生客户端
  2. redis 支持通过python php golang 等语言连接
  3. redis 主要适用场景

二、redis如何进行数据存储

  1. 非关系数据库    不使用二维表   redis 使用键值对完成数据的存储
  2. redis一共有16个库 ,不同的库使用编号   0-15
  3. redis 在存储每一个键值对的时候,为键分配对应的slot
  4. redis优先在内存中完成数据的读取 写入 修改等操作   // redis 数据操作速度很快
  5.  redis的服务端进程在运行期间向操作系统申请内存,保存数据,一旦服务端进程停止,操作系统给进程分配的内存等系统资源都会回收,重新启动redis 服务端之后,进程再次向操作系统申请内存,操作系统将给进程 分配新的内存页,如果redis只在内存中保存数据那么就很容易发生数据丢失。内存属于易失性存储。
  6. 基于5的问题,redis 提出了数据持久化的策略
    • rdb   redis database 对数据进行快照,并保存到指定文件,再重启后从指定的快照文件恢复数据    
      1. rdb 持久化在大部分情况下都是默认启用
      2. save 时间:以秒为单位  次数:数据变更操作的次数     //在规定时间间隔中,数据变更的次数达到指定次数,则对redis进行快照.快照由bgsave 指令完成
      3. rdb文件名称  rdbfilename
      4. 文件的保存位置 dir
      5. 在每一次redis 服务端进程停止的时候,自动执行一个bgsave 更新rdb数据快照
    • aof   append only file 持续追踪redis数据变更,并将数据变更的指令写入aof文件中,所以aof 文件实际是记录redis数据操作的日志文件
      1. aof持久化在更新aof文件,有三种策略   appendfsync
        1. no      使用操作系统默认时间设置更新AOF文件,一般在linux操作系统中为半个小时       更新需要的时间更久,也比较容易发生数据丢失的情况
        2. everysec 每一秒更新AOF文件     文件更新速率更加频繁,数据不容易丢失
        3. always  追踪每一个数据变更操作,一旦发生就更新到AOF文件中  最不可能发生数据丢失,但是需要频繁更新AOF文件
      2. aof 策略默认不启用,需要手动启用
        1. appendonly   值为yes 代表启用,值为no代表不启用
      3. aof 因为是一个只增文件,所以文件大小会不断增加,所以在文件大小超过一定大小后,需要对文件进行重写,以压缩AOF文件大小
        1. aof的重写策略
          1. 文件大小
          2. 和文件相较于上一次重写时的大小
        2. AOF文件的重写 是通过 bgrewriteaof 指令实现
      4. 在aof 和 rdb 同时启用情况下,redis 优先从aof文件进行数据恢复,rdb文件就会被忽略
      5. 在同时启用的情况下,一定要保证在启用aof前通过,先创建AOF文件,否则可能发生数据丢失的情况

三、redis 的安全模型

  1. redis 默认情况下,所有的数据操作由一个叫default的用户完成,这个用户没有使用任何的密码保护,并且所有的redis实例都有default
  2. redis 默认情况下 仅监听环回口 lo逻辑端口 redis 还支持通过socket 套接字文件进行访问 以上的链接服务端的设置,都限制redis的客户端必须和redis服务端在同一个节点
  3. 如果redis 被配置为监听非LOOPBACK地址后,需要开启保护模式,在保护模式下,所有用户的访问必须要验证密码,仅允许在127.0.0.1 上登录redis的用户不需要验证口令

修改redis监听系统中所有的可用地址

vim  /etc/redis/redis.conf

 4. requirepass

可以直接配置一个访问redis实例的密码 所有客户端对于redis服务端的访问都使用同一个密码,同时密码以明文传输 所以安全性不够,redis更推荐使用专门的acl指令 另外配置用户 密码 和权限

redis 验证用户口令的命令  

auth  [用户名] 密码

[root@bogon ~]# systemctl restart redis
[root@bogon ~]# redis-cli  
127.0.0.1:6379> 
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.			// 提示需要密码
127.0.0.1:6379> auth redhat123
OK
127.0.0.1:6379> keys *1) "bike2"2) "counter"3) "set2"4) "bike:3"5) "newke"6) "bike"7) "queue2"8) "game_event"9) "bike:2"
10) "eee"
11) "site1"
12) "sset1"
13) "bike:1"
14) "set1"
15) "newqueue"
16) "bike1"
127.0.0.1:6379> exit

5.ACL 指令

确保用户在使用给定用户访问时,使用最小权限

acl list 列出redis中所有的用户 密码  权限

 

127.0.0.1:6379> acl list 
1)"user default on nopass ~* &* +@all"			// 默认用户default的基本信息 
用户default 账号启用,用户账号没有设定密码,允许用户控制所有的键值对和频道,用户有权运行任何redis指令
a.user 			// 用户账号
b.default		// 用户名 
c.on 			// 用户账号启用 即此用户可以访问redis数据库
d.nopass		// 当前用户无密码    用户密码
// >密码   设置密码 此处提交明文密码,由redis进行加密
// #加密后的字符串 此处直接使用加密后的字符串提交,无需redis	// 进行机密 提交的字符串必须使用sha256 进行加密
e.~*			// 允许访问的键名  ~ 允许访问的键名 键的名匹配模式  * 
// redis 7.0 以上的版本还可以详细区分读写权限 
// %RW~键名匹配模式      
f.&*			// redis 在作为消息队列使用时,可以进行消息队列的建立和发布
// 建立不同的消息队列时,会使用publish发布频道 和
// scribe 命令实现订阅频道
// & 限制对于频道的订阅
// &频道名称的匹配模式
// &* 开放所有的channel(频道)
g.+@all		// 授权命令,
// +命令1|子命令或者参数…… 授权用户可以使用
// -命令1|子命令 或者参数……  禁止用户使用的命令 
// @all 代表所有的指令(6)创建用户以及设置用户权限 
acl setuser 
acl load 文件名
acl list    以acl文件格式列出用户信息
acl getuser 用户名  	已较有条理的方式列出用户的基本信息
acl deluser 用户名 	删除用户
acl whoami 查看当前登录用户
acl users   列出所有用户
acl save    将当前的用户配置保存到ACL文件127.0.0.1:6379> ACL SETUSER alice 
OK
127.0.0.1:6379> acl list 
1) "user alice off &* -@all"

alice 用户账号未启用  没有授权任何键和命令的使用 但是可以访问所有的频道 redis不同版本用户的初始化设定不同

启用用户,并给用户设定对应的权限

127.0.0.1:6379> ACL SETUSER alice on 			// 启用用户
OK
127.0.0.1:6379> acl list 
1) "user alice on &* -@all"
2) "user default on nopass ~* &* +@all"
127.0.0.1:6379> ACL SETUSER alice >redhat			// 设置密码
OK
127.0.0.1:6379> ACL LIST
1) "user alice on #7d3b5c83009fadf734c06eeecd7fbe256c69f71c8ba0429e4d7ad5f54b2e4097 &* -@all"
2) "user default on nopass ~* &* +@all"
127.0.0.1:6379> ACL SETUSER alice -@all +set +get			//授权命令 
OK
127.0.0.1:6379> ACL GETUSER alice 1) "flags"2) 1) "on"2) "allkeys"3) "allchannels"3) "passwords"4) 1) "7d3b5c83009fadf734c06eeecd7fbe256c69f71c8ba0429e4d7ad5f54b2e4097"5) "commands"6) "-@all +get +set"7) "keys"8) 1) "*"9) "channels"
10) 1) "*"
127.0.0.1:6379> auth alice redhat
OK
127.0.0.1:6379> get eee
"5555"
127.0.0.1:6379> set alice newuser
OK
127.0.0.1:6379> get alice 
"newuser"
127.0.0.1:6379> del alice 		// 这里删除键 缺少权限
(error) NOPERM this user has no permissions to run the 'del' command or its subcommand
127.0.0.1:6379> ACL SETUSER alice +@string 
OK
127.0.0.1:6379> ACL SETUSER default >redhat
OK
127.0.0.1:6379> acl list 
1) "user alice on #7d3b5c83009fadf734c06eeecd7fbe256c69f71c8ba0429e4d7ad5f54b2e4097 ~* &* -@all +@string"
2) "user default on #7d3b5c83009fadf734c06eeecd7fbe256c69f71c8ba0429e4d7ad5f54b2e4097 ~* &* +@all"
127.0.0.1:6379> auth alice redhat
OK
127.0.0.1:6379> set a_kay asfsdfa
OK
127.0.0.1:6379> get a_key
(nil)
127.0.0.1:6379> mset b_ksy asdasfa c_key sdfdsfs
OK
127.0.0.1:6379> mget a_key b_key c_key
1) (nil)
2) (nil)
3) "sdfdsfs"
127.0.0.1:6379> mget a_kay b_ksy c_key
1) "asfsdfa"
2) "asdasfa"
3) "sdfdsfs"
127.0.0.1:6379> auth default redhat   //使用auth 可以直接在不同用户之间切换 
OK
127.0.0.1:6379> acl list 
1) "user alice on #7d3b5c83009fadf734c06eeecd7fbe256c69f71c8ba0429e4d7ad5f54b2e4097 ~* &* -@all +@string"
2) "user default on #7d3b5c83009fadf734c06eeecd7fbe256c69f71c8ba0429e4d7ad5f54b2e4097 ~* &* +@all"

在为用户设置密码后,登录redis库的操作方法:

[root@bogon ~]# redis-cli --user default --pass redhat		// 使用明文密码
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> exit
[root@bogon ~]# redis-cli --user default --askpass		// 不显示明文密码
Please input password: ******
127.0.0.1:6379> exit[root@bogon ~]# redis-cli 			// 连接redis服务器之后再登录
127.0.0.1:6379> auth default redhat
OK

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/53188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式-装饰器代理观察者

3.7 装饰器模式(代码见vs) 装饰器又叫做包装模式,允许向一个现有的对象添加新的功能,同时又不改变其结构。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法完整性的前提下,提供了额…

前端报文加密

前端加密功能 前端提供简单的AES对称加密算法,注意key 和后端网关配置相同,这里打包混淆后,相对安全。 (lun-ui\src\store\modules\user.js、base-gateway-dev.yml) 后端解密功能 使用hutool提供的工具类进行解密pub…

Linux之grafana+onealert报警

grafana介绍 Grafana是一个开源的度量分析和可视化工具,可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警。 grafana安装与登录 在grafana服务器上安装grafana 下载地址:https://grafana.com/grafana/downloa…

Opencv中的直方图(4)局部直方图均衡技术函数createCLAHE()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 创建一个指向 cv::CLAHE 类的智能指针并初始化它。 函数原型 Ptr<CLAHE> cv::createCLAHE (double clipLimit 40.0,Size tileGridSize…

12、Django Admin在列表视图页面上显示计算字段

两种方法&#xff1a; 注册模型有两种方式&#xff0c;需要首先添加或者修改admin中的注册模型如下方式 admin.register(Origin) class OriginAdmin(admin.ModelAdmin):list_display ("name",) 1、在models的模型类中添加函数 def hero_count(self,):return sel…

评价决策类——层次分析法+数学建模+实战分析

目录 一、前言 二、历年题型分析 2.1 常用算法归纳 2.1.1 优化类算法 2.1.2 预测类算法 2.1.3 评价决策类 2.1.4 NP-hard类 2.2 评价类模型求解 2.2.1 层次分析法&#xff08;AHP&#xff09; 2.2.2 多指标评价法&#xff08;MCDA&#xff09; 2.2.3 算法区别 三、层…

如何把自动获取的ip地址固定

在大多数网络环境中&#xff0c;‌设备通常会自动从DHCP服务器获取IP地址。‌这种动态分配IP的方式虽然灵活方便&#xff0c;‌但在某些特定场景下&#xff0c;‌我们可能需要将设备的IP地址固定下来&#xff0c;‌以确保网络连接的稳定性和可访问性。‌本文将详细介绍如何把自…

MySQL-基础篇-事务(事务简介、事务操作、事务的四大特性、并发事务引发的问题、事务的隔离级别)

文章目录 1. 事务简介2. 事务操作2.1 未控制事务2.2 控制事务2.2.1 查看事务的提交方式2.2.2 设置事务的提交方式2.2.3 提交事务2.2.4 回滚事务2.2.5 开启事务2.2.6 完善转账案例 3. 事务的四大特性&#xff08;ACID&#xff09;4. 并发事务引发的问题5. 事务隔离级别5.1 演示5…

羊大师:白露养生经,羊奶不可少

随着秋风渐起&#xff0c;白露悄然而至&#xff0c;自然界中的万物开始展现出成熟与收获的喜悦。在这个季节转换的微妙时刻&#xff0c;我们的身体也需要顺应天时&#xff0c;进行一番细致的调养。白露养生&#xff0c;不仅是对自然的敬畏&#xff0c;更是对健康生活的追求。 在…

橘子学ES实战操作之管道类型Ingest pipelines的基本使用

简介 我们在使用ES的时候&#xff0c;经常的用法就是把其他数据源比如Mysql的数据灌到ES中。 借用ES的一些功能来提供数据的全文检索以及聚合分析之类的功能。 在这个灌数据的过程中&#xff0c;我们经常会对数据做一些治理&#xff0c;类似ETL的能力。然后把治理后的数据写入…

Eclipse 自定义字体大小

常用编程软件自定义字体大全首页 文章目录 前言具体操作1. 打开设置对话框2. 打开字体设置页面3. 找到Text Font&#xff0c;点击修改4. 修改字体 前言 Eclipse 自定义字体大小&#xff0c;统一设置为 Courier New &#xff0c;大小为 三号 具体操作 【Windows】>【Perfer…

Mac M1 安装Hadoop教程(安装包安装)

一、引言 前面一期&#xff0c;我分享了通过homebrew方式安装Hadoop&#xff0c;本期我将通过安装包方式介绍下hadoop如何安装。二、下载open jdk8 官方下载地址 注意如果是x86架构的苹果电脑&#xff0c;Architecture选择x86 64-bit或者 x86-32bit。 下载后&#xff0c;将得…

移动UI:成就勋章页面该如何设计,用例子说明。

移动应用的UI成就勋章页面通常是一个展示用户在应用中取得成就和获得勋章的页面。这种页面通常用于激励用户参与应用的活动&#xff0c;增加用户的参与度和忠诚度。 UI设计成就勋章页面时&#xff0c;一般会包括以下元素和功能&#xff1a; 1. 勋章列表&#xff1a; 展示用户…

Codeforces Round 970 (Div. 3) (个人题解)(未补完)

前言&#xff1a; 昨天晚上的比赛&#xff0c;可惜E题太笨了没想到如何解决&#xff0c;不过好在看到F过的多直接跳过去写F了&#xff0c;能过个5个也还不错了&#xff0c;而且一个罚时也没吃。之后的题我还是会再能补的时候补完的噢&#xff01; 正文&#xff1a; 链接&…

Context-Aware Depth and Pose Estimation for Bronchoscopic Navigation翻译

文章目录 摘要1.引言2. 相关工作3. 方法概述3.1. 基于CT数据的虚拟深度生成3.2. 基于视频帧的上下文感知深度估计3.3. 方法概述3.3.1. 从CT数据生成虚拟深度图3.3.2. 基于上下文感知的深度估计从视频帧中3.3.3. 相机姿态估计通过 2D/3D 配准 4. 实验4.1. 数据集和基线4.2. 实现…

【C++ Primer Plus习题】10.8

问题: 解答: main.cpp #include <iostream> #include "List.h" using namespace std;int main() {Item item 0;List list;cout << "请输入item(0结束):";cin >> item;while (item!0){cin.get();list.add(item);cout << "请…

C4单细胞|国产平台解密睾丸肿瘤细胞“朋友圈”

单细胞&#xff08;核&#xff09;转录组学已成为生命科学研究的基础工具&#xff0c;在疾病、免疫、生命演化、器官结构、发育等领域发挥重要作用&#xff0c;但规模化研究往往是制约单细胞层面研究的重要因素。为了突破单细胞研究门槛高、费用高的瓶颈&#xff0c;凌恩生物重…

CentOS 7 上安装 JDK 8 的步骤:

CentOS 7 上安装 JDK 8 的步骤&#xff1a; 一、下载 JDK 1.可以从 Oracle 官网下载 JDK 8&#xff0c;但需要注册账号。也可以从其他可靠的镜像站点下载。 jdk.java.net http://jdk.java.net/ 2.例如&#xff0c;可以从 Oracle 官网下载 Linux 版本的 JDK 8 压缩包&#x…

自建DCI为何超过租赁DCI:优势探索

在现代数据的基础设施发展过程中&#xff0c;数据中心&#xff08;DCI&#xff09; 的自建和租赁选择变得越来越关键。随着对数据传输需求的增加和行业的发展&#xff0c;运行商必须要仔细考虑哪种方法更符合其战略目标和运营要求。相较于租赁式DCI的便捷性和灵活性&#xff0c…

CSS3换装达人原理

引言 换装或者是换皮肤是常见的行为&#xff0c;我们可以先看下效果&#xff1a; 选择不同的颜色&#xff0c;就可以秒变人物服装的颜色&#xff0c;原理其实非常简单 实现步骤 主要分为三步&#xff0c;即素材的提供、布局样式、动态控制 图片提供 提供两张图片&#xf…