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:
댓글 쓰기