본문 바로가기
미디어위키

Extension AccessControl

by 다움위키 2023. 12. 27.

AccessControl 확장은 내부 그룹 또는 사용자 공간의 그룹 목록을 기반으로 특정 페이지에 대한 접근을 제한할 수 있는 기능을 제공합니다.

기본 상태의 MediaWiki는 CMS(Content Management System)로 설계되지 않았지만, 회사 또는 학교 인트라넷으로 사용될 때는 중요한 데이터를 보호해야 합니다. AccessControl은 이러한 목적으로 개발되었습니다.

Features

Since version 2.1 the extension examines the embedded page or template as well.
  • 설치가 쉽고 사용하기 쉽습니다.
  • MediaWiki에 별도로 패치할 필요가 없습니다.
  • 그룹에 제한이 없습니다.
  • 이중 모드 액세스 제어:
    • 보기 제어.
    • 편집 제어, URL에서 action=edit를 사용해서, 수동 편집 접근에 대한 제한을 포함합니다.
  • 사용자 그룹은 모든 이름 공간을 사용할 수 있습니다.
    • 그룹 목록이 있는 이름 공간은 다른 확장 프로그램에 의해 보호될 수 있습니다.
  • 미디어위키의 sysop그룹은 보호된 페이지를 보고 편집할 수 있습니다.
    • 확장 변수 $wgAdminCanReadAll에 의해 제어됨.
  • 여러 그룹에 대한 접근 권한 부여 가능합니다.
  • 그룹 및 개별 사용자 모두에게 읽기-전용 권한을 부여할 수 있습니다.
  • 권한이 없는 사용자는 허용되는 경우에만 검색 기능을 사용할 수 있습니다.

Installation

미디어위키 버전에 맞는 소스 코드를 다운로드하여 확장 디렉토리에 복사합니다.

Step 1: Local Settings File

  • 미디어위키 설정 파일 LocalSettings.php에 다음을 줄을 추가합니다:
require_once "extensions/AccessControl/AccessControl.php";

# 최근 버전은 대체로 아래와 같이 모듈을 로딩합니다:

wfLoadExtension( 'AccessControl' );
  • 그룹을 만들 목적으로 LocalSettings.php 파일에 네임 스페이스를 추가하십시오.
  • AccessControl.php에서 설정을 확인하십시오. 물론 해당 사항을 LocalSettings.php에서 설정할 수 있습니다:
$wgAdminCanReadAll = true;			// sysop 사용자는 모든 제한된 페이지를 읽을 수 있습니다.
$wgAccessControlRedirect = false;	// 만약 검색 패턴이 보호된 페이지에서 유효성을 검사하는 경우에는, 
         // 거부되며 및 익명 사용자에 대한 검색 결과가 있는 페이지에는 리다이렉션하지 않습니다.

Step 2: Create User Groups

사용자 그룹은 기본 이름 공간이 아닌 이름 공간의 일부인 단순한 표준 위키 페이지입니다. 사용의 용이성을 위해 접근 제어 목록 페이지 관리의 명시적 목적을 위해 특정 사용자 정의 이름 공간을 작성하는 것이 좋습니다.

  • 어떤 이름 공간에 사용자 목록이 있는 위키 페이지 만들기
    • 이름에 콜론(:)이 있는 페이지를 만드는 것만으로는 충분하지 않으며, 이 확장 프로그램은 이름 공간 내에서 하나 이상의 페이지에서 이름 공간을 사용함을 요구합니다.
    • 페이지 이름 예제: My:Group
      • 이름 공간은 My입니다.
      • 그룹 페이지는 Group입니다.
        • 사용자 그룹의 이름입니다.
        • 그룹에 글 머리 기호 목록(bulleted list)으로 사용자를 추가됩니다.
    • 페이지 컨텐츠 예제
      • IT 이름 공간이 있다고 가정합니다.
      • IT이름 공간에 "Department"라는 페이지를 만듭니다(IT:Department).
      • "John Doe" 및 "Jane Doe"라는 사용자를 만듭니다. 그룹 정보는 "Department" 페이지에 있습니다.
      • 각 사용자 이름을 IT:Department 페이지에 목록 항목으로 나타냅니다.
* John Doe
* Jane Doe (ro)

마지막에 "(ro)"와 함께 나열된 사용자 이름은 보호된 기사만 읽을 수 있으며, 편집할 수는 없습니다. 다른 사용자 그룹의 경우에서는, 다른 이름 공간의 "Department"라는 이름으로 다른 구성원 목록을 만들 수 있습니다(예를 들어, Sales:Department). Tip IT 이름 공간을 보호하기 위해서는, Lockdown 확장을 사용할 수 있지만, <accesscontrol> 태그를 사용하여 보호할 수도 있습니다.

Step 3: Additional Access Control

  • 현지화에 따라, 위키에서는 익명 또는 비인가 사용자가 리다이렉션되는 페이지를 만들어야 합니다. 그들 중 일부는 다른 페이지의 페이지에 접근할 수 없기 때문에 미리 작성해야 합니다.
  • 페이지의 안전은 <accesscontrol> 태그에 의해 제공됩니다. 만약 태그가 없거나 페이지가 비어 있으면, 페이지를 읽고 편집할 수 있는 로그인한 사용자는 자유롭게 접근할 수 있습니다. 로그인한 사용자 또는 익명 사용자 모두에게 읽기 전용 접근 권한을 가지지는 않습니다.
  • <accesscontrol> 태그에 나열된 그룹의 구성원은 그룹 제목에 "(ro)"로 나열되지 않고, 그룹 구성원 목록에 읽기 전용 접근 권한이 설정되지 않은 경우에만 페이지를 편집할 수 있습니다.
  • 기본적으로 변수 $wgAdminCanReadAll은 'sysop'의 구성원이 모든 이름 공간의 사용자 그룹 페이지를 편집할 수 있도록 "true"로 설정됩니다.
이것을 "false"로 설정하면 sysop의 구성원은 <accesscontrol> 태그로 보호된 페이지를 읽고 편집할 수 없으므로 큰 문제가 발생할 수 있습니다. 물론 LocalSettings.php 또는 소스에서 바꾼 부분을 원래대로 "true"로 변경해서 해결할 수 있습니다.

Example tag code

<accesscontrol>Administrators,IT:Department,Sales(ro)</accesscontrol>

 

이 예제에서는, "Administrators" 그룹의 구성원, "IT:Department" 그룹의 구성원들은 읽기 및 편집이 가능하고, Sales 그룹의 구성원들은 페이지를 읽기만 가능합니다. 물론 예제에서 표현은 되지 않았지만, 해당 그룹의 구성원에서 "(ro)"를 주면, 편집은 불가능하고 읽기만 가능합니다.

Usage on Pages to Control Access

위 내용은 설치를 위한 것입니다. 특정 사용자 그룹에 대해 어떤 페이지의 접근을 제한하기 위해서는, 해당 페이지지의 맨 위에 허용된 사용자 그룹의 이름(쉼표로 구분)을 <accesscontrol> 태그를 사용하여 컨텐츠로 포함시키십시오.