01 密码管理方案
密码管理方案(VaultWarden)¶
背景¶
1、 为了解决部门之间密码共享问题,故调研部门之间密码之间共享产品
支撑:
- 支持SMTP邮箱, 如果不设置,不支持账号验证
- docker
- tls 可信证书
2、 权限管理
| 用户名 | 权限 |
|---|---|
| cmzhu | admin |
| test01 | cmzhu项目只读权限 |
| test02 | cmzhu项目只读权限 |
安装部署¶
docker 部署 VaultWarden ,docker-compose.yaml参考如下配置:
version: '3'
services:
vaultwarden:
image: vaultwarden/server:1.34.3
container_name: vaultwarden
restart: unless-stopped
ports:
- "443:80"
volumes:
- ${PWD}/vw-data:/data
- ${PWD}/tls:/tls
environment:
- ROCKET_TLS={certs="/tls/test.crt",key="/tls/test.key"}
- SMTP_HOST=smtp.qiye.aliyun.com
- SMTP_FROM=testwardon@cmzhu.cn
- ROCKET_WORKERS=8 ## 根据实际情况优化配置
- SMTP_PORT=587
- SMTP_SECURITY=starttls
- SMTP_USERNAME=testwardon@cmzhu.cn
- SMTP_PASSWORD=123456
- SIGNUPS_ALLOWED=true
- DOMAIN=https://vaultwarden.cmzhu.cn
- DATABASE_URL=postgresql://vaultwarden:123456@db:5432/vaultwarden
db:
image: postgres
restart: always
shm_size: 128mb
volumes:
- type: tmpfs
target: /dev/shm
tmpfs:
size: 134217728 # 128*2^20 bytes = 128Mb
- ${PWD}/postgres_data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=123456
- POSTGRES_USER=vaultwarden
- POSTGRES_DB=vaultwarden
从 v1.25.0 开始,用于 SMTP SSL/TLS 配置的环境变量已更新为
SMTP_SECURITY(之前的有误导性,参阅错误 #851)。当SMTP_SECURIT设置为starttls时(这是默认值),将仅接受 TLSv1.1 和 TLSv1.2 协议,并且SMTP_PORT默认为587。如果设置为off,SMTP_PORT则默认设置为25并将尝试加密(2020 年 3 月 12 日之前的代码不会尝试加密)。这是非常不安全的,仅在您知道您在做什么时才使用此设置。要以隐式模式(强制 TLS)运行 SMTP,请将SMTP_SECURITY设置为force_tls。如果您不登录也可以发送电子邮件,简单地将SMTP_USERNAME和SMTP_PASSWORD设置为空即可。
针对每一种端口的常见设置:
- 对于使用端口 465 的邮件服务器
复制
SMTP_PORT=465
SMTP_SECURITY=force_tls
- 对于使用端口 587(有时候是 25)的邮件服务器
复制
SMTP_PORT=587
SMTP_SECURITY=starttls
- 对于根本不支持加密的邮件服务器
复制
SMTP_PORT=25
SMTP_SECURITY=off
禁用新用户注册¶
默认情况下,可以访问实例的任何人均可以注册新的账户。要禁用该功能,请将 SIGNUPS_ALLOWED 环境变量设置为 false:
注意:当 SIGNUPS_ALLOWED=false 时,网页密码库用户界面将不会显示 Create Account 按钮。 无论设置如何,仍然可以邀请。
将注册限制为某些电子邮箱域名¶
您可以通过设置 SIGNUPS_DOMAINS_WHITELIST 来限制只能某些域名的电子邮箱地址可以注册。示例:
SIGNUPS_DOMAINS_WHITELIST=example.com(单个域名)SIGNUPS_DOMAINS_WHITELIST=example.com,example.net,example.org(多个域名)
如果设置了 SIGNUPS_DOMAINS_WHITELIST,SIGNUPS_ALLOWED=false的值将被忽略。
您可能还想设置 SIGNUPS_VERIFY=true,这要求新注册的用户在成功登录前进行电子邮箱验证。这可以防止有人用一个拥有正确域名的假电子邮箱地址注册。
邀请¶
Vaultwarden 管理员可以通过管理页面邀请任何人,不受以上限制。如果 SMTP 被禁用,用户应访问 https://example.com/#/register 然后使用邀请的电子邮箱注册。
VaultWarden 使用¶
管理员配置¶
1、注册用户,使用邮箱注册用户,在管理员完成注册之后,即可关闭用户注册功能,确保用户都是在职可用用户
version: '3'
services:
vaultwarden:
image: vaultwarden/server:1.34.3
container_name: vaultwarden
restart: unless-stopped
ports:
- "443:80"
volumes:
- ${PWD}/vw-data:/data
- ${PWD}/tls:/tls
environment:
- ROCKET_TLS={certs="/tls/test.crt",key="/tls/test.key"}
- SMTP_HOST=smtp.qiye.aliyun.com
- SMTP_FROM=testwardon@cmzhu.cn
- ROCKET_WORKERS=8 ## 根据实际情况优化配置
- SMTP_PORT=587
- SMTP_SECURITY=starttls
- SMTP_USERNAME=testwardon@cmzhu.cn
- SMTP_PASSWORD=123456
- SIGNUPS_ALLOWED=false # 关闭用户注册功能
- DOMAIN=https://xxx.downloadcenter.site
- DATABASE_URL=postgresql://vaultwarden:123456@db:5432/vaultwarden
db:
image: postgres
restart: always
shm_size: 128mb
volumes:
- type: tmpfs
target: /dev/shm
tmpfs:
size: 134217728 # 128*2^20 bytes = 128Mb
- ${PWD}/postgres_data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=123456
- POSTGRES_USER=vaultwarden
- POSTGRES_DB=vaultwarden
创建组织¶
按照如图步骤新增组织,首先先使用已授权用户登录,并打开组织创建界面;

2、这里新增一个名为cmzhu.cn 的组织

3、创建完成之后,可在组织中邀请用户

4、选择对应的用户的邮箱,为新建用户输入对应权限,这样可以保证按照最低权限授权,
注意: 邀请完成后需要指定用户通过邮件点击授权,授权完成后需要管理员主动认证,之后才可以正常使用

5、可在项目界面中创建一个cmzhu的集合,并为集合分配到指定用户权限,这样密码管理就配置完成了



至此,管理界面就已配置完成了
客户端配置¶
1、 客户端安装,这里以google 插件为例,打开google 应用市场搜索 bitwarden

2、打开bitwarden 插件,使用自托管服务,并且输入https://xxx.cmzhu.cn

3、使用提供的电子邮箱进行登录,登录完成之后

4、比如记录了一个cmzhu项目的密码,可以选择移动到组织中,具体步骤可参考



这样就可以共享给组织其他人一起使用了