중첩된 영역이 있는 정책에 대한 정책 처리

목차
casso12kr
목차
3
정책 서버는 정책을 사용하여 리소스에 대한 액세스 권한을 부여하고, 권한을 부여받은 사용자가 리소스에 액세스할 수 있도록 합니다. 정책으로 보호되는 리소스는 일반적으로 보안, 조직 및 비즈니스 요구 사항을 반영하며 계층적 또는 "중첩된" 영역을 이용하는 계층에 저장됩니다.
중첩된 영역이 있는 샘플 구성
이 섹션에서는 이 항목의 나머지 부분에 나오는 예에서 사용되는 샘플 구성에 대해 설명합니다.
사용자 디렉터리
정책과 그 밖의 관련 정책 서버 개체가 포함된 정책 도메인에 다음 다이어그램에 나오는 LDAP 사용자 디렉터리에 대한 연결이 포함되어 있다고 가정하십시오.
LDAP directory example
샘플 사용자 디렉터리에는 다음 요소가 들어 있습니다.
  • o=myorg.org
    조직을 의미합니다.
  • ou=people
    모든 직원에 대한 정보가 포함된 조직 단위입니다.
  • employee<n>
    각 직원에 대한 디렉터리 항목입니다. a_lvl은 액세스 수준을 나타내는 사용자 특성입니다. 이 섹션의 예에서는 employee1과 employee2의 액세스 수준이 0(a_lvl=0)이라고 가정합니다.
  • cn=employees
    모든 회사 직원이 구성원으로 포함된 그룹입니다.
  • cn=managers
    모든 관리직 직원이 구성원으로 포함된 그룹입니다. 이 그룹의 직원은 employee3과 employee4뿐이며 이들의 액세스 수준은 0보다 큽니다.
중첩된 영역 및 리소스
다음 다이어그램에서는 이 섹션의 예에 사용되는 중첩된 영역 및 리소스의 구조를 보여 줍니다. 음영 처리된 부분은 인증 체계로 보호된 영역을 나타냅니다.
Nested realms and resources example
중첩된 영역은 다음 디렉터리 및 리소스로 구성되어 있습니다.
  • /home
    샘플의 중첩된 영역에서 최상위 디렉터리입니다. 이 영역에는 /home/이 리소스 필터로 지정되어 있고 index.html이라는 보호되지 않는 리소스가 들어 있습니다. index.html 파일은 인증 체계로 보호되지 않습니다.
  • /employees
    /home 디렉터리에 포함된 이 디렉터리는 자격 증명으로 사용자 이름과 암호를 요구하는 기본 인증 체계로 보호됩니다. 이 디렉터리와 연결된 영역에는 employees/가 리소스 필터로 사용되고 employee.html 파일이 들어 있습니다. 이 영역의 전체 리소스 필터는 /home/employees/입니다.
  • /managers
    /employees 디렉터리에 포함된 이 디렉터리는 자격 증명으로 사용자 이름, 암호 및 추가 개인 정보를 요구하는 HTML 양식 인증 체계로 보호됩니다. 이 디렉터리와 연결된 영역에는 managers/가 리소스 필터로 사용되고 manager.html 파일이 들어 있습니다. 이 영역의 전체 리소스 필터는 /home/employees/managers/입니다.
  • /restricted
    /managers 디렉터리에 포함된 이 디렉터리는 자격 증명으로 사용자 이름, 암호 및 유효한 X509 인증서를 요구하는 X.509 인증서 및 기본 인증 체계로 보호됩니다. 이 디렉터리와 연결된 영역에는 restricted/가 리소스 필터로 사용되고 restricted.html 파일이 들어 있습니다. 이 영역의 전체 리소스 필터는 /home/employees/managers/restricted/입니다.
이러한 예에서 /employees 영역의 보호 수준은 /managers 영역의 보호 수준보다 낮고, /managers 영역의 보호 수준은 /restricted 영역의 보호 수준보다 낮습니다.
정책 및 응답
다음 다이어그램에서는 이 장의 나머지 부분에 나오는 예에 사용되는 정책과 응답을 보여 줍니다.
 
