서버 보안 구성 방법


Red Hat JBoss Enterprise Application Platform 7.0

Red Hat JBoss Enterprise Application Platform 7.0에서 사용할 수 있습니다.

Red Hat Customer Content Services

초록

이 문서의 목적은 Red Hat JBoss Enterprise Application Platform 보안에 대한 실용적인 가이드를 제공하는 것입니다. 특히 이 가이드에서는 JBoss EAP에서 모든 관리 인터페이스를 보호하는 방법을 자세히 설명합니다. 이 가이드를 읽기 전에 사용자는 Red Hat JBoss Enterprise Application Platform 7.0의 보안 아키텍처 문서를 읽고 JBoss EAP가 보안을 처리하는 방법을 잘 알고 있어야 합니다. 이 문서에서는 JBoss EAP CLI 인터페이스를 사용하여 구성 변경도 수행합니다. 이 문서를 작성할 때 독자는 JBoss EAP 보안 방법에 대한 확실한 이해가 있어야 합니다.

1장. 보안 개요

JBoss EAP 보안 및 일반 보안 개념에 대한 기본 사항은 Red Hat JBoss Enterprise Application Platform 보안 아키텍처 가이드에서 다룹니다. 이 가이드를 읽기 전에 인증, 권한 부여, 보안 영역, 암호화 및 SSL/TLS에 대한 보안 아키텍처 가이드에서 다루는 기본 정보를 이해하는 것이 중요합니다.

2장. 서버 및 인터페이스 보안

2.1. 블록 빌드

2.1.1. 인터페이스 및 소켓 바인딩

JBoss EAP는 웹 애플리케이션과 관리 인터페이스 모두에 대한 통신에 호스트의 인터페이스(예: inet-address, nic 등) 및 포트를 활용합니다. 이러한 인터페이스와 포트는 JBoss EAP 구성 파일의 인터페이스socket-binding-groups 설정(예: standalone.xml,domain.xml,host.xml 등)을 통해 정의 및 구성됩니다.

인터페이스socket-binding-groups 를 정의하고 구성하는 방법에 대한 자세한 내용은 구성 가이드의 소켓 바인딩 섹션을 참조하십시오.

인터페이스 예

<interfaces>
  <interface name="management">
    <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
  </interface>
  <interface name="public">
    <inet-address value="${jboss.bind.address:127.0.0.1}"/>
  </interface>
</interfaces>
Copy to Clipboard Toggle word wrap

소켓 바인딩 그룹의 예

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
    <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
    <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
    <socket-binding name="http" port="${jboss.http.port:8080}"/>
    <socket-binding name="https" port="${jboss.https.port:8443}"/>
    <socket-binding name="txn-recovery-environment" port="4712"/>
    <socket-binding name="txn-status-manager" port="4713"/>
    <outbound-socket-binding name="mail-smtp">
        <remote-destination host="localhost" port="25"/>
    </outbound-socket-binding>
</socket-binding-group>
Copy to Clipboard Toggle word wrap

2.1.2. Security Cryostats

JBoss EAP는 보안 영역을 사용하여 관리 인터페이스에서 사용할 수 있는 인증 및 권한 부여 메커니즘(예: 로컬, LDAP, 속성 등)을 정의합니다. 보안 영역에 대한 자세한 내용은 Red Hat JBoss Enterprise Application Platform 보안 아키텍처 가이드의 보안 Cryostat 섹션을 참조하십시오.

보안의 예

<security-realms>
  <security-realm name="ManagementRealm">
    <authentication>
      <local default-user="$local" skip-group-loading="true"/>
      <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
    </authentication>
    <authorization map-groups-to-roles="false">
      <properties path="mgmt-groups.properties" relative-to="jboss.server.config.dir"/>
    </authorization>
  </security-realm>
  <security-realm name="ApplicationRealm">
    <authentication>
      <local default-user="$local" allowed-users="*" skip-group-loading="true"/>
      <properties path="application-users.properties" relative-to="jboss.server.config.dir"/>
    </authentication>
    <authorization>
      <properties path="application-roles.properties" relative-to="jboss.server.config.dir"/>
    </authorization>
  </security-realm>
</security-realms>
Copy to Clipboard Toggle word wrap

참고

JBoss EAP는 기존 보안 영역을 업데이트하는 것 외에도 새 보안 영역을 생성할 수 있습니다. 관리 콘솔을 통해 새 보안 영역을 생성하고 관리 CLI에서 다음 명령을 호출할 수 있습니다.

/core-service=management/security-realm=NEW-REALM-NAME:add()
Copy to Clipboard Toggle word wrap

새 보안 영역을 생성하고 인증 또는 권한 부여를 위해 속성 파일을 사용하려면 특히 새 보안 도메인에 대한 새 속성 파일을 생성해야 합니다. JBoss EAP는 다른 보안 도메인에서 사용하는 기존 파일을 재사용하지 않으며, 존재하지 않는 경우 구성에 지정된 새 파일을 자동으로 생성하지 않습니다.

2.1.3. 관리 인터페이스 보안을 위한 보안 192.0.2.s 및 소켓 바인딩 사용

기본적으로 JBoss EAP는 관리 인터페이스에 연결할 http-interface를 정의합니다. 이 인터페이스는 JBoss EAP 구성의 <management-interfaces > 섹션에 정의되어 있습니다.

<management-interfaces>
  <http-interface security-realm="ManagementRealm" http-upgrade-enabled="true">
    <socket-binding http="management-http"/>
  </http-interface>
</management-interfaces>
Copy to Clipboard Toggle word wrap

인터페이스는 security-realmsocket-binding 을 지정합니다. 지정된 보안 영역 및 소켓 바인딩에 대한 구성을 업데이트하면 관리 인터페이스를 다양한 방법으로 보호할 수 있습니다. 보안 영역 및 소켓 바인딩을 통해 이러한 각 인터페이스를 보호할 수 있을 뿐만 아니라 이러한 인터페이스 모두 완전히 비활성화될 수 있으며 이러한 인터페이스의 사용자는 다양한 역할 및 액세스 권한을 갖도록 구성할 수 있습니다. 이 가이드에는 JBoss EAP 내의 다른 하위 시스템과 겹치는 보안 감사, 보안 암호 및 Cryostat와 같은 몇 가지 주제도 있지만 여전히 JBoss EAP 보안과 관련이 있습니다.

2.2. 관리 인터페이스 보안 방법

다음 섹션에서는 JBoss EAP 관리 인터페이스 및 관련 하위 시스템 보안과 관련된 다양한 작업을 수행하는 방법을 보여줍니다.

참고

표시된 관리 CLI 명령은 JBoss EAP 독립 실행형 서버를 실행한다고 가정합니다. JBoss EAP 관리형 도메인에 대한 관리 CLI 사용에 대한 자세한 내용은 JBoss EAP 관리 CLI 가이드를 참조하십시오.

2.2.1. JBoss EAP에서 사용하는 네트워킹 및 포트 구성

호스트 구성에 따라 JBoss EAP는 다양한 네트워크 인터페이스와 포트를 사용하도록 구성할 수 있습니다. 이를 통해 JBoss EAP는 다양한 호스트, 네트워킹 및 방화벽 요구 사항을 사용할 수 있습니다.

JBoss EAP에서 사용하는 네트워킹 및 포트와 해당 설정을 구성하는 방법에 대한 자세한 내용은 구성 가이드의 네트워크 및 포트 구성 섹션을 참조하십시오.

2.2.2. HTTPS에 대한 관리 인터페이스 구성

HTTPS를 통해서만 통신을 위해 JBoss EAP 관리 인터페이스를 구성하면 보안이 향상됩니다. 클라이언트와 관리 인터페이스 간의 모든 네트워크 트래픽은 암호화되므로 중간자 공격과 같은 보안 공격의 위험이 줄어듭니다.

이 절차에서는 JBoss EAP 인스턴스와 암호화되지 않은 통신이 비활성화됩니다. 이 절차는 독립 실행형 서버 및 관리형 도메인 구성에 모두 적용됩니다. 관리형 도메인의 경우 관리 CLI 명령 접두사를 호스트 이름으로 추가합니다(예: /host=master ).

중요

관리 인터페이스에서 HTTPS를 활성화하는 단계를 수행하는 동안 명시적으로 지시하지 않는 한 구성을 다시 로드하지 마십시오. 이렇게 하면 관리 인터페이스에서 잠길 수 있습니다.

  1. 키 저장소를 생성하여 관리 인터페이스를 보호합니다.

    참고

    관리 인터페이스가 JCEKS 형식의 키 저장소와 호환되지 않으므로 이 키 저장소는 JKS 형식이어야 합니다.

    다음을 사용하여 매개 변수의 예제 값(예: 별칭,keypass,keystore,storepassdname )을 해당 환경에 대한 올바른 값으로 교체하여 키 저장소를 생성합니다.

    참고

    매개변수 validity 는 키가 유효한 일 수를 지정합니다. 730 의 값은 2년입니다.

    keytool 명령을 사용하여 터미널에서 키 저장소를 생성

    $ keytool -genkeypair -alias appserver -storetype jks -keyalg RSA -keysize 2048 -keypass password1 -keystore EAP_HOME/standalone/configuration/identity.jks -storepass password1 -dname "CN=appserver,OU=Sales,O=Systems Inc,L=Raleigh,ST=NC,C=US" -validity 730 -v
    Copy to Clipboard Toggle word wrap

  2. 관리 인터페이스가 HTTPS에 바인딩되는지 확인합니다.

    1. 독립 실행형 서버 실행.

      관리 인터페이스가 HTTPS에 바인딩되도록 하려면 management-https 구성을 추가하고 management-http 구성을 제거해야 합니다.

      다음 CLI 명령을 사용하여 관리 인터페이스를 HTTPS에 바인딩합니다.

      /core-service=management/management-interface=http-interface:write-attribute(name=secure-socket-binding, value=management-https)
      
      /core-service=management/management-interface=http-interface:undefine-attribute(name=socket-binding)
      Copy to Clipboard Toggle word wrap
    2. 관리형 도메인 실행

      secure-port 를 추가하고 포트 구성을 제거하여 management-interface 섹션 내에서 socket 요소를 변경합니다.

      다음 명령을 사용하여 관리 인터페이스를 HTTPS에 바인딩합니다.

      /host=master/core-service=management/management-interface=http-interface:write-attribute(name=secure-port,value=9993)
      
      /host=master/core-service=management/management-interface=http-interface:undefine-attribute(name=port)
      Copy to Clipboard Toggle word wrap
  3. 선택 사항: 사용자 지정 socket-binding-group을 사용합니다. 사용자 지정 socket-binding-group 을 사용하려면 기본적으로 포트 9993 에 바인딩되는 management-https 바인딩이 정의되어 있는지 확인해야 합니다. 서버 구성 파일의 socket-binding-group 섹션을 검토하거나 관리 CLI를 사용하여 이를 확인할 수 있습니다.

    관리 CLI를 사용하여 socket-binding-group 구성의 예

    /socket-binding-group=standard-sockets/socket-binding=management-https:read-resource(recursive=true)
    
    {
        "outcome" => "success",
        "result" => {
            "client-mappings" => undefined,
            "fixed-port" => false,
            "interface" => "management",
            "multicast-address" => undefined,
            "multicast-port" => undefined,
            "name" => "management-https",
            "port" => expression "${jboss.management.https.port:9993}"
        }
    }
    Copy to Clipboard Toggle word wrap

  4. 새 보안 영역을 만듭니다. 이 예에서 HTTPS를 사용하는 새 보안 영역인 ManagementRealmHTTPS는 사용자 이름과 암호를 저장하기 위해 EAP_HOME/standalone/configuration/ 디렉터리에 있는 https-mgmt-users.properties 라는 속성 파일을 사용합니다. 나중에 사용자 이름과 암호를 파일에 추가할 수 있지만 지금은 https-mgmt-users.properties 라는 빈 파일을 생성하여 해당 위치에 저장해야 합니다. 다음 예제에서는 touch 명령을 사용하는 방법을 보여 주지만 텍스트 편집기와 같은 다른 메커니즘을 사용할 수도 있습니다.

    touch 명령을 사용하여 빈 파일 생성 예

    $ touch EAP_HOME/standalone/configuration/https-mgmt-users.properties
    Copy to Clipboard Toggle word wrap

    다음으로 다음 CLI 명령을 입력하여 ManagementRealmHTTPS라는 새 보안 영역을 생성합니다.

    /core-service=management/security-realm=ManagementRealmHTTPS:add
    
    /core-service=management/security-realm=ManagementRealmHTTPS/authentication=properties:add(path=https-mgmt-users.properties,relative-to=jboss.server.config.dir)
    Copy to Clipboard Toggle word wrap

    이 시점에서 새 보안 영역을 생성하고 인증에 속성 파일을 사용하도록 구성했습니다. 이제 EAP_HOME/bin/ 디렉터리에서 사용할 수 있는 add-user 스크립트를 사용하여 해당 속성 파일에 사용자를 추가해야 합니다. add-user 스크립트를 실행할 때 각각 -up-r 옵션을 사용하여 properties 파일과 보안 영역을 모두 지정해야 합니다. 여기에서 add-user 스크립트는 https-mgmt-users.properties 파일에 저장할 사용자 이름 및 암호 정보를 대화식으로 요청합니다.

    $ EAP_HOME/bin/add-user.sh -up EAP_HOME/standalone/configuration/https-mgmt-users.properties -r ManagementRealmHTTPS
    ...
    Enter the details of the new user to add.
    Using realm 'ManagementRealmHTTPS' as specified on the command line.
    ...
    Username : httpUser
    Password requirements are listed below. To modify these restrictions edit the add-user.properties configuration file.
     - The password must not be one of the following restricted values {root, admin, administrator}
     - The password must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)
     - The password must be different from the username
    ...
    Password :
    Re-enter Password :
    About to add user 'httpUser' for realm 'ManagementRealmHTTPS'
    ...
    Is this correct yes/no? yes
    ..
    Added user 'httpUser' to file 'EAP_HOME/configuration/https-mgmt-users.properties'
    ...
    Is this new user going to be used for one AS process to connect to another AS process?
    e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls.
    yes/no? no
    Copy to Clipboard Toggle word wrap
    중요

    속성 파일을 사용하여 사용자 이름과 암호를 저장하는 보안 영역을 구성할 때 각 영역에서 다른 영역과 공유되지 않는 고유한 속성 파일을 사용하는 것이 좋습니다.

  5. 새 보안 영역을 사용하도록 관리 인터페이스를 구성합니다.

    /core-service=management/management-interface=http-interface:write-attribute(name=security-realm,value=ManagementRealmHTTPS)
    Copy to Clipboard Toggle word wrap
  6. 키 저장소를 사용하도록 관리 인터페이스를 구성합니다.

    다음 CLI 명령을 사용하여 키 저장소를 사용하도록 관리 인터페이스를 구성합니다. 매개 변수 파일의 경우 암호 및 별칭 값을 첫 번째 단계에서 복사해야 합니다.

    보안 저장소에 키 저장소를 추가하는 CLI 명령

    /core-service=management/security-realm=ManagementRealmHTTPS/server-identity=ssl:add(keystore-path=identity.jks,keystore-relative-to=jboss.server.config.dir,keystore-password=password1, alias=appserver)
    Copy to Clipboard Toggle word wrap

    참고

    키 저장소 암호를 업데이트하려면 다음 CLI 명령을 사용합니다.

    /core-service=management/security-realm=ManagementRealmHTTPS/server-identity=ssl:write-attribute(name=keystore-password,value=newpassword)
    Copy to Clipboard Toggle word wrap

    이 시점에서 서버의 구성을 다시 로드해야 합니다.

    reload
    Copy to Clipboard Toggle word wrap

    서버 구성을 다시 로드한 후 로그에 시작되는 서비스 수를 나타내는 텍스트 바로 앞에 다음이 포함되어야 합니다.

    13:50:54,160 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0061: Http management interface listening on https://127.0.0.1:9993/management
    13:50:54,162 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0052: Admin console listening on https://127.0.0.1:9993
    Copy to Clipboard Toggle word wrap

    관리 인터페이스는 이제 프로시저가 성공했는지 확인하는 포트 9993 에서 수신 대기 중입니다.

    중요

    이 시점에서 CLI의 연결이 끊어지고 포트 바인딩이 변경되었으므로 다시 연결할 수 없습니다. CLI를 다시 연결할 수 있도록 jboss-cli.xml 을 업데이트하려면 다음 단계로 이동합니다.

  7. jboss-cli.xml 을 업데이트합니다.

    관리 CLI를 사용하여 관리 작업을 수행하는 경우 EAP_HOME/bin/jboss-cli.xml 파일을 다음과 같이 변경해야 합니다.

    • < default-protocol >의 값을 https-remoting 으로 업데이트합니다.
    • &lt ;default-controller >에서 < protocol >의 값을 https-remoting 으로 업데이트합니다.
    • &lt ;default-controller >에서 < port >의 값을 9993 로 업데이트합니다.

      jboss-cli.xml 예

      <jboss-cli xmlns="urn:jboss:cli:2.0">
          <default-protocol use-legacy-override="true">https-remoting</default-protocol>
          <!-- The default controller to connect to when 'connect' command is executed w/o arguments -->
          <default-controller>
              <protocol>https-remoting</protocol>
              <host>localhost</host>
              <port>9993</port>
          </default-controller>
      ...
      Copy to Clipboard Toggle word wrap

      다음에 관리 CLI를 사용하여 관리 인터페이스에 연결할 때 서버 인증서를 수락하고 ManagementRealmHTTPS 보안 영역에 대해 인증해야 합니다.

      서버 인증서 수락 및 인증 예

      $ ./jboss-cli.sh -c
      Unable to connect due to unrecognised server certificate
      Subject    - CN=appserver,OU=Sales,O=Systems Inc,L=Raleigh,ST=NC,C=US
      Issuer     - CN=appserver, OU=Sales, O=Systems Inc, L=Raleigh, ST=NC, C=US
      Valid From - Tue Jun 28 13:38:48 CDT 2016
      Valid To   - Thu Jun 28 13:38:48 CDT 2018
      MD5 : 76:f4:81:8b:7e:c3:be:6d:ee:63:c1:7a:b7:b8:f0:fb
      SHA1 : ea:e3:f1:eb:53:90:69:d0:c9:69:4a:5a:a3:20:8f:76:c1:e6:66:b6
      
      Accept certificate? [N]o, [T]emporarily, [P]ermenantly : p
      Authenticating against security realm: ManagementRealmHTTPS
      Username: httpUser
      Password:
      [standalone@localhost:9993 /]
      Copy to Clipboard Toggle word wrap

2.2.3. 관리 콘솔만 비활성화

JBoss Operations Network와 같은 기타 클라이언트는 JBoss EAP 관리를 위해 HTTP 인터페이스를 사용하여 작동합니다. 이러한 서비스를 계속 사용하려면 웹 기반 관리 콘솔 자체만 비활성화할 수 있습니다. 이는 console-enabled 속성을 false 로 설정하여 수행됩니다.

