跳转至

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。如果设置为 offSMTP_PORT 则默认设置为 25 并将尝试加密(2020 年 3 月 12 日之前的代码不会尝试加密)。这是非常不安全的,仅在您知道您在做什么时才使用此设置。要以隐式模式(强制 TLS)运行 SMTP,请将 SMTP_SECURITY设置为 force_tls。如果您不登录也可以发送电子邮件,简单地将 SMTP_USERNAMESMTP_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_WHITELISTSIGNUPS_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
创建组织

按照如图步骤新增组织,首先先使用已授权用户登录,并打开组织创建界面;

image-20250804160253138

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

Google Chrome 2025-08-04 16.03.37

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

image-20250804160734071

4、选择对应的用户的邮箱,为新建用户输入对应权限,这样可以保证按照最低权限授权,

注意: 邀请完成后需要指定用户通过邮件点击授权,授权完成后需要管理员主动认证,之后才可以正常使用

image-20250804161017841

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

image-20250804161414902

image-20250804161448767

image-20250804161538941

至此,管理界面就已配置完成了

客户端配置

1、 客户端安装,这里以google 插件为例,打开google 应用市场搜索 bitwarden

image-20250804182325177

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

image-20250804182439793

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

image-20250804182738550

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

image-20250804182840644

image-20250804182916952

image-20250804182934526

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