初期バージョン から バージョン 1 における更新: TracFineGrainedPermissions

差分発生行の前後
無視リスト:
更新日時:
2011/12/16 18:40:18 (13 年 前)
更新者:
trac
コメント:

--

凡例:

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