百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

分布式存储Minio+加密存储KMS单节点部署

bigegpt 2024-08-10 12:05 12 浏览

官方对MinIO的介绍是:高性能,Kubernetes原生支持的对象存储系统。MinIO的高性能软件定义对象存储套件可以使用户能够为机器学习、分析和应用程序数据工作负载构建云原生支持的数据基础设施,有关MINIO的详细介绍我就不做详细介绍,只讲解MINIO结合KMS对对象加解密存储。

本次部署操作系统为:Centos 7

IP:192.168.1.170

官网:https://min.io/

官方文档: https://docs.min.io/cn/

一 结构图

二 部署Minio

2.1 下载minio并添加执行权限,然后移动到/usr/local/sbin,方便启动服务

# wget https://dl.min.io/server/minio/release/linux-amd64/minio
# chmod +x minio
# mv minio /usr/local/sbin/

2.2 启动脚本

创建minio脚本及配置的路径

# mkdir -p /usr/local/minio/{etc,bin}

编辑配置文件,里面配置环境变量,启动服务需要

# vim /usr/local/minio/etc/minio.conf

export MINIO_KMS_KES_ENDPOINT=https://192.168.1.170:7373
export MINIO_KMS_KES_KEY_FILE=/opt/miniokes/minio.key
export MINIO_KMS_KES_CERT_FILE=/opt/miniokes/minio.cert
export MINIO_KMS_KES_KEY_NAME=my-minio-key
export MINIO_KMS_KES_CA_PATH=/opt/miniokes/server.cert
export MINIO_KMS_AUTO_ENCRYPTION=on
export MINIO_ACCESS_KEY=minioadmin
export MINIO_SECRET_KEY=minioadminpwd
export MINIO_DATA_DIR=/miniodata

此处配置文件路径/opt/miniokes/为kes和minio需要用到的路径,存放它们会用到的密钥、证书、私钥等

2.3 编辑启动脚本

编辑脚本
# vim /usr/local/minio/bin/run.sh
#!/bin/bash
. /usr/local/minio/etc/minio.conf
minio server $MINIO_DATA_DIR
# chmod +x /usr/local/minio/bin/run.sh

创建systemctl管理文件
# vim /usr/lib/systemd/system/minio.service
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/

[Service]
WorkingDirectory=/usr/local/minio/
ExecStart=/usr/local/minio/bin/run.sh
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

2.4 添加开机启动并启动服务

# systemctl enable minio.service
# systemctl start minio.service

2.5 使用nginx反向代理minio

# vim /usr/local/nginx/conf/nginx.conf       ---在http下面添加server
#minio http
    server {
        listen 80;
        server_name test-minio.xxxx.com;
        ignore_invalid_headers off;
        client_max_body_size 0;
        proxy_buffering off;
        location / {
            proxy_pass http://192.168.1.170:9000/;
            proxy_set_header       Host $http_host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header  X-Forwarded-Proto $scheme;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            chunked_transfer_encoding off;
        }
    }

#minio https
    server{
        listen 443 ssl;
        server_name test-minio.xxxx.com;
        ssl_certificate /opt/keys/sqianbao_cn.crt;
        ssl_certificate_key /opt/keys/sqianbao_cn.key;
        ssl_session_timeout 5m;
        error_page 500 502 503 504 /50x.html;
        client_max_body_size 0;
        location  / {
            proxy_pass http://192.168.1.170:9000/;
            proxy_set_header       Host $host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto https;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            chunked_transfer_encoding off;
       }

    }

# nginx -t
# nginx -s reload

三 部署minio客户端mc

3.1 下载客户端mc

# wget https://dl.min.io/client/mc/release/linux-amd64/mc
# chmod +x mc
# mv mc /usr/local/sbin/

3.2 添加服务端相关信息并测试

