JBoss EAP 7.x - 데이터소스 비밀번호 암호화 (Password Vault)
이 문서는 JBoss EAP 7.x 환경에서 데이터소스 비밀번호를 암호화하여 안전하게 관리하는 방법을 정리한 것입니다. Windows와 Linux, Standalone과 Domain 모드를 모두 포함합니다.
1. 절차 개요
- KeyStore(저장소) 생성  
    
keytool로 JCEKS 형식 KeyStore 파일 생성
 - Vault 암호화  
    
vault.bat/vault.sh로 비밀번호 암호화- 암호화 결과를 
${VAULT::...::...::1}형태로 참조 
 - Vault 구성 등록
    
- CLI 명령어 또는 설정 파일 이용
 
 - 데이터소스 비밀번호 적용
    
<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:
댓글 쓰기