Db2 데이터베이스 자격 증명

Db2 데이터베이스 자격 증명 (Db2 credential management)

LDAP 시크릿 엔진으로 IBM Db2 자격 증명을 관리하는 방법을 다룹니다.

출처: 문서

본문

참고: Vault는 LDAP 시크릿 엔진을 사용해 IBM Db2 자격 증명 관리를 지원해요.

Db2에 대한 접근은 Db2 데이터베이스 시스템 밖에 있는 시설(facilities)이 관리합니다. 기본적으로 사용자 인증은 운영체제 기반의 사용자·비밀번호 인증에 의존하는 보안 시설이 수행해요. 즉, Db2의 사용자 ID 라이프사이클은 SQL 문과 Vault의 데이터베이스 시크릿 엔진으로 관리할 수 없습니다.

인증 요구사항을 수용하는 유연성을 제공하기 위해 Db2는 LDAP(Lightweight Directory Access Protocol)용 인증 플러그인 모듈을 제공해요. 이를 통해 Db2 데이터베이스 관리자는 LDAP 디렉터리에 정의된 사용자를 인증하고 그룹 멤버십을 얻을 수 있어서, 사용자와 그룹을 운영체제에 정의해야 할 필요를 없앱니다.

Vault의 LDAP 시크릿 엔진은 사용자 인증과 그룹 멤버십을 LDAP 서버에 위임하도록 구성된 Db2 환경에서 자격 증명의 라이프사이클을 관리하는 데 사용할 수 있어요. LDAP 시크릿 엔진으로 동적 자격 증명 또는 정적 자격 증명을 사용할 수 있습니다.

시작하기 전에

이 솔루션을 구현하는 아키텍처는 상황에 크게 의존해요. 이 가이드의 가정들은 이것이 어떻게 구성될 수 있는지에 대한 실용적인 예를 제공하기 위한 것입니다.

IBM LDAP 플러그인 문서를 반드시 읽고 트레이드오프와 보안 영향을 이해하세요.

이 가이드의 설정은 다음을 가정해요.

  • Db2가 서버 인증 플러그인 모듈로 LDAP 서버에서 사용자를 인증하도록 구성됨.
  • Db2가 그룹 조회 플러그인 모듈로 LDAP 서버에서 그룹 멤버십을 가져오도록 구성됨.
  • LDAP 디렉터리 정보 트리(DIT)가 다음 구조를 가짐:
# Organizational units
dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups

dn: ou=users,dc=example,dc=com
objectClass: organizationalUnit
ou: users

# Db2 groups
#  - https://www.ibm.com/docs/en/db2/11.5?topic=unix-db2-users-groups
#  - https://www.ibm.com/docs/en/db2/11.5?topic=ins-ldap-based-authentication-group-lookup-support
dn: cn=db2iadm1,ou=groups,dc=example,dc=com
objectClass: groupOfNames
cn: db2iadm1
member: uid=db2inst1,ou=users,dc=example,dc=com
description: DB2 sysadm group

dn: cn=db2fadm1,ou=groups,dc=example,dc=com
objectClass: groupOfNames
cn: db2fadm1
member: uid=db2fenc1,ou=users,dc=example,dc=com
description: DB2 fenced user group

dn: cn=dev,ou=groups,dc=example,dc=com
objectClass: groupOfNames
cn: dev
member: uid=staticuser,ou=users,dc=example,dc=com
description: Development group

# Db2 users
#  - https://www.ibm.com/docs/en/db2/11.5?topic=unix-db2-users-groups
#  - https://www.ibm.com/docs/en/db2/11.5?topic=ins-ldap-based-authentication-group-lookup-support
dn: uid=db2inst1,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
cn: db2inst1
sn: db2inst1
uid: db2inst1
userPassword: Db2AdminPassword

dn: uid=db2fenc1,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
cn: db2fenc1
sn: db2fenc1
uid: db2fenc1
userPassword: Db2FencedPassword

# 정적 역할 회전용 사용자 추가
dn: uid=staticuser,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
cn: staticuser
sn: staticuser
uid: staticuser
userPassword: StaticUserPassword
  • IBMLDAPSecurity.ini가 LDAP 서버 구성과 일치하도록 업데이트됨.

설정 (Setup)

동적 자격 증명

  1. LDAP 시크릿 엔진을 활성화해요.
$ vault secrets enable ldap
  1. LDAP 시크릿 엔진을 구성해요.
$ vault write ldap/config \
    binddn="cn=admin,dc=example,dc=com" \
    bindpass="LDAPAdminPassword" \
    url="ldap://127.0.0.1:389"
  1. LDAP 사용자를 만드는 방법을 정의하는 템플릿 파일을 써요. (creation.ldif — 자격 증명 요청 시 Vault가 LDAP 사용자를 만들 때 사용)

  2. LDAP 사용자를 삭제하는 방법을 정의하는 템플릿 파일을 써요. (deletion_rollback.ldif — 자격 증명이 폐기될 때 Vault가 LDAP 사용자를 삭제할 때 사용)

  3. creation.ldif와 deletion_rollback.ldif를 포함하는 Vault 역할을 만들어요.

$ vault write ldap/role/dynamic \
     creation_ldif=@/tmp/creation.ldif \
     deletion_ldif=@/tmp/deletion_rollback.ldif \
     rollback_ldif=@/tmp/deletion_rollback.ldif \
     default_ttl=1h

정적 자격 증명

  1. LDAP 시크릿 엔진을 활성화해요. ($ vault secrets enable ldap)
  2. LDAP 시크릿 엔진을 구성해요. (위 동적 자격 증명과 동일한 구성)
  3. Vault의 이름을 LDAP 디렉터리의 항목에 매핑하는 정적 역할을 만들어요.
$ vault write ldap/static-role/static \
     username='staticuser' \
     dn='uid=staticuser,ou=users,dc=example,dc=com' \
     rotation_period="1h"

사용법 (Usage)

동적 자격 증명 — Vault 동적 역할로 동적 자격 증명을 생성해요.

$ vault read ldap/creds/dynamic

성공 출력:

Key                    Value
---                    -----
lease_id               ldap/creds/dynamic/doa187ysuFExnvsJwmt8WrNo
lease_duration         1h
lease_renewable        true
distinguished_names    [uid=v_token_dynamic_joctelE9RB_1647220296,ou=users,dc=example,dc=com]
password               3WAOcuHUUt3qMKaUqo14pfTWapiOt8fmcBNoDo7Rx1R9dKxMOMVoMR3MYjCxQvmL
username               v_token_dynamic_joctelE9RB_1647220296

동적 자격 증명으로 Db2에 연결해요.

정적 자격 증명 — 정적 역할에 사용된 LDAP 사용자의 회전된 비밀번호를 읽어요.

$ vault read ldap/static-cred/static

성공 출력:

Key                    Value
---                    -----
dn                     uid=staticuser,ou=users,dc=example,dc=com
last_vault_rotation    2022-03-14T11:56:15.252772-07:00
password               VWpUznJ0IcaYbHbnyqwBuJhsfb9YTe5MzwePR9oTkkrs26GhGKZ7dD5HuULpFfri
rotation_period        1h
ttl                    59m55s
username               staticuser

staticuser의 회전된 자격 증명으로 Db2에 연결해요.

튜토리얼

LDAP 시크릿 엔진을 구성·사용하는 방법을 배우려면 LDAP Secrets Engine 튜토리얼을 참고하세요.

API

LDAP 시크릿 엔진은 완전한 HTTP API를 제공해요. 자세한 내용은 LDAP 시크릿 엔진 API 문서를 참고하세요.

더 알아보기 (Learn more)