웹 기반 관리 콘솔 비활성화를 위한 CLI 명령

/core-service=management/management-interface=http-interface/:write-attribute(name=console-enabled,value=false)
Copy to Clipboard Toggle word wrap

2.2.4. 관리 인터페이스에 대한 2 단계 SSL/TLS 설정

양방향 SSL/TLS 인증( 클라이언트 인증 이라고도 함)은 SSL/TLS 인증서를 사용하여 클라이언트와 서버 모두를 인증합니다. 이는 클라이언트와 서버 모두에 각각 인증서가 있다는 점에서 HTTPS에 대한 관리 인터페이스 구성 섹션과 다릅니다. 이를 통해 서버는 서버일 뿐만 아니라 클라이언트가 이를 말하는 사람이기도 합니다.

이 섹션에서는 다음 규칙이 사용됩니다.

HOST1
JBoss 서버 호스트 이름. 예: jboss.redhat.com.
HOST2
클라이언트에 적합한 이름입니다. 예: myclient. 이는 실제 호스트 이름이 아닙니다.
CA_HOST1
HOST1 인증서에 사용할 DN(고유 이름)입니다. 예: cn=jboss,dc=redhat,dc=com.
CA_HOST2
HOST2 인증서에 사용할 DN(고유 이름)입니다. 예: cn=myclient,dc=redhat,dc=com.
사전 요구 사항

암호 자격 증명 모음을 사용하여 키 저장소 및 신뢰 저장소 암호를 저장하는 경우 암호 자격 증명 모음이 이미 생성되어 있어야 합니다. 암호 자격 증명 모음에 대한 자세한 내용은 Red Hat JBoss Enterprise Application Platform 7 보안 아키텍처 가이드의 Password Vault 섹션 및 Password Vault System 섹션을 참조하십시오.

주의

Red Hat은 영향을 받는 모든 패키지에서 TLSv1.1 또는 TLSv1.2를 사용하도록 SSLv2, SSLv3 및 TLSv1.0을 명시적으로 비활성화할 것을 권장합니다.

  1. 키 저장소를 생성합니다.

    $ keytool -genkeypair -alias HOST1_alias -keyalg RSA -keysize 1024 -validity 365 -keystore HOST1.keystore.jks -dname "CA_HOST1" -keypass secret -storepass secret
    
    $ keytool -genkeypair -alias HOST2_alias -keyalg RSA -keysize 1024 -validity 365 -keystore HOST2.keystore.jks -dname "CA_HOST2" -keypass secret -storepass secret
    Copy to Clipboard Toggle word wrap
  2. 인증서를 내보냅니다.

    $ keytool -exportcert  -keystore HOST1.keystore.jks -alias HOST1_alias -keypass secret -storepass secret -file HOST1.cer
    
    $ keytool -exportcert  -keystore HOST2.keystore.jks -alias HOST2_alias -keypass secret -storepass secret -file HOST2.cer
    Copy to Clipboard Toggle word wrap
  3. 인증서를 반대 신뢰 저장소로 가져옵니다.

    $ keytool -importcert -keystore HOST1.truststore.jks -storepass secret -alias HOST2_alias -trustcacerts -file HOST2.cer
    
    $ keytool -importcert -keystore HOST2.truststore.jks -storepass secret -alias HOST1_alias -trustcacerts -file HOST1.cer
    Copy to Clipboard Toggle word wrap
  4. CertificateRealm을 정의합니다.

    서버의 구성(host.xml 또는 standalone.xml)에 CertificateRealm을 정의하고 인터페이스를 가리킵니다. 이 작업은 다음 명령을 사용하여 수행할 수 있습니다.

    /core-service=management/security-realm=CertificateRealm:add()
    
    /core-service=management/security-realm=CertificateRealm/server-identity=ssl:add(keystore-path=/path/to/HOST1.keystore.jks, keystore-password=secret,alias=HOST1_alias)
    
    /core-service=management/security-realm=CertificateRealm/authentication=truststore:add(keystore-path=/path/to/HOST1.truststore.jks,keystore-password=secret)
    Copy to Clipboard Toggle word wrap
  5. http-interfacesecurity-realm 을 새 CertificateRealm으로 변경합니다.

    /core-service=management/management-interface=http-interface:write-attribute(name=security-realm,value=CertificateRealm)
    Copy to Clipboard Toggle word wrap
  6. CLI에 대한 SSL/TLS 구성을 추가합니다.

    중요

    양방향 SSL/TLS를 추가하는 것 외에도 관리 인터페이스도 HTTPS에 바인딩하도록 구성해야 합니다.

    EAP_HOME/bin/jboss-cli.xml 을 설정 파일로 사용하는 CLI의 SSL/TLS 구성을 추가합니다.

    키 저장소 및 신뢰 저장소 암호를 일반 텍스트에 저장하려면 EAP_HOME/bin/jboss-cli.xml 을 편집하고 변수에 적절한 값을 사용하여 SSL/TLS 구성을 추가합니다.

    jboss-cli.xml XML 예

    <ssl>
      <alias>HOST2_alias</alias>
      <key-store>/path/to/HOST2.keystore.jks</key-store>
      <key-store-password>secret</key-store-password>
      <trust-store>/path/to/HOST2.truststore.jks</trust-store>
      <trust-store-password>secret</trust-store-password>
      <modify-trust-store>true</modify-trust-store>
    </ssl>
    Copy to Clipboard Toggle word wrap

    암호 자격 증명 모음에 저장된 키 저장소 및 신뢰 저장소 암호를 사용하려면 자격 증명 모음 구성과 적절한 vault 값을 EAP_HOME/bin/jboss-cli.xml 에 추가해야 합니다.

    jboss-cli.xml XML 예

    <ssl>
      <vault>
        <vault-option name="KEYSTORE_URL" value="path-to/vault/vault.keystore"/>
        <vault-option name="KEYSTORE_PASSWORD" value="MASK-5WNXs8oEbrs"/>
        <vault-option name="KEYSTORE_ALIAS" value="vault"/>
        <vault-option name="SALT" value="12345678"/>
        <vault-option name="ITERATION_COUNT" value="50"/>
        <vault-option name="ENC_FILE_DIR" value="EAP_HOME/vault/"/>
      </vault>
      <alias>HOST2_alias</alias>
      <key-store>/path/to/HOST2.keystore.jks</key-store>
      <key-store-password>VAULT::VB::cli_pass::1</key-store-password>
      <key-password>VAULT::VB::cli_pass::1</key-password>
      <trust-store>/path/to/HOST2.truststore.jks</trust-store>
      <trust-store-password>VAULT::VB::cli_pass::1</trust-store-password>
      <modify-trust-store>true</modify-trust-store>
    </ssl>
    Copy to Clipboard Toggle word wrap

2.2.5. 애플리케이션용 SSL/TLS 설정

JBoss EAP는 관리 인터페이스에 HTTPS 및 양방향 SSL/TLS를 지원하는 것 외에도 보안 도메인에서 사용할 SSL/TLS(HTTPS 리스너를 통해)를 설정할 수 있습니다.

중요

사전 요구 사항으로 SSL/TLS 암호화 키 및 인증서를 생성하여 액세스 가능한 디렉터리에 배치해야 합니다. 또한 관련 정보(예: 키 저장소 별칭 및 암호, 원하는 암호화 제품군 등)에 액세스할 수도 있어야 합니다. SSL/TLS 키 및 인증서를 생성하는 예를 보려면 관리 인터페이스에 대한 2일 SSL/TLS 설정 섹션의 처음 두 단계를 참조하십시오. HTTPS 리스너(암호 모음 포함)에 대한 자세한 내용은 HTTPS 리스너 참조 섹션을 참조하십시오.

One-Way SSL/TLS 설정

이 예에서는 keystore인 identity.jks 가 서버 구성 디렉터리에 복사되고 지정된 속성으로 구성되어 있다고 가정합니다. 관리자는 예제 값에 대해 고유한 값을 대체해야 합니다.

참고

표시된 관리 CLI 명령은 JBoss EAP 독립 실행형 서버를 실행한다고 가정합니다. JBoss EAP 관리형 도메인에 대한 관리 CLI 사용에 대한 자세한 내용은 JBoss EAP 관리 CLI 가이드를 참조하십시오.

  1. 먼저 HTTPS 보안 영역을 추가하고 구성합니다. HTTPS 보안 영역이 구성되면 보안 영역을 참조하는 undertow 하위 시스템에서 https-listener 를 구성합니다.

    batch
    
    /core-service=management/security-realm=HTTPSRealm/:add
    
    /core-service=management/security-realm=HTTPSRealm/server-identity= \
    ssl:add(keystore-path=identity.jks, \
    keystore-relative-to=jboss.server.config.dir, \
    keystore-password=password1, alias=appserver)
    
    /subsystem=undertow/server=default-server/https-listener=https:add( \
    socket-binding=https, security-realm=HTTPSRealm)
    
    run-batch
    Copy to Clipboard Toggle word wrap
    주의

    Red Hat은 영향을 받는 모든 패키지에서 TLSv1.1 또는 TLSv1.2를 사용하도록 SSLv2, SSLv3 및 TLSv1.0을 명시적으로 비활성화할 것을 권장합니다.

  2. 변경 사항을 적용하려면 서버를 다시 로드합니다.

    reload
    Copy to Clipboard Toggle word wrap

2.2.6. 2단계 SSL/TLS for Applications 설정

애플리케이션에 대한 양방향 SSL/TLS 설정은 관리 인터페이스에 대해 Two-Way SSL/TLS 설정에 설명된 동일한 여러 절차를 따릅니다. 애플리케이션에 대해 Two-Way SSL/TLS를 설정하려면 다음을 수행해야 합니다.

  1. 클라이언트와 서버 둘 다에 대한 저장소를 생성
  2. 클라이언트와 서버 모두에 대한 인증서 내보내기
  3. 인증서를 반대 신뢰 저장소로 가져옵니다.
  4. 서버의 키 저장소 및 신뢰 저장소를 사용하는 서버에서 보안 영역(예: CertificateRealm )을 정의합니다.
  5. 보안 영역을 사용하도록 undertow 하위 시스템을 업데이트하면 클라이언트 확인이 필요합니다.

처음 네 단계는 관리 인터페이스에 대한 Two-Way SSL/TLS 설정에서 다룹니다.

중요

새 보안 영역을 추가한 후 서버를 다시 로드하지 않은 경우 다음 단계를 수행하기 전에 서버를 다시 로드해야 합니다.

Cryostat를 업데이트합니다.

키 저장소, 인증서, 신뢰 저장소 및 보안 영역을 생성 및 구성한 후에는 undertow 하위 시스템에 HTTPS 리스너를 추가하고 생성한 보안 영역을 사용하며 클라이언트 확인이 필요합니다.

/subsystem=undertow/server=default-server/https-listener=https:add( \
socket-binding=https, security-realm=CertificateRealm, verify-client=REQUIRED)
Copy to Clipboard Toggle word wrap
중요

애플리케이션에 대해 양방향 SSL/TLS가 활성화된 JBoss EAP 인스턴스에 연결하는 모든 클라이언트는 클라이언트 인증서 또는 키 저장소에 액세스할 수 있어야 합니다. 즉, 인증서가 서버의 신뢰 저장소에 포함된 클라이언트 키 저장소입니다. 클라이언트가 브라우저를 사용하여 JBoss EAP 인스턴스에 연결하는 경우 해당 인증서 또는 키 저장소를 브라우저의 인증서 관리자로 가져와야 합니다.

참고

애플리케이션과 함께 양방향 SSL/TLS 외에도 애플리케이션에서 인증서 기반 인증을 사용하는 방법에 대한 자세한 내용은 JBoss EAP에 대한 ID 관리 구성 방법에서 인증서 기반 인증을 사용하도록 보안 도메인 구성에서 확인할 수 있습니다.

2.2.7. HTTPS 리스너 참조

HTTPS 리스너에 사용할 수 있는 전체 속성 목록은 JBoss EAP 구성 가이드의 Cryostat Cryostat 특성을 참조하십시오.

2.2.7.1. Cipher Suites 정보

허용되는 암호화 암호 목록을 구성할 수 있습니다. JSSE 구문의 경우 쉼표로 구분된 목록이어야 합니다. OpenSSL 구문의 경우 콜론으로 구분된 목록이어야 합니다. 하나의 구문만 사용해야 합니다. 기본값은 JVM 기본값입니다.

중요

약한 암호를 사용하는 것은 심각한 보안 위험입니다. 암호화 제품군에 대한 NIST 권장 사항은 http://www.nist.gov/manuscript-publication-search.cfm?pub_id=915295 를 참조하십시오.

사용 가능한 OpenSSL 암호 목록은 https://www.openssl.org/docs/manmaster/apps/ciphers.html#CIPHER-STRINGS 을 참조하십시오. 다음은 지원되지 않습니다.

  • @SECLEVEL
  • SUITEB128
  • SUITEB128ONLY
  • SUITEB192

표준 JSSE 암호 목록은 http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Cipher 를 참조하십시오.

활성화된 암호화 제품군 목록을 업데이트하려면 undertow 하위 시스템에서 HTTPS 리스너의 enabled-cipher-suites 속성을 사용합니다.

CLI 예

/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=enabled-cipher-suites,value="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA")
Copy to Clipboard Toggle word wrap

참고

이 예제에서는 두 가지 가능한 암호만 나열하지만 실제 예제를 사용하면 더 많이 사용할 수 있습니다.

2.2.8. Red Hat Enterprise Linux 6에서 SSL/TLS용 FIPS 140-2 암호화 활성화

SSL/TLS에 FIPS 140-2 호환 암호화를 사용하도록 Cryostat를 구성할 수 있습니다. 이 구성 예제의 범위는 FIPS 모드에서 Mozilla NSS 라이브러리를 사용하는 Red Hat Enterprise Linux 6로 제한됩니다.

중요

Red Hat Enterprise Linux 6는 FIPS 140-2 준수로 이미 구성되어 있어야 합니다. 자세한 내용은 https://access.redhat.com/knowledge/solutions/137833 을 참조하십시오.

주의

TLS 1.2 프로토콜은 FIPS 모드에서 실행할 때 Oracle/OpenJDK 및 JBoss EAP에서 지원되지 않으며 NoSuchAlgorithmException 이 발생할 수 있습니다. 이 문제에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

중요

SSL/TLS에 대한 FIPS 140-2 암호화가 활성화된 환경에서 jboss-cli.sh 를 실행하는 경우 FIPS 모드: SunJSSE TrustManagers만 사용할 수 있습니다. jboss-cli.sh 파일에서 javax.net.ssl.keyStorejavax.net.ssl.trustStore 시스템 속성을 업데이트하여 문제를 해결할 수 있습니다.

JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStore=NONE -Djavax.net.ssl.trustStoreType=PKCS11"
JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.keyStore=NONE -Djavax.net.ssl.keyStoreType=PKCS11 -Djavax.net.ssl.keyStorePassword=imapassword"
Copy to Clipboard Toggle word wrap

SSL/TLS에 FIPS 140-2 호환 암호화를 사용하도록 Cryostat를 구성하려면 다음을 수행해야 합니다.

  • NSS 데이터베이스 구성
  • Cryostat 구성
2.2.8.1. NSS 데이터베이스 구성
  1. NSS 데이터베이스를 저장할 적절한 사용자가 소유한 디렉터리를 생성합니다.

    NSS 데이터베이스 디렉터리 생성을 위한 명령 예

    $ mkdir -p  /usr/share/jboss-as/nssdb
    $ chown jboss /usr/share/jboss-as/nssdb
    $ modutil -create -dbdir /usr/share/jboss-as/nssdb
    Copy to Clipboard Toggle word wrap

    참고

    jboss 사용자는 예제일 뿐입니다. JBoss EAP 실행을 위해 사용하려는 운영 체제의 사용자로 교체해야 합니다.

  2. NSS 구성 파일 /usr/share/jboss-as/nss_pkcsll_fips.cfg 를 만듭니다.

    다음을 지정해야 합니다.

    • 이름
    • NSS 라이브러리가 있는 디렉터리
    • 이전 단계에서 NSS 데이터베이스가 생성된 디렉터리

      Example nss_pkcsll_fips.cfg

      name = nss-fips
      nssLibraryDirectory=/usr/lib64
      nssSecmodDirectory=/usr/share/jboss-as/nssdb
      nssDbMode = readOnly
      nssModule = fips
      Copy to Clipboard Toggle word wrap

      참고

      64비트 버전의 Red Hat Enterprise Linux 6을 실행하지 않는 경우 /usr/lib 64 대신 nssLibraryDirectory/usr/lib64 로 설정합니다.

  3. $JAVA_HOME/jre/lib/security/java.security 구성 파일을 편집합니다.

    $JAVA_HOME/jre/lib/security/java.security 에 다음 행을 추가합니다.

    예제 java.security

    security.provider.1=sun.security.pkcs11.SunPKCS11  /usr/share/jboss-as/nss_pkcsll_fips.cfg
    Copy to Clipboard Toggle word wrap

    참고

    위 행에 지정된 nss_pkcsll_fips.cfg 구성 파일은 이전 단계에서 생성한 파일입니다.

    또한 다음에서 $JAVA_HOME/jre/lib/security/java.security 에서 다음 링크를 업데이트해야 합니다.

    security.provider.5=com.sun.net.ssl.internal.ssl.Provider
    Copy to Clipboard Toggle word wrap

    다음으로 변경

    security.provider.5=com.sun.net.ssl.internal.ssl.Provider  SunPKCS11-nss-fips
    Copy to Clipboard Toggle word wrap
    중요

    이 파일의 다른 security.provider.X 행(예: security.provider.2 )은 이 공급자에 우선순위가 지정되도록 X의 값이 1로 증가해야 합니다.

  4. 이전 단계에서 생성한 NSS 데이터베이스 디렉터리에서 modutil 명령을 실행하여 FIPS 모드를 활성화합니다.

    modutil -fips true -dbdir /usr/share/jboss-as/nssdb
    Copy to Clipboard Toggle word wrap
    참고

    이 시점에서 일부 NSS 공유 오브젝트에 대한 라이브러리 서명을 다시 생성해야 하는 경우 보안 라이브러리 오류가 발생할 수 있습니다.

  5. FIPS 토큰에 암호를 설정합니다.

    토큰 이름은 NSS FIPS 140-2 Certificate DB 여야 합니다.

    modutil -changepw "NSS FIPS 140-2 Certificate DB" -dbdir /usr/share/jboss-as/nssdb
    Copy to Clipboard Toggle word wrap
    중요

    FIPS 토큰에 사용되는 암호는 FIPS 호환 암호여야 합니다. 암호가 충분하지 않은 경우 토큰 "NSS FIPS 140-2 Certificate DB"의 암호를 변경할 수 없음 오류: ERROR: Unable to change password on token "NSS FIPS 140-2 Certificate DB" 오류가 표시될 수 있습니다.

  6. NSS 툴을 사용하여 인증서를 생성합니다.

    명령 예

    certutil -S -k rsa -n undertow  -t "u,u,u" -x -s "CN=localhost, OU=MYOU, O=MYORG, L=MYCITY, ST=MYSTATE, C=MY" -d /usr/share/jboss-as/nssdb
    Copy to Clipboard Toggle word wrap

