Redshift 데이터베이스 시크릿 엔진
Redshift 데이터베이스 시크릿 엔진
Redshift는 Vault의 데이터베이스 시크릿 엔진이 지원하는 플러그인이에요. 이 플러그인은 AWS Redshift 데이터베이스 서비스에 대해 설정된 롤(role)을 기준으로 데이터베이스 자격 증명을 동적으로 생성하고, 정적 롤(Static Role)도 지원해요.
데이터베이스 시크릿 엔진을 어떻게 구성하는지에 대한 자세한 내용은 데이터베이스 시크릿 엔진 문서를 참고해 주세요.
출처: 문서
본문
지원 기능(Capabilities)
| 플러그인 이름 | 루트 자격 증명 회전 | 동적 롤 | 정적 롤 | 사용자 이름 커스터마이징 |
|---|---|---|---|---|
| redshift-database-plugin | 예 | 예 | 예 | 예 (1.8+) |
설정(Setup)
데이터베이스 시크릿 엔진이 아직 활성화되어 있지 않다면 먼저 활성화해요.
$ vault secrets enable database
Success! Enabled the database secrets engine at: database/
기본적으로 시크릿 엔진은 엔진 이름 그대로의 경로에 활성화돼요. 다른 경로에 두고 싶다면 -path 인자를 사용하면 됩니다.
다음으로 Redshift 데이터베이스에 접근하기 위한 올바른 플러그인과 연결 정보를 Vault에 설정해요.
$ vault write database/config/my-redshift-database \
plugin_name=redshift-database-plugin \
allowed_roles="my-role" \
connection_url="postgresql://{{username}}:{{password}}@localhost:5432/<optional: db-name>" \
username="vaultuser" \
password="vaultpass"
이제 Vault 안의 이름을 데이터베이스 자격 증명을 생성하는 SQL 문에 매핑하는 롤을 구성해요.
$ vault write database/roles/my-role \
db_name=my-redshift-database \
creation_statements="CREATE USER \"{{name}}\" WITH PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; \
GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";" \
default_ttl="1h" \
max_ttl="24h"
Success! Data written to: database/roles/my-role
사용법(Usage)
시크릿 엔진을 구성하고 사용자/머신이 적절한 권한을 가진 Vault 토큰을 갖고 있으면 자격 증명을 생성할 수 있어요.
롤 이름을 사용해 /creds 엔드포인트를 읽어 새 자격 증명을 생성해요.
$ vault read database/creds/my-role
Key Value
--- -----
lease_id database/creds/my-role/2f6a614c-4aa2-7b19-24b9-ad944a8d4de6
lease_duration 1h
lease_renewable true
password FFdcFM1vSFc-9sVhyTPY
username v-vaultuse-my-role-zi0460sr1hwm98qugxu8-1602542706
API
구성 가능한 전체 옵션 목록은 Redshift 데이터베이스 플러그인 API 페이지에서 확인할 수 있어요.
데이터베이스 시크릿 엔진의 HTTP API에 대한 자세한 내용은 Database secrets engine API 페이지를 참고해 주세요.
더 알아보기 (Learn more)
- 데이터베이스 시크릿 엔진 문서에서 시크릿 엔진 구성 방법을 살펴보세요.
- Redshift 데이터베이스 플러그인 API 페이지에서 세부 옵션을 확인해 보세요.