| 13 | 様々なパーミッションポリシーを実装することができます。 Trac にはいくつかの例を同梱しています。 |
| 14 | |
| 15 | 現在有効なポリシーは TracIni の中で設定されているコンフィグレーションによって決定します: |
| 16 | 例 |
| 17 | {{{ |
| 18 | [trac] |
| 19 | permission_policies = AuthzSourcePolicy, DefaultPermissionPolicy, LegacyAttachmentPolicy |
| 20 | }}} |
| 21 | このリストの1番目の [#AuthzSourcePolicy] ポリシーについては、下記に記載しています。続く !DefaultPermissionPolicy では、 TracPermissions に記載されている従来型の粒度が粗いパーミッションチェックを行ないます。そして3番目の !LegacyAttachmentPolicy は添付ファイルに対して、粒度の粗いパーミッションチェックを行ないます。 |
| 22 | |
| 23 | 使用可能なオプションの選択肢として、 Authz 形式のシステムにてとても一般的なパーミッションポリシーを提供する [#AuthzPolicy] があります。 |
| 24 | 詳細については、 [trac:source:branches/0.12-stable/tracopt/perm/authz_policy.py authz_policy.py] を参照して下さい。 |
| 25 | |
| 26 | もう一つの評判のよいパーミッションポリシーである、 [#AuthzSourcePolicy] は pre-0.12 で再実装され、新しいシステムでは、 Subversion のリポジトリに限定して粒度の細かいパーミッション設定をサポートするようになりました。 |
| 27 | |
| 28 | その他の例については、 [trac:source:branches/0.12-stable/sample-plugins/permissions sample-plugins/permissions] を参照して下さい。 |
| 29 | |
| 30 | |
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] を編集する |
| 32 | ==== 設定方法 ==== #Configuration |
| 33 | * [http://www.voidspace.org.uk/python/configobj.html ConfigObj] をインストールする (0.12 でも必要) |
| 34 | * authz_policy.py を plugins にコピーする (Trac 0.11でのみ必要) |
| 35 | * [http://swapoff.org/files/authzpolicy.conf authzpolicy.conf] ファイルを適当な場所 (望ましくは、 Web サーバ起動ユーザ以外が読み取りできないセキュアな領域) に配置する。ファイルに非ASCII文字が含まれる場合は UTF-8 で保存してください |
| 36 | * `trac.ini` ファイルをアップデートする: |
| 37 | 1. `[trac]` セクションの [TracIni#trac-section permission_policies] を編集する |
| 68 | |
| 69 | `authzpolicy.conf` は `.ini` スタイルの設定ファイルです: |
| 70 | {{{ |
| 71 | [wiki:PrivatePage@*] |
| 72 | john = WIKI_VIEW, !WIKI_MODIFY |
| 73 | jack = WIKI_VIEW |
| 74 | * = |
| 75 | }}} |
| 76 | * config ファイルの各セクションは Trac のリソース記述子との照合に用いる |
| 77 | グローバルなパターンです。記述子は以下のような形式です: |
| 78 | {{{ |
| 79 | <realm>:<id>@<version>[/<realm>:<id>@<version> ...] |
| 80 | }}} |
| 81 | リソースを親から子の順に、左から右へ記述します。不特定な |
| 82 | コンポーネントがある場合は、 `*` で置き換えられます。バージョンのパターンが |
| 83 | 明示的に記されていなければ、すべてのバージョン (`@*`) が暗黙的に追加されます。 |
| 84 | |
| 85 | 例: WikiStart ページを照合する |
| 86 | {{{ |
| 87 | [wiki:*] |
| 88 | [wiki:WikiStart*] |
| 89 | [wiki:WikiStart@*] |
| 90 | [wiki:WikiStart] |
| 91 | }}} |
| 92 | |
| 93 | 例: WikiStart の 添付ファイル `wiki:WikiStart@117/attachment/FOO.JPG@*` |
| 94 | を照合する |
| 95 | {{{ |
| 96 | [wiki:*] |
| 97 | [wiki:WikiStart*] |
| 98 | [wiki:WikiStart@*] |
| 99 | [wiki:WikiStart@*/attachment/*] |
| 100 | [wiki:WikiStart@117/attachment/FOO.JPG] |
| 101 | }}} |
| 102 | |
| 103 | * セクションは設定ファイルに書かれている '''順に''' 現在の Trac のリソース記述子に対して |
| 104 | チェックされます。'''順番は重要です''' |
| 105 | |
| 106 | * 一度 セッションにマッチすれば、'''順に''' 現在のユーザ名がセッションの |
| 107 | キー (ユーザ名) と照合されます |
| 108 | * キー (ユーザ名) の前に `@` を付けると、グループとして処理されます |
| 109 | * 値 (パーミッション) の前に `!` を付けると、そのパーミッションは |
| 110 | 拒否されます |
| 111 | |
| 112 | 通常の Trac パーミッションのルールを適用していれば、ユーザ名は、 'anonymous', 'authenticated', <username> '*' 等とマッチするはずです。 || '''Note:''' ユーザによって作成された (例えば、ブラウザ上から //管理 / 権限// (英語版では //Admin / Permissions//) の '権限グループの追加' (英語版では 'adding subjects to groups')) グループには使えません。詳細については [trac:#5648 #5648] を参照してください。 || |
60 | | パーミッションは以下の通りとなります: |
61 | | - WikiStart の全てのバージョンは、 (匿名ユーザも含む) 全員が閲覧できます。 |
62 | | - !PrivatePage は john が表示可能です。 |
63 | | - 他のページは john と jack が表示可能です。 |
64 | | |
65 | | |
66 | | === mod_authz_svn ライクなパーミッションポリシー === #mod_authz_svn-likepermissionpolicy |
67 | | |
68 | | この文書が書かれている時点では、 Trac 0.10 以前にリポジトリへの厳密なアクセス制御に使用されていた、古い「粒度が細かいパーミッション」システムは、まだパーミッションポリシーのコンポーネントにコンバートされていません。しかし、ユーザの視点では、実現できる機能に大きな違いはありません。 |
| 130 | 結果: |
| 131 | * WikiStart の全てのバージョンは、 (匿名ユーザも含む) 全員が閲覧できます |
| 132 | * !PrivatePage は john が表示可能です |
| 133 | * 他のページは john と jack が表示可能です |
| 134 | |
| 135 | Groups: |
| 136 | {{{ |
| 137 | [groups] |
| 138 | admins = john, jack |
| 139 | devs = alice, bob |
| 140 | |
| 141 | [wiki:Dev@*] |
| 142 | @admins = TRAC_ADMIN |
| 143 | @devs = WIKI_VIEW |
| 144 | * = |
| 145 | |
| 146 | [*] |
| 147 | @admins = TRAC_ADMIN |
| 148 | * = |
| 149 | }}} |
| 150 | |
| 151 | 結果: |
| 152 | - すべてのアクセスがブロックされます (ホワイトリストアプローチ)。しかし |
| 153 | - admins グループはすべてにおいて TRAC_ADMIN 権限を取得しており、 |
| 154 | - devs グループは Wiki ページを閲覧可能です |
| 155 | |
| 156 | リポジトリの例 (閲覧ソースの詳細設定): |
| 157 | {{{ |
| 158 | # 単一のリポジトリ: |
| 159 | [repository:test_repo@*] |
| 160 | john = BROWSER_VIEW, FILE_VIEW |
| 161 | # John は test_repo に対して BROWSER_VIEW と FILE_VIEW の権限を持つ |
| 162 | |
| 163 | # すべてのリポジトリ: |
| 164 | [repository:*@*] |
| 165 | john = BROWSER_VIEW, FILE_VIEW |
| 166 | # John はすべてのリポジトリに対して BROWSER_VIEW と FILE_VIEW の権限を持つ |
| 167 | }}} |
| 168 | |
| 169 | より詳細なリポジトリのアクセス許可: |
| 170 | {{{ |
| 171 | # John は trunk/src/some/location/ へアクセスする場合のみ、BROWSER_VIEW と FILE_VIEW の権限を持つ |
| 172 | [repository:test_repo@*/source:trunk/src/some/location/*@*] |
| 173 | john = BROWSER_VIEW, FILE_VIEW |
| 174 | |
| 175 | |
| 176 | # John は trunk/src/some/location のリビジョン 1 へアクセスする場合のみ、BROWSER_VIEW と FILE_VIEW の権限を持つ |
| 177 | [repository:test_repo@*/source:trunk/src/some/location/*@1] |
| 178 | john = BROWSER_VIEW, FILE_VIEW |
| 179 | |
| 180 | |
| 181 | # John は trunk/src/some/location の 'somefile' へアクセスする場合のみ、BROWSER_VIEW と FILE_VIEW の権限を持つ |
| 182 | [repository:test_repo@*/source:trunk/src/some/location/somefile@*] |
| 183 | john = BROWSER_VIEW, FILE_VIEW |
| 184 | |
| 185 | |
| 186 | # John は trunk/src/some/location のリビジョン 1 の 'somefile' へアクセスする場合のみ、BROWSER_VIEW と FILE_VIEW の権限を持つ |
| 187 | [repository:test_repo@*/source:trunk/src/some/location/somefile@1] |
| 188 | john = BROWSER_VIEW, FILE_VIEW |
| 189 | }}} |
| 190 | |
| 191 | Note: Timeline での通知を John に表示するためには、上記パーミッションリストに CHANGESET_VIEW を追加する必要があります。 |
| 192 | |
| 193 | |
| 194 | ==== 利用不可となる機能 ==== #MissingFeatures |
| 195 | 粒度が細かいパーミッションでは!DefaultPermissionPolicyで行っていたような (管理画面での) グループ機能は備わっていません ([trac:#9573 #9573], [trac:#5648 #5648] 参照)。パッチは一部利用可能です( [trac:#6680 #6680] にある authz_policy.2.patch を参照してください) |
| 196 | |
| 197 | 利用不可となる機能: |
| 198 | {{{ |
| 199 | [groups] |
| 200 | team1 = a, b, c |
| 201 | team2 = d, e, f |
| 202 | team3 = g, h, i |
| 203 | departmentA = team1, team2 |
| 204 | }}} |
| 205 | |
| 206 | パーミッショングループも同様にサポートされていません。下記のことができません: |
| 207 | {{{ |
| 208 | [groups] |
| 209 | permission_level_1 = WIKI_VIEW, TICKET_VIEW |
| 210 | permission_level_2 = permission_level_1, WIKI_MODIFY, TICKET_MODIFY |
| 211 | [*] |
| 212 | @team1 = permission_level_1 |
| 213 | @team2 = permission_level_2 |
| 214 | @team3 = permission_level_2, TICKET_CREATE |
| 215 | }}} |
| 216 | |
| 217 | === !AuthzSourcePolicy (mod_authz_svn のようなパーミッションポリシー) === #AuthzSourcePolicy |
| 218 | |
| 219 | この文書が書かれている時点では、 Trac 0.11 以前にリポジトリへの厳密なアクセス制御に使用されていた、古い「粒度が細かいパーミッション」システムは、パーミッションポリシーのコンポーネントにコンバートされました。しかし、ユーザの視点では、実現できる機能に大きな違いはありません。 |