こんにちは、システム統括部の駒田です。
昨今、内部統制やJ-SOXといった言葉を良く耳にしますが、 ヤフーもご他聞に漏れず、粛々と対応を進めて参りました。
今回は、その対応の一環として行った、 「開発と運用の分離」に関してのエントリーをさせていただきます。
例えばですが...
開発成果物であるソースコードをテスト終了後に改ざんし、
不正に利益を得る様なエンジニアが存在していた場合、
それはヤフーにとって、一般のお客様に対する裏切りであり、
信用の失墜となってしまいます。
このような事態を回避するため、 当開発部では開発者と運用者とを明確に分離し、
- 開発者はリリースモジュールに触れる事が出来ない。
- 運用者はソースコードに触れる事が出来ない。
というシステムを確立する事にいたしました。
そこで、リリースフローを見直し、 ソース管理からリリースモジュールの作成までを自動化させる事により、 人為的操作の介在を許さないリリースフローの構築を目指したのです。
(本当に)簡単ではありますが、 概要としては以下のような構図となっております。
各開発チームは開発側CVS上で開発を行い、 リリース時に、リリース対象(修正対象ソース)を記述した リリース依頼票を管理サーバーの所定ディレクトリへ配置します。 サーバー上ではcron登録されたプログラムが定期的に起動し、 リリース依頼票を元にリリースモジュールの作成処理を行っていきます。
この際に重要な事が、 各ディレクトリに対して、適切なアクセス制限を設定する事です。 具体的には、リリース依頼票配置ディレクトリ以外は書込み権限がなく、 最終的にリリースモジュールが作成されるディレクトリに関しては、 開発チームが参照できるディレクトリと、 運用チームが参照できるディレクトリに分離され、 これにより「開発と運用の分離」を実現させております。
また、内部統制対応は総じて工数の増加を伴いますが、 自動化により素早い対応とリリース関連作業の工数削減を図る事が可能です。 J-SOXを改善のネタとして取組み、即効性の高い効率化を図る事が出来た良い一例であったと思います。
こちらの記事のご感想を聞かせください。
- 学びがある
- わかりやすい
- 新しい視点
ご感想ありがとうございました