セキュリティリスクと開発者
世の中には職場からの Web 閲覧を禁止すると言った、セキュリティポリシーを実施しているところもあります。昨今の世の事情を見ていると、それもやむなし、と思える面も確かにあるのですが、開発者に限ってはそれを当てはめてはいけない、と考えています。
そもそも、何故このようなセキュリティポリシーが適用されているかと言うと、ウイルス等に感染し、または故意に、社内の情報を漏らしたりする際に Web を経由することが多いことが第一の理由だと思います。USB メモリも動揺で、これらは社員にとって丁度良いレベルで防ぐことが出来ない、または防ぎ方を検討するコストを考えすぎてしまっているというところがあるかと思います。
企業としてはセキュリティ事故は、どうしても完全に防ぎたいと考えるものです。ですが最近記事として扱われた事件の中でも、紙に書き写して流出させた、といった例もあるように、IT 機材に関連する部分だけをどうこうして対応できるものではありません。本来であれば、最も対応しなくてはならないのはそのような個所ではなく、社員一人一人の意識を改革させるための教育なのです。そしてこれが物凄く時間もコストもかかり、なおかつうまく行くとも限らないために、USB を利用不可にしたり Web を閲覧不可にしたりという、行動を制限する方法を採用しているのでしょう。
作業内容上、いたしかたない面も確かにあります。特に機密性の高い情報を扱う場面では、ミスを許してはいけないこともあり厳しい環境にせざるを得ません。
しかし、開発者においてはその制限を行ってはいけない、と私は考えています。その理由は単純で、今の開発事情として Web で調査を行えないことは、安全性のメリットよりも非効率さのデメリットが際立ってしまうからです。
昔の開発であれば、元々 Web で調査するという事がなかったこともあり、リファレンスマニュアル片手に調べていけば対応は殆ど行えていました。ですが、今はもう一人の記憶に開発に必要な知識を収めておくことは、ほぼほぼ不可能です。数多くのクラス群、数多くのメソッドやプロパティといったところだけであっても全てを押えることは不可能で、おぼろげな記憶を元に Web で検索することでようやく実装を思い出すことも多々あるのではないでしょうか。
実際私もこのような環境に投入されたことがあるのですが、ソースコードを書くあたりでは非常に苦労していた記憶があります。確かこのような書き方だったか、とそういう機能があることは覚えているのですが、細かい書き方や呼び出し方をあまり覚えていない部分が思いのほかあったのです。特に普段あまり利用する事のなかったクラスやメソッド、こういうものは大抵利用する機会が望まない場面で発生するのですが、ほぼほぼクラス名もメソッドも名もうろ覚えで、調べることが出来ないと正解に辿り着くことは非常に時間がかかりました。
私の例はさておき、Web を使わないでソースコードを書こうとすると、似たような状況に陥る人は多いのではないかと思います。
このような実体験もありますので、セキュリティという理由は理解できますが、開発者に Web を与えないのは開発業務としての視点で見ると、かなりのマイナス要因だと思えてしまいます。同じ作業を同じ人が行うにしても、下手をすれば倍以上の時間が消費されなおかつ品質は満たせていないことも、十分にあり得るのです。
最初に書いたように、本当であれば IT でどうにかするだけではなく、関連する人全てに適した意識改革を行っていくのが、セキュリティリスクへの最も正しい対応だと思います。しかし、セキュリティリスクが話題になってからかなりの年月が過ぎていますが、そこに対しての指針はいまだにありません。これはどのようなセキュリティの研究者であろうとも出せていない、もしかすると出せない答えなのかも知れません。
そうなるとどのような対応が行われていればよいか、となるのですが今の時点では個人個人に期待する以外の方法はないと思って良いでしょう。どのようなシステム的対応を行ったとしても、何かしらの抜け道は存在します。全ての手段を防ぐことは不可能ではありませんが、あまりにもコストや時間がかかりすぎるのが難点です。
今出来ることとすれば、それを行うとどのような不利益を被るのか、どのような罰が与えられるのか、という点をわかりやすく理解させ、言い方が微妙ですが流出などを行うことに躊躇を感じさせる事が考えられます。単純な善悪で説いたとしても、それが悪であるのは殆どの人が理解できている事ですからあまり意味はなく、もう少し身の丈に近い自分にふりかかるデメリットを実感させることこそが、今出来る最善の方法なのかな、と私は考えます。
このようにセキュリティリスクを持ち出すと途端に難しくなる話題なのですが、本来の開発業務を効率よく遂行するためにも、開発者に Web は必要です。厳しいルールで制限され効率を下げざるを得ない状況をただ受け入れるか、またはルールを緩和しても大丈夫と思わせるか、私たち開発者には選択できる道があるかと思います。望ましいのは、許可しても大丈夫、と思われることですので、常日頃からそのように見られるよう注意していきたいものです。そうすることで、開発の効率は間違いなくあげられるでしょうし、何よりも、調べ物ができないという苦痛を味わう必要はなくなるのですから。
コメント
atlan
ヘルプ見ようとしてもオンラインヘルプしか無かったりしますからねぇ
ksiroi
少々突っ込みたいのですけれども、外部との接続如何の決定には
「内部からの漏洩を防ぐ」
と言う理由のほかにも
「外部からの攻撃を防ぐ」
という目的もありますね。物理的に接続しなきゃ攻撃されることもないですから。
(物理的に接続&攻撃されたら脆いという弱点もあるが)
適切なコントロールが出来る現場であればよいのですが、組織が小規模or若い状態であったり
あまりにも大規模すぎる場合は対処が非常に難しく、コストがかさむことに。
性善説、性悪説だけでなくコスト面から不可能という現場もあることを知って欲しいかも。
調べないと開発が出来ない、というのであれば「調べなくても作れる人材を雇うべき」と言う意見のほうが僕は建設的だと思います。
Ahf
atlanさん、ksiroiさんコメントありがとうございます。
>ヘルプ見ようとしてもオンラインヘルプしか無かったりしますからねぇ
そうなんですよね・・・今のソフトは機能も多くなったためか、オンラインヘルプが多くローカルインストールは少数派になってきましたよね。なので、こういった環境に行くと、非常にいかんともしがたく・・・
>性善説、性悪説だけでなくコスト面から不可能という現場もあることを知って欲しいかも。
コスト面から、という視点もあるのは承知しています。
ただそれでも、生産性を下げるデメリットをとってほしくはない、というのが私の考え方です。
>調べないと開発が出来ない、というのであれば「調べなくても作れる人材を雇うべき」と言う意見のほうが僕は建設的だと思います。
この考え方、わかるのですが現実問題非常に難しいところだと感じています。
理想としては全くこの通りで、こういったスキル所有者に参画してもらえれば、殆ど解決してしまうのですが、それこそコストだなんだといった違う面の問題も絡みなかなかうまく行っている話は、残念ながら聞いたことがありません。
現場側としてはそのようなスキル所有者には、心底来てもらいたいと思っているのですが、なかなかこの希望は叶う事が難しいですよね・・・。