Nested realms example policies and responses
다음은 각 샘플 정책과 각 정책에 포함된 개체에 대한 설명입니다.
  • Employee Policy
    이 정책에는 employee.html 리소스를 보호하는 Get 규칙이 포함되어 있습니다. 이 리소스는 /employees 영역에 있습니다. 이 정책은 사용자 그룹 cn=employees에 바인딩되어 있으며, 따라서 LDAP 디렉터리의 모든 직원은 성공적으로 인증된 경우 리소스에 액세스할 수 있습니다. 인증된 사용자가 이 정책을 통해 권한을 부여받으면
    Single Sign-On
    은 사용자의 전자 메일 주소를 응답으로 반환합니다. 예를 들어 employee1이 /home/employees/employee.html에 액세스하려고 하고 성공적으로 인증을 받았다면 정책 서버는 employee1에 대해 리소스 액세스를 허용하고 다음과 같은 전자 메일 주소를 반환합니다.
    [email protected]
    다른 회사 리소스에 액세스하는 경우 웹 응용 프로그램은 이 응답을 사용하여 사용자 지정 응답을 생성할 수 있습니다.
  • Manager Policy
    이 정책에는 manager.html 리소스를 보호하는 Get 규칙이 포함되어 있습니다. 이 리소스는 /manager 영역에 있습니다. 이 정책은 사용자 그룹 cn=managers에 바인딩되어 있으며, 따라서 cn=managers 그룹에 포함된 직원만이 성공적으로 인증된 경우 리소스에 액세스할 수 있습니다. 인증된 관리자가 이 정책을 통해 권한을 부여받으면
    Single Sign-On
    은 정적 응답을 반환합니다. 이 예에서 employee3이 성공적으로 인증된 후에 /home/employees/managers/manager.html에 액세스하려고 하면 정책 서버는 employee3에 대해 리소스 액세스를 허용하고 다음 응답을 반환합니다.
    manager=YES
    응용 프로그램은 이 응답을 사용하여 회사 관리자만 사용할 수 있는 기능을 활성화할 수 있습니다.
  • Restricted Policy
    이 정책에는 restricted.html 리소스를 보호하는 Get 규칙이 포함되어 있습니다. 이 리소스는 /restricted 영역에 있습니다. 이 정책은 디렉터리에서 액세스 수준 사용자 특성이 2(a_lvl=2)인 직원에게만 바인딩되어 있습니다. 올바른 액세스 수준을 가진 관리자는 성공적으로 인증된 후 리소스에 액세스할 수 있습니다. 사용자가 restricted.html 리소스에 액세스하려고 하면
    Single Sign-On
    은 a_lvl=
    <0-2>
    를 응답으로 반환합니다. 예를 들어 employee4가 /home/employees/managers/restricted/restricted.html에 액세스하려고 하고 성공적으로 인증되었다면 정책 서버는 employee4에 대해 리소스 액세스를 허용하고 다음 응답을 반환합니다.
    a_lvl=2
    응용 프로그램은 이 응답을 사용하여 액세스 수준이 2인 직원만 사용할 수 있는 기능을 활성화할 수 있습니다
계층적 정책에 대한 인증 처리
정책에는 규칙을 포함해야 합니다. 규칙에는 인증 및 권한 부여 이벤트를 포함할 수 있습니다. 정책 서버가 자격 증명을 기반으로 사용자를 식별할 때는 규칙이 구성된 방식에 따라 다음과 같은 네 가지 인증 이벤트 중 하나가 발생할 수 있습니다.
  • OnAuthAccept
    인증이 성공합니다.
  • OnAuthAttempt
    정책 도메인의 검색 순서에 나오는 어떤 도메인에서도 사용자를 찾지 못해 인증이 실패합니다.
  • OnAuthReject
    사용자가
    디렉터리에 있지만
    사용자가 제공한 자격 증명이 올바르지 않아 인증이 실패합니다. 이 경우 정책 서버는 정책 도메인의 디렉터리 검색 순서에서 그 다음에 나오는 디렉터리를 조회합니다. 검색 순서에 나오는 어떤 디렉터리에서도 사용자의 자격 증명을 확인할 수 없는 경우 정책 서버는 OnAuthReject 이벤트를 처리합니다.
    OnAuthReject 규칙이 실행되려면 디렉터리에서 사용자를 찾을 수 있어야 합니다. 어떤 디렉터리에서도 사용자를 찾지 못하면 OnAuthReject 규칙이 실행되지 않습니다.
  • OnAuthUserNotFound
    인증 서버에 유효한 세션 티켓이 있지만 사용자 디렉터리를 찾을 수 없습니다. 이러한 상황은 여러 디렉터리가 사용되는 싱글 사인온 환경에서만 발생해야 하지만, 사용자가 오랫동안 유휴 상태여서 에이전트 캐시에서 제거되고 디렉터리에서 제거된 경우에도 발생할 수 있습니다. 이 이벤트가 발생하면 정책 서버는 세션 티켓을 사용하는 대신 사용자가 디렉터리에 있는지 확인합니다.
