セキュリティと生産性についての話
# 概要
# きっかけ
受けてる案件の一つに、情報セキュリティがガチガチの環境で開発をしなければならず、いろいろと思うところがあったので少し考察。
# 前置き
私自身インフラエンジニアでもあるため、情報セキュリティ対策についての重要度は十分理解しており、セキュリティと生産性は反比例するものということは多少致し方ないとも思っている。
その為、何がいいか悪いかではなく、どういう形が最善なのかという案を考える。
# 環境と課題
# 開発端末
- 顧客から貸出し頂いたのノート PC から、リモートで顧客先に置いているデスクトップ端末に接続する形で作業する。いわゆる VDN 形式。
- OS は 両方とも windows10、ユーザは AD 認証管理下。両方の端末にアンチウイルスソフトなどのセキュリティ対策ソフトが常駐。
- リモート端末に接続する際は VPN クライアントソフトの使用が必要。
- 外に出るネットワークはフォワードプロキシで制限されており、一部接続不可なものが存在。
# 体制
- 開発担当(私)は顧客の開発チームのプロパの方とのやり取りが基本。
- 顧客の情報システム部が各種環境を管理をしているが、実際はそこから委託しているシステムベンダーが管理している。
# 開発時に起こっている問題
- リモートに接続するノート PC のスペックが低すぎる、かつセキュリティソフトや VPN クライアント、その他謎の常駐ソフトなどが可動しており、かつ VPN 経由での接続である為、リモートデスクトップ接続が基本遅い、フリーズする、たまに切断される
- リモート接続先のデスクトップ端末で開発をしているが、開発系のソフトがアンチウイルスに遮断されたり、ネットワーク接続制限があったりするため、何かやろうとすると頻繁にエラーが起きる
- そもそも windows 端末であるためクライアントの bash がネイティブの bash に比べると不完全だったり、docker for windows が元々遅い為いろいろやりづらい
- 開発時に何か弊害が起きた時は、開発担当 → 開発チームプロパの方 → 情シスの方 → 委託されているシステムベンダーの確認フローが必要になり、内容が不十分に伝わったりリードタイムがあったりして問題解決にかける時間が異常にかかる
- セキュリティ関連のイベントに巻き込まれ時間が取られる。例えばセキュリティ資料のようなものに環境情報の記載などを定期的にやらなければならなかったり、社内インフラメンテナンスの影響でトラブルが発生したりなど。
# 改善
# 状況分析
現状の環境、体制から考えるに、企業の大方針として、情報セキュリティに関するリスクはとことん排除したいという強い意思が感じられる。それ自体は企業としては当たり前の考えだし、私ももちろん賛同する。 (因みに顧客企業は大手企業)
ただし、現場の意見が全く通らないところを見る限り、大方針を崩さないことに執着しすぎて、ルールや体制をより良くしていこうとする柔軟な思考ができていないと私は考えている。
例えば、全社員及び全協力会社メンバーに対し同様のセキュリティ対策をしているようだが、ここは階層化するべきだと思う。IT 専門の部署ではない人は当然 IT リテラシーが高くないため相応のセキュリティ対策を設定する必要があるが、開発チームなど IT リテラシーが高い人は少しセキュリティ設定を緩和すればいいかと思う。 我々エンジニアからするとやろうと思えばセキュリティ対策による制限を突破することはできるし、業務に強く影響することを考えるとなおさらそう思える。
とはいえ、情報システム部の方々の心境もわからなくはない。余計な仕事は増やしたくないと思うし、他部署の生産性が上がったとしても自部署にリスクが生まれるような改善ならやりたくないはず。サラリーマンである以上そういう保身的な思考になるのは仕方ない。
# 改善案
状況分析の内容から、開発チームだけセキュリティを緩和する、ということは実質不可能と思える。 ただ、責任の所在を一部開発会社側に移すことで、状況を少し改善することは可能とは思う。
例えば、ソースやドキュメントの管理責任を、業務に必要なもののみ開発会社側に移せば、顧客の指定された環境で開発する必要はなくなる。 当然リスクを負う為その分追加で開発会社側に費用は払わなければならなくなるかと思うが、生産性が低下して余分な工数が大量発生している分の金額に比べると大したコストにならない。
何かあった際は開発会社側へ責任追求をすればいいし、顧客側の心情として、共通の敵として開発会社を叩ける為、顧客側の内部で開発チームや情シスが叩かれる度合いも格段に減る。
当然ながら管理責任を負う会社側も、企業機密情報や個人情報など、漏れたらまずいようなものは預からないようにすればいいし、開発フェーズだと漏れたらクリティカルになる情報はそこまで多くない。※開発の内容によりけりだが今回やっている開発ではそういうのは無い、ということ。
なお、顧客の開発チーム管理者に ↑ 言ったが却下された\(^o^)/
# その他思ったことやまとめ
# 所感
企業のポリシーや考え方に対し外部の人間がどうこう言うことは筋違いだとは思うので、特に私が物申すことはない。
この環境だといいエンジニアが来てくれない → いいものが作れない → 利益が出ないって感じになっても、それよりも情報セキュリティが重要、と思っててもそれは企業の考え方の一つなのでそういう考えも否定しない。
ただ私の考え方と合わないってだけの話。
# まとめ
情報セキュリティ対策を高いレベルで保ちつつ生産性を落とさないのは不可能(最初から分かってたけど)