2.2.8.2. Cryostat 구성

SSL/TLS에 대한 FIPS 140-2 호환 암호화 설정을 완료하려면 다음을 수행합니다.

  1. SSL/TLS를 사용하도록 Cryostat를 구성합니다.

    참고

    아래 명령은 배치 모드로 실행하거나 ssl 서버 ID를 추가한 후 서버를 다시 로드해야 합니다. 아래 예제는 일괄 처리 모드를 사용하여 보여줍니다.

    batch
    
    /core-service=management/security-realm=HTTPSRealm:add
    
    /core-service=management/security-realm=HTTPSRealm/server-identity=ssl:add(keystore-provider=PKCS11, keystore-password="strongP@ssword1")
    
    /subsystem=undertow/server=default-server/https-listener=https:add(socket-binding=https, security-realm=HTTPSRealm, enabled-protocols="TLSv1.1")
    
    run-batch
    Copy to Clipboard Toggle word wrap

    Cryostat를 SSL/TLS로 구성하는 기본 세부 정보는 애플리케이션에 대한 SSL/TLS 설정에서 참조하십시오.

  2. Cryostat에서 사용하는 암호화 제품군을 구성합니다.

    SSL/TLS를 구성한 후에는 특정 암호화 제품군 세트를 활성화하도록 https 리스너 및 보안 영역을 구성해야 합니다.

    필수 Cipher 제품군

    SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_anon_WITH_AES_128_CBC_SHA, TLS_ECDH_anon_WITH_AES_256_CBC_SHA
    Copy to Clipboard Toggle word wrap

    https 리스너에 대한 암호화 제품군 활성화의 기본 사항은 Cipher Suites 에서 다룹니다. https 리스너에서 암호화 제품군을 활성화하려면 다음을 수행합니다.

    Cipher Suites를 Enabling Cipher Suites에서 활성화하는 예제 명령

    /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=enabled-cipher-suites,value="SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_anon_WITH_AES_128_CBC_SHA,TLS_ECDH_anon_WITH_AES_256_CBC_SHA")
    Copy to Clipboard Toggle word wrap

  3. 보안 영역에서 암호화 제품군을 활성화합니다.

    보안에서 Cipher Suites를 활성화하는 명령의 예

    /core-service=management/security-realm=HTTPSRealm/server-identity=ssl:write-attribute(name=enabled-cipher-suites, value=[SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_anon_WITH_AES_128_CBC_SHA, TLS_ECDH_anon_WITH_AES_256_CBC_SHA])
    Copy to Clipboard Toggle word wrap

  4. 다음 명령을 실행하여 JVM에서 PKCS11 키 저장소에서 개인 키를 읽을 수 있는지 확인합니다.

    keytool -list -storetype pkcs11
    Copy to Clipboard Toggle word wrap

2.2.9. IBM JDK에서 FIPS 140-2 Compliant Cryptography

IBM JDK에서 IBM JCE(Java Cryptographic Extension) IBMJCEFIPS 공급자 및 IBM JSSE(Java Secure Sockets Extension) FIPS 140-2 Cryptographic Module (IBMJSSE2) for Multi-platforms는 FIPS 140-2 호환 암호화를 제공합니다.

IBMJCEFIPS 공급자에 대한 자세한 내용은 IBM Documentation for IBM JCEFIPSNIST IBMJCEFIPS - 보안 정책을 참조하십시오. IBMJSSE2에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

2.2.9.1. 키 스토리지

IBM JCE는 키 저장소를 제공하지 않습니다. 키는 컴퓨터에 저장되고 물리적 경계를 남기지 않습니다. 키가 컴퓨터 간에 이동되는 경우 암호화해야 합니다.

FIPS 호환 모드에서 keytool 을 실행하려면 다음과 같이 각 명령에서 -providerClass 옵션을 사용합니다.

keytool -list -storetype JCEKS -keystore mystore.jck -storepass mystorepass -providerClass com.ibm.crypto.fips.provider.IBMJCEFIPS
Copy to Clipboard Toggle word wrap
2.2.9.2. FIPS 공급자 정보 검사

서버에서 사용하는 IBMJCEFIPS에 대한 정보를 검사하려면 standalone.conf 또는 domain.conf-Djavax.net.debug=true 를 추가하여 디버그 수준 로깅을 활성화합니다. FIPS 공급자에 대한 정보는 server.log 에 기록됩니다. 예를 들면 다음과 같습니다.

04:22:45,685 INFO  [stdout] (http-/127.0.0.1:8443-1) JsseJCE:  Using MessageDigest SHA from provider IBMJCEFIPS version 1.7
04:22:45,689 INFO  [stdout] (http-/127.0.0.1:8443-1) DHCrypt:  DH KeyPairGenerator  from provider from init IBMJCEFIPS version 1.7
04:22:45,754 INFO  [stdout] (http-/127.0.0.1:8443-1) JsseJCE:  Using KeyFactory DiffieHellman from provider IBMJCEFIPS version 1.7
04:22:45,754 INFO  [stdout] (http-/127.0.0.1:8443-1) JsseJCE:  Using KeyAgreement DiffieHellman from provider IBMJCEFIPS version 1.7
04:22:45,754 INFO  [stdout] (http-/127.0.0.1:8443-1) DHCrypt:  DH KeyAgreement  from provider IBMJCEFIPS version 1.7
04:22:45,754 INFO  [stdout] (http-/127.0.0.1:8443-1) DHCrypt:  DH KeyAgreement  from provider from initIBMJCEFIPS version 1.7
Copy to Clipboard Toggle word wrap

2.2.10. JVM이 FIPS 모드에서 실행 중일 때 관리형 도메인 시작

중요

관리형 도메인인 FIPS가 구성되어 있고 필요한 모든 인증서가 구성되어 있다고 가정합니다. 여기에는 도메인 컨트롤러의 인증서를 각 컨트롤러의 신뢰 저장소로 가져오는 작업이 포함됩니다. 관리형 도메인 구성에 대한 자세한 내용은 JBoss EAP 구성 가이드의 도메인 관리를 참조하십시오. FIPS 구성에 대한 자세한 내용은 Red Hat Enterprise Linux 6에서 SSL/TLS에 FIPS 140-2 암호화 활성화를 참조하십시오.

통신에 SSL/TLS를 사용하도록 각 호스트 컨트롤러 및 마스터 도메인 컨트롤러를 업데이트해야 합니다.

주의

Red Hat은 영향을 받는 모든 패키지에서 TLSv1.1을 사용하도록 SSLv2, SSLv3 및 TLSv1.0을 명시적으로 비활성화할 것을 권장합니다.

  1. 마스터 도메인 컨트롤러에서 SSL/TLS 보안 영역을 생성합니다.

    NSS 데이터베이스를 PKCS11 공급자로 사용하도록 구성된 마스터 도메인 컨트롤러에서 SSL/TLS 보안 영역을 생성해야 합니다.

    보안의 예

    <security-realm name="HTTPSRealm">
        <server-identities>
            <ssl>
                <engine enabled-protocols="TLSv1.1"/>
                <keystore provider="PKCS11" keystore-password="strongP@ssword1"/>
            </ssl>
        </server-identities>
        <authentication>
            <local default-user="\$local"/>
            <properties path="https-users.properties" relative-to="jboss.domain.config.dir"/>
        </authentication>
    </security-realm>
    Copy to Clipboard Toggle word wrap

  2. 각 호스트 컨트롤러에 SSL/TLS 보안 영역을 생성합니다.

    인증을 위해 SSL/TLS 신뢰 저장소를 사용하여 보안 영역을 생성해야 합니다.

    보안의 예

    <security-realm name="HTTPSRealm">
      <authentication>
        <truststore provider="PKCS11" keystore-password="strongP@ssword1"/>
      </authentication>
    </security-realm>
    Copy to Clipboard Toggle word wrap

    참고

    각 호스트에서 이 프로세스를 반복해야 합니다.

  3. 마스터 도메인 컨트롤러에서 네이티브 인터페이스를 보호합니다.

    방금 생성한 보안 영역으로 마스터 도메인 컨트롤러의 기본 인터페이스가 보호되도록 해야 합니다.

    네이티브 인터페이스의 예

    <management-interfaces>
      ...
      <native-interface security-realm="HTTPSRealm">
        <socket interface="management" port="${jboss.management.native.port:9999}"/>
       </native-interface>
    </management-interfaces>
    Copy to Clipboard Toggle word wrap

  4. 각 호스트 컨트롤러에서 SSL/TLS 영역을 사용하여 마스터 도메인 컨트롤러에 연결합니다.

    마스터 도메인 컨트롤러 연결에 사용되는 보안 영역을 업데이트해야 합니다. 이 변경 사항은 서버가 실행되지 않는 동안 호스트 컨트롤러의 구성 파일(예: host.xml 또는 host-slave.xml )에서 직접 수행해야 합니다.

    호스트 컨트롤러 구성 파일의 예

    <domain-controller>
      <remote security-realm="HTTPSRealm">
        <discovery-options>
          <static-discovery name="primary" protocol="${jboss.domain.master.protocol:remote}" host="${jboss.domain.master.address}" port="${jboss.domain.master.port:9999}"/>
        </discovery-options>
      </remote>
    </domain-controller>
    Copy to Clipboard Toggle word wrap

  5. 각 서버가 호스트 컨트롤러에 다시 연결하는 방법을 업데이트합니다.

    또한 각 서버가 호스트 컨트롤러에 다시 연결하는 방법을 업데이트해야 합니다.

    서버 설정 예

    <server name="my-server" group="my-server-group">
      <ssl ssl-protocol="TLS" trust-manager-algorithm="SunX509" truststore-type="PKCS11" truststore-password="strongP@ssword1"/>
    </server>
    Copy to Clipboard Toggle word wrap

  6. 관리형 도메인에서 양방향 SSL/TLS를 구성합니다.

    양방향 SSL/TLS를 활성화하려면 마스터 도메인 컨트롤러의 SSL/TLS 보안 영역에 신뢰 저장소 인증 방법을 추가하려면 다음 관리 CLI 명령을 실행합니다.

    /host=master/core-service=management/security-realm=HTTPSRealm/authentication=truststore:add(keystore-provider="PKCS11",keystore-password="strongP@ssword1")
    
    reload --host=master
    Copy to Clipboard Toggle word wrap

    또한 각 호스트 컨트롤러의 보안 영역을 SSL 서버 ID를 갖도록 업데이트해야 하며 다음 관리 CLI 명령을 실행합니다.

    /host=host1/core-service=management/security-realm=HTTPSRealm/server-identity=ssl:add(keystore-provider=PKCS11, keystore-password="strongP@ssword1",enabled-protocols=["TLSv1.1"])
    
    reload --host=host1
    Copy to Clipboard Toggle word wrap
    중요

    또한 각 호스트의 인증서를 도메인 컨트롤러의 신뢰 저장소로 가져와야 합니다.

2.2.11. Cryostat에 대한 원격 액세스 비활성화

jmx 하위 시스템에 대한 원격 액세스를 통해 JDK 및 애플리케이션 관리 작업을 원격으로 트리거할 수 있습니다. JBoss EAP에서 Cryostat에 대한 원격 액세스를 비활성화하려면 jmx 하위 시스템에서 원격 커넥터를 제거합니다.

Remoting Connector 제거

/subsystem=jmx/remoting-connector=jmx/:remove
Copy to Clipboard Toggle word wrap

Cryostat에 대한 자세한 내용은 Red Hat JBoss Enterprise Application Platform 보안 아키텍처 가이드의 Cryostat 섹션을참조하십시오.

2.2.12. JAAS를 사용하여 관리 인터페이스 보안

JAAS는 JBoss EAP에서 보안을 관리하기 위해 사용하는 선언적 보안 API입니다. JAAS 및 선언적 보안에 대한 자세한 내용 및 배경 내용은 Red Hat JBoss Enterprise Application Platform 보안 아키텍처 가이드의 선언적 보안 및 JAAS 섹션을 참조하십시오.

참고

ADMIN_ONLY 모드에서 JBoss EAP 인스턴스를 실행하도록 구성된 경우 JAAS를 사용하여 관리 인터페이스를 보호하는 것은 지원되지 않습니다. ADMIN_ONLY 모드에 대한 자세한 내용은 JBoss EAP 구성 가이드의 ADMIN_ONLY 모드에서 JBoss EAP 실행 섹션을 참조하십시오.

JAAS를 사용하여 관리 인터페이스를 인증하려면 다음 단계를 수행해야 합니다.

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

    이 예에서는 UserRoles 로그인 모듈을 사용하여 보안 도메인이 생성되지만 다른 로그인 모듈도 사용할 수 있습니다.

    /subsystem=security/security-domain=UsersLMDomain:add(cache-type=default)
    
    /subsystem=security/security-domain=UsersLMDomain/authentication=classic:add
    
    /subsystem=security/security-domain=UsersLMDomain/authentication=classic/login-module=UsersRoles:add(code=UsersRoles, flag=required,module-options=[("usersProperties"=>"users.properties"),("rolesProperties"=>"roles.properties")])
    Copy to Clipboard Toggle word wrap
  2. JAAS 인증을 사용하여 보안 영역을 만듭니다.

    /core-service=management/security-realm=SecurityDomainAuthnRealm:add
    
    /core-service=management/security-realm=SecurityDomainAuthnRealm/authentication=jaas:add(name=UsersLMDomain)
    Copy to Clipboard Toggle word wrap
  3. 새 보안 영역을 사용하도록 http-interface 관리 인터페이스를 업데이트합니다.

    /core-service=management/management-interface=http-interface/:write-attribute(name=security-realm,value=SecurityDomainAuthnRealm)
    Copy to Clipboard Toggle word wrap
  4. 선택 사항: 그룹 멤버십을 할당합니다.

    특성 assign-groups 는 보안 영역의 그룹 할당에 보안 도메인의 로드된 사용자 멤버십 정보가 사용되는지 여부를 결정합니다. true 로 설정하면 이 그룹 할당이 RBAC(역할 기반 액세스 제어)에 사용됩니다.

    /core-service=management/security-realm=SecurityDomainAuthnRealm/authentication=jaas:write-attribute(name=assign-groups,value=true)
    Copy to Clipboard Toggle word wrap

2.2.13. 자동 인증

JBoss EAP의 기본 설치에는 로컬 관리 CLI 사용자에 대한 자동으로 인증 방법이 포함되어 있습니다. 이를 통해 로컬 사용자는 사용자 이름 또는 암호 인증 없이 관리 CLI에 액세스할 수 있습니다. 이 기능은 편의를 위해 활성화되며 인증 없이도 관리 CLI 스크립트를 실행하는 로컬 사용자를 지원합니다. 로컬 구성에 대한 액세스는 일반적으로 사용자에게 고유한 사용자 세부 정보를 추가하거나 보안 검사를 비활성화할 수 있는 유용한 기능으로 간주됩니다.

보안 제어가 필요한 경우 로컬 사용자에 대한 자동 인증의 편의성을 비활성화할 수 있습니다. 이 작업은 구성 파일의 security-realm 섹션에서 로컬 요소를 제거하여 수행할 수 있습니다. 이는 독립 실행형 인스턴스 및 도메인에 모두 적용됩니다.

중요

로컬 요소 제거는 JBoss EAP 인스턴스에 미치는 영향과 해당 구성이 완전히 이해되는 경우에만 수행해야 합니다.

영역에서 자동으로 인증을 제거하려면 다음을 수행합니다.

/core-service=management/security-realm=REALM_NAME/authentication=local:remove
Copy to Clipboard Toggle word wrap

2.2.14. Cryostat 응답 헤더 제거

기본 JBoss EAP undertow 하위 시스템에는 default-host 의 각 HTTP 응답에 추가된 두 개의 응답 헤더가 포함되어 있습니다.

  • JBoss-EAP/7로 설정된 서버
  • x-Powered-By, is set to Cryo stat/1

개발 및 디버깅 목적에 유용할 수 있지만 사용 중인 서버에 대한 정보를 공개하지 않으려면 이러한 헤더를 제거할 수 있습니다.

다음 관리 CLI 명령을 사용하여 default-host 에서 이러한 응답 헤더를 제거합니다.

/subsystem=undertow/server=default-server/host=default-host/filter-ref=server-header:remove

/subsystem=undertow/server=default-server/host=default-host/filter-ref=x-powered-by-header:remove

reload
Copy to Clipboard Toggle word wrap

2.3. 보안 감사

보안 감사는 보안 하위 시스템 또는 관리 인터페이스에서 발생하는 이벤트에 대한 응답으로 로그에 대한 쓰기와 같은 이벤트를 트리거하는 것을 나타냅니다. 감사 메커니즘은 보안 도메인 또는 관리 인터페이스의 일부로 구성됩니다.

감사는 공급자 모듈을 사용합니다. 포함된 공급자 모듈과 사용자 지정 구현이 모두 사용될 수 있습니다.

2.3.1. 보안 도메인에 대한 보안 감사 구성

보안 도메인에 대한 보안 감사 설정을 구성하려면 관리 콘솔에서 다음 단계를 수행해야 합니다.

  1. 보안 도메인의 자세한 보기를 엽니다.

    • 화면 상단에 있는 구성 을 클릭합니다.
    • 관리형 도메인의 왼쪽 상단에 있는 프로필 선택 상자에서 수정할 프로필 을 선택합니다.
    • Cryostat를 클릭한 다음 보안 을 클릭합니다.
    • 편집할 보안 도메인을 클릭하고 보기를 클릭합니다.
  2. 감사 구성으로 이동합니다.

    화면 왼쪽에서 감사를 클릭합니다.

    구성 영역은 공급자 모듈과 세부 정보라는 두 영역으로 나뉩니다. provider 모듈은 구성의 기본 단위입니다. 보안 도메인에는 각각 속성 및 옵션을 포함할 수 있는 여러 공급자 모듈이 포함될 수 있습니다.

  3. 공급자 모듈을 추가합니다.

    추가 를 클릭하고 provider 모듈의 클래스 이름을 사용하여 Code 섹션을 작성합니다. 또한 이름 섹션에 원하는 이름을 입력합니다.

  4. 모듈이 작동하는지 확인합니다.

    audit 모듈의 목표는 보안 하위 시스템에서 이벤트를 모니터링하는 방법을 제공하는 것입니다. 이 모니터링은 로그 파일, 이메일 알림 또는 기타 측정 가능한 감사 메커니즘에 쓰기를 통해 수행할 수 있습니다.

    예를 들어 JBoss EAP에는 기본적으로 org.jboss.security.audit.providers.LogAuditProvider 모듈이 포함되어 있습니다. 위의 단계에 따라 활성화된 경우 이 감사 모듈은 EAP_HOME 디렉터리 내의 로그 하위 폴더에 있는 audit.log 파일에 보안 알림을 씁니다.

    위의 단계가 org.jboss.security.audit.providers.LogAuditProvider 의 컨텍스트에서 작동하는지 확인하려면 알림을 트리거할 가능성이 있는 작업을 수행한 다음 감사 로그 파일을 확인합니다.

  5. 선택 사항: 모듈 옵션을 추가, 편집 또는 제거합니다.

    모듈에 옵션을 추가하려면 모듈 목록에서 해당 항목을 클릭하고 페이지의 세부 정보 섹션에서 모듈 옵션 탭을 선택합니다. 추가 를 클릭하고 옵션의 키와 값을 제공합니다.

    이미 존재하는 옵션을 편집하려면 제거를 클릭하여 제거하고 추가를 클릭하여 올바른 옵션을 사용하여 다시 추가합니다.

