Bitwarden 帮助中心中文版
⮐ Bitwarden Help Center个人主页联系我
  • 关于
  • 首页
  • 发布记录
  • 账户
    • 创建 Bitwarden 账户
    • 登录 & 解锁
      • 主密码
      • 忘记主密码
      • 新设备登录保护
      • 使用 SSO 登录
      • 使用设备登录
      • 使用通行密钥登录 (Beta)
      • 账户切换
      • 使用 PIN 码解锁
      • 使用生物识别解锁
      • 密码库超时选项
    • 两步登录
      • 两步登录现场指南
      • 两步登录方式
      • 设置指南
        • 两步登录 - 验证器
        • 两步登录 - 电子邮箱
        • 两步登录 - Duo
        • 两步登录 - YubiKey
        • 两步登录 - 通行密钥
      • 恢复代码
      • 丢失了辅助设备
      • 两步登录 FAQ
    • 更多
      • 紧急访问
      • 本地化
      • *异常流量错误
  • Password Manager
    • Password Manager 概述
    • 入门
      • Password Manager 网页 App
      • Password Manager 浏览器扩展
      • Password Manager 移动 App
      • Password Manager 桌面 App
    • 密码库基础
      • 密码库项目
      • 用户名 & 密码生成器
      • 自定义字段
      • 集成的验证器
      • 文件附件
      • 共享
      • 集合
      • 存储通行密钥
      • *通行密钥 FAQ
    • 密码库管理
      • 文件夹
      • 收藏
      • 同步密码库
      • 检索密码库
      • 密码库健康报告
    • 导入 & 导出
      • 导入数据到密码库
      • 导入指南
        • 从 LastPass 导入
        • 从 1Password 导入
        • 从 Keeper 导入
        • 从 Dashlane 导入
        • 从 Google Chrome 导入
        • 从 macOS & Safari 导入
        • 从 Firefox 导入
        • 从 Password Safe 导入
        • 从 Myki 导入
      • 导出密码库数据
      • 加密导出
      • 调整 Bitwarden .csv 或 .json
      • *Bitwarden 导入器工具
      • 导入 & 导出 FAQ
    • 自动填充
      • 自动填充基础
        • 在浏览器扩展中自动填充登录
        • 在 Android 上自动填充登录
        • 在 iOS 上自动填充登录
        • 自动填充支付卡和身份
        • 自动填充自定义字段
      • 使用 URI
      • 屏蔽自动填充
      • 基本验证提示
      • 键盘快捷键
      • 禁用浏览器的内置密码管理器
      • Android 自动填充故障排除
      • 自动填充 FAQ
    • Bitwarden Send
      • 关于 Send
      • 创建 Send
      • 接收 Send
      • Send 生命周期
      • Send 隐私
      • CLI 上的 Send
      • Send 加密
      • Send FAQ
    • 开发者工具
      • Password Manager API
      • Password Manager CLI
      • CLI 身份验证挑战
      • 用于 CLI 验证的个人 API 密钥
      • SSH 代理
    • 更多
      • Password Manager FAQ
      • 更改 App 主题
      • DuckDuckGo macOS 浏览器集成
      • Apple Watch 上的 Bitwarden
      • 在 Firefox 隐私窗口中使用 Bitwarden
      • 离线使用 Bitwarden
      • 排除域名
      • Safari 网页扩展
      • uMatrix 和 NoScript 访问规则
      • 与 Bitwarden 支持排除移动端故障
  • Bitwarden Authenticator
    • Bitwarden Authenticator
    • 导入 & 导出
    • FAQ
  • Secrets Manager
    • Secrets Manager 概述
    • 入门
      • Secrets Manager 快速入门
      • 开发人员快速入门
      • 登录 Secrets Manager
      • 管理您的组织
    • 您的机密
      • 工程
      • 机密
      • 机器账户
      • 访问令牌
      • 机密解密
    • 导入 & 导出
      • 导入数据
      • 导出数据
    • 开发人员工具
      • Secrets Manager CLI
      • Secrets Manager SDK
    • 集成
      • Ansible
      • GitHub Actions
      • GitLab CI/CD
      • Secrets Manager Kubernetes Operator
    • 更多
      • Secrets Manager FAQ
  • 管理控制台
    • 组织快速入门
    • 组织基础
      • 组织
      • 集合
      • 群组
      • 企业策略
      • 集合管理
    • 用户管理
      • 用户管理
      • 成员角色和权限
      • 声明域名
      • 声明账户
      • 账户恢复
      • SCIM
        • 关于 SCIM
        • JumpCloud SCIM 集成
        • Microsoft Entra ID SCIM 集成
        • Okta SCIM 集成
        • OneLogin SCIM 集成
        • Ping Identity SCIM 集成
      • 目录连接器
        • 关于目录连接器
        • 目录连接器桌面 App
        • 目录连接器 CLI
        • 目录连接器文件存储
        • 同步选项和筛选器
        • 清除同步缓存
        • 调度同步
        • 使用 AD 或 LDAP 同步
        • 使用 Microsoft Entra ID 同步
        • 使用 Google Workspace 同步
        • 使用 Okta 同步
        • 使用 OneLogin 同步
      • 入职和继任概述
    • 导入 & 导出
      • 导入数据到组织
      • 导出密码库数据
      • 调整 Bitwarden .csv 或 .json
    • SSO 登录
      • 关于 SSO 登录
      • SAML 2.0 配置
      • OIDC 配置
      • 成员解密选项
      • 声明域名
      • 实施指南
        • ADFS SAML 实施
        • Auth0 SAML 实施
        • AWS SAML 实施
        • Duo SAML 实施
        • Google SAML 实施
        • JumpCloud SAML 实施
        • Keycloak SAML 实施
        • Microsoft Entra ID SAML 实施
        • Okta SAML 实施
        • OneLogin SAML 实施
        • Ping Identity SAML 实施
        • ADFS OIDC 实施
        • Microsoft Entra ID OIDC 实施
        • Okta OIDC 实施
        • Ping Identity OIDC 实施
        • Cloudflare Zero Trust SSO 实施
      • 受信任设备
        • 关于受信任设备
        • 设置受信任设备 SSO
        • 添加受信任设备
        • 批准受信任设备
      • Key Connector
        • 关于 Key Connector
        • 部署 Key Connector
      • *在您的 IdP 上配置 Bitwarden(SAML 2.0)
      • SSO 登录 FAQ
    • 报告
      • 密码库健康报告
      • 事件日志
      • Elastic SIEM
      • Microsoft Sentinel SIEM
      • Panther SIEM
      • Rapid7 SIEM
      • Splunk SIEM
    • 最终用户入职
      • 关于本章节
      • 欢迎电子邮件模板
      • 管理团队入职电子邮件
      • 最终用户采用电子邮件
      • 客户激活套件
      • 入职流程
    • 部署客户端 App
      • 部署浏览器扩展
        • 使用 GPO、Linux 策略和 .plist 文件部署浏览器扩展
        • 使用 Intune 部署浏览器扩展
      • 部署桌面端 App
        • 使用 Intune 部署桌面端 App
      • 部署移动端 App
        • 使用 Intune 部署移动端 App
      • 为您的服务器配置客户端
      • 使用设备管理停用浏览器密码管理器
    • Bitwarden 公共 API
    • 更多
      • 组织 FAQ
      • 链接到项目
      • 企业版 Bitwarden 功能数据表
      • 团队版和企业版迁移指南
      • LastPass 企业版迁移指南
      • 组织所有者离职时的访问权限管理
      • PoC 项目清单
      • 为生产准备试用组织
      • *团队版 Bitwarden 对比指南
  • 提供商门户
    • 提供商门户概览
    • 提供商门户快速入门
    • 提供商用户
    • 添加客户组织
    • *添加现有组织
    • 持续管理
    • 取消链接客户组织
    • 提供商事件日志
    • 提供商计费
    • 提供商 FAQ
    • 业务单元门户
      • 业务单元门户
      • 业务单元门户快速入门
  • 自托管
    • 安装 & 部署指南
      • Docker
        • Linux 标准部署
        • Linux 手动部署
        • Linux 离线部署
        • Windows 标准部署
        • Windows 离线部署
        • Unified 部署 (Beta)
      • Helm
        • 使用 Helm 自托管
        • Azure AKS 部署
        • OpenShift 部署
        • AWS EKS 部署
        • 添加 rawManifest 文件
    • 自托管组织
    • 迁移步骤
    • 证书选项
    • 配置环境变量
    • 数据库选项
    • 连接到外部 MSSQL 数据库
    • Kerberos 集成
    • 更新实例
    • 备份托管数据
    • 付费功能许可证
    • 系统管理员门户
    • 为服务器配置客户端
    • 连接客户端到实例
    • 自托管 SCIM
    • 自托管家庭赞助
    • 自托管 Send
    • 配置推送中继
    • *作为 MSP 部署 Bitwarden
    • 托管 FAQ
  • 安全
    • Bitwarden 安全白皮书
    • 密码库数据
    • 管理数据
    • 加密方式
    • KDF 算法
    • 账户加密密钥
    • 账户指纹短语
    • 数据存储
    • 合规、审计和认证
    • 服务器地理位置
    • 版本控制
    • 使用网站图标时的隐私
    • Bitwarden 软件发布支持
    • Bitwarden 的分包商
    • 来自 Bitwarden 的电子邮件
    • Bitwarden 地址
    • 安全 FAQ
  • 计划和定价
    • Password Manager
      • Password Manager 计划
      • 从个人升级到组织
      • 兑换家庭赞助
      • 高级会员续费
    • Secrets Manager
      • Secrets Manager 计划
      • 注册 Secrets Manager
    • Bitwarden 经销商
    • 开始企业版试用
    • 组织续费
    • 更新计费信息
    • 税费计算
    • 删除账户或组织
    • 取消订阅
    • 计费 FAQ
    • *更新 Bitwarden 计划 (2019-2020)
    • *更新 Password Manager 计划 & 订阅
    • *哪种计划适合我?
  • 学习中心
    • 关于学习中心
    • 使用 Bitwarden 的第一步
    • 了解 Password Manager
    • Password Manager
      • Bitwarden 入门:个人用户
      • Bitwarden 入门:管理员
      • Bitwarden 入门:成员
      • Bitwarden 入门:经销商或 MSP
    • Bitwarden 高级用户
    • 面向企业管理员的 Bitwarden
    • 了解 Secrets Manager
    • 面向 MSP 的 Bitwarden
    • 了解 Passwordless.dev
  • *杂项
    • 11 月弃用通知
    • Bitwarden 术语表
    • 迁移脚本
    • Bitwarden 101 视频系列-入门
    • Secrets Manager Beta 版注册
    • 未分配的密码库项目已移至管理控制台
    • 原生移动 App
  • 附录
    • 翻译约定
    • 资源
