monio 的一些安全實踐
阿新 • • 發佈:2020-07-18
這個本來屬於s3 的特性,但是我們在實際使用的過程中肯定不想別人直接可以通過瀏覽器或者http就可以可以我們的檔案內容
這個屬於安全的控制,以下是一個實踐以及一些安全控制
一些原則
- 不能直接暴露minio 訪問到公網環境(可以基於nginx,以及反向代理工具解決)
- 配置合理的bucket 策略,可以直接使用預設的,但是對於網際網路訪問最好合理配置policy,對於靜態站點使用按需 read only
- 推薦基於nginx 做lb 以及cache
- 禁用管理介面
MINIO_BROWSER=off
- 可以基於nginx 的rewrite 以及if 控制public 列表檔案的展示(xml 檔案內容列表)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