3장. 관리형 도메인 보안

관리 인터페이스 보안 외에도 관리형 도메인의 JBoss EAP 인스턴스 간 통신을 보호할 수도 있습니다.

관리형 도메인 운영 모드에 대한 개념 및 일반 구성에 대한 자세한 내용은 JBoss EAP 구성 가이드의 도메인 관리 섹션을 참조하십시오.

3.1. Slaves 및 도메인 컨트롤러 간 암호 인증 구성

관리형 도메인을 구성할 때 기본적으로 마스터 도메인 컨트롤러는 해당 도메인에 연결하는 각 슬레이브 컨트롤러에 대한 인증이 필요하도록 구성됩니다. 적절한 인증 정보를 사용하여 슬레이브 컨트롤러를 구성하려면 다음을 수행해야 합니다.

  1. 마스터 도메인 컨트롤러에 사용자 추가

    add-user 스크립트를 사용하여 마스터 도메인 컨트롤러에 사용자를 추가해야 합니다. 특히 사용자가 마스터가 관리 인터페이스를 보호하는 데 사용하는 동일한 영역에 사용자를 추가해야 합니다. 기본적으로 ManagementRealm 입니다. 또한 하나의 AS 프로세스에서 다른 AS 프로세스에 연결하기 위해 이 새 사용자를 사용할 예정 이라는 질문에 yes 라고 대답해야 합니다.

    중요

    사용자를 추가한 후 스크립트는 다음 단계에서 사용할 & lt;secret > 요소를 출력합니다. 다음 단계에서 사용하려면 이 값을 유지해야 합니다.

    Slave 사용자 추가 예

    $ EAP_HOME/bin/add-user.sh
    
    What type of user do you wish to add?
     a) Management User (mgmt-users.properties)
     b) Application User (application-users.properties)
    (a): a
    
    Enter the details of the new user to add.
    Using realm 'ManagementRealm' as discovered from the existing property files.
    Username : slave-user
    Password recommendations are listed below. To modify these restrictions edit the add-user.properties configuration file.
     - The password should be different from the username
     - The password should not be one of the following restricted values {root, admin, administrator}
     - The password should contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)
    Password :
    Re-enter Password :
    What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[  ]:
    About to add user 'slave-user' for realm 'ManagementRealm'
    Is this correct yes/no? yes
    Added user 'slave-user' to file '/home/user/EAP-7.0.0/jboss-eap-7.0/standalone/configuration/mgmt-users.properties'
    Added user 'slave-user' to file '/home/user/EAP-7.0.0/jboss-eap-7.0/domain/configuration/mgmt-users.properties'
    Added user 'slave-user' with groups  to file '/home/user/EAP-7.0.0/jboss-eap-7.0/standalone/configuration/mgmt-groups.properties'
    Added user 'slave-user' with groups  to file '/home/user/EAP-7.0.0/jboss-eap-7.0/domain/configuration/mgmt-groups.properties'
    Is this new user going to be used for one AS process to connect to another AS process?
    e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls.
    yes/no? yes
    To represent the user add the following to the server-identities definition <secret value="ABCzc3dv11Qx" />
    Copy to Clipboard Toggle word wrap

  2. 인증 정보를 사용하도록 슬레이브 컨트롤러를 구성합니다.

    마스터 도메인 컨트롤러에서 사용자를 생성한 후에는 호스트 구성 파일에서 해당 인증 정보를 사용하도록 각 슬레이브 컨트롤러를 업데이트해야 합니다(예: host.xml 또는 host-slave.xml ). 이렇게 하려면 도메인 컨트롤러 구성의 < remote> 요소에 사용자 이름을 추가해야 합니다. < remote> 요소를 보호하는 데 사용되는 영역의 서버 ID 에 < secret >을 추가해야 합니다. 이전 단계에서 사용자를 마스터 도메인 컨트롤러에 추가할 때 사용자 이름과 < secret >을 모두 가져왔습니다.

    ...
    <security-realm name="ManagementRealm">
        <server-identities>
            <!-- Replace this with either a base64 password of your own, or use a vault with a vault expression -->
            <secret value="ABCzc3dv11Qx"/>
        </server-identities>
    ...
    <domain-controller>
      <remote security-realm="ManagementRealm" username="slave-user">
          <discovery-options>
              <static-discovery name="primary" protocol="${jboss.domain.master.protocol:remote}" host="${jboss.domain.master.address}" port="${jboss.domain.master.port:9999}"/>
          </discovery-options>
      </remote>
    </domain-controller>
    Copy to Clipboard Toggle word wrap

3.2. 도메인 및 호스트 컨트롤러 간 SSL/TLS 구성

중요

관리형 도메인의 JBoss EAP 인스턴스 간에 사용할 SSL/TLS를 구성하는 경우 각 인스턴스에 상호 작용에 따라 클라이언트 또는 서버 역할이 있을 수 있습니다. 여기에는 모든 호스트 컨트롤러와 도메인 컨트롤러가 포함됩니다. 따라서 끝점 간에 양방향 SSL/TLS를 설정하는 것이 좋습니다.

관리형 도메인에서 JBoss EAP 인스턴스를 구성하여 마스터 도메인 컨트롤러와 호스트 컨트롤러 간에 서로 통신할 때 SSL/TLS를 사용할 수 있습니다. 이렇게 하려면 다음을 수행해야 합니다.

  1. 필요한 모든 인증서 및 키 저장소를 생성하고 구성합니다.

    끝점 간에 양방향 SSL/TLS를 설정하려면 마스터 도메인 컨트롤러와 각 호스트 컨트롤러에 대한 인증서 및 키 저장소를 생성하고 구성해야 합니다. 또한 마스터 도메인 컨트롤러의 인증서를 각 호스트 컨트롤러의 키 저장소로 가져오고 각 호스트 컨트롤러의 인증서를 마스터 도메인 컨트롤러의 키 저장소로 가져와야합니다. 이 프로세스의 세부 사항은 관리 인터페이스에 대한 2 단계 SSL/TLS 설정에서 다룹니다.

  2. SSL/TLS를 사용하도록 마스터 도메인 컨트롤러를 구성합니다.

    모든 인증서와 키 저장소를 구성한 후에는 양방향 SSL/TLS를 사용하도록 보안 영역을 구성해야 합니다. 이 작업은 SSL/TLS를 사용하도록 보안 영역을 구성하고 인증을 위해 필요합니다. 그런 다음 해당 보안 영역을 사용하여 호스트 컨트롤러와 마스터 도메인 컨트롤러 간의 연결에 사용되는 관리 인터페이스를 보호합니다.

    참고

    아래 명령은 배치 모드로 실행하거나 ssl 서버 ID를 추가한 후 서버를 다시 로드해야 합니다. 아래 예제는 일괄 처리 모드를 사용하여 보여줍니다.

    batch
    
    /host=master/core-service=management/security-realm=CertificateRealm:add()
    
    /host=master/core-service=management/security-realm=CertificateRealm/server-identity=ssl:add(alias=domaincontroller,keystore-relative-to=jboss.domain.config.dir,keystore-path=domaincontroller.jks,keystore-password=secret)
    
    /host=master/core-service=management/security-realm=CertificateRealm/authentication=truststore:add(keystore-relative-to=jboss.domain.config.dir,keystore-path=domaincontroller.jks,keystore-password=secret)
    
    /host=master/core-service=management/security-realm=CertificateRealm/authentication=local:add(default-user=\$local)
    
    /host=master/core-service=management/security-realm=CertificateRealm/authentication=properties:add(relative-to=jboss.domain.config.dir,path=mgmt-users.properties)
    
    /host=master/core-service=management/management-interface=native-interface:write-attribute(name=security-realm,value=CertificateRealm)
    
    run-batch
    Copy to Clipboard Toggle word wrap
  3. SSL/TLS를 사용하도록 모든 호스트 컨트롤러를 구성합니다.

    양방향 SSL/TLS를 사용하도록 마스터 도메인 컨트롤러가 구성된 경우 이를 사용하도록 각 호스트 컨트롤러를 구성해야 합니다. 프로세스는 마스터 도메인 컨트롤러 구성과 매우 동일합니다. 단, 각 호스트에 고유한 키 저장소를 사용해야 합니다.

    참고

    아래 명령은 배치 모드로 실행하거나 ssl 서버 ID를 추가한 후 서버를 다시 로드해야 합니다. 아래 예제는 일괄 처리 모드를 사용하여 보여줍니다.

    batch
    
    /host=instance1/core-service=management/security-realm=CertificateRealm:add()
    
    /host=instance1/core-service=management/security-realm=CertificateRealm/server-identity=ssl:add(alias=instance1,keystore-relative-to=jboss.domain.config.dir,keystore-path=instance1.jks,keystore-password=secret)
    
    /host=instance1/core-service=management/security-realm=CertificateRealm/authentication=truststore:add(keystore-relative-to=jboss.domain.config.dir,keystore-path=instance1.jks,keystore-password=secret)
    
    /host=instance1/core-service=management/security-realm=CertificateRealm/authentication=local:add(default-user="\$local")
    
    /host=instance1/core-service=management/security-realm=CertificateRealm/authentication=properties:add(relative-to=jboss.domain.config.dir,path=mgmt-users.properties)
    
    /host=instance1/core-service=management/management-interface=native-interface:write-attribute(name=security-realm,value=CertificateRealm)
    
    run-batch
    Copy to Clipboard Toggle word wrap

    또한 마스터 도메인 컨트롤러를 연결할 때 사용되는 보안 영역을 업데이트해야 합니다. 이 변경 사항은 서버가 실행되지 않는 동안 호스트 컨트롤러의 구성 파일(예: host.xml 또는 host-slave.xml )에서 직접 수행해야 합니다.

    호스트 컨트롤러 구성 파일의 예

    <domain-controller>
            <remote security-realm="CertificateRealm" username="slave-user">
                <discovery-options>
                    <static-discovery name="primary" protocol="${jboss.domain.master.protocol:remote}" host="${jboss.domain.master.address}" port="${jboss.domain.master.port:9999}"/>
                </discovery-options>
            </remote>
        </domain-controller>
    Copy to Clipboard Toggle word wrap

    주의

    Red Hat은 영향을 받는 모든 패키지에서 TLSv1.1 또는 TLSv1.2를 사용하도록 SSLv2, SSLv3 및 TLSv1.0을 명시적으로 비활성화할 것을 권장합니다.

4장. 서버 및 관리 인터페이스의 사용자 보안

JBoss EAP의 다양한 인터페이스를 보호하는 방법을 이해하는 것 외에도 이러한 인터페이스에 액세스하는 사용자를 보호하는 방법을 이해하는 것도 중요합니다.

4.1. 사용자 인증

4.1.1. 기본 사용자 설정

JBoss EAP의 모든 관리 인터페이스는 기본적으로 보호되며 사용자는 로컬 인터페이스 및 원격 인터페이스의 두 가지 방법으로 액세스할 수 있습니다. 이러한 인증 메커니즘의 기본 사항은 Red Hat JBoss Enterprise Application Platform 보안 아키텍처 가이드의 Box 섹션에서 기본 보안 및 Red Hat JBoss Enterprise Application Platform 에서 다룹니다. 기본적으로 이러한 인터페이스에 대한 액세스는 Management Cryostat 보안 영역에서 구성됩니다. 처음에는 로컬 인터페이스가 활성화되며 JBoss EAP 인스턴스를 실행하는 호스트 시스템에 액세스해야 합니다. 원격 액세스도 활성화되며 파일 기반 ID 저장소를 사용하도록 구성됩니다. 기본적으로 mgmt-users.properties 파일을 사용하여 사용자 이름과 암호를 저장하고 mgmt-groups.properties 를 사용하여 사용자 그룹 정보를 저장합니다.

사용자 정보는 EAP_HOME/bin/ 디렉터리에 있는 포함된 adduser 스크립트를 사용하여 이러한 파일에 추가됩니다.

adduser 스크립트를 통해 사용자를 추가하려면 다음을 수행합니다.

  1. add-user.sh 또는 add-user.errors 명령을 실행합니다.
  2. 관리 사용자 또는 애플리케이션 사용자를 추가할지 여부를 선택합니다.
  3. 사용자가 추가할 영역을 선택합니다. 기본적으로 사용 가능한 유일한 영역은 ManagementRealm 및 ApplicationRealm입니다. 사용자 지정 영역을 추가한 경우 대신 해당 이름을 수동으로 입력할 수 있습니다.
  4. 메시지가 표시되면 원하는 사용자 이름, 암호 및 선택적 역할을 입력합니다. 변경 사항은 보안 영역의 각 속성 파일에 작성됩니다.

4.1.2. LDAP를 통한 인증 추가

또한 JBoss EAP는 관리 인터페이스 보안에 LDAP 인증 사용을 지원합니다. LDAP의 기본 사항 및 JBoss EAP와 함께 작동하는 방법은 LDAP,관리 인터페이스에서 LDAP를 사용, Red Hat JBoss Enterprise Application Platform 7 보안 아키텍처 가이드 의 ManagementRealm 섹션에서 LDAP 사용에서 다룹니다. LDAP 인증을 사용하여 관리 인터페이스를 보호하는 방법에 대한 자세한 내용은 Identity 관리 구성 가이드의 LDAP로 관리 인터페이스 보안 섹션을 참조하십시오.

4.2. 보안 암호

4.2.1. 암호 자격 증명 모음

JBoss EAP 및 관련 애플리케이션을 구성하려면 사용자 이름 및 암호와 같은 잠재적으로 민감한 정보가 필요합니다. 구성 파일에 암호를 일반 텍스트로 저장하는 대신 Password Vault 기능을 사용하여 암호 정보를 마스킹하고 암호화된 키 저장소에 저장할 수 있습니다. 암호가 저장되면 관리 CLI 명령 또는 JBoss EAP에 배포된 애플리케이션에 참조가 포함될 수 있습니다.

암호 자격 증명 모음은 Java 키 저장소를 스토리지 메커니즘으로 사용합니다. 암호 자격 증명 모음은 스토리지 및 키 스토리지의 두 부분으로 구성됩니다. Java 키 저장소는 Vault 스토리지에서 민감한 문자열을 암호화하거나 암호 해독하는 데 사용되는 키를 저장하는 데 사용됩니다.

중요

JRE(Java Runtime Environment)에서 제공하는 keytool 유틸리티는 이 단계에 사용됩니다. Red Hat Enterprise Linux에서 /usr/bin/keytool 인 파일의 경로를 찾습니다.

JCEKS 키 저장소 구현은 Java 벤더마다 다르므로 사용된 JDK와 동일한 벤더의 keytool 유틸리티를 사용하여 키 저장소를 생성해야 합니다. 다른 벤더의 JDK에서 실행되는 JBoss EAP 7 인스턴스의 한 공급업체의 JDK에서 keytool에서 생성한 키 저장소를 사용하면 다음과 같은 예외가 발생합니다. java.io.IOException: com.sun.crypto.provider.SealedObjectForKeyProtector

4.2.1.1. 암호 자격 증명 모음 설정

아래 단계에 따라 Password Vault를 설정하고 사용합니다.

  1. 키 저장소 및 기타 암호화된 정보를 저장할 디렉터리를 생성합니다.

    키 저장소 및 기타 중요한 정보를 저장할 디렉터리를 생성합니다. 이 절차의 나머지 부분에서는 디렉터리가 EAP_HOME/vault/ 라고 가정합니다. 이 디렉토리에는 민감한 정보가 포함되어 있으므로 제한된 사용자만 액세스할 수 있어야 합니다. 최소한 JBoss EAP가 실행 중인 사용자 계정에는 읽기-쓰기 액세스 권한이 필요합니다.

  2. keytool 유틸리티와 함께 사용할 매개 변수를 결정합니다.

    다음 매개변수의 값을 결정합니다.

    별칭
    별칭은 키 저장소에 저장된 자격 증명 모음 또는 기타 데이터의 고유 식별자입니다. 별칭은 대소문자를 구분하지 않습니다.
    storetype
    storetype은 키 저장소 유형을 지정합니다. jceks 값이 권장됩니다.
    keyalg
    암호화에 사용할 알고리즘입니다. JRE 및 운영 체제에 대한 설명서를 사용하여 사용 가능한 다른 선택 사항을 확인하십시오.
    keysize
    암호화 키의 크기는 무차별 대입을 통해 암호를 해독하는 것이 얼마나 어려운지에 영향을 미칩니다. 적절한 값에 대한 자세한 내용은 keytool 유틸리티로 배포된 설명서를 참조하십시오.
    storepass
    storepass 값은 키를 읽을 수 있도록 키 저장소에 인증하는 데 사용되는 암호입니다. 암호는 6자 이상이어야 하며 키 저장소에 액세스할 때 제공해야 합니다. 이 매개 변수를 생략하면 keytool 유틸리티에서 명령을 실행한 후 입력하도록 요청합니다.
    keypass
    keypass 값은 특정 키에 액세스하는 데 사용되는 암호이며 storepass 매개변수 값과 일치해야 합니다.
    유효 기간
    validity 값은 키가 유효할 기간(일)입니다.
    키 저장소

    키 저장소의 값은 키 저장소의 값을 저장할 filepath 및 filename입니다. 키 저장소 파일은 데이터를 처음 추가할 때 생성됩니다. Red Hat Enterprise Linux 및 유사한 운영 체제의 /(전달 슬래시)인 \(백슬래시)가 Microsoft Windows Server용 올바른 파일 경로 구분 기호가 사용되었는지 확인합니다.

    keytool 유틸리티에는 다른 많은 옵션이 있습니다. 자세한 내용은 JRE 또는 운영 체제 설명서를 참조하십시오.

  3. keytool 명령을 실행합니다.

    $ keytool -genseckey -alias vault -storetype jceks -keyalg AES -keysize 128 -storepass vault22 -keypass vault22 -validity 730 -keystore EAP_HOME/vault/vault.keystore
    Copy to Clipboard Toggle word wrap

    그러면 EAP_HOME/vault/vault.keystore 파일에서 생성된 키 저장소가 생성됩니다. JBoss EAP의 암호와 같은 암호화된 문자열을 저장하는 데 사용할 alias vault와 함께 단일 키를 저장합니다.