由 GitBook 提供支持
在本页
  • 入口控制器
  • 创建存储类
  • 使用 AWS Secrets Manager
  1. 自托管
  2. 安装 & 部署指南
  3. Helm

AWS EKS 部署

上一页OpenShift 部署下一页添加 rawManifest 文件

最后更新于1年前

对应的

本文探讨了如何根据特定于 AWS 和弹性 Kubernetes 服务 (Elastic Kubernetes Service - EKS) 调整您的 。

请注意,本文中记录的某些附加组件要求您的 EKS 集群至少已启动一个节点。

入口控制器

默认情况下, my-values.yaml 中定义了一个 nginx 控制器,并且需要一个 AWS 网络负载均衡器。目前不推荐使用 AWS 应用负载均衡器 (Application Load Balancer - ALB),因为它们不支持路径重写和基于路径的路由。

以下假设您在 AWS 证书管理器中保存有一个 SSL 证书,因为您将需要证书 Amazon 资源名称 (ARN)。

您的集群中还必须至少有一个节点正在运行。

要将网络负载均衡器连接到您的集群:

1、按照创建一个 IAM 策略和角色,然后在集群中安装 AWS 负载均衡器控制器。

2、运行以下命令为您的集群设置一个入口控制器。这将创建一个 AWS 网络负载均衡器。请注意,在此示例命令中,有些值必须替换,以配置为满足您的需求:

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm upgrade ingress-nginx ingress-nginx/ingress-nginx -i \
  --namespace kube-system \
  --set-string controller.service.annotations.'service\.beta\.kubernetes\.io/aws-load-balancer-backend-protocol'="ssl" \
  --set-string controller.service.annotations.'service\.beta\.kubernetes\.io/aws-load-balancer-cross-zone-load-balancing-enabled'="true" \
  --set-string controller.service.annotations.'service\.beta\.kubernetes\.io/aws-load-balancer-type'="external" \
  --set-string controller.service.annotations.'service\.beta\.kubernetes\.io/aws-load-balancer-nlb-target-type'="instance" \
  --set-string controller.service.annotations.'service\.beta\.kubernetes\.io/aws-load-balancer-scheme'="internet-facing" \
  --set-string controller.service.annotations.'service\.beta\.kubernetes\.io/aws-load-balancer-ssl-cert'="arn:aws:acm:REPLACEME:REPLACEME:certificate/REPLACEME" \ #Replace with the ARN for your certificate
  --set-string controller.service.annotations.'service\.beta\.kubernetes\.io/aws-load-balancer-ssl-ports'="443" \
  --set controller.service.externalTrafficPolicy="Local"