# mc config host add minio http://192.168.1.170:9000 minioadmin minioadminpwd --api "s3v4" ---添加服务器信息
创建bucket
# mc mb minio/test
上传文件
# mc cp ./20200714142040.png minio/test
列出minio有哪些bucket或者bucket有哪些文件
# mc ls minio/test
设置bucket权限,目前可以设置这四种权限:none, download, upload, public
# mc policy set public minio/test 设置服务器,test bucket为public,即可用url直接下载(永久链接)
浏览public的bucket文件
# mc policy --recursive links minio/test 浏览public的bucket文件,并打印出下载链接 ,bucket不是public输出为空
http://192.168.1.170:9000/test/20200714142040.png
查看bucket权限
# mc policy list minio/test/
test/* => readwrite

四 部署KES

4.1 下载kes

# wget https://github.com/minio/kes/releases/latest/download/kes-linux-amd64
# chmod +x kes-linux-amd64
# mv kes-linux-amd64 /usr/local/sbin/kes

4.1 创建路径

# mkdir /opt/miniokes
# cd /opt/miniokes

4.2 自建CA证书

如果kes使用权威机构颁发的证书,就不需要此操作。kes配置文件server-config.yml的tls项就配置权威机构颁发的证书存放路径。

创建私钥
# openssl ecparam -genkey -name prime256v1 | openssl ec -out server.key
用上一步的私钥使用TLS X.509创建证书(此处生产的CA证书有效期可以设置长一些,避免证书频繁更换)
# openssl req -new -x509 -days 36500 -key server.key -out server.cert -subj "/C=/ST=/L=/O=/CN=localhost" -addext "subjectAltName = IP:192.168.1.170"

注意,如果出现提示-addext参数不支持,则升级openssl为1.1及以后版本
升级方法
# wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
# tar xvf openssl-1.1.1g.tar.gz
# cd openssl-1.1.1g/
# ./config
# make && make install
# cp libcrypto.so.1.1 libssl.so.1.1 /usr/lib64/
查看版本(如果版本没更新,另外开一个窗口执行就可以了)
# openssl version
OpenSSL 1.1.1g  21 Apr 2020

4.3 创建minio访问kes所需私钥和证书

使用kes创建minio所需私钥和证书(此证书和私钥及密钥务必保存好)
# kes tool identity new --key=minio.key --cert=minio.cert MinIO
查看证书身份信息(kes配置文件server-config.yml的identities需要配置下面命令的输出内容)
# kes tool identity of minio.cert
  Identity:  7bfa6c28975e1d8ec885da45511f1352e1dbf8fc601d9c609c9b0a7653aa61ab

4.4 编辑kes配置文件

# vim server-config.yml
address: 0.0.0.0:7373
root:    disabled  # We disable the root identity since we don't need it in this guide 

tls:
  key : /opt/miniokes/server.key
  cert: /opt/miniokes/server.cert

policy:
  my-app:
    paths:
    - /v1/key/create/my-minio-key
    - /v1/key/generate/my-minio-key
    - /v1/key/decrypt/my-minio-key
    identities:
    - 7bfa6c28975e1d8ec885da45511f1352e1dbf8fc601d9c609c9b0a7653aa61ab
keys:
  fs:
    path: /opt/miniokes/keys # Choose a location for your secret keys

讲解:
policy:策略
may-app: 此处设置策略别名,自定义
v1是kes内置的规则库,create,generate,decrypt是权限,my-minio-key即为kes key create my-minio-key -k生成的密钥文件

4.5 编写脚本

# mkdir -p /usr/local/kes/bin/
# vim /usr/local/kes/bin/run.sh
#!/bin/bash
#--auth=off,因为是用的自签证书,所有跳过验证
kes server --config=/opt/miniokes/server-config.yml --auth=off
# chmod +x /usr/local/kes/bin/run.sh

创建systemctl管理文件
# vim /usr/lib/systemd/system/kes.service
[Unit]
Description=KES service
Documentation=https://github.com/minio/kes

[Service]
WorkingDirectory=/usr/local/kes/
ExecStart=/usr/local/kes/bin/run.sh
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

4.6 添加开机启动,并启动kes

# systemctl enable kes.service
# systemctl start kes.service

4.5 kes创建的私钥及证书创建密钥文件

通过kes创建的私钥及证书创建密钥文件(用于匹配加密规则后的认证)
# export KES_CLIENT_CERT=minio.cert
# export KES_CLIENT_KEY=minio.key
创建加解密所需密钥(一定要保存好,如果丢失将不能)
# kes key create my-minio-key -k

注意:此步骤必须是启动kes服务后,才可执行,否则汇报连不上kes

4.7 重启minio和kes

# systemctl restart minio.service
# systemctl restart kes.service


五 错误排查

测试的时候打开minio实时日志

# journalctl -u minio.service -f

错误实例如下:

错误1:
Error: Post https://192.168.1.170:7373/v1/key/generate/my-minio-key: dial tcp 192.168.1.170:7373: connect: connection refused
此错误表示kes服务没有启动,请启动kes

错误2:
Error: Post https://192.168.1.170:7373/v1/key/generate/my-minio-key: x509: cannot validate certificate for 192.168.1.170 because it doesn't contain any IP SANs .'
表示openssl生成的证书server.cert没有包含IP等信息(比如生成命令:openssl req -new -x509 -days 30 -key server.key -out server.cert -subj "/C=/ST=/L=/O=/CN=localhost" 此处没有-addext "subjectAltName = IP:xxx.xxx.xxx.xxx")

错误3:
Error: Post https://192.168.1.170:7373/v1/key/generate/my-minio-key: x509: certificate signed by unknown authority
表示kes配置文件(/usr/local/minio/etc/minio.conf)没有配置变量 MINIO_KMS_KES_CA_PATH;如果用的是权威机构颁发的证书minio.conf就不需要设置此变量

错误4:
Error: Unable to setup KMS with current KMS config: crypto: '/opt/miniokes/server.key' is not a valid PEM-encoded certificate
表示kes配置文件(/usr/local/minio/etc/minio.conf)MINIO_KMS_KES_CA_PATH变量配置的是/opt/miniokes/server.key,这里需要配置为/opt/miniokes/server.cert

错误5:
Error: prohibited by policy
表示kes配置文件(server-config.yml)的加解密规则不匹配(即配置错误)

错误6:
Error: ciphertext is not authentic
表示加解密证书不匹配,不能加解密(此错误出现在加解密证书更换或者丢失)

相关推荐

5分钟调色大片的方法(5分钟调色大片的方法有哪些)

哈喽大家好。在大家印象中一定觉得ps非常难学非常难。大家不要着急,小编的教学都是针对ps零基础的同学的,而且非常实用哦。只要大家跟着图文练习一两遍,保证大家立马学会~!好了,废话少说,下面开始我们今天...

闪白特效原来是这么用的(闪白特效怎么使用)

作者|高艳侠订阅|010-86092062闪白特效是影视作品中应用比较多的效果之一,那么具体该在哪些场景使用闪白特效?具体该如何操作?下面就以AdobePremiere(以下简称PR)为例,...

ppt常用小图标去哪里找?3个矢量素材网站推荐!

ppt是一个注重可视化表达的演示载体,除了高清图片,ppt中另一类常用的素材是各种小图标,也叫矢量图标,巧妙运用小图标能提升整体美观度和表现力,那么ppt常用小图标去哪里找呢?为方便各位快速找到合适的...

有什么好用的截图录屏工具?试试这9款

经常有朋友反馈苦于缺乏截屏和录屏的趁手工具,本期我们分享几个相当好用的截屏和录屏工具,希望能帮到大家。ScreenToGifScreenToGif是一款免费且开源的录屏工具。此款工具最大的特点是可以...

配色苦手福音!专业快速色环配色PS插件

今天橘子老师给的大家介绍的是一款快速配色的插件,非常强大配色苦手福音来啦!(获取方式见文末)【插件介绍】配色在后期设计中占有主导地位,好的配色能让作品更加抢眼Coolorus这款专业的配色插件,能够...

如何用PS抠主体?(ps怎么抠主体)

1.主体法抠图-抠花苞和花梗导入一张荷花苞的照片,点击上图中顶部“选择”菜单栏,下拉单击“主体”。可以看到,只有花苞被选中,但是花梗并没有被选中。接下来单击上图中左侧工具栏的“快速选择工具”,上图中顶...

2799元的4K电视,有保障吗?(买4k电视机哪个品牌好)

在上一期《电脑报》的3·15专题报道中,我们揭露了一款不靠谱的42英寸4K智能电视——TCLD42A561U。这款售价2699元的4K智能电视不仅4K画质方面存在严重问题,而且各种功能和应用体验也不理...

苹果电脑的Touch Bar推出一段时间了 这款工具可以帮你开发适用于它的APP

距离苹果推出带有TouchBar的MacBookPro已经有一段时间了,除了那些像Adobe、Google和Microsoft大公司在开发适用于TouchBar的应用之外,其实还有很多独立的开...

如魔法般吸取颜色的桌灯(如魔法般吸取颜色的桌灯叫什么)

色彩为生活带来的感官刺激,逐渐被视为理所当然。一盏桌灯运用它的神奇力量,将隐藏于物件中的颜色逐一释放,成为装点环境的空间魔法师。ColorUp是一款可以改变颜色的吸色台灯,沿用传统灯泡的造型,融入了拾...

一篇文章带你用jquery mobile设计颜色拾取器

【一、项目背景】现实生活中,我们经常会遇到配色的问题,这个时候去百度一下RGB表。而RGB表只提供相对于的颜色的RGB值而没有可以验证的模块。我们可以通过jquerymobile去设计颜色的拾取器...

ps拾色器快捷键是什么?(ps2019拾色器快捷键)

ps拾色器快捷键是什么?文章末尾有获取方式,按照以下步骤就能自动获得!学会制作PS特效需要一定程度的耐心和毅力。初学者可以从基本的工具和技术开始学习,逐渐提高他们的技能水平。同时,观看更多优秀的特效作...

免费开源的 Windows 截图录屏工具,支持 OCR 识别和滚动截图等

功能很强大、安装很小巧的免费截图、录屏工具,提供很多使用的工具来帮我么能解决问题,推荐给大家。关于ShareXShareX是一款免费的windows工具,起初是一个小巧的截图工具,经过多年的迭...

入门到精通系列PS教程:第13篇 · 拾色器、颜色问题说明及补充

入门到精通系列PS教程:第13篇·拾色器、颜色问题说明及补充作者|侯潇问题说明我的第12篇教程里,有个小问题没有说清楚。要说是错误,又不算是错误,只是没有说准确。写完那篇教程后,因为已经到了深...

PS冷知识:用吸管工具吸取屏幕上的任意颜色

今天,我们给大家介绍PS中的一个冷知识:用吸管工具可以吸取屏幕上的任意颜色。其实,操作起来是非常简单的。大多数情况下,我们认为,PS的吸管工具只能吸取PS软件作图区域范围内的颜色,最多加上画布四周的...

Windows 11 将提供内置颜色选择器工具

Windows11内置了颜色选择器,可以扫描并识别屏幕上的颜色并生成颜色代码。此外,微软还利用人工智能技术,让屏幕上的文本扫描和选择变得更加便捷。这两项功能均已在SnippingToolv1...