Changes between Initial Version and Version 1 of TracFineGrainedPermissions


Ignore:
Timestamp:
May 13, 2012, 9:15:45 PM (13 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.*` 配下 ) 。したがって、デフォルトでインストールされ、 Trac の管理 Web インタフェースの //プラグイン// パネルで簡単に有効にすることができます。
     8
     9
     10== パーミッションポリシー == #PermissionPolicies
     11
     12様々なパーミッションポリシーを実装することができます。 Trac にはいくつかの例を同梱しています。
     13
     14現在有効なポリシーは TracIni の中で設定されているコンフィグレーションによって決定します:
     15
     16{{{
     17[trac]
     18permission_policies = AuthzSourcePolicy, DefaultPermissionPolicy, LegacyAttachmentPolicy
     19}}}
     20このリストの1番目の [#AuthzSourcePolicy] ポリシーについては、下記に記載しています。続く !DefaultPermissionPolicy では、 TracPermissions に記載されている従来型の粒度が粗いパーミッションチェックを行ないます。そして3番目の !LegacyAttachmentPolicy は添付ファイルに対して、粒度の粗いパーミッションチェックを行ないます。
     21
     22使用可能なオプションの選択肢として、 Authz 形式のシステムにてとても一般的なパーミッションポリシーを提供する [#AuthzPolicy] があります。
     23詳細については、 [trac:source:branches/0.12-stable/tracopt/perm/authz_policy.py authz_policy.py] を参照して下さい。
     24
     25もう一つの評判のよいパーミッションポリシーである、 [#AuthzSourcePolicy] は pre-0.12 で再実装され、新しいシステムでは、 Subversion のリポジトリに限定して粒度の細かいパーミッション設定をサポートするようになりました。
     26
     27その他の例については、 [trac:source:branches/0.12-stable/sample-plugins/permissions sample-plugins/permissions] を参照して下さい。
     28
     29
     30=== !AuthzPolicy === #AuthzPolicy
     31
     32 - [http://www.voidspace.org.uk/python/configobj.html ConfigObj] をインストール (必須)
     33 - authz_policy.py を plugins ディレクトリにコピーする
     34 - [http://swapoff.org/files/authzpolicy.conf authzpolicy.conf] ファイルをどこか (できれば、 Web サーバ起動ユーザ以外が読み取りできないセキュアな領域) に置く。ファイルに非ASCII文字が含まれる場合は UTF-8 で保存してください。
     35 - `trac.ini` ファイルをアップデートする:
     36   1. `[trac]` セクションの [TracIni#trac-section permission_policies] を編集する
     37{{{
     38[trac]
     39...
     40permission_policies = AuthzPolicy, DefaultPermissionPolicy, LegacyAttachmentPolicy
     41}}}
     42   2. 新規に `[authz_policy]` セクションを追加する
     43{{{
     44[authz_policy]
     45authz_file = /some/trac/env/conf/authzpolicy.conf
     46}}}
     47   3. プラグインを有効化する
     48{{{
     49[components]
     50...
     51# Trac 0.12
     52tracopt.perm.authz_policy.* = enabled
     53# for Trac 0.11 use this
     54#authz_policy.* = enabled
     55}}}
     56
     57パーミッションポリシーを指定する順序はとても重要です。
     58ポリシーは設定された順序で評価されます。
     59
     60個々のポリシーはパーミッションチェックに対して `True`, `False`, `None` を返します。
     61戻り値が `None` の場合のみ ''次の'' パーミッションポリシーに問い合わせを行います。
     62どのポリシーも明示的にパーミッションを許可しない場合、最終的な結果は `False` になります
     63(つまり、権限なしとみなされます)。
     64
     65例えば、 `authz_file` が次の内容を含み:
     66{{{
     67[wiki:WikiStart@*]
     68* = WIKI_VIEW
     69
     70[wiki:PrivatePage@*]
     71john = WIKI_VIEW
     72* =
     73}}}
     74デフォルトパーミッションが次のような内容の場合:
     75{{{
     76john           WIKI_VIEW
     77jack           WIKI_VIEW
     78# anonymous に WIKI_VIEW は付与されていない
     79}}}
     80
     81パーミッションは以下の通りとなります:
     82 - WikiStart の全てのバージョンは、 (匿名ユーザも含む) 全員が閲覧できます。
     83 - !PrivatePage は john が表示可能です。
     84 - 他のページは john と jack が表示可能です。
     85
     86
     87=== !AuthzSourcePolicy  (mod_authz_svn ライクなパーミッションポリシー) === #AuthzSourcePolicy
     88
     89この文書が書かれている時点では、 Trac 0.11 以前にリポジトリへの厳密なアクセス制御に使用されていた、古い「粒度が細かいパーミッション」システムは、パーミッションポリシーのコンポーネントにコンバートされました。しかし、ユーザの視点では、実現できる機能に大きな違いはありません。
     90
     91「粒度が細かいパーミッション」の制御に定義ファイルを必要とします。この定義ファイルは Subversion の mod_authz_svn で使用しているものを使います。
     92このファイルの形式と Subversion での用法に関する情報は、 svn book の Server Configuration (サーバ設定) の章にある [http://svnbook.red-bean.com/en/1.5/svn.serverconfig.pathbasedauthz.html Path-Based Authorization (ディレクトリごとのアクセス制御)] の項を参照してください。
     93
     94例:
     95{{{
     96[/]
     97* = r
     98
     99[/branches/calc/bug-142]
     100harry = rw
     101sally = r
     102
     103[/branches/calc/bug-142/secret]
     104harry =
     105}}}
     106
     107 * '''/''' = ''全員 read アクセスが可能です。これはデフォルトの動作となります''
     108 * '''/branches/calc/bug-142''' = ''harry は read/write アクセス権を持ち、 sally は read アクセス権のみを持ちます''
     109 * '''/branches/calc/bug-142/secret''' = ''harry はアクセス権を持たず、 sally は read アクセス権を持ちます (パーミッションはサブフォルダに継承されます)''
     110
     111==== Trac の設定 ==== #TracConfiguration
     112
     113「粒度が細かいパーミッション」を有効にするには、 trac.ini ファイルの {{{[trac]}}} セクションに {{{authz_file}}} オプションを __設定しなければなりません__ 。オプションが空値に設定されていたり、そもそも指定されていない場合、パーミッションは適用されません。
     114
     115{{{
     116[trac]
     117authz_file = /path/to/svnaccessfile
     118}}}
     119
     120`auth_file` 内でシンタックス `[`''modulename''`:/`''some''`/`''path''`]` を使用する場合、以下の設定を追加してください:
     121
     122{{{
     123authz_module_name = modulename
     124}}}
     125
     126''modulename'' には、 `[trac]` セクション中の `repository_dir` に設定したリポジトリと同じものを設定します。例えば `[trac]` セクション内の `repository_dir` に {{{/srv/active/svn/blahblah}}} を設定している場合は次のように設定します:
     127
     128{{{
     129[trac]
     130authz_file = /path/to/svnaccessfile
     131authz_module_name = blahblah
     132...
     133repository_dir = /srv/active/svn/blahblah
     134}}}
     135
     136Subversion の Authz ファイル {{{/path/to/svnaccessfile}}} では、 {{{[blahblah:/some/path]}}} のようにエントリを記載します。
     137
     138'''Note:''' Authz ファイルで使用するユーザ名と、 Trac で使用するユーザ名は __同じでなければなりません__。
     139
     1400.12 では、 trac.ini の permission_policies に ''!AuthzSourcePolicy'' を必ず含めて下さい。さもないと、 authz のパーミッションファイルは無視されます。
     141
     142{{{
     143[trac]
     144permission_policies = AuthzSourcePolicy, DefaultPermissionPolicy, LegacyAttachmentPolicy
     145}}}
     146
     147==== Subversion の設定 ==== #SubversionConfiguration
     148
     149通常は同じアクセスファイルを対応する Subversion リポジトリに適用します。 Apache のディレクティブには以下のように設定してください:
     150{{{
     151<Location /repos>
     152  DAV svn
     153  SVNParentPath /usr/local/svn
     154
     155  # our access control policy
     156  AuthzSVNAccessFile /path/to/svnaccessfile
     157</Location>
     158}}}
     159
     160複数のプロジェクト Environment において、プロジェクト全体にどのようにアクセス制限を行うかについての情報は [http://trac.edgewall.org/wiki/TracMultipleProjectsSVNAccess] を参照してください。
     161
     162== デバッグ用パーミッション #DebuggingPermissions
     163trac.ini の設定:
     164{{{
     165[logging]
     166log_file = trac.log
     167log_level = DEBUG
     168log_type = file
     169}}}
     170
     171ウォッチコマンド:
     172{{{
     173tail -n 0 -f log/trac.log | egrep '\[perm\]|\[authz_policy\]'
     174}}}
     175
     176どんなチェックが行なわれているか見ることができます。より詳細な情報については、プラグインのソースに添付されているドキュメントを参照して下さい。
     177
     178
     179----
     180See also: TracPermissions,
     181[http://trac-hacks.org/wiki/FineGrainedPageAuthzEditorPlugin TracHacks:FineGrainedPageAuthzEditorPlugin] は設定を編集するプラグインです。