3、根据以下示例更新您的 my-values.yaml 文件,确保替换所有 REPLACE 占位符:

general:
  domain: "REPLACEME.com"
  ingress:
    enabled: true
    className: "nginx"
     ## - Annotations to add to the Ingress resource
    annotations:
      nginx.ingress.kubernetes.io/ssl-redirect: "true"
      nginx.ingress.kubernetes.io/use-regex: "true"
      nginx.ingress.kubernetes.io/rewrite-target: /$1
    ## - Labels to add to the Ingress resource
    labels: {}
    # Certificate options
    tls:
      # TLS certificate secret name
      name: # Handled via the NLB defined in the ingress controller
      # Cluster cert issuer (ex. Let's Encrypt) name if one exists
      clusterIssuer:
    paths:
      web:
        path: /(.*)
        pathType: ImplementationSpecific
      attachments:
        path: /attachments/(.*)
        pathType: ImplementationSpecific
      api:
        path: /api/(.*)
        pathType: ImplementationSpecific
      icons:
        path: /icons/(.*)
        pathType: ImplementationSpecific
      notifications:
        path: /notifications/(.*)
        pathType: ImplementationSpecific
      events:
        path: /events/(.*)
        pathType: ImplementationSpecific
      scim:
        path: /scim/(.*)
        pathType: ImplementationSpecific
      sso:
        path: /(sso/.*)
        pathType: ImplementationSpecific
      identity:
        path: /(identity/.*)
        pathType: ImplementationSpecific
      admin:
        path: /(admin/?.*)
        pathType: ImplementationSpecific

