11.10. 데이터 소스 보안


데이터 소스 보안은 데이터 소스 연결에 대한 암호를 암호화하거나 모호하게 하는 것을 나타냅니다. 이러한 암호는 구성 파일의 일반 텍스트로 저장할 수 있지만 이는 보안 위험을 나타냅니다.

데이터 소스 보안에 사용할 수 있는 몇 가지 방법이 있습니다. 각각에 대한 예는 아래에 포함되어 있습니다.

보안 도메인을 사용하여 데이터 소스 보안

보안 도메인을 사용하여 데이터 소스를 보호하려면 다음 단계를 사용합니다.

  1. 새 보안 도메인을 생성합니다.

    /subsystem=elytron/security-domain=DsRealm:add(cache-type=default)
    /subsystem=elytron/security-domain=DsRealm/authentication=classic:add(login-modules=[{code=ConfiguredIdentity,flag=required,module-options={userName=sa,
    principal=sa, password=sa}}])

    데이터 소스에 대한 보안 도메인이 정의됩니다. 다음 XML 추출은 CLI 명령을 호출한 결과입니다.

     <datasources>
        <datasource jndi-name="java:jboss/datasources/ElytronDSTest"
                    pool-name="securityDs">
            <connection-url>jdbc:h2:mem:test-elytron;DB_CLOSE_DELAY=-1</connection-url>
            <driver>h2</driver>
            <new-connection-sql>select current_user()</new-connection-sql>
            <security>
                <authentication-context>MyAuthContext</authentication-context>
            </security>
        </datasource>
    </datasources>
  2. 새 데이터 소스를 추가합니다.

    data-source add --name=securityDs
    --jndi-name=java:jboss/datasources/securityDs
    --connection-url=jdbc:h2:mem:test;DB_CLOSE_DELAY=-1 --driver-name=h2
    --new-connection-sql="select current_user()"
  3. 데이터 소스에 보안 도메인을 설정합니다.

    data-source --name=securityDs --security-domain=DsRealm
  4. 변경 사항을 적용하려면 서버를 다시 로드합니다.

    reload
참고

여러 데이터 소스가 있는 보안 도메인을 사용하는 경우 보안 도메인에서 캐싱을 비활성화합니다. 이 작업은 cache-type 속성의 값을 none 으로 설정하거나 속성을 완전히 제거하여 수행할 수 있지만 캐싱이 필요한 경우 각 데이터 소스에 대해 별도의 보안 도메인을 사용합니다.

다음 XML 추출은 DsRealm 으로 보안된 데이터 소스를 보여줍니다.

<datasources>
  <datasource jndi-name="java:jboss/datasources/securityDs"
    pool-name="securityDs">
    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
      <driver>h2</driver>
      <new-connection-sql>select current_user()</new-connection-sql>
      <security>
        <security-domain>DsRealm</security-domain>
      </security>
    </datasource>
</datasources>

보안 도메인 사용에 대한 자세한 내용은 Identity Management 구성 방법을 참조하십시오.

암호 자격 증명 모음을 사용하여 데이터 소스 보안

다음 단계를 사용하여 암호 자격 증명 모음을 사용하여 데이터 소스를 보호합니다.

  1. ExampleDS 데이터 소스에 대한 암호 자격 증명 모음을 설정합니다.

    data-source --name=ExampleDS
    --password=${VAULT::ds_ExampleDS::password::N2NhZDYzOTMtNWE0OS00ZGQ0LWE4MmEtMWNlMDMyNDdmNmI2TElORV9CUkVBS3ZhdWx0}
  2. 서버를 다시 로드하여 변경 사항을 구현합니다.

    reload

다음 XML 보안 요소가 암호 자격 증명 모음으로 보안된 ExampleDS 데이터 소스에 추가됩니다.

<security>
  <user-name>admin</user-name>
  <password>${VAULT::ds_ExampleDS::password::N2NhZDYzOTMtNWE0OS00ZGQ0LWE4MmEtMWNlMDMyNDdmNmI2TElORV9CUkVBS3ZhdWx0}</password>
</security>

Password Vault 사용에 대한 자세한 내용은 JBoss EAP 서버 보안 구성 가이드의 Password Vault 섹션을 참조하십시오.

