7.2. 대상 보안

메시징 서버에 대한 원격 연결 보안 외에도 특정 대상에 대한 보안을 구성할 수도 있습니다. 이는 security-setting 구성 요소를 사용하여 보안 제한 조건을 추가하여 수행됩니다. JBoss EAP 메시징은 다음 관리 CLI 명령의 출력에 표시된 대로 기본적으로 구성된 security-setting 과 함께 제공됩니다.

/subsystem=messaging-activemq/server=default:read-resource(recursive=true)
{
    "outcome" => "success",
    "result" => {
        ....
        "security-setting" => {"#" => {"role" => {"guest" => {
            "consume" => true,
            "create-durable-queue" => false,
            "create-non-durable-queue" => true,
            "delete-durable-queue" => false,
            "delete-non-durable-queue" => true,
            "manage" => false,
            "send" => true
        }}}}
    }
}

security-setting 옵션은 이름 필드에 와일드카드를 사용하여 보안 제약 조건을 적용할 대상을 처리합니다. 단일 # 의 값은 모든 주소와 일치합니다. 보안 제약 조건에서 와일드카드 사용에 대한 자세한 내용은 주소에 대한 역할 기반 보안을 참조하십시오.

7.2.1. 주소에 대한 역할 기반 보안

JBoss EAP 메시징에는 주소를 기반으로 큐에 보안을 적용하기 위한 유연한 역할 기반 보안 모델이 포함되어 있습니다.

핵심 JBoss EAP 메시징 서버는 주로 주소에 바인딩된 큐 세트로 구성됩니다. 메시지가 주소로 전송되면 서버는 먼저 해당 주소에 바인딩된 큐 집합을 조회한 다음 메시지를 바인딩된 큐로 라우팅합니다.

JBoss EAP 메시징에는 주소에 따라 큐에 적용할 수 있는 권한 집합이 있습니다. 주소의 정확한 문자열 일치를 사용하거나 와일드카드 일치를 사용할 수 있습니다. 와일드카드 문자 #*. 와일드카드 구문 을 사용하는 방법에 대한 자세한 내용은 주소 설정을 참조하십시오.

security-setting 에 대해 여러 역할을 만들 수 있으며 역할에 적용할 수 있는 7개의 권한 설정이 있습니다. 다음은 사용 가능한 전체 권한 목록입니다.

  • create-durable-queue 를 사용하면 역할이 일치하는 주소 아래에 지속형 큐를 만들 수 있습니다.
  • delete-durable-queue 를 사용하면 역할이 일치하는 주소 아래의 지속형 큐를 삭제할 수 있습니다.
  • create-non-durable-queue 를 사용하면 역할이 일치하는 주소 아래에 비내구성 대기열을 만들 수 있습니다.
  • delete-non-durable-queue 를 사용하면 역할에서 일치하는 주소에서 비내구성 큐를 삭제할 수 있습니다.
  • send 를 사용하면 역할이 일치하는 주소로 메시지를 보낼 수 있습니다.
  • 사용하면 역할에서 일치하는 주소에 바인딩된 큐의 메시지를 사용할 수 있습니다.
  • manage 를 사용하면 관리 메시지를 관리 주소로 보내 관리 작업을 호출할 수 있습니다.
역할 기반 보안 구성

security-setting에 역할 기반 보안을 사용하려면 먼저 하나를 만들어야 합니다. 예를 들어, 아래에 news.europe.#security-setting 이 생성됩니다. news.europe. fr 또는 news.europe. tech.uk와 같이 news.europe. fr 로 시작하는 모든 목적지에 적용됩니다.

/subsystem=messaging-activemq/server=default/security-setting=news.europe.#:add()
{"outcome" => "success"}

그런 다음 생성한 security-setting 에 역할을 추가하고 권한을 선언합니다. 아래 예제에서 dev 역할은 생성되고 사용할 수 있는 권한을 부여하고, 큐로 보내고, 보류 불가능한 큐를 만들고 삭제할 수 있습니다. 기본값은 false 이므로 전환하려는 권한에 대해서만 JBoss EAP에 알려야 합니다.

/subsystem=messaging-activemq/server=default/security-setting=news.europe.#/role=dev:add(consume=true,delete-non-durable-queue=true,create-non-durable-queue=true,send=true)
{"outcome" => "success"}

권한 사용을 자세히 설명하기 위해 아래 예제에서는 admin 역할을 만들고 관리 권한을 전환하여 관리 메시지를 보낼 있습니다. 지속형 큐 생성 및 삭제 권한도 전환됩니다.

/subsystem=messaging-activemq/server=default/security-setting=news.europe.#/role=admin:add(manage=true,create-durable-queue=true,delete-durable-queue=true)
{"outcome" => "success"}

security-setting 의 구성을 확인하려면 관리 CLI를 사용합니다. recursive=true 옵션을 사용하여 전체 권한 표시를 가져오십시오.