创建存储类

2、在 AWS CloudShell 中,替换以下脚本中的 file_system_id= "REPLACE" 变量并在 AWS CloudShell 中运行它:

以下只是一个说明性示例,请务必根据您自己的安全需求分配权限。

file_system_id="REPLACE"

cat << EOF | kubectl apply -n bitwarden -f -
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: shared-storage
provisioner: efs.csi.aws.com
parameters:
  provisioningMode: efs-ap
  fileSystemId: $file_system_id
  directoryPerms: "777" # Change for your use case
  uid: "2000" # Change for your use case
  gid: "2000" # Change for your use case
  basePath: "/dyn1"
  subPathPattern: "\${.PVC.name}"
  ensureUniqueDirectory: "false"
  reuseAccessPoint: "false"
mountOptions:
  - iam
  - tls
EOF

3、将 my-values.yaml 中的 sharedStorageClassName 的值设置为您在 metadata.name: 中指定的类的名称,例如:

sharedStorageClassName: "shared-storage"

使用 AWS Secrets Manager

部署需要使用 Kubernetes secrets 对象来设置敏感值。虽然可以使用 kubectl create secret 命令来设置 secrets,但 AWS 客户可能倾向于使用 AWS Secrets Manager 和适用于 Kubernetes Secrets Store CSI 驱动程序的 AWS Secrets 和 Configuration Provider (ACSP)。