정책 서버는 일치하는 가장 긴 영역을 기준으로 사용자를 인증합니다. 예를 들어 사용자가 /home/employees/managers/manager.html에 액세스하려고 하면 정책 서버는 /managers 영역을 사용하여 필요한 자격 증명을 확인합니다. 이전 그림의 예에서는 사용자가 영역과 연결된 HTML 양식 인증 체계에 필요한 브라우저 기반 양식을 완성해야 합니다.
참고:
사용자 세션의 시간 만료도 일치하는 가장 긴 영역을 기준으로 결정됩니다. 사용자가 성공적으로 인증된 영역에 시간 만료가 연결되어 있으면 해당 시간 만료가 사용됩니다. 응답을 사용하여 특정 리소스나 리소스 그룹에 대해 영역 시간 만료를 재정의할 수 있습니다.
성공한 인증
OnAuthAccept 규칙은 다음 조건이 모두 충족될 경우에 실행됩니다.
  • 사용자가 일치하는 가장 긴 영역의 요구 사항을 충족하는 자격 증명을 입력했습니다.
  • 정책 서버가 사용자 디렉터리에서 사용자를 찾았습니다.
  • 정책 서버가 사용자의 자격 증명을 확인했습니다.
이때 정책 서버는 중첩된 영역 계층 구조 내에서 일치하는 가장 긴 영역과 그 상위에 있는 모든 영역의 OnAuthAccept 권한을 수집합니다. 이전 그림에 나온 예의 경우 사용자가 /home/employees/managers/manager.html 리소스에 대해 인증되면 정책 서버는 /managers 영역, /employees 영역, /home 영역의 순서로 영역에 대한 OnAuthAccept 권한을 수집합니다.
거부된 인증 시도
정책 도메인은 디렉터리 검색 순서를 사용하여 구성됩니다. 정책 서버는 사용자 인증 시도 시 해당 사용자를 찾을 때까지 검색 순서에 나오는 각 사용자 디렉터리를 검색하고 제공된 자격 증명을 확인합니다. 디렉터리에서 사용자를 찾았지만 사용자가 제공한 자격 증명이 일치하지 않는 경우 정책 서버는 검색 순서에서 그 다음에 나오는 디렉터리를 조회합니다. 정책 서버가 어떤 디렉터리에서도 사용자와 일치하는 항목을 찾지 못하면 요청된 리소스가 포함된 영역의 컨텍스트에서 사용자 인증 시도가 실패합니다.
예를 들어 사용자가 /home/employees/managers/manager.html에 액세스하려고 할 경우, 해당 사용자가 사용자 디렉터리에 있지만 검색 순서에 나오는 어떤 디렉터리에 대해서도 유효한 자격 증명을 제공하지 못하면 /managers 영역에서 인증 이벤트가 실패합니다. 그러면 정책 서버는 해당 영역에서 거부된 인증 시도에 대한 이벤트(OnAuthReject)를 처리합니다.
성공하지 못한 인증 시도
정책 서버가 디렉터리 검색 순서에 나오는 어떤 디렉터리에서도 인증할 사용자를 찾을 수 없는 경우에는 요청된 리소스가 포함된 영역의 컨텍스트에서 인증이 실패합니다. 그러면 정책 서버는 실패한 인증 시도에 대한 이벤트(OnAuthAttempt)를 처리합니다.
계층적 정책에 대한 권한 부여 처리
정책에는 리소스에 대한 액세스를 허용하는 규칙이 포함될 수 있으며 이벤트를 트리거하는 규칙도 포함될 수 있습니다. 가능한 권한 부여 이벤트는 다음과 같습니다.
  • OnAccessAccept
    이 이벤트 유형은 사용자에게 성공적으로 권한이 부여될 때 발생합니다.
  • OnAccessReject
    이 이벤트 유형은 인증된 사용자의 리소스 액세스가 거부될 때 발생합니다.