인증 정보 저장소를 사용하여 데이터 소스 보안

인증 정보 저장소를 사용하여 암호를 제공할 수도 있습니다. elytron 하위 시스템은 JBoss EAP 전체에서 암호를 안전하게 저장하고 사용할 수 있도록 자격 증명 저장소를 생성하는 기능을 제공합니다. 자격 증명 저장소 생성 및 사용에 대한 자세한 내용은 JBoss EAP 서버 보안 구성 가이드의 자격 증명 저장소 섹션에서 확인할 수 있습니다.

ExampleDS에 인증 정보 저장소 참조 추가
/subsystem=datasources/data-source=ExampleDS:write-attribute(name=credential-reference,value={store=exampleCS, alias=example-ds-pw})
인증 컨텍스트를 사용하여 데이터 소스 보안
Elytron 인증 컨텍스트를 사용하여 사용자 이름과 암호를 제공할 수도 있습니다.

다음 단계를 사용하여 데이터 소스 보안에 대한 인증 컨텍스트를 구성하고 사용합니다.

  1. 암호사용자 이름 제거

    /subsystem=datasources/data-source=ExampleDS:undefine-attribute(name=password)
    /subsystem=datasources/data-source=ExampleDS:undefine-attribute(name=user-name)
  2. 데이터 소스에 대해 Elytron 보안을 활성화합니다.

    /subsystem=datasources/data-source=ExampleDS:write-attribute(name=elytron-enabled,value=true)
    
    reload
  3. 인증 정보에 대한 인증 구성 을 생성합니다.

    인증 구성에는 데이터 소스가 연결할 때 사용할 자격 증명이 포함되어 있습니다. 다음 예제에서는 인증 정보 저장소에 대한 참조를 사용하지만 Elytron 보안 도메인을 사용할 수도 있습니다.

    /subsystem=elytron/authentication-configuration=exampleAuthConfig:add(authentication-name=sa,credential-reference={clear-text=sa})
  4. authentication-context 를 생성합니다.

    /subsystem=elytron/authentication-context=exampleAuthContext:add(match-rules=[{authentication-configuration=exampleAuthConfig}])
  5. 인증 컨텍스트를 사용하도록 데이터 소스를 업데이트합니다.

    다음 예제에서는 인증 컨텍스트를 사용하도록 ExampleDS 를 업데이트합니다.

    /subsystem=datasources/data-source=ExampleDS:write-attribute(name=authentication-context,value=exampleAuthContext)
    
    reload
    참고

    authentication-context 속성이 설정되지 않고 elytron-enabled 속성이 true 로 설정된 경우 JBoss EAP는 인증에 현재 컨텍스트를 사용합니다.

11.10.1. Kerberos를 사용하여 데이터 소스 보안

kerberos 인증을 사용하여 데이터 소스를 보호하려면 다음 구성이 필요합니다.

  • Kerberos는 데이터베이스 서버에서 구성됩니다.
  • JBoss EAP 호스트 서버에는 데이터베이스 서버의 키탭 항목이 있습니다.

