Changes between Initial Version and Version 1 of TracFineGrainedPermissions


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