4.2.1.2. 암호 자격 증명 모음을 초기화합니다.

암호 자격 증명 모음은 대화형으로 초기화할 수 있습니다. 여기서 각 매개 변수의 값을 입력하라는 메시지가 표시되거나 비대화형으로 명령줄에 모든 매개변수 값이 제공됩니다. 각 방법은 동일한 결과를 제공하므로 둘 중 하나를 사용할 수 있습니다.

다음 매개변수가 필요합니다.

키 저장소 URL (KEYSTORE_URL)
키 저장소 파일의 파일 시스템 경로 또는 URI입니다. 예에서는 EAP_HOME/vault/vault.keystore 를 사용합니다.
키 저장소 암호(KEYSTORE_PASSWORD)
키 저장소에 액세스하는 데 사용되는 암호입니다.
Salt (SALT)
Salt 값은 키 저장소의 내용을 암호화하기 위해 반복 수와 함께 사용되는 8자의 임의 문자열입니다.
키 저장소 별칭 (KEYSTORE_ALIAS)
키 저장소를 알고 있는 별칭입니다.
반복 횟수(ITERATION_COUNT)
암호화 알고리즘이 실행되는 횟수입니다.
암호화된 파일을 저장할 디렉터리(ENC_FILE_DIR)
암호화된 파일을 저장할 경로입니다. 일반적으로 암호 자격 증명 모음이 포함된 디렉터리입니다. 암호화된 모든 정보를 키 저장소와 동일한 위치에 저장하는 것이 편리하지만 필수는 아닙니다. 이 디렉터리는 제한된 사용자만 액세스할 수 있어야 합니다. 최소한 JBoss EAP 7이 실행 중인 사용자 계정에는 읽기-쓰기 액세스 권한이 필요합니다. 키 저장소는 암호 자격 증명 모음을 설정할 때 생성한 디렉터리에 있어야 합니다. 디렉터리 이름에 후행 백슬래시 또는 슬래시가 필요합니다. Red Hat Enterprise Linux 및 유사한 운영 체제의 /(전달 슬래시)인 \(백슬래시)가 Microsoft Windows Server용 올바른 파일 경로 구분 기호가 사용되었는지 확인합니다.
Vault 블록(VAULT_BLOCK)
암호 자격 증명 모음에서 이 블록에 지정할 이름입니다.
속성 (ATTRIBUTE)
저장되는 속성에 지정되는 이름입니다.
보안 속성 (SEC-ATTR)
암호 자격 증명 모음에 저장되는 암호입니다.

암호 자격 증명 모음 명령을 비대화형으로 실행하려면 자격 증명 모음 스크립트( EAP_HOME/bin/에 있음)를 관련 정보에 대한 매개변수를 사용하여 호출할 수 있습니다.

$ vault.sh --keystore KEYSTORE_URL --keystore-password KEYSTORE_PASSWORD --alias KEYSTORE_ALIAS --vault-block VAULT_BLOCK --attribute ATTRIBUTE --sec-attr SEC-ATTR --enc-dir ENC_FILE_DIR --iteration ITERATION_COUNT --salt SALT
Copy to Clipboard Toggle word wrap

$ vault.sh --keystore EAP_HOME/vault/vault.keystore --keystore-password vault22 --alias vault --vault-block vb --attribute password --sec-attr 0penS3sam3 --enc-dir EAP_HOME/vault/ --iteration 120 --salt 1234abcd
Copy to Clipboard Toggle word wrap

출력 결과

=========================================================================

  JBoss Vault

  JBOSS_HOME: EAP_HOME

  JAVA: java

=========================================================================

Nov 09, 2015 9:02:47 PM org.picketbox.plugins.vault.PicketBoxSecurityVault init
INFO: PBOX00361: Default Security Vault Implementation Initialized and Ready
WFLYSEC0047: Secured attribute value has been stored in Vault.
Please make note of the following:
********************************************
Vault Block:vb
Attribute Name:password
Configuration should be done as follows:
VAULT::vb::password::1
********************************************
WFLYSEC0048: Vault Configuration in WildFly configuration file:
********************************************

</extensions>
<vault>
  <vault-option name="KEYSTORE_URL" value="EAP_HOME/vault/vault.keystore"/>
  <vault-option name="KEYSTORE_PASSWORD" value="MASK-5dOaAVafCSd"/>
  <vault-option name="KEYSTORE_ALIAS" value="vault"/>
  <vault-option name="SALT" value="1234abcd"/>
  <vault-option name="ITERATION_COUNT" value="120"/>
  <vault-option name="ENC_FILE_DIR" value="EAP_HOME/vault/"/>
</vault><management> ...
********************************************
Copy to Clipboard Toggle word wrap

암호 vault 명령을 대화형으로 실행하려면 다음 단계가 필요합니다.

  1. 대화형으로 password vault 명령을 시작합니다.

    Red Hat Enterprise Linux 및 유사한 운영 체제에서 EAP_HOME/bin/vault.sh 를 실행하거나(Microsoft Windows Server에서) 또는 EAP_HOME\bin\vault. extension를 실행합니다. 0 (영)을 입력하여 새 대화형 세션을 시작합니다.

  2. 프롬프트 매개 변수를 완료합니다.

    프롬프트에 따라 필요한 매개 변수를 입력합니다.

  3. 마스크된 암호 정보를 기록해 둡니다.

    마스킹된 암호, salt 및 반복 횟수가 표준 출력에 출력됩니다. 안전한 위치에 기록해 두십시오. Password Vault에 항목을 추가해야 합니다. 키 저장소 파일에 액세스하고 이러한 값을 사용하면 공격자가 Password Vault에서 중요한 정보에 액세스할 수 있습니다.

  4. 대화형 콘솔 종료

    2 (two)를 입력하여 대화형 콘솔을 종료합니다.

입력 및 출력 예

Please enter a Digit::   0: Start Interactive Session  1: Remove Interactive Session  2: Exit
0
Starting an interactive session
Enter directory to store encrypted files:EAP_HOME/vault/
Enter Keystore URL:EAP_HOME/vault/vault.keystore
Enter Keystore password: vault22
Enter Keystore password again: vault22
Values match
Enter 8 character salt:1234abcd
Enter iteration count as a number (Eg: 44):120
Enter Keystore Alias:vault
Initializing Vault
Nov 09, 2015 9:24:36 PM org.picketbox.plugins.vault.PicketBoxSecurityVault init
INFO: PBOX000361: Default Security Vault Implementation Initialized and Ready
Vault Configuration in AS7 config file:
********************************************
...
</extensions>
<vault>
  <vault-option name="KEYSTORE_URL" value="EAP_HOME/vault/vault.keystore"/>
  <vault-option name="KEYSTORE_PASSWORD" value="MASK-5dOaAVafCSd"/>
  <vault-option name="KEYSTORE_ALIAS" value="vault"/>
  <vault-option name="SALT" value="1234abcd"/>
  <vault-option name="ITERATION_COUNT" value="120"/>
  <vault-option name="ENC_FILE_DIR" value="EAP_HOME/vault/"/>
</vault><management> ...
********************************************
Vault is initialized and ready for use
Handshake with Vault complete
Copy to Clipboard Toggle word wrap

+ 구성 파일 및 배포에 사용하기 위해 키 저장소 암호가 마스킹되었습니다. 또한 자격 증명 모음이 초기화되고 사용할 준비가 되었습니다.

4.2.1.3. 암호 자격 증명 모음을 사용하도록 JBoss EAP를 구성합니다.

구성 파일에서 암호 및 기타 민감한 속성을 마스킹하고 사용하려면 JBoss EAP 7에서 이를 저장하고 암호 해독하는 암호 자격 증명 모음을 알고 있어야 합니다.

다음 명령을 사용하여 암호 자격 증명 모음을 사용하도록 JBoss EAP 7을 구성할 수 있습니다.

/core-service=vault:add(vault-options=[("KEYSTORE_URL" => "PATH_TO_KEYSTORE"),("KEYSTORE_PASSWORD" => "MASKED_PASSWORD"),("KEYSTORE_ALIAS" => "ALIAS"),("SALT" => "SALT"),("ITERATION_COUNT" => "ITERATION_COUNT"),("ENC_FILE_DIR" => "ENC_FILE_DIR")])

/core-service=vault:add(vault-options=[("KEYSTORE_URL" => "EAP_HOME/vault/vault.keystore"),("KEYSTORE_PASSWORD" => "MASK-5dOaAVafCSd"),("KEYSTORE_ALIAS" => "vault"),("SALT" => "1234abcd"),("ITERATION_COUNT" => "120"),("ENC_FILE_DIR" => "EAP_HOME/vault/")])
Copy to Clipboard Toggle word wrap
참고

Microsoft Windows Server를 사용하는 경우 파일 경로에 두 개의 백슬래시(\\)를 대신 사용합니다. 예를 들어 C:\\data\\vault\keystore. 이는 문자 이스케이프에 단일 백슬래시 문자(\)를 사용하기 때문입니다.

4.2.2. 암호 자격 증명 모음에 중요한 문자열 저장

일반 텍스트 구성 파일에 암호 및 기타 민감한 문자열을 포함하는 것은 보안 위험입니다. 보안 향상을 위해 암호 자격 증명 모음에 이러한 문자열을 저장하여 구성 파일, 관리 CLI 명령 및 애플리케이션에서 마스킹된 형식으로 참조할 수 있습니다.

중요한 문자열은 대화형으로 암호 자격 증명 모음에 저장할 수 있습니다. 여기서 툴에서 각 매개 변수의 값을 입력하라는 메시지가 표시되거나 비대화형으로 명령줄에 모든 매개변수 값이 제공됩니다. 각 방법은 동일한 결과를 제공하므로 둘 중 하나를 사용할 수 있습니다. 이러한 두 방법은 vault 스크립트를 사용하여 호출됩니다.

암호 자격 증명 모음 명령을 비대화형으로 실행하려면 자격 증명 모음 스크립트( EAP_HOME/bin/에 있음)를 관련 정보에 대한 매개변수를 사용하여 호출할 수 있습니다.

$ vault.sh --keystore KEYSTORE_URL --keystore-password KEYSTORE_PASSWORD --alias KEYSTORE_ALIAS --vault-block VAULT_BLOCK --attribute ATTRIBUTE --sec-attr SEC-ATTR --enc-dir ENC_FILE_DIR --iteration ITERATION_COUNT --salt SALT
Copy to Clipboard Toggle word wrap
참고

키 저장소 암호는 마스킹되지 않은 일반 텍스트 형식으로 지정해야 합니다.

$ vault.sh --keystore EAP_HOME/vault/vault.keystore --keystore-password vault22 --alias vault --vault-block vb --attribute password --sec-attr 0penS3sam3 --enc-dir EAP_HOME/vault/ --iteration 120 --salt 1234abcd
Copy to Clipboard Toggle word wrap

출력 결과

=========================================================================

  JBoss Vault

  JBOSS_HOME: EAP_HOME

  JAVA: java

=========================================================================

Nov 09, 2015 9:24:36 PM org.picketbox.plugins.vault.PicketBoxSecurityVault init
INFO: PBOX00361: Default Security Vault Implementation Initialized and Ready
WFLYSEC0047: Secured attribute value has been stored in Vault.
Please make note of the following:
********************************************
Vault Block:vb
Attribute Name:password
Configuration should be done as follows:
VAULT::vb::password::1
********************************************
WFLYSEC0048: Vault Configuration in WildFly configuration file:
********************************************
...
</extensions>
<vault>
  <vault-option name="KEYSTORE_URL" value="../vault/vault.keystore"/>
  <vault-option name="KEYSTORE_PASSWORD" value="MASK-5dOaAVafCSd"/>
  <vault-option name="KEYSTORE_ALIAS" value="vault"/>
  <vault-option name="SALT" value="1234abcd"/>
  <vault-option name="ITERATION_COUNT" value="120"/>
  <vault-option name="ENC_FILE_DIR" value="../vault/"/>
</vault><management> ...
********************************************
Copy to Clipboard Toggle word wrap

vault 스크립트를 호출한 후 메시지가 표준 출력에 출력되어 vault 블록, 속성 이름, 마스크된 문자열 및 구성에서 문자열 사용에 대한 조언을 표시합니다. 이 정보는 안전한 위치에서 기록해 둡니다. 샘플 출력의 추출은 다음과 같습니다.

Vault Block:vb
Attribute Name:password
Configuration should be done as follows:
VAULT::vb::password::1
Copy to Clipboard Toggle word wrap

암호 vault 명령을 대화형으로 실행하려면 다음 단계가 필요합니다.

  1. 암호 자격 증명 모음 명령을 대화형으로 시작합니다.

    운영 체제의 명령줄 인터페이스를 시작하고(Microsoft Windows Server에서) EAP_HOME/bin/vault.sh (Red Hat Enterprise Linux 및 유사한 운영 체제) 또는 EAP_HOME\bin\vault. CAST를 실행합니다. 0 (영)을 입력하여 새 대화형 세션을 시작합니다.

  2. 프롬프트 매개 변수를 완료합니다.

    프롬프트에 따라 필요한 매개 변수를 입력합니다. 이러한 값은 암호 자격 증명 모음을 만들 때 제공되는 값과 일치해야 합니다.

    참고

    키 저장소 암호는 마스킹되지 않은 일반 텍스트 형식으로 지정해야 합니다.

  3. 민감한 문자열에 대한 프롬프트 매개 변수를 완료합니다.

    0 (0)을 입력하여 민감한 문자열을 저장하기 시작합니다. 프롬프트에 따라 필요한 매개 변수를 입력합니다.

  4. 마스킹된 문자열에 대한 정보를 기록합니다.

    메시지는 표준 출력에 출력되어 vault 블록, 속성 이름, 마스크된 문자열 및 구성에서 문자열 사용에 대한 조언을 표시합니다. 이 정보는 안전한 위치에서 기록해 둡니다. 샘플 출력의 추출은 다음과 같습니다.

    Vault Block:ds_Example1
    Attribute Name:password
    Configuration should be done as follows:
    VAULT::ds_Example1::password::1
    Copy to Clipboard Toggle word wrap
  5. 대화형 콘솔을 종료합니다.

    2 (two)를 입력하여 대화형 콘솔을 종료합니다.

입력 및 출력 예

 =========================================================================
  JBoss Vault
  JBOSS_HOME: EAP_HOME
  JAVA: java
 =========================================================================
 **********************************
 ****  JBoss Vault  ***************
 **********************************
Please enter a Digit::   0: Start Interactive Session  1: Remove Interactive Session  2: Exit
0
Starting an interactive session
Enter directory to store encrypted files:EAP_HOME/vault/
Enter Keystore URL:EAP_HOME/vault/vault.keystore
Enter Keystore password:
Enter Keystore password again:
Values match
Enter 8 character salt:1234abcd
Enter iteration count as a number (Eg: 44):120
Enter Keystore Alias:vault
Initializing Vault
Nov 09, 2015 9:24:36 PM org.picketbox.plugins.vault.PicketBoxSecurityVault init
INFO: PBOX000361: Default Security Vault Implementation Initialized and Ready
Vault Configuration in AS7 config file:
 ********************************************
...
</extensions>
<vault>
  <vault-option name="KEYSTORE_URL" value="EAP_HOME/vault/vault.keystore"/>
  <vault-option name="KEYSTORE_PASSWORD" value="MASK-5dOaAVafCSd"/>
  <vault-option name="KEYSTORE_ALIAS" value="vault"/>
  <vault-option name="SALT" value="1234abcd"/>
  <vault-option name="ITERATION_COUNT" value="120"/>
  <vault-option name="ENC_FILE_DIR" value="EAP_HOME/vault/"/>
</vault><management> ...
 ********************************************
Vault is initialized and ready for use
Handshake with Vault complete
Please enter a Digit::  0: Store a secured attribute  1: Check whether a secured attribute exists  2: Remove secured attribute  3: Exit
0
Task: Store a secured attribute
Please enter secured attribute value (such as password):
Please enter secured attribute value (such as password) again:
Values match
Enter Vault Block:ds_Example1
Enter Attribute Name:password
Secured attribute value has been stored in vault.
Please make note of the following:
 ********************************************
Vault Block:ds_Example1
Attribute Name:password
Configuration should be done as follows:
VAULT::ds_Example1::password::1
 ********************************************
Please enter a Digit::  0: Store a secured attribute  1: Check whether a secured attribute exists  2: Remove secured attribute  3: Exit
Copy to Clipboard Toggle word wrap

4.2.2.1. 구성에서 암호화된 문자열 사용

암호화된 중요한 문자열은 마스크된 형식의 구성 파일 또는 관리 CLI 명령에서 사용할 수 있으므로 표현식을 제공할 수 있습니다.

특정 하위 시스템 내에서 표현식이 허용되는지 확인하려면 해당 하위 시스템에 대해 다음 관리 CLI 명령을 실행합니다.

/subsystem=SUBSYSTEM:read-resource-description(recursive=true)
Copy to Clipboard Toggle word wrap

이 명령 실행의 출력에서 expressions-allowed 매개변수의 값을 찾습니다. 이 값이 사실이면 이 하위 시스템의 구성 내에서 표현식을 사용할 수 있습니다.

다음 구문을 사용하여 일반 텍스트 문자열을 마스크된 양식으로 바꿉니다.

${VAULT::VAULT_BLOCK::ATTRIBUTE_NAME::MASKED_STRING}
Copy to Clipboard Toggle word wrap

예 - Cryostated Form에서 암호를 사용하는 데이터 소스 정의

...
  <subsystem xmlns="urn:jboss:domain:datasources:1.0">
    <datasources>
      <datasource jndi-name="java:jboss/datasources/ExampleDS" enabled="true" use-java-context="true" pool-name="H2DS">
        <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
        <driver>h2</driver>
        <pool></pool>
        <security>
          <user-name>sa</user-name>
          <password>${VAULT::ds_ExampleDS::password::1}</password>
        </security>
      </datasource>
      <drivers>
         <driver name="h2" module="com.h2database.h2">
            <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
         </driver>
      </drivers>
    </datasources>
  </subsystem>
...
Copy to Clipboard Toggle word wrap

4.2.2.2. 애플리케이션에서 암호화된 문자열 사용

Password Vault에 저장된 암호화된 문자열은 애플리케이션의 소스 코드에서 사용할 수 있습니다. 다음 예제는 서블릿의 소스 코드를 추출하여 일반 텍스트 암호 대신 데이터 소스 정의에서 마스킹된 암호를 사용합니다. 일반 텍스트 버전이 주석 처리되어 차이를 확인할 수 있습니다.

자격 증명 모음 암호를 사용하는 서블릿