kerberos를 사용하여 데이터 소스를 보호하려면 다음을 수행합니다.

  1. kerberos를 사용하도록 JBoss EAP 구성.

    /system-property=java.security.krb5.conf:add(value="/path/to/krb5.conf")
    /system-property=sun.security.krb5.debug:add(value="false")
    /system-property=sun.security.spnego.debug:add(value="false")

    디버깅의 경우 sun.security.krb5.debugsun.security.spnego.debug 값을 true 로 변경합니다. 프로덕션 환경에서는 값을 false 로 설정하는 것이 좋습니다.

  2. 보안을 구성합니다.

    레거시 보안 또는 Elytron 보안을 사용하여 데이터 소스를 보호할 수 있습니다.

    • 레거시 보안과 함께 kerberos를 사용하려면 다음을 수행합니다.

      1. 캐시에서 만료된 티켓을 정기적으로 제거하도록 infinispan 캐시를 구성합니다.

        batch
        /subsystem=infinispan/cache-container=security:add(default-cache=auth-cache)
        /subsystem=infinispan/cache-container=security/local-cache=auth-cache:add()
        /subsystem=infinispan/cache-container=security/local-cache=auth-cache/expiration=EXPIRATION:add(lifespan=3540000,max-idle=3540000)
        /subsystem=infinispan/cache-container=security/local-cache=auth-cache/memory=object:add(size=1000)
        run-batch

        다음 속성은 티켓 만료를 정의합니다.

        • Lifespan: KDC에서 새 인증서를 요청하는 간격(밀리초)입니다. lifespan 속성의 값을 KDC에서 정의한 라이프사이클보다 작아야 합니다.
        • max-idle: 사용되지 않는 경우 유효한 티켓을 캐시에서 제거해야 하는 간격(밀리초)입니다.
        • Max-entries: 캐시에 보관해야 할 kerberos 티켓의 최대 수입니다. 값은 데이터 소스에서 구성된 연결 수에 해당합니다.
      2. 보안 도메인을 생성합니다.

        batch
        /subsystem=elytron/security-domain=KerberosDatabase:add(cache-type=infinispan)
        /subsystem=elytron/security-domain=KerberosDatabase/authentication=classic:add
        /subsystem=elytron/security-domain=KerberosDatabase/authentication=classic/login-module="KerberosDatabase-Module":add(code="org.jboss.security.negotiation.KerberosLoginModule",module="org.jboss.security.negotiation",flag=required, module-options={ "debug" => "false", "storeKey" => "false", "useKeyTab" => "true", "keyTab" => "/path/to/eap.keytab", "principal" => "PRINCIPAL@SERVER.COM", "doNotPrompt" => "true", "refreshKrb5Config" => "true", "isInitiator" => "true", "addGSSCredential" => "true", "credentialLifetime" => "-1"})
        run-batch
        • SQL 서버에 Microsoft JDBC 드라이버를 사용하는 경우 module-options 에서 속성 및 값을 "wrapGSSCredential" Cryostat "true" 로 추가합니다.
        • 디버깅의 경우 module-optionsdebug 속성 값을 true 로 변경합니다.
    • Elytron과 함께 kerberos를 사용하려면 다음을 수행합니다.

      1. Elytron에 kerberos 팩토리를 설정합니다.

        /subsystem=elytron/kerberos-security-factory=krbsf:add(debug=false, principal=PRINCIPAL@SERVER.COM, path=/path/to/keytab, request-lifetime=-1, obtain-kerberos-ticket=true, server=false)
        • 디버깅의 경우 속성 및 값 debug = true 를 추가합니다.

          지원되는 속성 목록은 서버 보안 구성 가이드의 Kerberos Security Cryostat 특성 섹션을 참조하십시오.

      2. kerberos 팩토리를 사용하도록 인증 구성을 생성합니다.

        /subsystem=elytron/authentication-configuration=kerberos-conf:add(kerberos-security-factory=krbsf)
      3. 인증 컨텍스트를 생성합니다.

        /subsystem=elytron/authentication-context=ds-context:add(match-rules=[{authentication-configuration=kerberos-conf}])
  3. kerberos를 사용하여 데이터 소스를 보호합니다.

    • Elytron을 사용하는 경우:

      1. 인증 컨텍스트를 사용하도록 데이터 소스를 구성합니다.

        /subsystem=datasources/data-source=KerberosDS:add(connection-url="URL", min-pool-size=0, max-pool-size=10, jndi-name="java:jboss/datasource/KerberosDS", driver-name=<jdbc-driver>.jar, elytron-enabled=true, authentication-context=ds-context, allow-multiple-users=false, pool-prefill=false, pool-use-strict-min=false, idle-timeout-minutes=2)
      2. 벤더별 연결 속성을 구성합니다.

        /subsystem=datasources/data-source=KerberosDS/connection-properties=<connection-property-name>:add(value="(<kerberos-value>)")

        예: Oracle 데이터베이스의 연결 속성

        /subsystem=datasources/data-source=KerberosDS/connection-properties=oracle.net.authentication_services:add(value="(KERBEROS5)")

      kerberos 인증을 사용하는 경우 데이터 소스에 다음 속성 및 값을 사용하는 것이 좋습니다.

      • pool-prefill=false
      • pool-use-strict-min=false
      • idle-timeout-minutes

    지원되는 속성 목록은 데이터 소스 특성을 참조하십시오.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동