규칙에 권한 부여 이벤트가 지정되지 않은 경우 규칙은 리소스에 대한 액세스를 허용하거나 거부합니다.
권한이 부여된 사용자에 대한 정책 처리
정책 서버가 사용자에게 중첩된 영역의 리소스에 액세스할 수 있는 권한을 부여하기 위해서는 사용자가 계층 구조의 맨 위에서부터 해당 리소스가 포함된 영역까지의 각 영역에서 권한이 부여되어야 합니다. 사용자가 인증된 후 정책 서버는 리소스 위의 각 영역을 제어하는 정책을 검사하여 사용자에게 권한이 부여되었는지 확인합니다. 앞의 예에서 employee3이 /home/employees/managers/manager.html에 액세스하려는 경우 정책 서버는 /home, /employees 및 /managers에서 employee3에게 권한이 부여되었는지 확인합니다.
정책 서버는 사용자에게 권한이 부여되었는지 확인한 후 중첩된 각 영역에서 사용자의 권한을 수집합니다. 그런 다음 정책 서버는 영역 계층 구조의 맨 위에서부터 일치하는 가장 긴 영역까지 이동하며 OnAccessAccept 이벤트를 처리합니다. 앞의 예에서 정책 서버가 반환하는 응답에는 employee3의 전자 메일 주소와 정적 응답 manager=YES가 포함됩니다.
권한 없는 사용자에 대한 정책 처리
권한 없는 사용자에 대한 정책 처리는 사용자가 정책을 통해 명시적으로 액세스 거부되었거나 단지 액세스를 허용하는 정책에 포함되지 않았는지 여부에 관계없이 동일합니다. 해당 사용자에 대해 지금까지 수집된 권한은 손실되며 정책 서버는 요청된 리소스가 있는 거부 영역의 컨텍스트에서 OnAccessReject 이벤트를 처리합니다.
앞의 예에서 cn=managers 그룹의 구성원이 아닌 employee1이 /home/employees/managers/manager.html에 액세스하려고 하면 정책 서버는 /managers 영역에 대해서만 OnAccessReject 이벤트를 처리합니다.
OnAccessRejct 규칙에 대해 별도의 정책을 생성하십시오. OnAccessReject 규칙을 동일한 정책에 있는 다른 규칙 작업과 함께 사용하지 마십시오.
권한 없는 사용자에 대한 정책 구성 예
OnAccessReject 리디렉션을 구현하려면 먼저 사용자에게 거부 규칙을 실행할 액세스 권한이 있어야 합니다.
이 예에서는 사용자 JSmith만 리소스
/static
에 액세스할 수 있도록 하려고 합니다. 다른 모든 사용자는 다음 링크로 리디렉션되어야 합니다.
다음 정책 구성 요소를 구성하십시오.
  1. 리소스
    /static
    에 대한 웹 에이전트를 포함하는 영역을 생성합니다.
  2. 영역 아래에 다음 세 개의 규칙을 생성합니다.
    • 규칙 1:
      웹 에이전트 작업
      을 선택하고 리소스
      /static
      에 대한 GET/POST를 허용합니다.
    • 규칙 2:
      인증 이벤트
      를 선택하고 OnAuthReject를 선택합니다.
    • 규칙 3:
      권한 부여 이벤트
      를 선택하고 OnAccessReject를 선택합니다.
  3. 인증 오류와 권한 부여 오류에 대해 서로 다른 리디렉션 URL을 사용하도록 두 개의 응답을 생성합니다.
  4. 두 개의 정책을 생성합니다.
    • 정책 1은 액세스를 허용합니다. 이 정책에서 다음을 수행하십시오.
      • 사용자에 JSmith를 추가합니다.
      • 정책에 규칙 1을 추가합니다.
    • 정책 2는 권한 없는(거부된) 사용자를 리디렉션합니다. 이 정책에서 다음을 수행하십시오.
      • ALL을 추가합니다(규칙이 실행되려면 사용자에게 액세스 권한이 있어야 함).
      • 규칙 2 및 규칙 3을 추가합니다.
      • 규칙 2에 응답 1을 추가합니다.
      • 규칙 3에 응답 2를 추가합니다.
이 정책은 JSmith가 보호되는 리소스에 액세스할 수 있도록 하며, 다른 모든 사용자는 액세스를 금지하고 다른 페이지로 리디렉션합니다.
계층적 정책에 대한 디렉터리 매핑
중첩된 영역이 포함된
Single Sign-On
구성에서 각 영역에는 인증 디렉터리와는 다른 권한 부여 디렉터리를 사용하도록 지정하는 디렉터리 매핑이 포함될 수 있습니다. 이렇게 하면 회사에서는 기업 전체에 권한 부여 디렉터리를 배포하는 동안 사용자 인증을 위한 단일 디렉터리를 사용할 수 있습니다. 정책 서버는 중첩된 영역의 그룹에서 권한을 처리할 때 계층 구조의 각 영역에 대한 디렉터리 매핑을 확인합니다. 디렉터리 매핑이 없으면 정책 서버는 인증 디렉터리를 권한 부여 디렉터리로 사용합니다.