Sun Java logo     이전      목차      색인      다음     

Sun logo
Sun Java System Web Proxy Server 4 .0.1 관리 설명서 

부록 A
ACL 파일 구문

ACL(Access Control List ) 파일은 Proxy Server 리소스에 액세스할 수 있는 사용자를 정의한 목록을 포함하는 텍스트 파일입니다. 기본적으로 Proxy Server에는 서버에 액세스할 수 있는 모든 목록이 포함된 ACL 파일이 하나 있습니다. 여러 개의 ACL 파일을 만들고 obj.conf 파일에서 이를 참조할 수도 있습니다.

Proxy Server 4는 Proxy Server 3.x에서 사용된 구문과 다른 ACL 파일 구문을 사용합니다. 이 부록에서는 ACL 파일과 해당 구문을 설명합니다. Proxy Server와 해당 리소스의 액세스 제어에 대한 자세한 내용은 서버 액세스 제어를 참조하십시오. 리소스 템플릿은 템플릿 및 리소스 관리에서 설명한 대로 Proxy Server 4 릴리스에서 지원됩니다.

이 부록은 다음과 같은 절로 구성되어 있습니다.


ACL 파일 및 ACL 파일 구문 정보

모든 ACL 파일은 특정 형식과 구문을 따라야 합니다. ACL 파일은 하나 이상의 ACL이 포함된 텍스트 파일입니다. 모든 ACL 파일은 구문 버전 번호로 시작해야 합니다. 예:

version 3.0;

버전 줄은 하나 뿐이며 그 앞에 원하는 만큼의 주석을 삽입할 수 있습니다. Proxy Server는 구문 버전 3.0을 사용합니다. 주석은 줄 앞에 # 기호를 사용하여 파일에 포함할 수 있습니다.

파일의 각 ACL은 해당 유형을 정의하는 정의문으로 시작합니다. ACL 유형은 다음 세 가지 중 하나입니다.

경로 ACL 및 리소스 ACL은 와일드카드를 포함할 수 있습니다. 와일드카드에 대한 자세한 내용은 템플릿 및 리소스 관리를 참조하십시오.

유형 줄은 acl로 시작하며 유형 정보는 인용 부호 안에 포함되고, 그 뒤에 세미콜론을 넣습니다. 예:

acl "default";
acl "http://*.*";

모든 ACL의 유형 정보는 서로 다른 ACL 파일이라 할지라도 고유한 이름이어야 합니다. ACL의 유형을 정의한 후, ACL과 함께 사용할 메소드를 정의하는 줄(인증문)과 액세스를 허용 또는 거부할 컴퓨터 또는 사용자를 정의하는 줄(인증문)을 하나 이상 추가합니다. 다음에서는 이러한 줄의 구문에 대해 설명합니다.

이 절에서는 다음 항목에 대해 설명합니다.

인증문

ACL은 선택적으로 ACL을 처리할 때 서버가 반드시 사용해야 하는 인증 방법을 지정할 수 있습니다. 세 가지 방법이 있습니다.

Basic 및 Digest 방법의 경우 사용자가 리소스에 액세스하기 전에 아이디와 비밀 번호를 입력해야 합니다.

SSL 방법의 경우 사용자에게 클라이언트 인증서가 있어야 합니다. 인증을 받으려면 Proxy Server에서 암호화가 사용되어야 하며 사용자의 인증서 발행자가 신뢰 CA 목록에 있어야 합니다.

기본적으로 서버는 방법이 지정되지 않은 ACL에 대해 Basic 방법을 사용합니다. 서버의 인증 데이터베이스가 사용자가 송신한 Digest 인증을 지원해야 합니다.

각 인증 줄은 반드시 서버가 인증할 속성(사용자, 그룹 또는 모두)을 지정해야 합니다. 다음 인증문은 ACL 유형 줄 뒤에 표시되며 데이터베이스 또는 디렉토리의 개별 사용자와 사용자가 일치하는 경우 Basic 인증을 지정합니다.

