Liberty: 권한 부여

Liberty의 권한 부여는 사용자에게 시스템 내에서 특정 역할에 대한 액세스 권한이 있는지 여부를 판별합니다.

권한 부여는 자원에 액세스 권한을 지정합니다. 그리고 일반적으로 ID를 확인하는 인증을 수행합니다. 그에 반해 인증은 질문 "Are you who you say you are"에 대한 응답이며, 권한 부여는 질문 "Do you have permission to do what you are trying to do?"에 대한 응답입니다.

관리 기능을 위한 권한 부여

엔티티가 자원에 액세스하려고 하는 경우, 권한 부여 서비스는 엔티티가 자원에 액세스하기 위해 필요한 권한을 가지고 있는지 여부를 판별합니다. 이 개념은 엔티티가 애플리케이션에 액세스하거나 관리 기능을 수행하는지 여부에 상관없이 적용됩니다. 애플리케이션에 액세스와 관리 기능에 대한 액세스 권한 부여의 기본 차이점은 사용자가 역할에 맵핑되는 방법에 있습니다. 애플리케이션의 권한 부여의 경우, server.xml 또는 ibm-application-bnd.xml/xmi 파일에서 application-bnd 요소를 사용하여 사용자를 역할에 맵핑할 수 있습니다. 관리 기능의 권한 부여의 경우, server.xml 파일에서 administrator-role 요소를 사용하여 사용자를 관리자 역할에 맵핑하십시오. 관리 보안에 대한 자세한 정보는 JMX를 사용하여 Liberty에 연결의 내용을 참조하십시오.

애플리케이션의 권한 부여

다음 다이어그램은 애플리케이션에 대해 권한 부여가 동작하는 방법을 설명합니다.

그림 1. 권한 부여 프로세스 개요 권한 부여 서비스는
애플리케이션과 서버의 구성 파일에서
역할 대 사용자 맵핑을 확인한 다음
액세스 요청을 부여하거나 거부합니다.
  1. 권한은 엔티티가 Liberty에 의해 제공되는 애플리케이션의 자원에 액세스를 시도할 때 작성됩니다. 웹 컨테이너는 권한 부여 서비스를 호출하여 사용자에게 하나 이상의 필수 역할 세트를 제공한 특정 자원에 액세스할 권한이 있는지 여부를 판별합니다. 필수 역할은 배치 디스크립터 및 @ServletSecurity 어노테이션의 auth-constraint 요소에서 판별됩니다.
  2. 권한 부여 서비스는 필수 역할이 맵핑된 오브젝트를 판별합니다. 이 단계는 ibm-application-bnd.xmi 파일 또는 ibm-application-bnd.xml 파일과 server.xml 파일의 application-bnd 요소에서 정의되는 맵핑을 처리하여 달성됩니다. 이 두 소스로부터의 맵핑이 병합됩니다. 동일 역할이 두 소스에 있는 경우, server.xml 파일의 역할 맵핑만이 사용됩니다. 사용자에 역할을 맵핑하기 위해 server.xml 파일을 사용하면 EAR 파일로 패키징하지 않으며 보다 쉽게 업데이트되는 이점이 있습니다. 또는, ibm-application-bnd.xmi/xml 파일을 사용하면 애플리케이션을 server.xml 파일을 지원하지 않는 다른 WebSphere® Application Server Traditional 서버 및 다른 서버로 이식할 수 있습니다.
  3. 필수 역할을 EVERYONE 특수 주제로 맵핑하면 권한 부여 서비스가 즉시 리턴되어 모든 사람이 액세스할 수 있습니다. 역할이 ALL_AUHENTICATED 특수 주제로 맵핑되고 사용자가 인증되면 권한 부여 서비스는 사용자에게 액세스 권한을 부여합니다. 이 조건 중 충족되는 조건이 없는 경우 권한 부여 서비스는 필수 역할에 맵핑되는 사용자와 그룹을 판별합니다. 사용자가 필수 역할에 맵핑되거나 사용자가 역할에 맵핑된 그룹의 일부인 경우 권한 부여 서비스는 자원에 대한 액세스 권한을 부여합니다.
  4. 권한 부여 서비스는 결과를 다시 웹 컨테이너로 리턴하여 사용자에게 액세스 권한이 부여되었는지 또는 거부되었는지 여부를 표시합니다.

특수 주제

엔티티가 역할에 맵핑된 경우, 특수 사용자나 그룹 대신 특수 주제를 맵핑할 수 있습니다. 특수 주제는 주제 개념에 대한 확장입니다. 특수 주제는 특수 카테고리 아래 배치되는 사용자의 그룹을 표시할 수 있습니다.

다음과 같은 두 가지 유형의 특수 주제를 사용할 수 있습니다.
  • EVERYONE: 시스템의 엔티티를 나타내며, 모든 사람이 액세스할 수 있도록 허용되고 신임 정보를 입력하라는 프롬프트가 표시되지 않기 때문에 보안이 제공되지 않음을 의미합니다.
  • ALL_AUTHENTICATED_USERS: 서버에 대해 성공적으로 인증되는 엔티티를 나타냅니다.
