JBoss EAP 7 - 데이터소스 비밀번호 암호화 정리 (Vault)

JBoss EAP 7.x - 데이터소스 비밀번호 암호화 (Password Vault)

이 문서는 JBoss EAP 7.x 환경에서 데이터소스 비밀번호를 암호화하여 안전하게 관리하는 방법을 정리한 것입니다. Windows와 Linux, Standalone과 Domain 모드를 모두 포함합니다.


1. 절차 개요

  1. KeyStore(저장소) 생성
    • keytool로 JCEKS 형식 KeyStore 파일 생성
  2. Vault 암호화
    • vault.bat / vault.sh로 비밀번호 암호화
    • 암호화 결과를 ${VAULT::...::...::1} 형태로 참조
  3. Vault 구성 등록
    • CLI 명령어 또는 설정 파일 이용
  4. 데이터소스 비밀번호 적용
    • <password>${VAULT::...}</password> 형태로 설정

2. KeyStore 생성

2.1 Windows (keytool.exe 예시)

keytool.exe -genseckey ^
  -alias "vault" ^
  -storetype "jceks" ^
  -keyalg "AES" ^
  -keysize "128" ^
  -storepass "passw0rd" ^
  -keypass "passw0rd" ^
  -validity "7300" ^
  -keystore "D:\app\was\JBoss\vault\vault.keystore"

2.2 Linux (keytool 예시)

./keytool -genseckey \
  -alias "vault" \
  -storetype "jceks" \
  -keyalg "AES" \
  -keysize "128" \
  -storepass "passw0rd" \
  -keypass "passw0rd" \
  -validity "7300" \
  -keystore "/app/was/JBoss/vault/vault.keystore"

옵션 설명

  • -storetype jceks : JCEKS 형식
  • -keyalg AES : AES 알고리즘
  • -storepass, -keypass : KeyStore와 키 암호
  • -validity : 키 유효기간(일)

3. 비밀번호 암호화 (Vault 사용)

3.1 Windows (vault.bat 예시)

vault.bat --keystore "D:\app\was\JBoss\vault\vault.keystore" ^
  --keystore-password "passw0rd" ^
  --alias "vault" ^
  --vault-block "vb" ^
  --attribute "dbpw" ^
  --sec-attr "RealPassword!" ^
  --enc-dir "D:\app\was\JBoss\vault" ^
  --iteration "44" ^
  --salt "JBo72ssv"

3.2 Linux (vault.sh 예시)

./vault.sh --keystore "/app/was/JBoss/vault/vault.keystore" \
  --keystore-password "passw0rd" \
  --alias "vault" \
  --vault-block "vb" \
  --attribute "dbpw" \
  --sec-attr "RealPassword!" \
  --enc-dir "/app/was/JBoss/vault" \
  --iteration "44" \
  --salt "JBo72ssv"

실행 후 콘솔에 MASK-xxxx 형태의 비밀키와 ${VAULT::vb::dbpw::1} 같은 참조 문자열이 표시됩니다. 이를 <password>${VAULT::vb::dbpw::1}</password> 형태로 사용합니다.


4. Vault 구성 등록 - CLI 명령어 방식

4.1 Standalone 모드

/core-service=vault:add(vault-options=[
  ("KEYSTORE_URL"      => "D:\app\was\JBoss\vault\vault.keystore"),
  ("KEYSTORE_PASSWORD" => "MASK-xxxx"),
  ("KEYSTORE_ALIAS"    => "vault"),
  ("SALT"              => "JBo72ssv"),
  ("ITERATION_COUNT"   => "44"),
  ("ENC_FILE_DIR"      => "D:\app\was\JBoss\vault\")
])

Linux에서는 경로를 /app/was/JBoss/vault 등으로 변경하고, vault.sh로 작업합니다.

4.2 Domain 모드

/host=<host_name>/core-service=vault:add(vault-options=[
  ("KEYSTORE_URL"      => "D:\app\was\JBoss\vault\vault.keystore"),
  ("KEYSTORE_PASSWORD" => "MASK-xxxx"),
  ("KEYSTORE_ALIAS"    => "vault"),
  ("SALT"              => "JBo72ssv"),
  ("ITERATION_COUNT"   => "44"),
  ("ENC_FILE_DIR"      => "D:\app\was\JBoss\vault\")
])

<host_name> 자리에 실제 호스트명을 기재합니다.


5. Vault 구성 등록 - 설정 파일 편집 방식

5.1 Standalone 모드

standalone.xml 파일에 아래와 같은 <vault> 섹션을 추가합니다.

<vault>
    <vault-option name="KEYSTORE_URL" value="D:\app\was\JBoss\vault\vault.keystore"/>
    <vault-option name="KEYSTORE_PASSWORD" value="MASK-xxxx"/>
    <vault-option name="KEYSTORE_ALIAS" value="vault"/>
    <vault-option name="SALT" value="JBo72ssv"/>
    <vault-option name="ITERATION_COUNT" value="44"/>
    <vault-option name="ENC_FILE_DIR" value="D:\app\was\JBoss\vault\"/>
</vault>

5.2 Domain 모드

domain.xml (도메인 컨트롤러, DC)에 Vault 설정을 추가하여 도메인 전체에 공유합니다.
host.xml (각 호스트)에서는 로컬 경로나 권한이 달라질 경우 설정을 재정의할 수 있습니다.

domain.xml 예시

<vault>
    <vault-option name="KEYSTORE_URL" value="D:\app\was\JBoss\vault\vault.keystore"/>
    <vault-option name="KEYSTORE_PASSWORD" value="MASK-xxxx"/>
    <vault-option name="KEYSTORE_ALIAS" value="vault"/>
    <vault-option name="SALT" value="JBo72ssv"/>
    <vault-option name="ITERATION_COUNT" value="44"/>
    <vault-option name="ENC_FILE_DIR" value="D:\app\was\JBoss\vault\"/>
</vault>

6. 데이터소스 비밀번호 적용

데이터소스 설정(standalone.xml 또는 domain.xml)의 <datasource> 섹션에서 비밀번호를 아래처럼 교체합니다.

<password>${VAULT::vb::dbpw::1}</password>

이로써 실제 비밀번호는 암호화된 상태로 관리됩니다.


0 Comments:

댓글 쓰기