@DataSourceDefinition(
        name = "java:jboss/datasources/LoginDS",
        user = "sa",
        password = "VAULT::DS::thePass::1",
        className = "org.h2.jdbcx.JdbcDataSource",
        url = "jdbc:h2:tcp://localhost/mem:test"
)​
/*old (plaintext) definition
@DataSourceDefinition(
        name = "java:jboss/datasources/LoginDS",
        user = "sa",
        password = "sa",
        className = "org.h2.jdbcx.JdbcDataSource",
        url = "jdbc:h2:tcp://localhost/mem:test"
)*/
Copy to Clipboard Toggle word wrap

4.2.2.3. 민감한 문자열이 Password Vault에 있는지 확인합니다.

Password Vault에서 중요한 문자열을 저장하거나 사용하기 전에 이미 저장되어 있는지 먼저 확인하는 것이 유용할 수 있습니다.

이 검사는 대화형으로 각 매개 변수의 값을 입력하라는 메시지가 표시되거나 비대화형으로 수행할 수 있습니다. 여기서 모든 매개변수의 값이 명령줄에 제공됩니다. 각 방법은 동일한 결과를 제공하므로 둘 중 하나를 사용할 수 있습니다. 이러한 두 방법은 vault 스크립트를 사용하여 호출됩니다.

비 상호 작용 방법을 사용하여 모든 매개변수의 값을 한 번에 제공합니다. 모든 매개변수에 대한 설명은 암호 자격 증명 모음을 참조하십시오. 암호 자격 증명 모음 명령을 비대화형으로 실행하려면 자격 증명 모음 스크립트( EAP_HOME/bin/에 있음)를 관련 정보에 대한 매개변수를 사용하여 호출할 수 있습니다.

$ vault.sh --keystore KEYSTORE_URL --keystore-password KEYSTORE_PASSWORD --alias KEYSTORE_ALIAS --check-sec-attr --vault-block VAULT_BLOCK --attribute ATTRIBUTE --enc-dir ENC_FILE_DIR --iteration ITERATION_COUNT --salt SALT
Copy to Clipboard Toggle word wrap

자리 표시자 값을 실제 값으로 바꿉니다. KEYSTORE_URL, KEYSTORE_PASSWORD 및 KEYSTORE_ALIAS 매개변수 값은 Password Vault를 생성할 때 제공되는 값과 일치해야 합니다.

참고

키 저장소 암호는 마스킹되지 않은 일반 텍스트 형식으로 지정해야 합니다.

민감한 문자열이 지정된 vault 블록에 저장된 경우 다음 메시지가 표시됩니다.

Password already exists.
Copy to Clipboard Toggle word wrap

값이 지정된 블록에 저장되지 않으면 다음 메시지가 표시됩니다.

Password doesn't exist.
Copy to Clipboard Toggle word wrap

암호 vault 명령을 대화형으로 실행하려면 다음 단계가 필요합니다.

  1. 대화형으로 password vault 명령을 시작합니다.

    Red Hat Enterprise Linux 및 유사한 운영 체제에서 EAP_HOME/bin/vault.sh 를 실행하거나(Microsoft Windows Server에서) 또는 EAP_HOME\bin\vault. extension를 실행합니다. 0 (영)을 입력하여 새 대화형 세션을 시작합니다.

  2. 프롬프트 매개 변수를 완료합니다. 프롬프트에 따라 필요한 인증 매개 변수를 입력합니다. 이러한 값은 암호 자격 증명 모음을 만들 때 제공되는 값과 일치해야 합니다.

    참고

    인증을 입력하라는 메시지가 표시되면 키 저장소 암호를 마스크된 양식이 아닌 일반 텍스트 형식으로 제공해야 합니다.

    • 1 (one)을 입력하여 "보안 특성이 존재하는지 확인"을 선택합니다.
    • 민감한 문자열이 저장되는 vault 블록의 이름을 입력합니다.
    • 확인할 중요한 문자열의 이름을 입력합니다.

민감한 문자열이 지정된 vault 블록에 저장된 경우 다음과 같은 확인 메시지가 출력됩니다.

A value exists for (VAULT_BLOCK, ATTRIBUTE)
Copy to Clipboard Toggle word wrap

민감한 문자열이 지정된 블록에 저장되지 않으면 다음과 같은 메시지가 출력됩니다.

No value has been store for (VAULT_BLOCK, ATTRIBUTE)
Copy to Clipboard Toggle word wrap

예- 민감한 문자열 상호 작용 확인

 =========================================================================
  JBoss Vault
  JBOSS_HOME: EAP_HOME
  JAVA: java
 =========================================================================
 **********************************
 ****  JBoss Vault  ***************
 **********************************
Please enter a Digit::   0: Start Interactive Session  1: Remove Interactive Session  2: Exit
0
Starting an interactive session
Enter directory to store encrypted files:EAP_HOME/vault
Enter Keystore URL:EAP_HOME/vault/vault.keystore
Enter Keystore password:
Enter Keystore password again:
Values match
Enter 8 character salt:1234abcd
Enter iteration count as a number (Eg: 44):120
Enter Keystore Alias:vault
Initializing Vault
Nov 09, 2015 9:24:36 PM org.picketbox.plugins.vault.PicketBoxSecurityVault init
INFO: PBOX000361: Default Security Vault Implementation Initialized and Ready
Vault Configuration in AS7 config file:
 ********************************************
...
</extensions>
<vault>
  <vault-option name="KEYSTORE_URL" value="EAP_HOME/vault/vault.keystore"/>
  <vault-option name="KEYSTORE_PASSWORD" value="MASK-5dOaAVafCSd"/>
  <vault-option name="KEYSTORE_ALIAS" value="vault"/>
  <vault-option name="SALT" value="1234abcd"/>
  <vault-option name="ITERATION_COUNT" value="120"/>
  <vault-option name="ENC_FILE_DIR" value="EAP_HOME/vault/"/>
</vault><management> ...
 ********************************************
Vault is initialized and ready for use
Handshake with Vault complete
Please enter a Digit::  0: Store a secured attribute  1: Check whether a secured attribute exists  2: Remove secured attribute  3: Exit
1
Task: Verify whether a secured attribute exists
Enter Vault Block:vb
Enter Attribute Name:password
A value exists for (vb, password)
Please enter a Digit::  0: Store a secured attribute  1: Check whether a secured attribute exists  2: Remove secured attribute  3: Exit
Copy to Clipboard Toggle word wrap

4.2.2.4. Password Vault에서 중요한 문자열 제거

보안상의 이유로 더 이상 필요하지 않은 경우 Password Vault에서 중요한 문자열을 제거하는 것이 가장 좋습니다. 예를 들어 애플리케이션이 해제되는 경우 데이터 소스 정의에 사용되는 중요한 문자열을 동시에 제거해야 합니다.

중요

사전 요구 사항으로 암호 자격 증명 모음에서 중요한 문자열을 제거하기 전에 JBoss EAP 구성에 사용되는지 확인합니다.

이 작업은 대화형으로 수행할 수 있습니다. 여기서 사용자는 각 매개 변수의 값을 입력하라는 메시지가 표시되거나 비대화형으로 명령행에 모든 매개변수의 값이 제공됩니다. 각 방법은 동일한 결과를 제공하므로 둘 중 하나를 사용할 수 있습니다. 이러한 두 방법은 vault 스크립트를 사용하여 호출됩니다.

비 상호 작용 방법을 사용하여 모든 매개변수의 값을 한 번에 제공합니다. 모든 매개변수에 대한 설명은 암호 자격 증명 모음을 참조하십시오. 암호 자격 증명 모음 명령을 비대화형으로 실행하려면 자격 증명 모음 스크립트( EAP_HOME/bin/에 있음)를 관련 정보에 대한 매개변수를 사용하여 호출할 수 있습니다.

$ vault.sh --keystore KEYSTORE_URL --keystore-password KEYSTORE_PASSWORD --alias KEYSTORE_ALIAS --remove-sec-attr --vault-block VAULT_BLOCK --attribute ATTRIBUTE --enc-dir ENC_FILE_DIR --iteration ITERATION_COUNT --salt SALT
Copy to Clipboard Toggle word wrap

자리 표시자 값을 실제 값으로 바꿉니다. KEYSTORE_URL, KEYSTORE_PASSWORD 및 KEYSTORE_ALIAS 매개변수 값은 Password Vault를 생성할 때 제공되는 값과 일치해야 합니다.

참고

키 저장소 암호는 마스킹되지 않은 일반 텍스트 형식으로 지정해야 합니다.

민감한 문자열이 성공적으로 제거되면 다음과 같은 확인 메시지가 표시됩니다.

Secured attribute [VAULT_BLOCK::ATTRIBUTE] has been successfully removed from vault
Copy to Clipboard Toggle word wrap

민감한 문자열이 제거되지 않으면 다음과 같은 메시지가 표시됩니다.

Secured attribute [VAULT_BLOCK::ATTRIBUTE] was not removed from vault, check whether it exist
Copy to Clipboard Toggle word wrap

출력 예

$ ./vault.sh --keystore EAP_HOME/vault/vault.keystore --keystore-password vault22 --alias vault --remove-sec-attr --vault-block vb --attribute password --enc-dir EAP_HOME/vault/ --iteration 120 --salt 1234abcd
 =========================================================================
  JBoss Vault
  JBOSS_HOME: EAP_HOME
  JAVA: java
 =========================================================================
Dec 23, 2015 1:54:24 PM org.picketbox.plugins.vault.PicketBoxSecurityVault init
INFO: PBOX000361: Default Security Vault Implementation Initialized and Ready
Secured attribute [vb::password] has been successfully removed from vault
Copy to Clipboard Toggle word wrap

민감한 문자열 상호 작용 제거

암호 vault 명령을 대화형으로 실행하려면 다음 단계가 필요합니다.

  1. 대화형으로 password vault 명령을 시작합니다.

    Red Hat Enterprise Linux 및 유사한 운영 체제에서 EAP_HOME/bin/vault.sh 를 실행하거나(Microsoft Windows Server에서) 또는 EAP_HOME\bin\vault. extension를 실행합니다. 0 (영)을 입력하여 새 대화형 세션을 시작합니다.

  2. 프롬프트 매개 변수를 완료합니다.

    프롬프트에 따라 필요한 인증 매개 변수를 입력합니다. 이러한 값은 암호 자격 증명 모음을 만들 때 제공되는 값과 일치해야 합니다.

    참고

    인증을 입력하라는 메시지가 표시되면 키 저장소 암호를 마스크된 양식이 아닌 일반 텍스트 형식으로 제공해야 합니다.

    • 2 (two)를 입력하여 옵션 Remove secured attribute를 선택합니다.
    • 민감한 문자열이 저장되는 vault 블록의 이름을 입력합니다.
    • 제거할 중요한 문자열의 이름을 입력합니다.

민감한 문자열이 성공적으로 제거되면 다음과 같은 확인 메시지가 표시됩니다.

Secured attribute [VAULT_BLOCK::ATTRIBUTE] has been successfully removed from vault
Copy to Clipboard Toggle word wrap

민감한 문자열이 제거되지 않으면 다음과 같은 메시지가 표시됩니다.

Secured attribute [VAULT_BLOCK::ATTRIBUTE] was not removed from vault, check whether it exist
Copy to Clipboard Toggle word wrap

출력 예

 **********************************
 ****  JBoss Vault  ***************
 **********************************
Please enter a Digit::   0: Start Interactive Session  1: Remove Interactive Session  2: Exit
0
Starting an interactive session
Enter directory to store encrypted files:EAP_HOME/vault/
Enter Keystore URL:EAP_HOME/vault/vault.keystore
Enter Keystore password:
Enter Keystore password again:
Values match
Enter 8 character salt:1234abcd
Enter iteration count as a number (Eg: 44):120
Enter Keystore Alias:vault
Initializing Vault
Dec 23, 2014 1:40:56 PM org.picketbox.plugins.vault.PicketBoxSecurityVault init
INFO: PBOX000361: Default Security Vault Implementation Initialized and Ready
Vault Configuration in configuration file:
 ********************************************
...
</extensions>
<vault>
  <vault-option name="KEYSTORE_URL" value="EAP_HOME/vault/vault.keystore"/>
  <vault-option name="KEYSTORE_PASSWORD" value="MASK-5dOaAVafCSd"/>
  <vault-option name="KEYSTORE_ALIAS" value="vault"/>
  <vault-option name="SALT" value="1234abcd"/>
  <vault-option name="ITERATION_COUNT" value="120"/>
  <vault-option name="ENC_FILE_DIR" value="EAP_HOME/vault/"/>
</vault><management> ...
 ********************************************
Vault is initialized and ready for use
Handshake with Vault complete
Please enter a Digit::  0: Store a secured attribute  1: Check whether a secured attribute exists  2: Remove secured attribute  3: Exit
2
Task: Remove secured attribute
Enter Vault Block:vb
Enter Attribute Name:password
Secured attribute [vb::password] has been successfully removed from vault
Copy to Clipboard Toggle word wrap

제공된 Password Vault 구현을 사용하는 것 외에도 사용자 지정 SecurityVault 구현도 사용할 수 있습니다.

중요

사전 요구 사항으로 암호 자격 증명 모음이 초기화되었는지 확인하십시오. 자세한 내용은 암호 자격 증명 모음을 참조하십시오.

암호 자격 증명 모음에 대한 사용자 지정 구현을 사용하려면 다음을 수행합니다.

  1. SecurityVault 인터페이스를 구현하는 클래스를 생성합니다.
  2. 이전 단계의 클래스가 포함된 모듈을 생성하고 인터페이스가 SecurityVaultorg.picketbox 에 대한 종속성을 지정합니다.
  3. 다음 특성으로 vault 요소를 추가하여 JBoss EAP 구성에서 사용자 지정 암호 자격 증명 모음을 활성화합니다.

    • 코드 - SecurityVault를 구현하는 클래스의 정규화된 이름입니다.
    • module - 사용자 지정 클래스가 포함된 모듈의 이름입니다.

필요한 경우 vault-options 매개변수를 사용하여 Password Vault의 사용자 지정 클래스를 초기화할 수 있습니다.

예 - vault-options 매개변수를 사용하여 사용자 지정 클래스

/core-service=vault:add( code="custom.vault.implementation.CustomSecurityVault", module="custom.vault.module", vault-options=[("KEYSTORE_URL" => "PATH_TO_KEYSTORE"),("KEYSTORE_PASSWORD" => "MASKED_PASSWORD"), ("KEYSTORE_ALIAS" => "ALIAS"),("SALT" => "SALT"),("ITERATION_COUNT" => "ITERATION_COUNT"),("ENC_FILE_DIR" => "ENC_FILE_DIR")])
Copy to Clipboard Toggle word wrap

4.2.2.6. 외부 소스에서 키 저장소 암호 받기

EXT, EXTC, CMD, CMDC 또는 CLASS 방법은 Vault 구성에서 Java 키 저장소 암호를 가져오는 데 사용할 수 있습니다.

​<vault-option name="KEYSTORE_PASSWORD" value="[here]"/>
Copy to Clipboard Toggle word wrap

메서드에 대한 설명은 다음과 같습니다.

{EXT}…​
정확한 명령을 나타냅니다. 여기서 '…'은 정확한 명령입니다. 예를 들어 {EXT}/usr/bin/getmypassword --section 1 --query company 에서는 /usr/bin/getmypassword 명령을 실행하여 표준 출력에 암호를 표시하고 Security Vault의 키 저장소에 암호를 사용합니다. 이 예에서 명령은 --section 1--query company 의 두 가지 옵션을 사용합니다.
{EXTC[:expiration_in_millis]}…​
정확한 명령을 나타냅니다. 여기서 …​ 은 플랫폼 명령을 실행하기 위해 Runtime.exec(String) 메서드에 전달되는 정확한 명령줄입니다. 명령 출력의 첫 번째 줄은 암호로 사용됩니다. EXTC 변형은 expiration_in_millis 밀리초의 암호를 캐시합니다. 기본 캐시 만료는 0 = 무한 입니다. 예를 들어 {EXTC:120000}/usr/bin/getmypassword --section 1 --query company 는 캐시에 /usr/bin/getmypassword 출력이 포함되어 있는지 확인합니다. 출력이 포함된 경우 해당 캐시를 사용한 다음 사용합니다. 출력이 포함되지 않은 경우 명령을 실행하여 캐시하고 사용합니다. 이 예에서 캐시는 2분(120000밀리초) 내에 만료됩니다.
{CMD}…​ 또는 {CMDC[:expiration_in_millis]}…​
general 명령은 , (comma)로 구분된 문자열이며 첫 번째 부분은 실제 명령이며 추가 부분은 매개 변수를 나타냅니다. 쉼표를 매개 변수의 일부로 유지하기 위해 백슬래시할 수 있습니다. 예를 들면 {CMD}/usr/bin/getmypassword,--section,1,-query,company 입니다.
{CLASS[@jboss_module_spec]}classname[:ctorargs]
여기서 [:ctorargs] 는 클래스 이름에서 : (colon)으로 구분된 선택적 문자열입니다. 여기서 [ : ctorargs]는 클래스 이름 ctor 에 전달됩니다. ctorargs 는 쉼표로 구분된 문자열 목록입니다. 예: {CLASS@org.test.passwd}org.test.passwd.ExternamPassworProvider. 이 예제에서 org.test.passwd.ExternamPassworProvider 클래스는 org.test.passwd 모듈에서 로드되고 toCharArray() 메서드를 사용하여 암호를 가져옵니다. toCharArray() 를 사용할 수 없는 경우 toString() 메서드가 사용됩니다. org.test.passwd.ExternamPassworProvider 클래스에 기본 생성자가 있어야 합니다.

4.3. 역할 기반 액세스 제어

역할 기반 액세스 제어의 기본 사항은 역할 기반 액세스 제어보안 아키텍처 가이드 의 관리 인터페이스에 RBAC 추가 섹션에서 다룹니다.

4.3.1. 역할 기반 액세스 제어 활성화

기본적으로 RBAC(역할 기반 액세스 제어) 시스템은 비활성화되어 있습니다. provider 속성을 simple 에서 rbac 로 변경하여 사용할 수 있습니다. providermanagement 요소의 access-control 요소의 속성입니다. 이 작업은 관리 CLI를 사용하거나 서버가 오프라인 상태인 경우 서버 구성 XML 파일을 편집하여 수행할 수 있습니다. 실행 중인 서버에서 RBAC를 비활성화하거나 활성화하면 서버 구성이 적용되기 전에 다시 로드해야 합니다.

활성화된 후에는 Administrator 또는 SuperUser 역할의 사용자만 비활성화할 수 있습니다. 기본적으로 관리 CLI는 서버와 동일한 시스템에서 실행되는 경우 SuperUser 역할로 실행됩니다.

관리 CLI를 사용하여 RBAC를 활성화하려면 액세스 권한 부여 리소스의 write-attribute 작업을 사용하여 provider 속성을 RBAC로 설정합니다.

CLI에서 RBAC 활성화

/core-service=management/access=authorization:write-attribute(name=provider, value=rbac)
Copy to Clipboard Toggle word wrap

