Extension:Lockdown/ja

From MediaWiki.org

Jump to: navigation, search
ページごともしくは一部のページのアクセスを制限する必要がある場合、適切なコンテントマネジメントパッケージをインストールすることをお勧めします。MediaWikiはページごとの制限を提供するためには書かれていませんし、ほとんどのハックもしくはそれらを保証するパッチはどこかで欠陥があります。すなわち、機密データの流出を導く可能性があります。パスワードや銀行の口座が流出して、財産もしくは仕事を失ったとしても開発者は責任を負いません。
詳細に関しては、Security issues with authorization extensions/jaをご覧下さい


MediaWiki Extension
Lockdown

Release status: beta

Implementation User rights
Hooks used userCan
Description implements per-namespace group permissions
Author(s) Duesentrieb
MediaWiki 1.10が推奨で1.9でも動作します(おそらく1.8でも) (訳注:最新のサポートは英語版を確認)
Warning Warning':  1.12に対して壊れています!
Download svn (browse), bundle
README
log

Lockdown拡張機能は 与えられたユーザーグループに対して特定の名前空間と特別なページに対するアクセスを制限する方法を実装します。これはデフォルトの$wgGroupPermissions$wgNamespaceProtection設定によって提供されたものよりも粒度が細かいセキュリティモデルを提供します。

Warning Warning:  1.12に対して壊れています!これはMediaWiki内のロジックの変更が原因で、解決方法は不明です。次善策としてパッチが存在します

デフォルトでMediaWikiが使用しているセキュリティモデルを理解するためには下記の手引きが手助けになるでしょう:

Contents


[edit] インストールする

lockdownディレクトリをMediaWikiインストレーションのextensionフォルダにコピーして下さい。それから次の行をLocalSettings.phpファイルに追加して下さい(終わり近辺):

require_once( "$IP/extensions/Lockdown/Lockdown.php" );
 
$wgSpecialPageLockdown['Export'] = array('user');
 
$wgNamespacePermissionLockdown[NS_PROJECT]['edit'] = array('user');

$wgSpecialPageLockdownと$wgNamespacePermissionLockdownに対する設定は単なる例です - 詳細は下記をご覧下さい。

[edit] 構成

Note that the Lockdown拡張機能は*権限を与える*のではなくアクセスを制限するためのみに使われることに注意して下さい。MediaWikiの組み込み設定によってアクセスが拒否される場合、Lockdown拡張機能の使用は許可されていません。

[edit] $wgSpecialPageLockdown

$wgSpecialPageLockdownによってユーザグループがアクセス権限を持つ特別ページを個別に指定できるようになります。例えば、Special:Exportの使用をログインユーザに限定する場合、次の設定をLocalSettings.phpで使います:

$wgSpecialPageLockdown['Export'] = array('user');

特別ページの中には"ネイティブに"特定のパーミッションを要求するものがあることに注意して下さい。例えば、Special:Userrights、はユーザグループを割り当てするために使用されますが、"userrights"パーミッションが要求されます(デフォルトでは"bureaucrat"グループのみに付与されます)。この制限はLockdown拡張機能を利用してオーバーライドすることはできません。

[edit] $wgNamespacePermissionLockdown

$wgNamespacePermissionLockdownによってユーザーグループがどの名前空間のどのパーミッションを利用できるか制限できます。例えば、project名前空間に対する書き込み権限をsysopグループのメンバーのみに付与するためには、次の設定を使用します:

$wgNamespacePermissionLockdown[NS_PROJECT]['edit'] = array('sysop');

名前空間もしくはパーミッションのどちらか(一度に両方はできません)に対してワイルドカードがサポートされます。より詳細な定義が優先されます:

$wgNamespacePermissionLockdown[NS_PROJECT]['*'] = array('sysop');
$wgNamespacePermissionLockdown[NS_PROJECT]['read'] = array('*');
 
$wgNamespacePermissionLockdown['*']['move'] = array('autoconfirmed');

最初の2つの行はproject名前空間でのすべてのパーミションをsysopグループに対して制限しますが、まだ誰でも読み込みできます。三番目の行はすべての名前空間におけるページの移動をautoconfirmedグループに制限します。

