monio 的一些安全实践
这个本来属于s3 的特性,但是我们在实际使用的过程中肯定不想别人直接可以通过浏览器或者http就可以可以我们的文件内容
这个属于安全的控制,以下是一个实践以及一些安全控制
一些原则
- 不能直接暴露minio 访问到公网环境(可以基于nginx,以及反向代理工具解决)
- 配置合理的bucket 策略,可以直接使用默认的,但是对于互联网访问最好合理配置policy,对于静态站点使用按需 read only
- 推荐基于nginx 做lb 以及cache
- 禁用管理界面
MINIO_BROWSER=off
- 可以基于nginx 的rewrite 以及if 控制public 列表文件的展示(xml 文件内容列表)openresty 的access_by_lua_block 更好点(基于正则,比较推荐)
openresty access_by_lua_block 的配置
location ~* ^/demo {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
client_body_buffer_size 10M;
client_max_body_size 10G;
proxy_buffers 1024 4k;
default_type text/html;
access_by_lua_block {
-- 对于demo 的minio bucket 禁用列表列出
local m, err = ngx.re.match(ngx.var.uri,[[^(\/demo)(\d+)(\/?)$]])
if m then
ngx.exit(ngx.HTTP_FORBIDDEN)
end
}
index index.html index.htm index;
proxy_read_timeout 300;
proxy_next_upstream error timeout http_404;
proxy_pass http://minio:9000;
}
说明
以上是一些自己的实践,欢迎讨论
参考资料
https://docs.min.io/cn/minio-server-configuration-guide.html
https://github.com/openresty/lua-nginx-module#access_by_lua_block