관리 CLI를 사용하여 RBAC를 비활성화하려면 액세스 권한 부여 리소스의 write-attribute 작업을 사용하여 provider 속성을 simple 로 설정합니다.

CLI에서 RBAC를 비활성화합니다.

/core-service=management/access=authorization:write-attribute(name=provider, value=simple)
Copy to Clipboard Toggle word wrap

서버가 오프라인 상태인 경우 XML 구성을 편집하여 RBAC를 활성화하거나 비활성화할 수 있습니다. 이렇게 하려면 관리 요소의 access-control 요소의 provider 특성을 편집합니다. 값을 rbac 로 설정하고 쉽게 비활성화 수 있습니다.

XML 예

<management>
  <access-control provider="rbac">
    <role-mapping>
      <role name="SuperUser">
        <include>
          <user name="$local"/>
        </include>
      </role>
    </role-mapping>
  </access-control>
</management>
Copy to Clipboard Toggle word wrap

4.3.2. 권한 결합 정책 변경

Permission Combination Policy는 사용자가 두 개 이상의 역할을 할당하는 경우 권한을 결정하는 방법을 결정합니다. 허용 또는 거부로 설정할 수 있습니다. 기본값은 permissive 입니다.

허용 으로 설정하면 작업을 허용하는 사용자에게 역할이 할당되면 작업이 허용됩니다.

거부 로 설정하면 사용자에게 여러 역할이 할당된 경우 작업이 허용되지 않습니다. 즉, 정책이 거부되도록 설정된 경우 각 사용자에게 하나의 역할만 할당해야 합니다. 정책이 거부되도록 설정된 경우 여러 역할이 있는 사용자는 관리 콘솔 또는 관리 CLI를 사용할 수 없습니다.

Permission Combination Policy는 permission-combination-policy 속성을 허용 또는 거부 로 설정하여 구성됩니다. 이 작업은 관리 CLI를 사용하거나 서버가 오프라인 상태인 경우 서버 구성 XML 파일을 편집하여 수행할 수 있습니다. permission-combination-policy 속성은 access-control 요소의 일부이며 access-control 요소는 management 요소에서 찾을 수 있습니다.

Permission Combination Policy 설정

액세스 권한 부여 리소스의 write-attribute 작업을 사용하여 permission-combination-policy 속성을 필수 정책 이름으로 설정합니다.

/core-service=management/access=authorization:write-attribute(name=permission-combination-policy, value=POLICYNAME)
Copy to Clipboard Toggle word wrap

유효한 정책 이름은 거부허용 입니다.

CLI 예

/core-service=management/access=authorization:write-attribute(name=permission-combination-policy, value=rejecting)
Copy to Clipboard Toggle word wrap

서버가 오프라인 상태인 경우 XML 구성을 편집하여 권한 조합 정책 값을 변경할 수 있습니다. 이렇게 하려면 access-control 요소의 permission-combination-policy 속성을 편집합니다.

XML 예

<access-control provider="rbac" permission-combination-policy="rejecting">
  <role-mapping>
    <role name="SuperUser">
      <include>
        <user name="$local"/>
      </include>
    </role>
  </role-mapping>
</access-control>
Copy to Clipboard Toggle word wrap

4.3.3. 역할 관리

RBAC(역할 기반 액세스 제어)를 활성화하면 관리 사용자가 수행할 수 있는 작업은 사용자가 할당되는 역할에 따라 결정됩니다. JBoss EAP 7은 사용자와 그룹 멤버십을 기반으로 하는 포함 및 제외 시스템을 사용하여 사용자가 속한 역할을 결정합니다.

사용자가 다음과 같은 경우 역할에 할당되는 것으로 간주됩니다.

  • 역할에 포함될 사용자로 나열되는 경우
  • 역할에 포함할 그룹의 멤버입니다.

사용자가 아닌 경우 역할에 할당되는 사용자도 고려됩니다.

  • 역할에서 제외할 사용자로 나열되거나
  • 역할에서 제외되도록 나열된 그룹의 멤버입니다.

제외는 포함보다 우선합니다.

역할은 관리 콘솔과 관리 CLI를 사용하여 사용자 및 그룹의 설정을 구성하고 제외할 수 있습니다.

SuperUser 또는 관리자 역할의 사용자만 이 구성을 수행할 수 있습니다.

4.3.3.1. 관리 CLI를 사용하여 사용자 역할 할당 구성

사용자와 그룹을 역할에 매핑하는 구성은 role-mapping 요소로 /core-service=management/access=authorization 에 있습니다.

SuperUser 또는 관리자 역할의 사용자만 이 구성을 수행할 수 있습니다.

역할 할당 구성 보기

:read- children-names 작업을 사용하여 구성된 역할의 전체 목록을 가져옵니다.

/core-service=management/access=authorization:read-children-names(child-type=role-mapping)
{
    "outcome" => "success",
    "result" => [
        "Administrator",
        "Deployer",
        "Maintainer",
        "Monitor",
        "Operator",
        "SuperUser"
    ]
}
Copy to Clipboard Toggle word wrap

지정된 역할 매핑의 read-resource 작업을 사용하여 특정 역할의 전체 세부 정보를 가져옵니다.

/core-service=management/access=authorization/role-mapping=ROLENAME:read-resource(recursive=true)
{
    "outcome" => "success",
    "result" => {
        "include-all" => false,
        "exclude" => undefined,
        "include" => {
            "user-theboss" => {
                "name" => "theboss",
                "realm" => undefined,
                "type" => "USER"
            },
            "user-harold" => {
                "name" => "harold",
                "realm" => undefined,
                "type" => "USER"
            },
            "group-SysOps" => {
                "name" => "SysOps",
                "realm" => undefined,
                "type" => "GROUP"
            }
        }
    }
}
Copy to Clipboard Toggle word wrap

새 역할 추가

다음 절차에서는 역할에 대한 역할 매핑 항목을 추가하는 방법을 보여줍니다. 이 작업은 역할을 구성하기 전에 수행해야 합니다.

add 작업을 사용하여 새 역할 구성을 추가합니다.

/core-service=management/access=authorization/role-mapping=ROLENAME:add
Copy to Clipboard Toggle word wrap
  • ROLENAME은 새 매핑의 역할 이름(예: 감사자)입니다.

CLI 예

/core-service=management/access=authorization/role-mapping=Auditor:add
Copy to Clipboard Toggle word wrap

역할에 포함된 사용자 추가

다음 절차에서는 포함된 역할 목록에 사용자를 추가하는 방법을 보여줍니다.

역할에 대한 구성이 없는 경우 먼저 역할 매핑 항목을 수행해야 합니다.

추가 작업을 사용하여 역할 포함 목록에 사용자 항목을 추가합니다.

/core-service=management/access=authorization/role-mapping=ROLENAME/include=ALIAS:add(name=USERNAME, type=USER)
Copy to Clipboard Toggle word wrap
  • ROLENAME은 구성 중인 역할의 이름입니다. (예: 감사자)
  • ALIAS는 이 매핑에 대한 고유한 이름입니다. Red Hat은 user-USERNAME(예: user-max)과 같은 별칭에 이름 지정 규칙을 사용하는 것이 좋습니다.
  • USERNAME은 include 목록에 추가되는 사용자의 이름입니다. (예: max)

CLI 예

/core-service=management/access=authorization/role-mapping=Auditor/include=user-max:add(name=max, type=USER)
Copy to Clipboard Toggle word wrap

역할에서 제외된 사용자 추가

다음 절차에서는 사용자를 제외된 역할 목록에 추가하는 방법을 보여줍니다.

역할에 대한 구성이 없는 경우 먼저 역할 매핑 항목을 수행해야 합니다.

add 작업을 사용하여 역할의 excludes 목록에 사용자 항목을 추가합니다.

/core-service=management/access=authorization/role-mapping=ROLENAME/exclude=ALIAS:add(name=USERNAME, type=USER)
Copy to Clipboard Toggle word wrap
  • ROLENAME은 구성 중인 역할의 이름입니다. (예: 감사자)
  • USERNAME은 제외 목록에 추가되는 사용자의 이름입니다. (예: max)
  • ALIAS는 이 매핑에 대한 고유한 이름입니다. Red Hat은 user-USERNAME(예: user-max)과 같은 별칭에 이름 지정 규칙을 사용하는 것이 좋습니다.

CLI 예

/core-service=management/access=authorization/role-mapping=Auditor/exclude=user-max:add(name=max, type=USER)
Copy to Clipboard Toggle word wrap

사용자 역할 제거 구성

다음 절차에서는 역할 매핑에서 사용자 포함 항목을 제거하는 방법을 보여줍니다.

remove 작업을 사용하여 항목을 제거합니다.

/core-service=management/access=authorization/role-mapping=ROLENAME/include=ALIAS:remove
Copy to Clipboard Toggle word wrap
  • ROLENAME은 구성 중인 역할의 이름입니다(예: 감사자)
  • ALIAS는 이 매핑에 대한 고유한 이름입니다. Red Hat은 user-USERNAME(예: user-max)과 같은 별칭에 이름 지정 규칙을 사용하는 것이 좋습니다.

CLI 예

/core-service=management/access=authorization/role-mapping=Auditor/include=user-max:remove
Copy to Clipboard Toggle word wrap

참고

포함 목록에서 사용자를 제거해도 시스템에서 사용자가 제거되지 않으며 역할이 사용자에게 할당되지 않습니다. 이 역할은 그룹 멤버십에 따라 계속 할당될 수 있습니다.

사용자 역할 제외 구성 제거

다음 절차에서는 역할 매핑에서 사용자 제외 항목을 제거하는 방법을 보여줍니다.

remove 작업을 사용하여 항목을 제거합니다.

/core-service=management/access=authorization/role-mapping=ROLENAME/exclude=ALIAS:remove
Copy to Clipboard Toggle word wrap
  • ROLENAME은 구성 중인 역할의 이름입니다. (예: 감사자)
  • ALIAS는 이 매핑에 대한 고유한 이름입니다. Red Hat은 user-USERNAME(예: user-max)과 같은 별칭에 이름 지정 규칙을 사용하는 것이 좋습니다.
/core-service=management/access=authorization/role-mapping=Auditor/exclude=user-max:remove
Copy to Clipboard Toggle word wrap
참고

제외 목록에서 사용자를 제거해도 시스템에서 사용자가 제거되지 않으며 역할이 사용자에게 할당된다는 보장도 없습니다. 역할은 그룹 멤버십에 따라 제외될 수 있습니다.

4.3.4. 역할 및 사용자 그룹

mgmt-users.properties 파일 또는 LDAP 서버를 사용하여 인증된 사용자는 사용자 그룹의 멤버일 수 있습니다. 사용자 그룹은 하나 이상의 사용자에게 할당할 수 있는 임의의 레이블입니다.

RBAC 시스템은 멤버가 속한 사용자 그룹에 따라 사용자에게 역할을 자동으로 할당하도록 구성할 수 있습니다. 그룹 멤버십에 따라 역할에서 사용자를 제외할 수도 있습니다.

mgmt-users.properties 파일을 사용하는 경우 그룹 정보는 mgmt-groups.properties 파일에 저장됩니다. LDAP를 사용하는 경우 그룹 정보는 LDAP 서버에 저장되고 LDAP 서버를 담당하는 사용자가 유지 관리합니다.

4.3.5. 관리 CLI를 사용하여 그룹 역할 할당 구성

역할에 포함되거나 제외할 그룹은 관리 콘솔 및 관리 CLI에서 구성할 수 있습니다. 이 주제에서는 관리 CLI 사용만 보여줍니다.

사용자와 그룹을 역할에 매핑하는 구성은 역할 매핑 요소로 /core-service=management/access=authorization 의 관리 API에 있습니다.

SuperUser 또는 관리자 역할의 사용자만 이 구성을 수행할 수 있습니다.

그룹 역할 할당 구성 보기

read- children-names 작업을 사용하여 구성된 역할의 전체 목록을 가져옵니다.

/core-service=management/access=authorization:read-children-names(child-type=role-mapping)
{
    "outcome" => "success",
    "result" => [
        "Administrator",
        "Deployer",
        "Maintainer",
        "Monitor",
        "Operator",
        "SuperUser"
    ]
}
Copy to Clipboard Toggle word wrap

지정된 역할 매핑의 read-resource 작업을 사용하여 특정 역할의 전체 세부 정보를 가져옵니다.

/core-service=management/access=authorization/role-mapping=ROLENAME:read-resource(recursive=true)
{
    "outcome" => "success",
    "result" => {
        "include-all" => false,
        "exclude" => undefined,
        "include" => {
            "user-theboss" => {
                "name" => "theboss",
                "realm" => undefined,
                "type" => "USER"
            },
            "user-harold" => {
                "name" => "harold",
                "realm" => undefined,
                "type" => "USER"
            },
            "group-SysOps" => {
                "name" => "SysOps",
                "realm" => undefined,
                "type" => "GROUP"
            }
        }
    }
}
Copy to Clipboard Toggle word wrap

새 역할 추가

다음 절차에서는 역할에 대한 역할 매핑 항목을 추가하는 방법을 보여줍니다. 이 작업은 역할을 구성하기 전에 수행해야 합니다.

add 작업을 사용하여 새 역할 구성을 추가합니다.

/core-service=management/access=authorization/role-mapping=ROLENAME:add
Copy to Clipboard Toggle word wrap

역할에 포함된 그룹 추가

다음 절차에서는 포함된 역할 목록에 그룹을 추가하는 방법을 보여줍니다.

역할에 대한 구성이 없는 경우 먼저 역할 매핑 항목을 수행해야 합니다.

추가 작업을 사용하여 역할 포함 목록에 그룹 항목을 추가합니다.

/core-service=management/access=authorization/role-mapping=ROLENAME/include=ALIAS:add(name=GROUPNAME, type=GROUP)
Copy to Clipboard Toggle word wrap
  • ROLENAME은 구성 중인 역할의 이름입니다. (예: 감사자)
  • GROUPNAME은 include 목록에 추가되는 그룹의 이름입니다. (예: 조사자)
  • ALIAS는 이 매핑에 대한 고유한 이름입니다. Red Hat은 group-GROUPNAME과 같은 별칭에 이름 지정 규칙을 사용하는 것이 좋습니다. (예: group-investigators)

CLI 예

/core-service=management/access=authorization/role-mapping=Auditor/include=group-investigators:add(name=investigators, type=GROUP)
Copy to Clipboard Toggle word wrap

역할에서 제외된 그룹 추가

다음 절차에서는 제외된 역할 목록에 그룹을 추가하는 방법을 보여줍니다.

역할에 대한 구성이 없는 경우 먼저 역할 매핑 항목을 생성해야 합니다.

add 작업을 사용하여 역할의 excludes 목록에 그룹 항목을 추가합니다.

/core-service=management/access=authorization/role-mapping=ROLENAME/exclude=ALIAS:add(name=GROUPNAME, type=GROUP)
Copy to Clipboard Toggle word wrap
  • ROLENAME은 구성 중인 역할의 이름입니다(예: 감사자)
  • GROUPNAME은 include 목록에 추가되는 그룹의 이름(예: supervisors)입니다.
  • ALIAS는 이 매핑에 대한 고유한 이름입니다. group-GROUPNAME과 같은 별칭에 이름 지정 규칙을 사용하는 것이 좋습니다. (예: group-supervisors)

CLI 예

/core-service=management/access=authorization/role-mapping=Auditor/exclude=group-supervisors:add(name=supervisors, type=GROUP)
Copy to Clipboard Toggle word wrap

그룹 역할 제거: 구성

다음 절차에서는 역할 매핑에서 그룹 포함 항목을 제거하는 방법을 보여줍니다.

remove 작업을 사용하여 항목을 제거합니다.

/core-service=management/access=authorization/role-mapping=ROLENAME/include=ALIAS:remove
Copy to Clipboard Toggle word wrap
  • ROLENAME은 구성 중인 역할의 이름입니다(예: 감사자)
  • ALIAS는 이 매핑에 대한 고유한 이름입니다. Red Hat은 group-GROUPNAME과 같은 별칭에 이름 지정 규칙을 사용하는 것이 좋습니다. (예: group-investigators)

CLI 예

/core-service=management/access=authorization/role-mapping=Auditor/include=group-investigators:remove
Copy to Clipboard Toggle word wrap

참고

includes 목록에서 그룹을 제거해도 시스템에서 그룹이 제거되지 않으며 이 그룹의 사용자에게 역할이 할당되지 않을 수도 있습니다. 이 역할은 그룹의 사용자에게 개별적으로 할당될 수 있습니다.

사용자 그룹 제외 항목 제거

다음 절차에서는 역할 매핑에서 그룹 제외 항목을 제거하는 방법을 보여줍니다.

remove 작업을 사용하여 항목을 제거합니다.

/core-service=management/access=authorization/role-mapping=ROLENAME/exclude=ALIAS:remove
Copy to Clipboard Toggle word wrap
  • ROLENAME은 구성 중인 역할의 이름입니다. (예: 감사자)
  • ALIAS는 이 매핑에 대한 고유한 이름입니다. group-GROUPNAME과 같은 별칭에 이름 지정 규칙을 사용하는 것이 좋습니다. (예: group-supervisors)
/core-service=management/access=authorization/role-mapping=Auditor/exclude=group-supervisors:remove
Copy to Clipboard Toggle word wrap
참고

제외 목록에서 그룹을 제거해도 시스템에서 그룹은 제거되지 않습니다. 또한 그룹 멤버에게 역할이 할당되는 것을 보장하지 않습니다. 역할은 그룹 멤버십에 따라 제외될 수 있습니다.

4.3.6. LDAP에서 RBAC 사용

LDAP와 RBAC를 사용하는 기본 사항 및 LDAP와 함께 RBAC를 사용하기 위해 JBoss EAP 7을 구성하는 방법에 대한 기본 사항은 Identity Management 구성 가이드LDAP 및 RBAC 섹션에서 다룹니다.

4.3.7. 범위가 지정된 역할

범위가 지정된 역할은 표준 역할 중 하나의 권한을 부여하지만 JBoss EAP 관리형 도메인에서 하나 이상의 지정된 서버 그룹 또는 호스트에 대한 권한을 부여하는 사용자 정의 역할입니다. 범위가 지정된 역할을 사용하면 관리 사용자에게 필요한 서버 그룹 또는 호스트로만 제한되는 권한을 부여할 수 있습니다.

중요

범위가 지정된 역할은 Administrator 또는 SuperUser 역할이 할당된 사용자가 생성할 수 있습니다.

이는 5 가지 특성에 의해 정의됩니다.

  • 고유한 이름입니다.
  • 표준 역할 중 기반으로 하는 역할은 무엇입니까.
  • 서버 그룹 또는 호스트에 적용되는 경우
  • 제한된 서버 그룹 또는 호스트 목록.
  • 모든 사용자가 자동으로 포함된 경우 기본값은 false입니다.

