開発者のためのあんしん・あんぜんなソフトウェア開発の取り組み

プロアクティブであれ!

一般に、当社のサービスのような情報システムにおいて、お客様をはじめとしたユーザのみなさまのあんぜんを脅かすシステム上の欠陥や仕様上の問題点を脆弱性といいます。楽天では、脆弱性のないシステムを作るために、これからご説明するようないくつもの取り組みを行っています。そのなかでも楽天が最も大切と考えているのは、当社の開発者に対しての教育です。

楽天では1000名を越える開発者が、日々新しいサービスを開発しています。そのすべての開発者がセキュリティに関する十分な知識を身につけ、高いプロ意識を持って開発できるよう、定期的な教育や試験を行っています。

検査であとから脆弱性を見つけて修正すればよいというのではなく、開発者が最初から脆弱性のないあんぜんなシステムを作る、これが楽天のあんしん・あんぜんなサービスづくりの考え方の基礎となっています。

開発プロセス

楽天では以下のようなプロセスを経て、サービスのリリースを行っています。

楽天の開発プロセス:教育⇒要件⇒設計⇒開発⇒QA⇒監査

教育

楽天では、上記の理由によりセキュリティ教育に力を入れています。

まず丸一日、セキュリティ専門家により行われるセミナーを受けなくてはなりません。セミナーは原則本社で行われますが、本社に来られない場合は、動画での受講となっています。セミナーの後、試験が行われます。楽天のすべてのプログラマは、このセキュリティ教育で実施される試験に合格しないと一人前と認められません。また、一度合格すれば良いというわけではなく、一年に一度、再度試験を受講する必要があり、プログラマのセキュリティスキル維持を目標としています。

セキュリティRFP・チェックリスト

RFP・チェックリスト

楽天は基本的に内製で開発を行っていますが、一部のサービスは外注を行っています。外注先のセキュリティレベルの一定化を図るため、セキュリティRFP・チェックリストを提供しています。これにより、納品後のセキュリティ監査で指摘される項目が少なくなります。また、契約前にシステム仕様について検討を行うことができるため、セキュリティレビューとしても効果が期待できます。

セキュリティレビュー

実際のサービスが企画されると、必要に応じてデータの取り扱いや具体的なプログラム手法について、セキュリティレビューを行います。

上流工程でセキュリティ的な視点からレビューを行い、問題になりそうな部分やリスクに成り得る部分を事前に洗い出し、よりあんぜんな開発をおこなえるようにすることが目的です。

ツールによる脆弱性検査

コーディングが終了し、実際のサービスリリース前に品質確認の作業が行われます。こちらでは一般的なプログラムや画面上のバグを発見するための作業となりますが、それにあわせて、ツールによるクロスサイトスクリプティングやクロスサイトリクエストフォージュリなどの脆弱性検査を行っています。

セキュリティ監査

楽天では、すべてのサービスリリースの前に、かならずセキュリティ監査を実施しなくてはなりません。監査については社内規則で定められており、監査で脆弱性が発見された場合はリリースができないこととなっています。監査は当社内で、監査を専門におこなっているスペシャリストによって実施される場合と、一部セキュリティ専門会社による監査を実施しています。