権限周りの制御について

お世話になっております。

 

参考程度に教えて頂きたいのですが、下記のような要件がある場合に皆様はどのように対応されてますか?

 

本社

└各支店

 

みたいな組織構造で、支店担当者には自支店のレコードしか表示したくない。というような要件がある場合にどのように対応されていますか?

方法としては下記があるのかなぁっと思ってますが、他にもあれば教えて頂きたいです。また皆様が対応するにあたってなぜその対応方法を取ったのかも併せて書いて頂けると設計する上で検討しやすいです。

 

  1. 組織階層に本社-支店のように子組織として作成し、各支店に紐付く担当者を作成する。アプリ内で、組織選択フィールドを設けてそれでログインユーザのレコード権限を制御する。

 

2. 組織階層に本社-支店のように子組織として作成し、各支店に紐付く担当者を作成する。カスタマイズビューを用意し、ログインユーザと組織の紐付を参照し、APIを用いてレコード情報の取得をする際の条件に付け加えてレコードの表示を制御する。

 

思いつくのが、カスタマイズするか標準機能で行うかの2択ですが、他にもあれば教えてください。宜しくお願い致します。

鈴木さん

サイボウズスタートアップス武井です。

 

標準機能かカスタマイズ以外の手法というのは思い浮かびませんが、

担当したお客様で、組織でのレコード制御と、カスタマイズでのレコード制御を併用されているパターンはありました。

 

使い分けとしては、

 

レコードは見せたくないし、閲覧権限もなくてよい→標準機能

レコードは見せたくないが、そのアプリのレコード情報は取得できなければならない→カスタマイズ

その他、カスタマイズでそのアプリに対して、自支店以外のレコード追加等の処理が行われる等→カスタマイズ

 

といったように、完全にそのアプリが他アプリからの閲覧権限を要さない場合にのみ標準機能が使用されている感じでしたので、

システム全体の構成を考慮して選択された方がよろしいかもしれません。

 

ご参考まで。

武井様

 

ご回答ありがとうございます。

参考にさせて頂きます。

 

引き続き他の方にも伺いたいです!

 

鈴木さん

データアクセス権限に関して、JavaScriptカスタマイズでしくみを構築した場合、
クライアント側で動作しソースが丸見えだという点でどうしてもセキュリティリスクを抱えていることになります。
ある程度の知識があれば、APIでレコード取得する条件を直接いじると何でも見えてしまいます。

絶対に他支店のレコードを見せてはいけない場合は、標準機能でのアクセス権限付加になると思います。
ゆるい制約でも構わない時は、JavaScriptカスタマイズ。カスタマイズでも外部サーバーを使って、サーバー側でアクセス制御まで行えば、リスクは軽減できると思いますが大掛かりです。

現状は、標準機能でアクセス権限を付加するの設定が面倒で運用で使いにくいし、JavaScript では組織情報を使えないしと、どちらもいまいちです。
何を優先するかで、アクセス権限の方式を選択することになります。

 

rex様

 

ご回答ありがとうございます!

確かにユーザーにITリテラシーが高い方が居られる場合には、セキュリティリスクは大きくなってしまいますね。

ユーザーとどのような握りにするのか、契約含めてこのあたりも明記した方が良さそうですね。

 

参考にさせて頂きます。

>JavaScript では組織情報を使えない

というのは上記で仰って頂いている通り、ソースが見えてしまうから。という事でしょうか?

 

他の方にも、色々お伺いさせて頂きたいので

引き続き、回答ありましたらコメント頂ければ幸いです。m(__)m

鈴木さん

>JavaScript では組織情報を使えない

これは、組織情報を取得するAPI が無いということで、そのままの意味です。
ユーザー情報の取得APIでは、応答内容に組織情報がありませんし、組織情報そのものを取得するAPIもありません。

JavaScript で組織情報を扱うには、独自に組織情報・ユーザアプリを作って運用するとかになると思います。

 

rex様

 

ご回答ありがとうございます。

私は組織情報取る場合などは、ユーザーの所属組織エクスポートAPI などを利用してましたが、
これでは足りてない感じだったという事でしょうか?

 

確かにアプリを作って運用という方法もありますね。

参考にさせて頂きます。

鈴木さん

アプリの運用時には使えないと思います。

アクセス権
cybozu.com システム管理権限が必要です。

rex様

 

確かに、ユーザーの所属組織エクスポート API(CSV)を利用する場合には、

システム管理権限が必要な記述がありますが、

 

ユーザーの所属組織エクスポート API(JSON)を利用する場合であれば、

アクセス権は全ユーザーでアクセス可能です。との記載になっていますので、問題ない気がします。

 

上記、検証致します。

ご回答ありがとうございます!

 

鈴木さん

これは、気が付きませんでした。
組織関連は、全部システム管理権限が必要だと思い込んでいました。

教えていただきありがとうございます。

rex様

 

検証した所、やはり問題なく組織情報の取得が出来ましたので、

この場でご報告致します。

 

こちらも勉強になりました、ありがとうございます!

 

引き続き、他の方法で権限管理しているなど

ありましたら回答頂ければ幸いです。

宜しくお願い致します。

鈴木様

 

少し条件は違うかも知れませんが、私も似たようなことで頭を悩ませているところです。

レコード閲覧・編集権限の標準設定で、 and or の組合せ条件が作れればいいのですが、それができないことでいろいろカスタマイズする必要に迫られています。

私の場合は、組織フィールドをデータとして持たせ、組織ごとに閲覧できるデータを決めているのですが、役職によって編集権限を与えたり、与えなかったりという制御(当該フィールドをdisabledにしたりしなかったり)を考えています。

レコードの絞り込み、あるいはレコードの権限設定で and or の混在ができるようになると嬉しいのですが。

何かいいアイデアがあれば、私も伺いたいです。

itoh様

 

はじめまして!

鈴木です。

 

中々に権限周りは悩ましい問題多いですよね。笑

レコードのアクセス権という観点だけであれば、itoh様の認識通り、設定と組織フィールドの組み合わせで大体出来ると思います。(役職含む)

ただし、and or の混在条件でレコードを参照したい場合には、

カスタマイズビューなどでカスタマイズ含めて頑張るくらいしか私には思いつきませんでした。

その場合には、kintone.getLoginUser()[‘code’]からどの組織のユーザーなのかをapiで取得し、制御するので

中々面倒な気がします。

 

自分であれば、システム的な仕様として複合条件は使えないと業務側に説明し、納得してもらうと思います。笑