セキュリティエンジニアの概要とセキュアプログラミングの基本、学習方法を解説セキュリティエンジニアに求められる重要スキル「セキュアプログラミング」とは

最終更新日:2020年8月7日

レバテックキャリアは
ITエンジニア・Webクリエイター専門の転職エージェントです

セキュリティエンジニアは、情報セキュリティインシデントやサイバー攻撃などから情報資産を守る職種です。そのため、一般的なIT関連のスキル・知識に加えて、情報セキュリティの高いスキルを習得している必要があります。特に、プログラミングの分野では昨今注目を集める「セキュアプログラミング」のスキルが重視されています。この記事では、セキュリティエンジニアの仕事内容や、セキュアプログラミングの具体的な内容を解説します。

1. セキュリティエンジニアの仕事内容

はじめに、セキュリティエンジニアの仕事内容について解説します。セキュリティエンジニアの仕事は主に「コンサルティングルールやポリシーの策定など)」と「技術(セキュリティチェックやコーディングなど)」の2つに分類されます。それぞれの仕事内容は以下のとおりです。

コンサルティングに関する業務

・セキュリティポリシーおよびセキュリティガイドラインの策定
・セキュリティ監査
・ISMS認証取得支援
・既存システムのリスク評価、およびセキュリティ対策の立案

 
コンサルティングの仕事では、顧客企業に対してヒアリングを実施し、個人情報や機密情報の漏えいを防ぐための体制・ルール作りを支援します。具体的には、情報セキュリティに関する基本方針を定めたり、セキュリティリスクを洗い出したりしながら、情報セキュリティポリシーを策定します。策定した情報セキュリティポリシーは従業員のセキュリティに対する行動指針となるほか、ISMS(情報セキュリティマネジメントシステム)のベースにもなります。

技術に関する業務

・セキュリティアーキテクチャ策定
・システム、アプリケーションに対するセキュリティ対策の設計、実装
・実装後の脆弱性診断(ソースコードチェック、疑似攻撃での再現テストなど)


技術面では、システム・アプリケーションが業務で求められる処理能力や機能を維持しつつ、セキュリティ強度を高められるよう支援します。具体的には、情報セキュリティを考慮した適用技術(言語やミドルウェア、セキュリティソフトなど)の選択、処理方式の定義、設計、実装(コーディング)、テストまでを担当します。

2. セキュリティエンジニアの重要スキル「セキュアプログラミング」とは

次に、セキュアプログラミングについて解説します。セキュアプログラミングは、前述した仕事内容のうち、セキュリティ対策の実装、ソースコードチェック、再現テストなどで特に重視されます。
 
セキュアプログラミングは、システムやアプリケーションの脆弱性を事前に廃除し、情報漏洩や乗っ取り、予期しないシステムダウンなどを防ぐためのプログラミング手法です。
 
例えば、メジャーなサイバー攻撃手法である「SQLインジェクション(アプリケーションを通じてDBを操作する攻撃)」や「バッファオーバーフロー(大量データ送信によるメモリへの攻撃)」では、外部からデータを使った攻撃を仕掛け、システム・アプリケーションの異常な挙動を誘発します。
 
このとき、あらかじめシステム・アプリケーション側が対策を講じておけば、被害を最小限に食い止められるでしょう。ただし、どのような実装・設計がセキュリティ強度を高めるかはケースバイケースになるため、設計・実装に対する基本概念を学んでおくことが重要です。

セキュアプログラミング標準"CERT Top 10 Secure Coding Practices"について

ここでは、セキュアプログラミングについての基本概念を紹介しておきます。
以下は、CERTが公開しているセキュアプログラミング標準のトップ10(※)です。CERTとは、1988年に米カーネギーメロン大学が設置したソフトウェアセキュリティの草分け的な団体で、グローバルで信頼されている組織です。

セキュアプログラミング標準のトップ10

1. 入力を検証する
2. コンパイラの警告を注視する
3. セキュリティポリシーの構成/設計
4. 簡易にする
5. デフォルトで拒否する
6. 最小権限の原則を支持する
7. 他のシステムに送信するデータを無害化する
8. 多層防御を実践する
9. 効果的な品質保証テクニックを利用する
10. セキュアコーディング標準を採用する

 
※参考:カーネギーメロン大学「CERT Top 10 Secure Coding Practices」
 