authenticate (user) {
    method = "basic";
};

다음 예에서는 SSL을 사용자 및 그룹용 인증 방법으로 사용합니다.

authenticate (user, group) {
    method = "ssl";
};

다음 예에서는 아이디가 sales로 시작하는 모든 사용자를 허용합니다.

allow (all) user = "sales*";

마지막 줄을 group=sales로 변경하면 그룹 속성이 인증되지 않으므로 ACL이 실패하게 됩니다.

권한 부여문

각 ACL 항목에는 하나 이상의 권한 부여문이 있습니다. 권한 부여문은 서버 리소스에 대한 액세스를 허용 또는 거부할 사용자를 지정합니다.

권한 부여문 작성

권한 부여문을 작성하는 경우 다음 구문을 사용합니다.

allow|deny [absolute] (right[,right...]) attribute expression;

각 줄은 allow 또는 deny로 시작합니다. 보통 첫 번째 규칙에서는 모든 사용자의 액세스를 거부한 다음 이후의 규칙에서 사용자, 그룹 또는 컴퓨터의 액세스를 구체적으로 허용하는 것이 좋습니다. 이는 규칙의 계층 때문입니다. 즉, /my_files라는 디렉토리에 대해 모든 사용자의 액세스를 허용한 후 하위 디렉토리인 /my_files/personal은 일부 사용자에게만 액세스를 허용하는 경우 하위 디렉토리에 대한 액세스 제어가 동작하지 않습니다. 이는 /my_files 디렉토리에 액세스가 허용된 모든 사용자는 /my_files/personal 디렉토리에 대해서도 액세스가 허용되기 때문입니다. 이러한 경우를 예방하려면 모든 사용자의 액세스를 거부한 후 일부 필요한 사용자에게 액세스를 허용하는 하위 디렉토리용 규칙을 만듭니다.

그러나 모든 사용자의 액세스를 거부하도록 기본 ACL을 설정하는 경우 다른 ACL 규칙에는 "deny all" 규칙이 필요하지 않은 경우가 있습니다.

다음 줄은 모든 사용자의 액세스를 거부합니다.

deny (all) user = "anyone";

권한 부여문의 계층

ACL에는 리소스에 따른 계층이 있습니다. 특정 리소스에 대한 요청을 받으면 서버는 해당 리소스에 적용할 ACL 목록을 구축합니다. 서버는 우선 obj.conf 파일의 check-acl문에 있는 목록에서 이름이 지정된 ACL을 추가합니다. 그런 후 서버는 일치하는 경로 ACL 및 리소스 ACL을 추가합니다. 이 목록은 같은 순서로 처리됩니다. "absolute" ACL문이 있지 않는 한 모든 문은 순서대로 평가됩니다. "absolute allow" 또는 "absolute deny"문이 "true"인 경우 서버는 처리를 중단하고 이 결과를 받아들입니다.

일치되는 ACL이 하나 이상인 경우 서버는 일치하는 마지막 문을 사용합니다. 그러나 absolute문을 사용하는 경우 서버는 다른 일치에 대한 조회를 중단하고 absolute문이 포함된 ACL을 사용합니다. 동일한 리소스에 대해 absolute문이 둘인 경우 서버는 파일의 첫 번째 문을 사용하고 일치하는 다른 리소스에 대한 조회를 중단합니다.

version 3.0;
acl "default";
authenticate (user,group) {
  prompt="Sun Java System Web Proxy Server";
};
allow (read,execute,list,info) user = "anyone";
allow (write,delete) user = "all";

acl "http://*.*";
deny (all) user = "anyone";
allow (all) user = "joe";

속성 표현식

속성 표현식은 아이디, 그룹 이름, 호스트 이름 또는 IP 주소를 기준으로 허용 또는 거부할 사용자를 정의합니다. 서로 다른 사용자 또는 컴퓨터에 액세스를 허용하는 방법에 대한 예는 다음과 같습니다.