범위가 지정된 역할을 생성한 후에는 표준 역할과 동일한 방식으로 사용자와 그룹에 할당할 수 있습니다.

범위가 지정된 역할을 생성하면 새 권한을 정의할 수 없습니다. 범위가 지정된 역할은 제한된 범위에서 기존 역할의 권한을 적용하는 데만 사용할 수 있습니다. 예를 들어 단일 서버 그룹으로 제한되는 Deployer 역할을 기반으로 범위가 지정된 역할을 생성할 수 있습니다.

역할을 제한할 수 있는 두 가지 범위만 있습니다.

호스트 범위 역할
호스트 범위의 역할은 해당 역할의 권한을 하나 이상의 호스트로 제한합니다. 즉, 액세스는 관련 /host=*/ 리소스 트리에 제공되지만 다른 호스트에 고유한 리소스가 숨겨집니다.
서버-그룹 범위 역할
server-group 범위의 역할은 해당 역할의 권한을 하나 이상의 서버 그룹으로 제한합니다. 또한 역할 권한은 지정된 서버 그룹과 연결된 프로필, 소켓 바인딩 그룹, 서버 구성 및 서버 리소스에도 적용됩니다. server-group과 논리적으로 관련이 없는 하위 리소스 내의 모든 하위 리소스는 사용자에게 표시되지 않습니다.
4.3.7.1. 관리 CLI에서 범위가 지정된 역할 구성
중요

SuperUser 또는 관리자 역할의 사용자만 이 구성을 수행할 수 있습니다.

새 범위 역할 추가

새 범위 역할을 추가하려면 다음 작업을 수행해야 합니다.

/core-service=management/access=authorization/role-mapping=NEW-SCOPED-ROLE:add
Copy to Clipboard Toggle word wrap
/core-service=management/access=authorization/server-group-scoped-role=NEW-SCOPED-ROLE:add(base-role=BASE-ROLE, server-groups=[SERVER-GROUP-NAME])
Copy to Clipboard Toggle word wrap

NEW-SCOPED-ROLE, BASE-ROLE, SERVER-GROUP-NAME 을 적절한 정보로 교체합니다.

범위가 지정된 역할 매핑 보기 및 편집

범위가 지정된 역할 세부 정보( members 포함)는 다음 명령을 실행하여 확인할 수 있습니다.

/core-service=management/access=authorization/role-mapping=NEW-SCOPED-ROLE:read-resource(recursive=true)
Copy to Clipboard Toggle word wrap

NEW-SCOPED-ROLE을 적절한 정보로 교체합니다.

범위가 지정된 역할의 세부 정보를 편집하려면 write-attribute 명령을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

/core-service=management/access=authorization/role-mapping=NEW-SCOPED-ROLE:write-attribute(name=include-all, value=true)
Copy to Clipboard Toggle word wrap

NEW-SCOPED-ROLE을 적절한 정보로 교체합니다.

범위가 지정된 역할 삭제

/core-service=management/access=authorization/role-mapping=NEW-SCOPED-ROLE:remove
Copy to Clipboard Toggle word wrap

/core-service=management/access=authorization/server-group-scoped-role=NEW-SCOPED-ROLE:remove
Copy to Clipboard Toggle word wrap

NEW-SCOPED-ROLE을 적절한 정보로 교체합니다.

중요

사용자 또는 그룹이 할당되면 범위가 지정된 역할을 삭제할 수 없습니다. 먼저 역할 할당을 제거한 다음 삭제합니다.

사용자 추가 및 제거

범위가 지정된 역할에서 사용자를 추가 및 제거하는 작업은 표준 역할을 추가 및 제거하는 것과 동일한 프로세스를 따릅니다.

4.3.7.2. 관리 콘솔에서 범위가 지정된 역할 구성
중요

SuperUser 또는 관리자 역할의 사용자만 이 구성을 수행할 수 있습니다.

관리 콘솔의 범위가 지정된 역할 구성은 다음 단계를 통해 확인할 수 있습니다.

  1. 관리 콘솔에 로그인
  2. 액세스 제어 탭을 클릭합니다.
  3. 왼쪽의 Roles 메뉴를 클릭하면 모든 역할(범위된 역할 포함)이 표시됩니다.

다음 절차에서는 범위가 지정된 역할에 대한 구성 작업을 수행하는 방법을 보여줍니다.

새 범위 역할 추가

  • 관리 콘솔에 로그인
  • 액세스 제어 탭을 클릭합니다.
  • 왼쪽의 Roles 메뉴를 클릭합니다.
  • 추가 를 클릭합니다.
  • 다음 세부 정보를 지정합니다.

    • 새 범위가 지정된 역할의 고유한 이름입니다.
    • 이 역할이 권한을 기반으로 하는 역할인 기본 역할.
    • 이 역할이 호스트 또는 서버 그룹으로 제한될지 여부를 입력합니다.
    • 역할이 제한된 호스트 또는 서버 그룹 목록. 여러 항목을 선택할 수 있습니다.
    • 이 역할에 모든 사용자를 자동으로 포함할 경우 모두 포함됩니다. 기본값은 no입니다.
  • 저장을 클릭하면 대화 상자가 닫히고 새로 생성된 역할이 테이블에 표시됩니다.

범위가 지정된 역할 편집

  • 관리 콘솔에 로그인
  • 액세스 제어 탭을 클릭합니다.
  • 왼쪽의 Roles 메뉴를 클릭합니다.
  • 편집할 범위가 지정된 역할을 클릭하고 편집을 클릭합니다.
  • 원하는 세부 정보를 변경하여 변경 후 저장 버튼을 클릭합니다.

범위가 지정된 역할 멤버 보기

  • 관리 콘솔에 로그인
  • 액세스 제어 탭을 클릭합니다.
  • 왼쪽의 Roles 메뉴를 클릭합니다.
  • 원하는 범위가 지정된 역할을 클릭하고 포함 또는 제외 를 선택하여 포함 또는 제외를 선택합니다.

범위가 지정된 역할 삭제

  • 관리 콘솔에 로그인
  • 액세스 제어 탭을 클릭합니다.
  • 왼쪽의 Roles 메뉴를 클릭합니다.
  • 원하는 범위가 지정된 역할을 클릭하고 편집 버튼 옆에 있는 드롭다운 화살표를 클릭하고 제거를 클릭합니다.
  • 확인을 클릭합니다. 대화 상자가 닫히고 역할이 제거됩니다.
중요

사용자 또는 그룹을 할당하면 범위가 지정된 역할을 삭제할 수 없습니다. 먼저 역할 할당을 제거한 다음 삭제합니다.

사용자 추가 및 제거

범위가 지정된 역할에 대한 사용자 추가 및 제거는 표준 역할을 추가 및 제거하는 것과 동일한 프로세스를 따릅니다. 사용자 범위가 지정된 역할을 업데이트하려면 다음을 수행합니다.

  • 관리 콘솔에 로그인
  • 액세스 제어 탭을 클릭합니다.
  • 왼쪽의 Roles 메뉴를 클릭합니다.
  • 원하는 범위가 지정된 역할을 클릭하고 포함 또는 제외 를 선택하여 포함 또는 제외를 선택합니다.
  • 멤버를 추가하려면 추가 를 클릭하고 포함 또는 제외할 멤버를 선택하고 저장을 클릭합니다.
  • 멤버를 제거하려면 제거할 멤버를 선택하고 제거를 클릭합니다.

4.3.8. 제한 구성

4.3.8.1. 민감성 제약 조건 구성

민감한 리소스 제약 조건은 중요한 리소스 집합을 정의합니다. 중요한 리소스는 일반적으로 암호와 같이 시크릿이어야 하거나 네트워킹, JVM 구성 또는 시스템 속성과 같이 서버에 심각한 영향을 미치는 리소스입니다. 액세스 제어 시스템 자체도 민감한 것으로 간주됩니다. 리소스 민감도는 특정 리소스를 읽고, 쓰거나, 처리할 수 있는 역할을 제한합니다.

민감도 제약 조건 구성은 at /core-service=management/access=authorization/constraint=sensitivity-classification 에 있습니다.

관리 모델 내에서 각 민감성 제약 조건은 분류로 식별됩니다. 그런 다음 분류는 유형으로 그룹화됩니다. 13 가지 유형으로 정렬되는 39 개의 분류가 있습니다.

민감도 제약 조건을 구성하려면 write-attribute 작업을 사용하여 configured-requires-read,configured-requires-write 또는 configured-requires-addressable 특성을 설정합니다. 이러한 유형의 작업을 민감하게 설정하려면 특성 값을 true 로 설정합니다. 그렇지 않으면 민감하지 않게 설정하려면 false 로 설정합니다. 기본적으로 이러한 속성은 설정되지 않으며 default-requires-read,default-requires-write, default-requires-addressable 의 값이 사용됩니다. 구성된 속성이 설정되면 기본값 대신 사용되는 값이 됩니다. 기본값은 변경할 수 없습니다.

예 - 시스템 속성을 중요한 작업으로 설정

/core-service=management/access=authorization/constraint=sensitivity-classification/type=core/classification=system-property:write-attribute(name=configured-requires-read,value=true)
Copy to Clipboard Toggle word wrap

결과

/core-service=management/access=authorization/constraint=sensitivity-classification/type=core/classification=system-property:read-resource
Copy to Clipboard Toggle word wrap

{
    "outcome" => "success",
    "result" => {
        "configured-requires-addressable" => undefined,
        "configured-requires-read" => true,
        "configured-requires-write" => undefined,
        "default-requires-addressable" => false,
        "default-requires-read" => false,
        "default-requires-write" => true,
        "applies-to" => {
            "/core-service=platform-mbean/type=runtime" => undefined,
            "/system-property=*" => undefined,
            "/" => undefined
        }
    }
}
Copy to Clipboard Toggle word wrap

이러한 속성의 구성에 따라 다음 표에 요약된 작업을 수행할 수 있는 역할은 다음과 같습니다.

Expand
표 4.1. 민감도 제한 조건 구성 사용 중단
현재의requires-readrequires-writerequires-addressable

true

읽기는 민감합니다. Auditor, Administrator, SuperUser만 읽을 수 있습니다.

쓰기는 민감합니다. Administrator 및 SuperUser만 쓸 수 있습니다.

주소 지정은 민감합니다. 감사자인 SuperUser만 처리할 수 있습니다.

false

읽기는 민감하지 않습니다. 모든 관리 사용자가 읽을 수 있습니다.

쓰기는 민감하지 않습니다. 유지 관리자, 관리자 및 슈퍼유저만 쓸 수 있습니다. 배포자는 리소스인 애플리케이션 리소스도 작성할 수 있습니다.

주소 지정은 민감하지 않습니다. 모든 관리 사용자가 처리할 수 있습니다.

4.3.8.2. 애플리케이션 리소스 제약 조건 구성

각 애플리케이션 리소스 제약 조건은 일반적으로 애플리케이션 및 서비스 배포와 관련된 리소스, 속성 및 작업 집합을 정의합니다. 애플리케이션 리소스 제약 조건이 활성화된 경우 배포자 역할의 관리 사용자에게 적용되는 리소스에 대한 액세스 권한이 부여됩니다.

애플리케이션 제약 조건 구성은 /core-service=management/access=authorization/constraint=application-classification/ 에 있습니다.

각 애플리케이션 리소스 제약 조건은 분류로 식별됩니다. 그런 다음 분류는 유형으로 그룹화됩니다. 8 가지 유형으로 정렬되는 14 개의 분류가 있습니다. 각 분류에는 분류 구성이 적용되는 리소스 경로 패턴 목록인 applies-to 요소가 있습니다.

기본적으로 활성화된 유일한 애플리케이션 리소스 분류는 core입니다. 코어에는 배포, 배포 오버레이 및 배포 작업이 포함됩니다.

애플리케이션 리소스를 활성화하려면 write-attribute 작업을 사용하여 분류의 configured-application 특성을 true 로 설정합니다. 애플리케이션 리소스를 비활성화하려면 이 속성을 false 로 설정합니다. 기본적으로 이러한 속성은 설정되지 않으며 default-application 속성 값이 사용됩니다. 기본값은 변경할 수 없습니다.

logger-profile 애플리케이션 리소스 분류 활성화

/core-service=management/access=authorization/constraint=application-classification/type=logging/classification=logging-profile:write-attribute(name=configured-application,value=true)
Copy to Clipboard Toggle word wrap

결과

/core-service=management/access=authorization/constraint=application-classification/type=logging/classification=logging-profile:read-resource
Copy to Clipboard Toggle word wrap

{
    "outcome" => "success",
    "result" => {
        "configured-application" => true,
        "default-application" => false,
        "applies-to" => {"/subsystem=logging/logging-profile=*" => undefined}
    }
}
Copy to Clipboard Toggle word wrap
중요

애플리케이션 리소스 제한은 구성과 일치하는 모든 리소스에 적용됩니다. 예를 들어 Deployer 사용자에게 하나의 데이터 소스 리소스에 대한 액세스 권한을 부여할 수는 없지만 다른 데이터 소스는 부여할 수 없습니다. 이 수준의 분리가 필요한 경우 다른 서버 그룹에서 리소스를 구성하고 각 그룹에 대해 다른 범위 배포자 역할을 생성하는 것이 좋습니다.

4.3.8.3. Vault 표현식 제약 조건 구성

기본적으로 vault 표현식을 읽고 쓰는 것은 민감한 작업입니다. Vault 표현식 제약 조건을 구성하면 해당 작업 중 하나 또는 둘 다 중요하지 않은 것으로 설정할 수 있습니다. 이 제약 조건을 변경하면 역할 수가 많을수록 vault 표현식을 읽고 쓸 수 있습니다.

vault 표현식 제약 조건은 at /core-service=management/access=authorization/constraint=vault-expression 에 있습니다.

vault 표현식 제약 조건을 구성하려면 write-attribute 작업을 사용하여 configured-requires-writeconfigured-requires-read 의 속성을 true 또는 false 로 설정합니다. 기본적으로 이 값은 설정되지 않으며 default-requires-readdefault-requires-write 값이 사용됩니다. 기본값은 변경할 수 없습니다.

vault 표현식에 중요하지 않은 작업 작성

/core-service=management/access=authorization/constraint=vault-expression:write-attribute(name=configured-requires-write,value=false)
Copy to Clipboard Toggle word wrap

결과

/core-service=management/access=authorization/constraint=vault-expression:read-resource
Copy to Clipboard Toggle word wrap

{
    "outcome" => "success",
    "result" => {
        "configured-requires-read" => undefined,
        "configured-requires-write" => false,
        "default-requires-read" => true,
        "default-requires-write" => true
    }
}
Copy to Clipboard Toggle word wrap

이 구성에 따라 vault 표현식을 읽고 쓸 수 있는 역할은 다음 표에 요약되어 있습니다.

Expand
표 4.2. Vault 표현식 제약 조건 구성 결과
현재의requires-readrequires-write

true

읽기 작업은 민감합니다. Auditor, Administrator 및 SuperUser만 읽을 수 있습니다.

쓰기 작업은 민감합니다. 관리자만 쓸 수 있으며 SuperUser는 작성할 수 있습니다.

false

읽기 작업은 민감하지 않습니다. 모든 관리 사용자는 다음을 읽을 수 있습니다.

쓰기 작업은 민감하지 않습니다. 모니터, 관리자 및 SuperUser는 작성할 수 있습니다. vault 표현식이 애플리케이션 리소스에 있는 경우에도 배포자는 작성할 수 있습니다.

4.3.8.4. 애플리케이션 리소스 제약 조건 참조

유형: core - Classification: deployment-overlay

  • 기본값: true
  • PATH: /deployment-overlay=*
  • PATH: /deployment=*
  • 경로: /
  • 작업: upload-deployment-stream, full-replace-deployment, upload-deployment-url, upload-deployment-bytes

유형: 데이터 소스 - 분류: 데이터 소스

  • 기본값: false
  • PATH: /deployment=*/subdeployment=*/subsystem=datasources/data-source=*
  • PATH: /subsystem=datasources/data-source=*
  • PATH: /subsystem=datasources/data-source=ExampleDS
  • PATH: /deployment=*/subsystem=datasources/data-source=*

유형: 데이터 소스 - 분류: jdbc-driver

  • 기본값: false
  • PATH: /subsystem=datasources/jdbc-driver=*

유형: 데이터 소스 - 분류: xa-data-source

  • 기본값: false
  • PATH: /subsystem=datasources/xa-data-source=*
  • PATH: /deployment=*/subsystem=datasources/xa-data-source=*
  • PATH: /deployment=*/subdeployment=*/subsystem=datasources/xa-data-source=*

  • PATH: /subsystem=logging/logger=*
  • PATH: /subsystem=logging/logging-profile=*/logger=*

  • PATH: /subsystem=logging/logging-profile=*

  • PATH: /subsystem=mail/mail-session=*

  • PATH: /subsystem=naming/binding=*

  • PATH: /subsystem=resource-adapters/resource-adapter=*

  • PATH: /subsystem=security/security-domain=*
4.3.8.5.

  • /core-service=management/management-interface=http-interface

  • PATH: /subsystem=security/security-domain=*

  • PATH: /core-service=management/security-realm=*

  • PATH: /socket-binding-group=*

  • PATH: /system-property=*

  • PATH: /subsystem=jmx

  • PATH: /subsystem=naming/binding=*

5장.

5.1.

5.2.

중요

5.2.1.

/subsystem=security-manager/deployment-permissions=default:write-attribute(name=minimum-permissions, value=[{class="java.util.PropertyPermission", actions="read", name="*"}])
Copy to Clipboard Toggle word wrap

/subsystem=security-manager/deployment-permissions=default:write-attribute(name=maximum-permissions, value=[{class="java.util.PropertyPermission", actions="read,write", name="*"}, {class="java.io.FilePermission", actions="read,write", name="/-"}])
Copy to Clipboard Toggle word wrap

참고

5.2.2.

<permissions version="7">
  <permission>
  <class-name>java.util.PropertyPermission</class-name>
  <name>*</name>
  <actions>read</actions>
  </permission>
</permissions>
Copy to Clipboard Toggle word wrap

5.2.3.

name

<module xmlns="urn:jboss:module:1.5" name="org.jboss.test.example">
  <permissions>
    <grant permission="java.util.PropertyPermission" name="*" actions="read,write" />
    <grant permission="java.io.FilePermission" name="/etc/-" actions="read" />
  </permissions>
  ...
</module>
Copy to Clipboard Toggle word wrap

5.3.

중요

중요

  • ./standalone.sh -secmgr
    Copy to Clipboard Toggle word wrap

  • 중요

    참고

    # Uncomment this to run with a security manager enabled
    SECMGR="true"
    Copy to Clipboard Toggle word wrap

    rem # Uncomment this to run with a security manager enabled
    set "SECMGR=true"
    Copy to Clipboard Toggle word wrap

5.4.

5.4.1.

5.4.2.

5.4.3.





2024-04-03에 최종 업데이트된 문서

법적 공지

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동