また、実際の業務では、次のような事柄に注意してコーディングを行うべきであると提言しています。
 
・データソースのホワイトリスト作成
・ホワイトリストを使用した入力処理と検証
・ガイドラインに沿ったロジック処理(認証、認可、セッション管理、ログ、エラー処理などでモジュールや関数の境界を防御)
・安全なAPIとホワイトリストを使用した出力処理、異常出力の防止

 
このようにセキュアプログラミングの基礎は、「信頼性の高いデータソースのみを使用し、処理の間に複数の防御壁を設け、異常出力を防止すること」と言えます。

3.セキュアプログラミングの学習方法

最後に、セキュアプログラミングの学習方法について紹介します。セキュアプログラミングは、オンライン学習・書籍による独学・資格取得の3つの方法で身につけるのがおすすめです。

オンライン講座

IPA セキュアプログラミング講座
独立行政法人 情報処理推進機構(IPA)がオンライン上で公開しているセキュアプログラミング講座です。テキストと図をベースにしながら、セキュアプログラミングの基礎を解説しています。「暴露対策」「セッション対策」「入力・注力対策」など、サイバー攻撃で発生しうるシステム・アプリケーションの誤作動について、対策を解説していることが特徴です。セキュアプログラミングの基礎を実戦的に独学できる教材といえるでしょう。

資格取得

情報処理完全確保支援士試験
通称「セキスペ」と呼ばれる資格です。コンサルティング・技術の両面から有効な対策を助言・提案し、経営層を支援するセキュリティコンサルタントを目指すための登竜門といえます。将来的にコンサルタントを目指すなら、取得しておくべき資格です。合格率は15%~20%程度と高難易度試験です。

書籍による独学

『C/C++セキュアプログラミングクックブック』(ジョン ビエガ、マット メシエ著、オライリージャパン)
代表的なコンパイラ言語であるC/C++を使用して、セキュアなプログラム開発とは何かを学べる書籍です。入出力の検証やアクセス制御など、実践的なノウハウが実際のコードと共に紹介されています。全3巻で構成され、VOLUME1は基礎知識、VOLUME2と3はかぎ暗号技術に関する解説が主体です。かぎ暗号技術は難易度が高いため、まずはVOLUME1から読み解いてみましょう。
 
『サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考』(Justin Seitz著、オライリージャパン)
AIや機械学習の台頭とともに人気言語となったPythonに関するセキュアプログラミングを学べる書籍です。ユニークな攻撃手法をもとに、実践的な防御対策が紹介されています。もともとPython自体がセキュアプログラミングに適した言語であることから、セキュリティエンジニアを目指すのであれば読んでおきたい一冊です。

4.まとめ

この記事では、セキュリティエンジニアの仕事内容と、コアスキルのひとつであるセキュアプログラミングについて解説してきました。情報の資産価値が高まるにつれ、セキュリティエンジニアの需要拡大が予想されています。しかし、セキュリティエンジニアに求められるスキル・能力は難易度が高く、自己研鑽が必要になることは間違いありません。まずは資格取得や書籍によって情報セキュリティの基礎やセキュアプログラミングを学びつつ、計画的なキャリアプランを設計しましょう。

ITエンジニア・Webクリエイターの転職ならレバテックキャリア

レバテックキャリアはIT・Web業界のエンジニア・クリエイターを専門とする転職エージェントです。最新の技術情報や業界動向に精通したキャリアアドバイザーが、年収・技術志向・今後のキャリアパス・ワークライフバランスなど、一人ひとりの希望に寄り添いながら転職活動をサポートします。一般公開されていない大手企業や優良企業の非公開求人も多数保有していますので、まずは一度カウンセリングにお越しください。

転職支援サービスに申し込む

また、「初めての転職で、何から始めていいかわからない」「まだ転職するかどうか迷っている」など、転職活動に何らかの不安を抱えている方には、無料の個別相談会も実施しています。キャリアアドバイザーが一対一で、これからのあなたのキャリアを一緒に考えます。お気軽にご相談ください。

「個別相談会」に申し込む

プロのアドバイザーがあなたのお悩みや疑問にお答えします

- 転職個別相談会開催中 -

相談内容を選択してください

※転職活動や求人への応募を強制することはありません

内定率が高い

関連する記事

人気の記事

スキルアップ記事トップへ

セキュリティエンジニアの求人・転職一覧