특수 주제를 사용자에 맵핑하려면 ibm-application-bnd.xmi/xml 파일 또는 server.xml 파일을 업데이트하십시오. 여기서 application-bndapplication 요소 아래에 있습니다. 이 예제에서는 AllAuthenticated라는 역할이 특수 주제인 ALL_AUTHENTICATED_USERS에 맵핑됩니다.
    <application-bnd>
           <security-role name="AllAuthenticated">
               <special-subject type="ALL_AUTHENTICATED_USERS"/>
           </security-role>
       </application-bnd>

Liberty에서 애플리케이션에 대한 권한 구성을 확인하십시오.

액세스 ID 및 권한

사용자 또는 그룹에 권한을 부여할 때 서버에는 해당 사용자 또는 그룹을 고유하게 식별하는 방법이 필요합니다. 사용자와 그룹의 고유 ID는 이러한 용도로 제공되며 권한 부여 구성을 빌드하는 데 사용됩니다. 이 ID는 사용자 레지스트리 구현으로 판별됩니다. 고유 사용자 ID는 getUniqueUserId()의 값이며, 고유 그룹 ID는 getUniqueGroupId()의 값입니다. 권한 부여 구성의 사용자나 그룹에 대해 액세스 ID를 명시적으로 지정하도록 선택할 수도 있습니다. 사용자 레지스트리 구현에 의해 리턴되는 값 대신 이 명시적 액세스 ID가 사용됩니다. ibm-application-bnd.xml/xmi 파일 또는 server.xml 파일(여기서 application-bndapplication 요소 아래에 있음)에서 액세스 ID를 지정하려면 user 또는 group 요소에 대한 access-id 속성을 사용하십시오.

이 예제에서 액세스 ID는 사용자 Bob 및 그룹 developers에 대해 지정됩니다.
    <application-bnd>
           <security-role name="Employee">
               <user name="Bob" access-id="user:MyRealm/Bob"/>
               <group name="developers" access-id="group:myRealm/developers"/>
           </security-role>
    </application-bnd>
참고: access-id 속성은 권한 검사를 위해 사용됩니다. 이 속성이 지정되지 않은 경우 이 속성은 사용자 또는 그룹 이름을 사용하여 구성되는 레지스트리에서 판별됩니다. 하지만 사용자 또는 그룹이 활성 레지스트리에 속하지 않는 경우(예: 프로그래밍 방식 로그인을 사용하는 경우)에는 예제와 같이 access-id 속성을 지정해야 합니다.

OAuth

OAuth는 위임된 권한에 대한 개방형 표준입니다. OAuth 권한 부여 프레임워크를 사용하여 사용자에게 데이터에 대한 액세스 권한 또는 전체 익스텐트를 공유하지 않고 다른 HTTP 서비스와 함께 저장된 정보에 대한 써드파티 애플리케이션 액세스 권한을 부여할 수 있습니다. Liberty에 대한 권한 부여를 위해 OAuth를 사용하는 방법에 대한 자세한 정보는 OAuth 문서를 참조하십시오.

역할 맵핑 바인딩을 제공하지 않은 경우 애플리케이션에 대한 권한 부여

보호되는 애플리케이션에 대한 역할 맵핑 바인딩 정보를 제공하지 않은 경우 기본 권한 부여 엔진은 해당 역할과 연관된 그룹 이름으로 자원을 보호하는 역할 이름을 사용합니다. 따라서 예를 들어, 역할 이름이 관리자인 경우 관리자 그룹에 속한 사용자에게는 해당 자원에 대한 액세스 권한이 있습니다. 이는 server.xml 또는 애플리케이션 바인딩 파일의 애플리케이션 바인드 정보가 애플리케이션에 지정되지 않은 경우에만 적용됩니다. 예를 들어, 이 바인딩을 추가하면 그룹 바인딩에 대한 보안 역할을 사용 안함으로 지정합니다.
<application type="war" id="myapp" name="myapp" location="${server.config.dir}/apps/myapp.war">
      <application-bnd>
	     <security-role name="anyAppRoleName"/>
      </application-bnd>
</application>
참고: 사용자 레지스트리에서 그룹 이름으로 권한 부여에 성공하려면 역할 이름이 구성된 레지스트리에서 그룹의 전체 이름 또는 고유한 이름과 일치해야 하며 짧은 이름이 아니어야 합니다. 예를 들어, 그룹의 축약 이름이 swGroup이지만 사용자 레지스트리의 전체 또는 고유 이름이 CN=swGroup,o=company,c=us인 경우 권한 부여에 성공하려면 CN=swGroup,o=company,c=us를 규칙 이름으로 지정해야 합니다.

주제의 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwlp_authorization
파일 이름: cwlp_authorization.html