또한 timeofday 속성을 사용하여 하루 중 시간(서버의 로컬 시간 기준)에 따라 서버에 대한 액세스를 제한할 수 있습니다. 예를 들어 timeofday 속성을 사용하여 특정 시간 동안 특정 사용자의 액세스를 제한할 수 있습니다.

시간을 지정하려면 24시간 형식을 사용합니다. 예를 들어 0400은 오전 4:00, 2230은 오후 10:30을 지정합니다. guests라는 사용자 그룹의 액세스를 오전 08:00에서 오후 4:59까지 제한하려면 다음 예제와 같이 합니다.

allow (read)
    (group="guests") and
    (timeofday<0800 or timeofday=1700);

또한 주중 요일에 따라 액세스를 제한할 수 있습니다. 세 자리 약자(Sun, Mon, Tue, Wed, Thu, Fri, Sat)를 사용하여 요일을 지정합니다.

다음 문은 premium 그룹의 사용자에게 항상 액세스를 허용합니다. discount 그룹의 사용자는 주말의 모든 시간과 주중 오전 08:00부터 오후 4:59까지를 제외한 모든 시간에 액세스할 수 있습니다.

allow (read) (group="discount" and dayofweek="Sat,Sun") or 
(group="discount" and (dayofweek="mon,tue,wed,thu,fri" and
(timeofday<0800 or timeofday=1700)))
or
(group="premium");

표현식용 연산자

속성 표현식에 다양한 연산자를 사용할 수 있습니다. 괄호는 연산자의 순서를 변경할 때 사용합니다. 다음 연산자는 user, group, dns 및 ip와 사용할 수 있습니다.

다음 연산자는 timeofday 및 dayofweek와 사용할 수 있습니다.

기본 ACL 파일

설치 후 server_root/httpacl/generated.proxy-serverid.acl 파일에서 서버에 대한 기본 설정이 제공됩니다. 사용자 인터페이스에서 설정이 만들어 질 때까지 서버는 작업 파일 genwork.proxy-serverid.acl을 사용합니다. ACL을 파일을 편집할 때 genwork 파일을 변경할 수 있으며, 그런 후 Proxy Server를 사용하여 변경 사항을 저장 및 적용할 수 있습니다.

일반 구문 항목

입력 문자열에는 다음 문자를 포함할 수 있습니다.

다른 문자인 경우 인용 부호(") 안에 넣어야 합니다.

단일문은 한 줄에 위치해야 하며 세미콜론으로 끝을 표시합니다. 복수문은 대괄호([]) 안에 넣습니다. 항목 목록은 반드시 쉼표로 분리해야 하며 인용 부호(") 안에 넣어야 합니다.


obj.conf 내의 ACL 파일 참조

이름이 지정된 ACL이나 별도의 ACL 파일은 obj.conf 파일에서 참조할 수 있습니다. 이 작업은 check-acl 함수를 사용하는 PathCheck 지시문에서 수행합니다. 이 줄의 구문은 다음과 같습니다.

PathCheck fn="check-acl" acl="aclname"

where aclname은 ACL 파일에 표시되는 ACL의 고유한 이름입니다.

예를 들어 ACL named testacl을 사용하여 디렉토리에 대한 액세스를 제한하려면 다음 줄을 obj.conf 파일에 추가합니다.

<Object ppath="https://"
PathCheck fn="check-acl" acl="testacl"
</Object

앞의 예에서 첫 번째 줄은 액세스를 제한하려는 서버 리소스를 표시하는 개체입니다. 두 번째 줄은 PathCheck 지시문으로 check-acl 함수를 사용하여 이름이 지정된 ACL(testacl)을 지시문이 나타나는 개체에 바인드합니다. testacl ACL은 server.xml에서 참조하는 모든 ACL 파일에 존재할 수 있습니다.



이전      목차      색인      다음     


부품 번호: 819-3161.   저작권 2005 Sun Microsystems, Inc. 모든 권리는 저작권자의 소유입니다.