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] を編集する |
| 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] を参照してください。 || |
81 | | パーミッションは以下の通りとなります: |
82 | | - WikiStart の全てのバージョンは、 (匿名ユーザも含む) 全員が閲覧できます。 |
83 | | - !PrivatePage は john が表示可能です。 |
84 | | - 他のページは john と jack が表示可能です。 |
85 | | |
86 | | |
87 | | === !AuthzSourcePolicy (mod_authz_svn ライクなパーミッションポリシー) === #AuthzSourcePolicy |
| 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 |