安全配置指南
为了保障用户在使用ohpm-repo过程中更加安全可靠,我们收集如下推荐安全配置项,用户可以根据自己的需要采纳配置。
最小权限启动
为降低风险,提高系统的稳定性和可维护性,ohpm-repo必须使用非root权限进行启动部署。
加密连接和监听具体地址
默认情况下,listen的配置值为http://localhost:8088,即使用HTTP协议,监听地址为localhost。为了数据传输更加安全,我们建议listen配置的监听地址使用具体机器ip,通信协议使用更安全的HTTPS,或者在ohpm-repo之上使用HTTPS反向代理 ;当使用自定义认证插件或者自定义存储插件时,如果存在网络通信,通信协议也建议使用HTTPS。
listen: https://<ohpm-repo部署机器ip>:8088
多实例部署
ohpm-repo用于存储私有仓库三方包数据,为了避免数据丢失,且保证ohpm-repo的高可用性,推荐元数据存储使用mysql,包数据存储使用自定义存储插件,通过使用负载均衡,部署ohpm-repo多个实例。
mysql存储
- type: 插件名称,配置为mysql。
- config: 插件配置,具体为:
- host: 数据库主机地址。
- port: 数据库端口。
- username: 数据库的用户名。
- password: 数据库的用户密码(请配置明文,最终在部署目录中会转换为密文)。
- database: 数据库名。
参考配置如下:
db:
type: mysql
config:
host: "localhost"
port: 3306
username: "tctAdmin"
password: "password"
database: "repo"
自定义存储
使用自定义插件存储,具体配置为:
- type: 插件名称,为custom,是自定义存储插件类型。
- config: 插件配置,具体为:
- export_name:待书写插件export的类名。
- plugin_path:插件的绝对路径或者相对于ohpm-repo软件包的路径,建议将插件放在软件包的plugins目录下。
- custom_field:自定义字段,通过引入ohpm-repo解压包中libs/common/getStorageConfigInfo.js的getStorageConfigInfo方法获取自定义字段的值。
- server: 本地仓库下载地址。
- 当配置项listen的host不为0.0.0.0时,则默认取listen的完整格式,例如listen为127.0.0.1:8088,故server默认值为
https://127.0.0.1:8088; - 如果配置项listen的host为0.0.0.0,则server中的host默认为localhost,如
https://localhost:8088。建议手动修改host为本机的ip/域名,例如listen为0.0.0.0:8088,故server需配置为https://<本机ip/域名>:8088; - 如果需要通过反向代理来访问ohpm-repo服务,则该字段须配置为反向代理服务器的域名地址。多实例部署ohpm-repo时必须配置反向代理服务器,且需要配置use_reverse_proxy值为true。
- 当配置项listen的host不为0.0.0.0时,则默认取listen的完整格式,例如listen为127.0.0.1:8088,故server默认值为
参考配置如下:
store:
type: custom
config:
export_name: "MyStorage"
plugin_path: "plugins/storagePlugin/MyStorage"
custom_field: "test"
#server: https://localhost:8088
禁止匿名访问
在默认设置下,ohpm-repo仓库中的所有包信息均可供任意用户自由查看,且包文件也支持任意用户下载。为了避免不相关的人访问ohpm-repo,我们建议在ohpm-repo管理界面的系统设置>系统安全页面,关闭匿名访问功能(默认保持开启)。关闭后,只有在.ohpmrc文件中正确配置仓库只读或读写AccessToken的用户才能够通过ohpm工具下载三方包,只有登录ohpm-repo账户,才能够访问ohpm-repo管理界面。

用户访问频率控制
为了避免恶意用户频繁对仓库进行访问操作,我们在配置文件中设置配置项user_rate_limit,默认单个用户访问接口的频率为100次/秒,配置范围为 (0, 10000]。
user_rate_limit: 100
用户上传次数控制
为了避免恶意用户频繁发布三方包,我们在配置文件中设置配置项upload_max_times,默认单个用户24小时内上传次数限制为100次,配置范围为 (0, 100000],用户可以根据自身业务需要修改此配置值,如改为1000次。
upload_max_times: 1000