Changes between Initial Version and Version 1 of TracFineGrainedPermissions


Ignore:
Timestamp:
2010/10/12 00:14:07 (14 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracFineGrainedPermissions

    v1 v1  
     1= 粒度が細かいパーミッション = #Finegrainedpermissions 
     2 
     3Trac 0.11 より前は、リポジトリブラウザ サブシステムだけで「粒度が細かいパーミッション (fine grained permissions)」を定義することができました。 
     4 
     50.11 以降、カスタマイズしたパーミッションポリシーのプラグインを各所に使用するための共通のメカニズムが導入されたので、すべての種類の Trac リソースのあらゆるアクションについて、そのリソースの特定バージョンのレベルまで含めて許可/拒否を設定できるようになりました。 
     6 
     7Note: Trac 0.12 では、 `authz_policy` は `tracopt.perm.authz_policy.*` 配下に配置されるようになりました。 
     8 
     9== パーミッションポリシー == #PermissionPolicies 
     10 
     11=== !AuthzPolicy === #AuthzPolicy 
     12 
     13ポリシーの例として、 Authz 形式のシステムを基にしたポリシーが追加されました。詳しくは、 
     14[http://trac.edgewall.org/browser/trunk/sample-plugins/permissions/authz_policy.py] を参照してください (現在のバージョンは Python 2.4 以降でないと動きません)。 (より多くの例が [http://trac.edgewall.org/browser/trunk/sample-plugins/permissions] にあります。) 
     15 
     16 - [http://www.voidspace.org.uk/python/configobj.html ConfigObj] をインストール (必須) 
     17 - authz_policy.py を plugins ディレクトリにコピーする 
     18 - [http://swapoff.org/files/authzpolicy.conf authzpolicy.conf] ファイルをどこか (できれば、 Web サーバ起動ユーザ以外が読み取りできないセキュアな領域) に置く。ファイルに非ASCII文字が含まれる場合は UTF-8 で保存してください。 
     19 - `trac.ini` ファイルをアップデートする: 
     20   1. `[trac]` セクションの [TracIni#trac-section permission_policies] を編集する 
     21{{{ 
     22[trac] 
     23... 
     24permission_policies = AuthzPolicy, DefaultPermissionPolicy, LegacyAttachmentPolicy 
     25}}} 
     26   2. 新規に `[authz_policy]` セクションを追加する 
     27{{{ 
     28[authz_policy] 
     29authz_file = /some/trac/env/conf/authzpolicy.conf 
     30}}} 
     31   3. プラグインを有効化する 
     32{{{ 
     33[components] 
     34... 
     35authz_policy.* = enabled 
     36}}} 
     37 
     38パーミッションポリシーを指定する順序はとても重要です。 
     39ポリシーは設定された順序で評価されます。 
     40 
     41個々のポリシーはパーミッションチェックに対して `True`, `False`, `None` を返します。 
     42戻り値が `None` の場合のみ ''次の'' パーミッションポリシーに問い合わせを行います。 
     43どのポリシーも明示的にパーミッションを許可しない場合、最終的な結果は `False` になります 
     44(つまり、権限なしとみなされます)。 
     45 
     46例えば、 `authz_file` が次の内容を含み: 
     47{{{ 
     48[wiki:WikiStart@*] 
     49* = WIKI_VIEW 
     50 
     51[wiki:PrivatePage@*] 
     52john = WIKI_VIEW 
     53* = 
     54}}} 
     55デフォルトパーミッションが次のような内容の場合: 
     56{{{ 
     57john           WIKI_VIEW 
     58jack           WIKI_VIEW 
     59# anonymous に WIKI_VIEW は付与されていない 
     60}}} 
     61 
     62パーミッションは以下の通りとなります: 
     63 - WikiStart の全てのバージョンは、 (匿名ユーザも含む) 全員が閲覧できます。 
     64 - !PrivatePage は john が表示可能です。 
     65 - 他のページは john と jack が表示可能です。 
     66 
     67 
     68=== mod_authz_svn ライクなパーミッションポリシー === #mod_authz_svn-likepermissionpolicy 
     69 
     70この文書が書かれている時点では、 Trac 0.10 以前にリポジトリへの厳密なアクセス制御に使用されていた、古い「粒度が細かいパーミッション」システムは、まだパーミッションポリシーのコンポーネントにコンバートされていません。しかし、ユーザの視点では、実現できる機能に大きな違いはありません。 
     71 
     72「粒度が細かいパーミッション」の制御に定義ファイルを必要とします。この定義ファイルは Subversion の mod_authz_svn で使用しているものを使います。 
     73このファイルの形式と Subversion での用法に関する情報は、 svn book の Server Configuration (サーバ設定) の章にある [http://svnbook.red-bean.com/en/1.5/svn.serverconfig.pathbasedauthz.html Path-Based Authorization (ディレクトリごとのアクセス制御)] の項を参照してください。 
     74 
     75例: 
     76{{{ 
     77[/] 
     78* = r 
     79 
     80[/branches/calc/bug-142] 
     81harry = rw 
     82sally = r 
     83 
     84[/branches/calc/bug-142/secret] 
     85harry = 
     86}}} 
     87 
     88 * '''/''' = ''全員 read アクセスが可能です。これはデフォルトの動作となります'' 
     89 * '''/branches/calc/bug-142''' = ''harry は read/write アクセス権を持ち、 sally は read アクセス権のみを持ちます'' 
     90 * '''/branches/calc/bug-142/secret''' = ''harry はアクセス権を持たず、 sally は read アクセス権を持ちます (パーミッションはサブフォルダに継承されます)'' 
     91 
     92==== Trac の設定 ==== #TracConfiguration 
     93 
     94「粒度が細かいパーミッション」を有効にするには、 trac.ini ファイルの {{{[trac]}}} セクションに {{{authz_file}}} オプションを __設定しなければなりません__ 。オプションが空値に設定されていたり、そもそも指定されていない場合、パーミッションは適用されません。 
     95 
     96{{{ 
     97[trac] 
     98authz_file = /path/to/svnaccessfile 
     99}}} 
     100 
     101`auth_file` 内でシンタックス `[`''modulename''`:/`''some''`/`''path''`]` を使用する場合、以下の設定を追加してください: 
     102 
     103{{{ 
     104authz_module_name = modulename 
     105}}} 
     106 
     107''modulename'' には、 `[trac]` セクション中の `repository_dir` に設定したリポジトリと同じものを設定します。例えば `[trac]` セクション内の `repository_dir` に {{{/srv/active/svn/blahblah}}} を設定している場合は次のように設定します: 
     108 
     109{{{  
     110[trac] 
     111authz_file = /path/to/svnaccessfile 
     112authz_module_name = blahblah 
     113... 
     114repository_dir = /srv/active/svn/blahblah  
     115}}} 
     116 
     117Subversion の Authz ファイル {{{/path/to/svnaccessfile}}} では、 {{{[blahblah:/some/path]}}} のようにエントリを記載します。 
     118 
     119'''Note:''' Authz ファイルで使用するユーザ名と、 Trac で使用するユーザ名は __同じでなければなりません__。 
     120 
     121==== Subversion の設定 ==== #SubversionConfiguration 
     122 
     123通常は同じアクセスファイルを対応する Subversion リポジトリに適用します。 Apache のディレクティブには以下のように設定してください: 
     124{{{ 
     125<Location /repos> 
     126  DAV svn 
     127  SVNParentPath /usr/local/svn 
     128 
     129  # our access control policy 
     130  AuthzSVNAccessFile /path/to/svnaccessfile 
     131</Location> 
     132}}} 
     133 
     134複数のプロジェクト Environment において、プロジェクト全体にどのようにアクセス制限を行うかについての情報は [http://trac.edgewall.org/wiki/TracMultipleProjectsSVNAccess] を参照してください。 
     135 
     136== TracFineGrainedPermissions を動かすために == #GettingTracFineGrainedPermissionstowork 
     137 
     138tracd を使用している場合、新しい設定を読み込ませるために、 Trac を再起動するのを忘れないでください。 
     139 
     140---- 
     141See also: TracPermissions, 
     142[http://trac-hacks.org/wiki/FineGrainedPageAuthzEditorPlugin TracHacks:FineGrainedPageAuthzEditorPlugin] は設定を編集するプラグインです。