您需要将以下机密存储在 AWS Secrets Manager 中。请注意,您可以更改此处使用的密钥,但如果您这样做,还必须对后续步骤进行更改:

密钥
值

installationid

installationkey

smtpusername

您的 SMTP 服务器的有效用户名。

smtppassword

输入的 SMTP 服务器用户名的有效密码。

yubicoclientid

yubicokey

globalSettings__hibpApiKey

如果您使用 Bitwarden SQL pod sapassword,.

如果您使用自己的 SQL 服务器, dbconnectionString.

连接到 Bitwarden 实例的数据库的凭据。所需内容取决于您使用的是附带的 SQL pod 还是外部 SQL 服务器。

2、创建权限策略以允许访问您的机密。该策略必须授予 secretsmanager:GetSecretValue 和 secretsmanager:DescribeSecret 权限,例如:

{
   "Version": "2012-10-17",
   "Statement": {
     "Effect": "Allow",
     "Action": [
       "secretsmanager:DescribeSecret",
       "secretsmanager:GetSecretValue"
     ],
     "Resource": "arn:aws:secretsmanager:REPLACEME:REPLACEME:secret:REPLACEME"
   }
}

3、创建一个可以通过已创建的权限策略访问您的机密的服务账户,例如:

CLUSTER_NAME="REPLACE"
ACCOUNT_ID="REPLACE" # replace with your AWS account ID
ROLE_NAME="REPLACE" # name of a role that will be created in IAM
POLICY_NAME="REPLACE" # the name of the policy you created earlier
eksctl create iamserviceaccount \
  --cluster=$CLUSTER_NAME \
  --namespace=bitwarden \
  --name=bitwarden-sa \
  --role-name $ROLE_NAME \
  --attach-policy-arn=arn:aws:iam::$ACCOUNT_ID:policy/$POLICY_NAME \
  --approve

4、接下来,创建 SecretProviderClass,如以下示例所示。请务必将 region 替换为您所在的区域,并将objectName 替换为您创建的 Secrets Manager 机密的名称(步骤 1):

cat <<EOF | kubectl apply -n bitwarden -f -
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: bitwarden-secrets-manager-csi
  labels:
    app.kubernetes.io/component: secrets
  annotations:
spec:
  provider: aws
  parameters:
    region: REPLACE
    objects: |
      - objectName: "REPLACE"
        objectType: "secretsmanager"
        objectVersionLabel: "AWSCURRENT"
        jmesPath:
          - path: installationid
            objectAlias: installationid
          - path: installationkey
            objectAlias: installationkey
          - path: smtpusername
            objectAlias: smtpusername
          - path: smtppassword
            objectAlias: smtppassword
          - path: yubicoclientid
            objectAlias: yubicoclientid
          - path: yubicokey
            objectAlias: yubicokey
          - path: hibpapikey
             objectAlias: hibpapikey
          - path: sapassword #-OR- dbconnectionstring if external SQL
            objectAlias: sapassword #-OR- dbconnectionstring if external SQL
  secretObjects:
  - secretName: "bitwarden-secret"
    type: Opaque
    data:
    - objectName: installationid
       key: globalSettings__installation__id
    - objectName: installationkey
       key: globalSettings__installation__key
    - objectName: smtpusername
       key: globalSettings__mail__smtp__username
    - objectName: smtppassword
       key: globalSettings__mail__smtp__password
    - objectName: yubicoclientid
       key: globalSettings__yubico__clientId
    - objectName: yubicokey
       key: globalSettings__yubico__key
    - objectName: hibpapikey
       key: globalSettings__hibpApiKey
    - objectName: sapassword #-OR- dbconnectionstring if external SQL
       key: SA_PASSWORD #-OR- globalSettings__sqlServer__connectionString if external SQL
EOF

5、在您的 my-values.yaml 文件中,设置以下值:

  • secrets.secretName :设置为 SecretProviderClass 中定义的 secretName (步骤 3)。

  • secrets.secretProviderClass :设置为 SecretProviderClass 中定义的 metedata.name (第 3 步)。

  • component.admin.podServiceAccount :设置为为您的服务账户定义的名称(步骤 2)。

  • component.api.podServiceAccount :设置为为您的服务账户定义的名称(步骤 2)。

  • component.attachments.podServiceAccount :设置为为您的服务账户定义的名称(步骤 2)。

  • component.events.podServiceAccount :设置为为您的服务账户定义的名称(步骤 2)。

  • component.icons.podServiceAccount :设置为为您的服务账户定义的名称(步骤 2)。

  • component.identity.podServiceAccount :设置为为您的服务账户定义的名称(步骤 2)。

  • component.notifications.podServiceAccount :设置为为您的服务账户定义的名称(步骤 2)。

  • component.scim.podServiceAccount :设置为为您的服务账户定义的名称(步骤 2)。

  • component.sso.podServiceAccount :设置为为您的服务账户定义的名称(步骤 2)。

  • component.web.podServiceAccount :设置为为您的服务账户定义的名称(步骤 2)。

  • database.podServiceAccount :设置为为您的服务账户定义的名称(步骤 2)。

  • serviceAccount.name :设置为为您的服务账户定义的名称(步骤 2)。

  • serviceAccount.deployRolesOnly :设置为 true 。

部署需要您提供的共享存储类,该存储类必须支持 。以下是如何创建符合要求的存储类的示例:

以下假设您已创建了一个 AWS 弹性文件系统 (Elastic File System - EFS)。如果还没有,请立即。无论哪种情况,请记下您的 EFS 文件系统 ID,在此过程中您将需要用到它。

1、获取适用于您的 EKS 集群的 。这将要求您为您的集群,并为驱动程序。

从 获取到的有效安装 ID 。有关更多信息,请参阅

从 获取到的有效安装密钥 。有关更多信息,请参阅

YubiCloud 验证服务或自托管 Yubico 验证服务器的客户端 ID。如果使用 YubiCloud,请获取您的客户端 ID 和密钥 。

YubiCloud 验证服务或自托管 Yubico 验证服务器的机密密钥。如果使用 YubiCloud,请获取您的客户端 ID 和密钥 。

您的 HaveIBeenPwned (HIBP) API 密钥,可获取。此密钥允许用户在创账户时运行并检查其主密码是否存在泄露。

1、安全存储您的机密后,。

官方文档地址
Bitwarden 自托管 Helm Chart 部署
这些说明
ReadWriteMany
创建一个
Amazon EFS CSI 驱动程序插件
创建一个 OIDC 提供程序
创建一个 IAM 角色
安装 ACSP
在此处
在此处
https://bitwarden.com/host
https://bitwarden.com/host
在此处
数据泄露报告
我的安装 ID 和安装密钥是用来干什么的?
我的安装 ID 和安装密钥是用来干什么的?