[Kubernetes] Bitwarden: 안전한 비밀번호 관리를 위한 도구 구축

Mr.Song·2023년 5월 19일
0

Docker / Kubernetes

목록 보기
12/13
post-thumbnail

비밀번호는 온라인계정 보안의 핵심이며 골칫덩어리다.

각 사이트마다 다른 패스워드 보안규칙으로 수 많은 패스워드를 관리해야하는게 참 수고스럽다. 이런 불편사항을 개선하기위해 몇몇 프로그램들이 있다. 예로 구글 크롬의 패스워드 관리도구와 Apple 생태계에 존재하는 Passwords 기능이다. 이는 사이트 URL 별로 ID/PW를 저장하고 저장 된 계정의 URL인 경우 시스템에 저장되어있는 계정정보를 제시한다. 이로써 사용자들이 많은 사이트의 자신의 계정정보를 모두 기억하지않아도 된다.

이 포스트는 비밀번호 관리를 위한 도구로서 Bitwarden 장점과 사용법에 대해 기록한다.

Bitwarden은 구글 크롬 패스워드 관리도구와 Apple의 Passwords와 동일한 기능을 지원하고, 차별점으로는 비즈니스적으로 사용할 수 있게 팀스페이스 기능을 제공한다. 즉 팀스페이스에 저장 된 패스워드는 스페이스구성원끼리 공유가 가능하고, 개인적인 패스워드는 Private한 공간에 저장한다.
Bitwarden은 오픈 소스로 제공되며, 다양한 플랫폼에서 사용할 수 있고 클라이언트 어플리케이션이나 웹 플러그인을 지원한다.
구축은 Helm 패키지 매니저로 설치되었고, Value만 수정하여 배포하였다.

1. Helm Chart 다운로드

steve@MacBookPro ~/eks/prd# git clone https://github.com/guerzon/vaultwarden
steve@MacBookPro ~/eks/prd# cd vaultwarden
steve@MacBookPro ~/eks/prd/vaultwarden# vi values.yaml

2. Values.yaml 수정

ALB ingress를 사용하여 트래픽을 허용하도록 설정하고 패스워드가 저장 될 DBsms RDS를 사용하고, bitwarden 설정파일은 EBS를 사용하여 저장했다.
steve@MacBookPro ~/eks/prd/vaultwarden# vi values.yaml
---
signupDomains: "gmail.com" # 사용자 추가시 허용 될 도메인 (회사 도메인만 추가하여 보안성을 확보할 수 있다.)
signupsVerify: "true"

ingress:
  enabled: true
  class: "alb"
  additionalAnnotations:
    alb.ingress.kubernetes.io/scheme: internet-facing # Public
    alb.ingress.kubernetes.io/subnets: # subnet-###,subnet-###
    alb.ingress.kubernetes.io/target-type: instance # Target Type
    alb.ingress.kubernetes.io/load-balancer-name: alb
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
    alb.ingress.kubernetes.io/ssl-redirect: '443'
    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:ap-northeast-2:000000000000:certificate/~ # ACM

    # Target Settings
    alb.ingress.kubernetes.io/healthcheck-port: traffic-port
    alb.ingress.kubernetes.io/healthcheck-protocol: HTTP
    alb.ingress.kubernetes.io/healthcheck-path: /
    alb.ingress.kubernetes.io/conditions.warden-vaultwarden: >
      [{"field":"source-ip","sourceIpConfig":{"values":["1.2.3.4/32"]}}] # IP 접근제한

service:
  type: "NodePort"

database:
  type: "postgresql"
  host: "my-database.databaseurl.ap-northeast-2.rds.amazonaws.com"
  port: "5432"
  username: "vaultwarden"
  password: "vaultwarden!@34"
  dbName: "valutwarden"

storage:
  enabled: true
  size: "5Gi"
  class: "gp2"
  dataDir: "/data"

3. Bitwarden 배포

steve@MacBookPro ~/eks/prd/vaultwarden# h install warden .
NAME: warden
LAST DEPLOYED: Mon Apr 17 18:24:59 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
** Please be patient while the chart is being deployed **

Thanks for installing vaultwarden.

You have named your release: warden.

Vaultwarden is accessible here: sub_domain.domain.com

steve@MacBookPro ~/eks/prd/vaultwarden# k get all,pv,pvc -l app.kubernetes.io/component=vaultwarden
NAME                       READY   STATUS    RESTARTS   AGE
pod/warden-vaultwarden-0   1/1     Running   0          32d

NAME                         TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)                       AGE
service/warden-vaultwarden   NodePort   172.20.193.180   <none>        80:30442/TCP,3012:32603/TCP   32d

NAME                                  READY   AGE
statefulset.apps/warden-vaultwarden   1/1     32d

NAME                                                          STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/vaultwarden-data-warden-vaultwarden-0   Bound    pvc-51b7cf85-9315-4441-b932-e039214622ca   5Gi        RWO            gp2            39d

4. 관리자콘솔 접속

https://Domain/admin 으로 접속하면 초기 설정을 하고 사용하면 된다.

profile
정리를 못하면 기록이라도 하자!!

0개의 댓글