| Sun ONE Web Server 6.1 관리자 설명서 |
부록 C
ACL 파일 구문이 부록에서는 ACL(Access-Control List)과 해당 구문을 설명합니다. ACL 파일은 텍스트 파일로 웹 서버에 저장된 리소스에 액세스할 수 있는 사용자를 정의한 목록이 있습니다. 기본적으로 웹 서버에는 서버에 액세스할 수 있는 모든 목록이 포함된 ACL 파일이 하나 있습니다. 그러나 여러 개의 ACL 파일을 만들고 obj.conf 파일에서 이를 참조할 수 있습니다.
액세스 제어 API를 사용하여 액세스 제어를 사용자 정의하려는 경우 ACL 파일의 구문과 함수에 대하여 알아야 합니다. 예를 들어 Oracle이나 Informix 데이터베이스 등의 다른 데이터베이스와의 인터페이스로 액세스 제어 API를 사용할 수 있습니다. API에 대한 자세한 내용은 다음 사이트의 Sun ONE 설명서를 참조하십시오.
이 부록에서는 다음 단원에 대해 설명합니다.
ACL 파일 구문모든 ACL 파일은 특정 형식과 구문을 따라야 합니다. ACL 파일은 하나 이상의 ACL이 포함된 텍스트 파일입니다. 모든 ACL 파일은 사용하는 버전 번호로 시작해야 합니다. 버전 줄은 하나 뿐이며 그 앞에 원하는 만큼의 주석을 삽입할 수 있습니다. Sun ONE Web Server 6.1은 버전 3.0을 사용합니다. 예:
주석은 줄 앞에 # 기호를 삽입하여 포함합니다.
파일의 각 ACL은 해당 유형을 정의하는 정의문으로 시작합니다. ACL에 사용할 수 있는 유형은 세 가지입니다.
- Path ACL은 영향을 미치는 리소스에 대한 절대 경로를 지정합니다.
- URI(Uniform Resource Indicator) ACL은 서버의 문서 루트에 상대적인 디렉토리 또는 파일을 지정합니다.
- Named ACL은 obj.conf 파일의 리소스에서 참조되는 이름을 지정합니다. 서버에는 "default" 이름의 리소스가 함께 제공되어 모든 사용자에게 읽기 액세스를 허용하며 LDAP 디렉토리의 사용자에게 쓰기 액세스를 허용합니다. Sun ONE Web Server 창에서 이름이 지정된 ACL을 만들 수 있다 하더라도 반드시 이름이 지정된 ACL을 obj.conf 파일의 리소스와 직접 참조해야 합니다.
Path와 URI ACL의 항목 끝에는 와일드카드가 포함될 수 있습니다. 예: /a/b/*. 항목의 끝이 아닌 다른 곳에 있는 와일드카드는 적용되지 않습니다.
유형 줄은 acl로 시작하며 유영 정보는 인용부호 안에 포함되고, 그 뒤에 세미콜론을 넣습니다. 모든 ACL의 유형 정보는 서로 다른 ACL 파일이라 할지라도 고유한 이름이어야 합니다. 다양한 ACL 유형에 대한 예는 다음 줄에 보이는 것과 같습니다.
ACL의 유형을 정의한 후, ACL과 함께 사용할 메소드를 정의하는 줄(인증문)과 액세스를 허용 또는 거부할 컴퓨터 또는 사용자를 정의하는 줄(인증문)을 하나 이상 추가합니다. 다음에서는 이러한 줄의 구문에 대해 설명합니다.
이 부분에서는 다음 항목에 대해 설명합니다.
인증 방법
ACL은 선택적으로 ACL을 처리할 때 서버가 반드시 사용해야 하는 인증 방법을 지정할 수 있습니다. 세 가지 방법이 있습니다.
Basic 및 digest의 경우 사용자가 리소스에 액세스하기 전에 사용자 이름과 비밀 번호를 입력해야 합니다.
SSL의 경우 사용자에게 클라이언트 인증서가 있어야 합니다. 서버의 암호화가 사용되어야 하며 사용자의 인증서 발행자가 인증될 신뢰된 CA의 목록에 있어야 합니다.
기본적으로 서버는 방법이 지정되지 않은 ACL에 대하여 Basic 방법을 사용합니다. 서버의 인증 데이터베이스가 반드시 사용자가 송신한 다이제스트 인증을 처리할 수 있어야 합니다.
각 인증 줄은 반드시 서버가 인증할 속성(사용자, 그룹 또는 이 둘 모두)을 지정해야 합니다. 다음 인증문은 ACL 유형 줄 다음 표시되는 것으로 사용자를 데이터베이스 또는 디렉토리의 개별 사용자와 일치시키는 기본 인증을 지정합니다.
다음 예에서는 SSL을 사용자 및 그룹용 인증 방법으로 사용합니다.
다음 예에서는 사용자 이름이 sales로 시작하는 모든 사용자를 허용합니다.
마지막 줄은 group=sales로 변경하면 그룹 속성이 인증되지 않으므로 ACL이 실패하게 됩니다.
권한 부여문
각 ACL 항목에는 하나 이상의 권한 부여문이 있습니다. 권한 부여문은 서버 리소스에 대한 액세스를 허용 또는 거부할 사용자를 지정합니다. 권한 부여문을 작성하는 경우 다음 구문을 사용합니다.
각 줄은 allow 또는 deny로 시작합니다. 보통 첫 번째 규칙에는 모든 사용자의 액세스를 거부한 후, 이후의 규칙에 사용자, 그룹 또는 컴퓨터의 액세스를 구체적으로 지정하는 것이 좋습니다. 이는 규칙의 계층 때문입니다. 즉, /my_stuff라는 디렉토리에 대하여 모든 사용자의 액세스를 허용한 후, /my_stuff/personal이라는 하위 디렉토리에 대하여 일부 사용자에게만 액세스를 허용하는 경우 하위 디렉토리에 대한 액세스 제어가 제대로 적용되지 않습니다. 이는 /my_stuff/ 디렉토리에 액세스가 허용된 모든 사용자가
/my_stuff/personal 디렉토리에 액세스할 수 있기 때문입니다. 이러한 경우를 예방하려면 모든 사용자의 액세스를 거부한 후 일부 사용자에게 액세스를 허용하는 하위 디렉토리용 규칙을 만듭니다.그러나 기본 ACL이 모든 사용자의 액세스를 거부하도록 설정하는 경우 다른 ACL 규칙에 "deny all" 규칙이 필요하지 않은 경우가 있습니다.
다음 줄은 모든 사용자의 액세스를 거부합니다.
이 부분에서는 다음 항목에 대해 설명합니다.
권한 부여문의 계층
ACL에는 리소스에 따른 계층이 있습니다. 예를 들어 서버가 문서(URI)
/my_stuff/web/presentation.html에 대한 요청을 받는 경우 서버는 이 URL에 적용되는 ACL 목록을 만듭니다. 서버는 우선 "check-acl"문에 있는 ACL 목록을 자체의 obj.conf 파일에 추가합니다. 그런 후, 서버는 일치되는 URI와 PATH ACL을 추가합니다.서버는 이 목록은 동일한 순서로 처리합니다. "absolute" ACL문이 있지 않는 한 모든 줄은 순서 대로 평가됩니다. "absolute allow" 또는 "absolute deny" 문이 "true"인 경우 서버는 처리를 중단하고 모든 결과를 승인합니다.
일치되는 ACL이 하나 이상인 경우 서버는 일치되는 마지막 줄을 사용합니다. 그러나 absolute문을 사용하는 경우 서버는 다른 일치에 대한 조회를 중단하고 absolute문이 포함된 ACL을 사용합니다. 동일한 리소스에 대하여 absolute문이 둘인 경우 서버는 파일의 첫 번째를 사용하고 일치되는 다른 리소스에 대한 조회를 중단합니다.
속성 표현식
속성 표현식은 사용자 이름, 그룹 이름, 호스트 이름 또는 IP 주소를 기준으로 허용 또는 거부할 사용자를 정의합니다. 서로 다른 사용자 또는 컴퓨터의 액세스를 허용하는 예는 다음과 같습니다.
또한 timeofday 속성을 사용하여 하루 중 시간(서버의 로컬 시간)에 따라 서버로의 액세스를 제한할 수 있습니다. 예를 들어 timeofday 속성을 사용하여 특정 사용자가 정해진 시간에만 액세스하도록 제한할 수 있습니다.
guest라는 이름의 사용자 그룹이 오전 8:00에서 오후 4:59까지 액세스하도록 제한하려면 다음 예제와 같이 합니다.
또한 주중 요일에 따라 액세스를 제한할 수 있습니다. Sun, Mon, Tue, Wed, Thu, Fri, Sat 등의 세자리 약자를 사용하여 요일을 지정합니다.
다음 줄은 premium 그룹의 사용자에게 항상 액세스를 허용합니다. discount 그룹의 사용자는 주말의 모든 시간과 주 중 오전 8시-오후 4:49를 제외한 모든 시간에 액세스할 수 있습니다.
표현식용 연산자
속성 표현식에 다양한 연산자를 사용할 수 있습니다. 괄호는 연산자의 순서를 변경할 때 사용합니다. user, group, dns, 및 ip인 경우 다음의 연산자를 사용할 수 있습니다.
timeofday 및 dayofweek의 경우 다음을 사용할 수 있습니다.
기본 ACL 파일
설치 후 server_root/httpacl/generated.https-serverid.acl 파일에 서버용 기본 설정이 제공됩니다. 사용자 인터페이스에서 설정을 만들 때까지 서버는 작업 파일 genwork.https-serverid.acl을 사용합니다. ACL을 파일을 편집할 때 genwork 파일을 변경할 수 있으며, 그런 후 Sun ONE Web Server를 사용하여 변경 사항을 저장 및 적용할 수 있습니다.
일반 구문 항목
입력 문자열에는 다음 문자를 포함할 수 있습니다.
다른 문자를 사용하는 경우 문자를 인용부호(") 안에 넣어야 합니다.
단일문은 한 줄에 위치해야 하며 세미콜론으로 끝을 표시합니다. 복수 줄은 대괄호([]) 안에 넣습니다. 항목 목록은 반드시 쉼표로 분리해야 하며 인용부호(") 안에 넣어야 합니다.
obj.conf 내의 ACL 파일 참조이름이 지정된 ACL이나 별도의 ACL이 있는 경우 obj.conf 파일에서 이를 참조할 수 있습니다. 이 작업은 check-acl 함수를 사용하는 PathCheck 지시문에서 수행합니다. 이 줄의 구문은 다음과 같습니다.
aclname은 ACL 파일에 표시되는 ACL의 고유한 이름입니다.
예를 들어 ACL 이름 지정 testacl을 사용하여 디렉토리에 대한 액세스를 제한하려면 다음 줄을 obj.conf 파일에 추가합니다.
앞의 예에서 첫 번째 줄은 액세스를 제한하려는 서버 리소스를 표시하는 개체입니다. 두 번째 줄은 PathCheck 지시문으로 check-acl 함수를 사용하여 이름 지정 ACL(testacl)을 지시문이 나타나는 개체에 바인드합니다. testacl ACL은 magnus.conf 에서 참조하는 모든 ACL 파일에 존재할 수 있습니다.