組み込みの$wgGroupPermissions設定によって許可されないパーミッションを付与できないことに注意して下さい。次の行は通常のユーザーがmainの名前空間で編集をパトロールすることを許可*していません*:

$wgNamespacePermissionLockdown[NS_MAIN]['patrol'] = array('user');

代わりに、最初に$wgGroupPermissionsでこの権限を付与して、$wgNamespacePermissionLockdownを使用して再び制限しなければなりません:

$wgGroupPermissions['user']['patrol'] = true;
 
$wgNamespacePermissionLockdown['*']['patrol'] = array('sysop');
$wgNamespacePermissionLockdown[NS_MAIN]['patrol'] = array('user');

名前空間に対する閲覧権限を制限するとき、ユーザが別の名前空間に対して書き込み権限を持つ場合、制限は簡単に回避できます: 閲覧が制限されたページをテンプレートとしてインクルードすることによって、簡単に見えるようになります。これを回避するために、名前空間のIDを$wgNonincludableNamespacesに追加することで、その名前空間をテンプレートとしてページに利用することを禁止しなければなりません(この機能はMediaWiki 1.10のリビジョン19934で導入されました):

$wgNamespacePermissionLockdown[NS_PROJECT]['read'] = array('user');
$wgNonincludableNamespaces[] = NS_PROJECT;

$wgExtraNamespacesを利用してカスタムの名前空間と一緒にLockdownを使用することもできます:

#カスタムの名前空間を定義する
$wgExtraNamespaces[100] = 'Private';
$wgExtraNamespaces[101] = 'Private_talk';
 
#"read"パーミッションをログインユーザに制限する
$wgNamespacePermissionLockdown[100]['read'] = array('user');
$wgNamespacePermissionLockdown[101]['read'] = array('user');
 
#指定した名前空間からページをインクルードできないようにする
$wgNonincludableNamespaces[] = 100;
$wgNonincludableNamespaces[] = 101;

カスタムの名前空間は常にペア、対象となる名前空間(偶数のid)と関連したtalk名前空間(奇数のid)、で定義すべきであることに注意して下さい。

名前空間を参照する定数を使いたい場合、次のように定義する必要があります:

#より設定を読みやすくするために、カスタムの名前空間に対して定数を定義する
define('NS_PRIVATE', 100);
define('NS_PRIVATE_TALK', 101);
 
#カスタムの名前空間を定義する
$wgExtraNamespaces[NS_PRIVATE] = 'Private';
$wgExtraNamespaces[NS_PRIVATE_TALK] = 'Private_talk';
 
#"read"パーミッションをログインユーザに制限する
$wgNamespacePermissionLockdown[NS_PRIVATE]['read'] = array('user');
$wgNamespacePermissionLockdown[NS_PRIVATE_TALK]['read'] = array('user');
 
#指定した名前空間からページをインクルードできないようにする
$wgNonincludableNamespaces[] = NS_PRIVATE;
$wgNonincludableNamespaces[] = NS_PRIVATE_TALK;

[edit] 追加の方法

[edit] ページを隠す

Lockdown拡張機能はページの内容を表示されるのを防止しますが、一覧からアクセスできないページを除去できません。これらのページを隠すためには、MediaWikiにいくつかのパッチを適用しなければなりません。(非公式の)いくつかの提案はExtension:Lockdown/hiding_pagesを参照して下さい。

[edit] 画像と他のアップロードされたファイル

画像と他のアップロードされたファイルは閲覧可能でどのページにもインクルードできます。Image名前空間の保護ではインクルードを防止できません。画像に対して認証されていないアクセスを防止する方法に関してはManual:Image Authorisation/jaを参照して下さい。Extension:Simple SecurityExtension:SimpleSecurity4も参照して下さい。

[edit] リダイレクト

MediaWiki version: 1.10 and before

MediaWiki 1.10とそれ以降: 保護されているPNS名前空間内でPページへの#REDIRECT [[PNS:P]]リダイレクトが保護されていないページに設置されていてページがロードされていると、ユーザが必要なユーザグループに所属しているにもかかわらず、ユーザは保護されたページに導かれます。

この問題はMediaWiki 1.11とそれ以降では存在しないようです。

Personal tools