/subsystem=messaging-activemq/server=default:read-children-resources(child-type=security-setting,recursive=true)
{
    "outcome" => "success",
    "result" => {
        "#" => {"role" => {"guest" => {
            "consume" => true,
            "create-durable-queue" => false,
            "create-non-durable-queue" => true,
            "delete-durable-queue" => false,
            "delete-non-durable-queue" => true,
            "manage" => false,
            "send" => true
        }}},
        "news.europe.#" => {"role" => {
            "dev" => {
                "consume" => true,
                "create-durable-queue" => false,
                "create-non-durable-queue" => true,
                "delete-durable-queue" => false,
                "delete-non-durable-queue" => true,
                "manage" => false,
                "send" => true
            },
            "admin" => {
                "consume" => false,
                "create-durable-queue" => true,
                "create-non-durable-queue" => false,
                "delete-durable-queue" => true,
                "delete-non-durable-queue" => false,
                "manage" => true,
                "send" => false
            }
        }}
    }

위의 문자열 news.europe. 로 시작하는 주소에 대한 권한은 관리 CLI에 의해 완전히 표시됩니다. 요약하자면, 관리자 역할이 있는 사용자만 지속형 큐를 생성하거나 삭제할 수 있지만 dev 역할이 있는 사용자만 비내구성 큐를 생성하거나 삭제할 수 있습니다. 또한 dev 역할의 사용자는 메시지를 보내거나 사용할 수 있지만 admin 사용자는 메시지를 보내거나 사용할 수 없습니다. 그러나 관리 권한이 true 로 설정되어 있으므로 관리 메시지를 보낼 수 있습니다.

둘 이상의 일치가 주소 집합에 적용되는 경우 더 구체적인 일치가 우선합니다. 예를 들어, news.europe.tech.uk.# 주소는 news.europe.tech.# 보다 구체적입니다. 권한이 상속되지 않기 때문에 단순히 지정하지 않고 보다 구체적인 security-setting 블록에서 권한을 거부할 수 있습니다. 그렇지 않으면 주소의 하위 그룹에서 권한을 거부할 수 없습니다.

사용자와 사용자가 보유한 역할 간의 매핑은 보안 관리자가 처리합니다. JBoss EAP는 디스크의 파일에서 사용자 자격 증명을 읽고 JAAS 또는 JBoss EAP 보안에도 연결할 수 있는 사용자 관리자와 함께 제공됩니다.

보안 관리자 구성에 대한 자세한 내용은 JBoss EAP 보안 아키텍처 가이드를 참조하십시오.

7.2.1.1. 레거시 보안 하위 시스템을 사용하여 인증되지 않은 클라이언트에 게스트 역할 부여

JBoss EAP에서 인증되지 않은 클라이언트를 자동으로 부여하려면 guest 역할에서 다음 두 가지 변경 사항을 수행합니다.

  1. other 보안 도메인에 새 module-option 을 추가합니다. 새 옵션인 unauthenticatedIdentity 는 JBoss EAP에 인증되지 않은 클라이언트에 게스트 액세스 권한을 부여하도록 지시합니다. 이 작업을 수행하는 권장 방법은 관리 CLI를 사용하는 것입니다.

    /subsystem=security/security-domain=other/authentication=classic/login-module=RealmDirect:map-put(name=module-options,key=unauthenticatedIdentity,value=guest)
    {
       "outcome" => "success",
       "response-headers" => {
           "operation-requires-reload" => true,
           "process-state" => "reload-required"
       }
    }

    명령을 실행한 후 서버에 다시 로드해야 합니다. 다음 관리 CLI 명령을 사용하여 새 옵션을 확인할 수 있습니다.

    /subsystem=security/security-domain=other/authentication=classic/login-module=RealmDirect:read-resource()
    {
        "outcome" => "success",
        "result" => {
            "code" => "RealmDirect",
            "flag" => "required",
            "module" => undefined,
            "module-options" => {
                "password-stacking" => "useFirstPass",
                "unauthenticatedIdentity" => "guest"
            }
        }
    }

    또한 서버 구성 파일은 명령이 실행된 후 다음과 같이 표시되어야 합니다.

    <subsystem xmlns="urn:jboss:domain:security:2.0">
      <security-domains>
        <security-domain name="other" cache-type="default">
           <authentication>
             ...
             <login-module code="RealmDirect" flag="required">
                ...
                <module-option name="unauthenticatedIdentity" value="guest"/>
                ...
             </login-module>
             ...
           </authentication>
        </security-domain>
      ...
      </security-domains>
    </subsystem>
  2. # 문자를 삭제하여 파일 application-roles.properties 에서 다음 행의 주석을 제거합니다. 파일은 독립 실행형 서버 또는 도메인 컨트롤러를 사용하는지 여부에 따라 EAP_HOME/standalone/configuration / 또는 EAP_HOME/domain /configuration/에 있습니다.

    #guest=guest

이제 원격 클라이언트가 인증하지 않고도 서버에 액세스할 수 있어야 합니다. guest 역할과 연결된 권한이 부여됩니다.