Couchbase 데이터베이스 시크릿 엔진

Couchbase 데이터베이스 시크릿 엔진 (Couchbase database secrets engine)

데이터베이스 시크릿 엔진에서 Couchbase 자격 증명을 동적으로 생성하는 couchbase 플러그인을 다룹니다.

출처: 문서

본문

참고: 이 엔진은 TLS 또는 서명 검증의 일부로 외부 X.509 인증서를 사용할 수 있어요. SHA-1을 사용하는 X.509 인증서에 대한 서명 검증은 더 이상 사용되지 않으며(deprecated), Vault 1.12부터는 우회 조치 없이는 사용할 수 없어요. 자세한 내용은 deprecation notices를 참고하세요.

Couchbase는 데이터베이스 시크릿 엔진이 지원하는 플러그인 중 하나예요. 이 플러그인은 Couchbase 데이터베이스에 대해 설정된 역할을 기반으로 데이터베이스 자격 증명을 동적으로 생성합니다.

데이터베이스 시크릿 엔진 설정에 대한 자세한 내용은 데이터베이스 시크릿 엔진 문서를 참고하세요.

기능 (Capabilities)

플러그인 이름 루트 자격 증명 회전 동적 역할 정적 역할 사용자명 커스터마이즈
couchbase-database-plugin Yes Yes Yes Yes (1.7+)

설정 (Setup)

  1. 데이터베이스 시크릿 엔진이 아직 활성화되지 않았다면 활성화해요.
$ vault secrets enable database
Success! Enabled the database secrets engine at: database/

기본적으로 시크릿 엔진은 엔진 이름으로 활성화돼요. 다른 경로에 활성화하려면 -path 인자를 사용하면 됩니다.

  1. 적절한 플러그인과 연결 설정으로 Vault를 구성해요.
$ vault write database/config/my-couchbase-database \
    plugin_name="couchbase-database-plugin" \
    hosts="couchbase://127.0.0.1" \
    tls=true \
    base64pem="${BASE64PEM}" \
    username="vaultuser" \
    password="vaultpass" \
    allowed_roles="my-*-role"

여기서 ${BASE64PEM}은 서버의 루트 인증 기관(CA)을 PEM 형식으로 줄바꿈 없이 base64 문자열로 인코딩한 값이에요.

6.5.0 이전 버전의 클러스터에 연결하려면 bucket_name도 구성해야 해요.

$ vault write database/config/my-couchbase-database \
    plugin_name="couchbase-database-plugin" \
    hosts="couchbase://127.0.0.1" \
    tls=true \
    base64pem="${BASE64PEM}" \
    username="vaultuser" \
    password="vaultpass" \
    allowed_roles="my-*-role" \
    bucket_name="travel-sample"
  1. 관리자 비밀번호를 회전하는 것을 고려해 보세요. 회전하면 새 비밀번호가 Vault를 통해 제공되지 않으므로, 이를 위해 Vault 전용 데이터베이스 관리 사용자를 만드는 게 좋아요.
vault write -force database/rotate-root/my-couchbase-database

사용법 (Usage)

시크릿 엔진이 구성되면 동적·정적 역할을 구성해 자격 증명을 생성할 수 있어요.

동적 역할 (Dynamic roles)

  1. Vault의 이름을 Couchbase RBAC 역할을 지정하는 JSON 문자열에 매핑하는 동적 역할을 구성해요. creation_statements의 기본값은 읽기 전용 관리자 역할인 {"Roles": [{"role":"ro_admin"}]}입니다.
$ vault write database/roles/my-dynamic-role \
    db_name="my-couchbase-database" \
    creation_statements='{"Roles": [{"role":"ro_admin"}]}' \
    default_ttl="5m" \
    max_ttl="1h"

creation statement에 지정하는 그룹은 이미 존재해야 한다는 점을 주의하세요.

  1. 역할 이름으로 /creds 엔드포인트를 읽어 새 자격 증명을 생성해요.
$ vault read database/creds/my-dynamic-role
Key                Value
---                -----
lease_id           database/creds/my-dynamic-role/wiLNQjtcvCOT1VnN3qnUJnBz
lease_duration     5m
lease_renewable    true
password           mhyM-Gs7IpmOPnSqXEDe
username           v-root-my-dynamic-role-eXnVr4gm55dpM1EVgTYz-1596815027

정적 역할 (Static roles)

  1. Vault의 이름을 기존 couchbase 사용자에 매핑하는 정적 역할을 구성해요.
$ vault write database/static-roles/my-static-role \
    db_name="my-couchbase-database" \
    username="my-existing-couchbase-user" \
    rotation_period=5m
  1. /static-creds 엔드포인트에서 자격 증명을 가져와요.
$ vault read database/static-creds/my-static-role
Key                    Value
---                    -----
last_vault_rotation    2020-08-07T16:50:48.393354+01:00
password               Z4-KH8F-VK5VJc0hSkXQ
rotation_period        5m
ttl                    4m39s
username               my-existing-couchbase-user

API

구성 가능한 전체 옵션 목록은 Couchbase 데이터베이스 플러그인 API 페이지에서 확인할 수 있어요.

데이터베이스 시크릿 엔진 HTTP API에 대한 자세한 내용은 데이터베이스 시크릿 엔진 API 페이지를 참고하세요.

더 알아보기 (Learn more)