アーカイブ
Tyzohブログ - ikarashiさんのエントリ
 ikarashiさんのエントリ配信

2007/07/06
[Secure-SBM:020] ロール処理

執筆者: ikarashi (11:28 pm)
こんにちは,五十嵐です.金曜日ですが,Secure-SBM の開発日記.毎週恒例の TGIF はお休みです.

Secure-SBM という名前の割には,今までロール(グループ)に関しては触れてきませんでした.今回はロールの処理を追加します.

表示の際には必ず _makeOneBookmarkEntry() を呼び出します.この処理に _checkRole() 関数呼び出しを追加して,参照できるブックマークかどうかを確認します.
lib/SecureSBM/Controller/Personal.pm (_makeOneBookmarkEntry 関数):
    unless( _checkRole( $c, $bookmark_id ) ){
        return undef;
    }

(_checkRole 関数):
sub _checkRole : Private {
    my ( $c, $bookmark_id ) = @_; 
    my $udb = $c->stash->{user};

    if( my $bdb = $c->model('SecureSBMDB::Bookmark')->
        find( {bookmark_id => $bookmark_id} )
    ){  
        foreach my $brole ($bdb->roles->all){
            foreach my $urole ($udb->roles->all){
                if( $brole->role_id == $urole->role_id ){
                    return 1;
                }   
            }
        }
    }
    return 0;
}

(Version 0.3 では使用していません)

ここまでは表示の話ですので,登録されたロールの比較だけで簡単に表示の有無が決まります.ブックマークをどのロールに登録するのかという点は,誰がそれを設定するのかという点も含めて考える必要があります.

  • ブックマークの初期登録時には,public のみが紐づけられる.

  • ロールの登録と削除は管理者(admin)のみが行える.
    • ユーザの所属するロール

  • ユーザ自らが所有するブックマークに対するロールへの処理は,ユーザが所属するロールに限られる.

この程度は基本項目として決められます.問題になるのは,ブックマークを複数のユーザが共有している場合に,公開すべきロールを誰がきめるかということになります.ファイルの登録とは異なり,ブックマークのオーナーという概念はなじみません.一般公開されているものはブックマークそのものを隠しても意味がありません.ロールが意味を持つのは,他人のブックマークの一覧を見る場合に限られます.他人のブックマークを見る方法はふたつあります.public に登録されているブックマークを非ユーザに公開する場合と,他のユーザのブックマークを参照する場合です.今回のバージョンでは全体の検索は提供しませんが,いずれその機能を提供する場合にはロールが意味を持ってきます.非ユーザが参照できるのは public ロールに登録されたブックマークのみです.

ブックマークを公開するように設定できるのはだれか,ということですが,誰か一人でも public に設定すると公開できる方法と,オーナの全てが public にしないと公開されないという方法が考えられます.public 情報を共有するという考え方からみると,ブックマークを登録するたびにひとつひとつをわざわざ公開設定するのは煩わしいです.登録時に簡単に選択できるようにチェックボックスを用意しておくのが良いと思われます.もう少し厳密には,何かしらのロール(public以外)に属するブックマークは public には属さないということになります.

ここで,「ソーシャル」の部分に目を向けると,他人のブックマークが見れることが大切で,「セキュア」とのトレードオフを考えなければなりません.結論としては,誰か一人が public に設定してあれば,全体としてはブックマークは公開されます.ただし,public に設定していないユーザがその URL をブックマークしていることは秘匿するようにします.

最後に,ロール R1 に所属するユーザ U1 がブックマーク B1 をロール R1 に紐付けたとき,ロール R1 とロール R2 に所属するユーザ U2 がブックマーク B1 をロール R2 に紐付けることを妨げることはできません.そのため,隠れチャネルを完全に避けることは困難です.これについては今後の課題です.

2007/04/05 記

参考:

Keyword: Perl Catalyst Secure-SBM SSBM セキュア・ソーシャル・ブックマーク
ikarashiさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (3016)
Trackback is not accepted now.
印刷用ページ 友達に送る
 
投稿された内容の著作権はコメントの投稿者に帰属します。
サイト内検索
ブログ カレンダー
«  «  2008 3月  »  »
24 25 26 27 28 29 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5