アトラシアンの脆弱性管理方法
アトラシアンでのセキュリティの脆弱性の取り扱いに対する当社のアプローチ
ソフトウェア開発工程において、セキュリティの脆弱性はある程度避けられない課題といえるでしょう。とはいえ、アトラシアンでは、自社製品とサービスに生じうる脆弱性を重大度と頻度の両面から最小限に抑えられるよう、たゆまぬ努力を重ねています。
この目的を果たすため、アトラシアンでは脆弱性管理に自動および手動の両方のプロセスを組み合わせた多面的方法を採用しています。これは、脆弱性が「見過ごされて」発見が遅れるリスクを抑えるために最も効果的な方法であるとアトラシアンは考えます。
このガイドでは、アトラシアンの製品とインフラストラクチャの脆弱性管理の実践方法について概説します。また、最新のツール、手法、思考方法を取り入れながら常に進化することで、これからも継続して効果的に脆弱性に対処する方法についても説明します。
脆弱性の特定と解決プロセスの概要
アトラシアンには、あらゆるタイプの脆弱性を特定、追跡、解決するための系統的プロセスがあります。
継続的なアセット ディスカバリーと帰属
継続的な内部アセット ディスカバリー - アトラシアンは、AWSConfig を使用してすべての EC2 とロード バランサー AWS アセットの棚卸しを行い、それを正しい所有者に帰属させるため、自社構築システムを使用します。当社は 1 年分の資産、合計 5,000 - 6,000 万個の資産を保有しています。
脆弱性の特定
当社では、最高クラスの幅広い脆弱性検出ツールを導入しています。アトラシアン製品・インフラストラクチャに対して定期的に自動スキャンを実行し、脆弱性を検出しています。例として、Atlassian Cloud および Data Center 製品、Docker アプリケーション イメージ、社内/サードパーティのアプリケーションおよびモバイル アプリケーションや、当社のインフラストラクチャ (オンプレミスとクラウドの両方) が挙げられます。これらのツールによって自動でスキャンを行い、存在する脆弱性を特定します。以下にその例をご紹介します。
- ホスト ベースのスキャン – 当社は現在、社外領域の継続的なセキュリティ スキャンの実施には Assetnote を使用し、社内外の継続的なスキャンには Tenable.io を使用しています。アトラシアン環境全体で実行されているオープン ポート、サービス、アプリケーション、およびネットワーク ホストでの脆弱性を特定するために、これらのツールを使用します。
- コンテナ イメージ スキャン – 各種アトラシアン アプリケーションのデプロイには Docker コンテナを使用します。本番環境や本番前環境にデプロイされる際に、コンテナ イメージのセキュリティ スキャンを実施します。これには Snyk と呼ばれるツールを使用します。詳細については、このページの後半で説明します。
- オープン ソースの依存関係スキャン – オープン ソースまたはサードパーティのコードの依存関係に存在する可能性のある脆弱性を特定するには、Snyk を使用します。詳細については、このガイドの後半で説明します。
- AWS 構成モニタリング - アトラシアンは、Lacework を Atlassian AWS Cloud 環境にデプロイして統合することで、AWS 環境に確立されている基準について、継続的な構成モニタリングを実施します。
アトラシアンでは、常に最新の利用可能なツールを検討しており、脆弱性検出能力が強化されると判断した場合は、使用ツール一式に追加します。
また、自動スキャンに多彩な追加手段を組み合わせることで脆弱性を特定します。以下は主な例です。
バグ報奨金プログラム – バグ報奨金プログラムの実行に活用される Bugcrowd は、専門的で信頼性の高いコミュニティへのアクセスを提供します。このコミュニティを構成する多数のサーバー セキュリティ調査員によりアトラシアン製品が継続的にテストされ、脆弱性が発見された際には報告されます。バグ報奨金プログラムは、2018 年と 2019 年、業界随一との評価を受けています。
お客様 & ユーザーレポート – アトラシアン製品のユーザーがバグに遭遇した場合は、アトラシアンサポートを経由していつでもバグを報告できます。アトラシアンは報告ユーザーと協力して、必要となる詳細情報を収集し、脆弱性を内部でフラグし、(脆弱性が本物であり、誤検出でないことを検証したのちに) 修正していきます。バグ報告者にはアトラシアンのスタッフも含まれ、アトラシアン製品内で見つけた (内部または外部的な) 課題を直接セキュリティチームに報告するか、サポートチケットを登録します。
外部ペネトレーションテスト - アトラシアンでは、高リスク製品・インフラストラクチャを対象に、専門的なセキュリティコンサルティング会社によるホワイトボックス型のコード支援ペネトレーションテストを実施しています。詳細は、「社外セキュリティテストに対する当社のアプローチ」をご覧ください。
アトラシアンの製品開発チーム - アトラシアンでは、一部のコードを対象に手動またはツールを使った精査を実施しています。また、製品開発チームと密接に連携して、チームの内部検出能力を高め、コード到達前に脆弱性を解決します。
アトラシアンのレッドチーム – アトラシアンのレッドチームは、アトラシアンのシステム、プロセスや環境内に潜む脆弱性の特定や悪用を試みる敵の役割を模倣し、こうした脆弱性の早期特定・対処に万全を期します。
脆弱性の追跡と解決
当社は社内チケット管理やエスカレーション システムを使用して、発見したすべての脆弱性を追跡し、修正することを目指しています。具体的には、脆弱性の特定経路 (アトラシアンのスキャン ツールまたは前述した他の手段) にかかわらず、脆弱性ごとに専用チケットを作成して、関連する製品チームに割り当てて解決を図ります。各脆弱性に対して、アトラシアンのセキュリティ バグ修正ポリシーで公開している、修正に関するサービス レベル目標 (SLO) を追跡します。
セキュリティ チームはこのプロセスを監督し、製品チームやインフラストラクチャ チームと連携の上、脆弱性の精度を確認し、修正に関する質問に回答します。
脆弱性の修正プログラムが開発されると、徹底的なテストが実施され、クラウド製品の場合はデプロイに向けて CI/CD パイプラインに組み込まれます。Data Center 製品の場合は修正プログラムが新規リリースに組み込まれ、アトラシアンの標準的なリリースのタイミングに合わせて他の修正プログラムと共に定期的にデプロイされます。スキャン ツールによる脆弱性チケットは、後続の再スキャンでその脆弱性が見つからなくなると自動的にクローズされます。手動での発見による脆弱性チケットは、修正が顧客に提供されると、製品、インフラストラクチャ、またはセキュリティ チームのメンバーによってクローズされます。
開発プロセスでの脆弱性の防止
コンテナイメージスキャン
アトラシアンでは、Docker コンテナイメージを使用して、アプリケーションの大半をデプロイしています。Docker コンテナは、当社の製品が個々のマシン構成パラメーターに左右されずに実行できるよう、必要な関連システムのライブラリ、ツール、構成設定その他の属性から成る自己完結型のパッケージ環境を提供しています。このコンテナの抽象化レイヤーによってソフトウェアコードが基盤インフラストラクチャから分離されるため、当社の製品は異なるマシン間で問題なく機能するのです。
コンテナは多様な環境で使用可能なコードのデプロイを可能にするという点で、開発者やお客様に大きなメリットを提供しますが、イメージの内容が古い場合や、安全でないライブラリやコンポーネントから構成される場合は、セキュリティの脆弱性の原因となる可能性があります。
この弱点に対処するため、アトラシアンではイベント駆動型のコンテナ セキュリティ スキャニング プロセスを組み入れており、本番環境にデプロイされるすべてのコンテナを対象に、Micros デプロイ プラットフォームを介して実行されたデプロイを監視します。さらに、開発者は開発環境にデプロイされるすべてのコンテナを対象とするスキャニング プロセスを CI/CD パイプラインに組み入れることができます。そのために使用しているのが、Snyk コンテナ エンジンです。Snyk により、開発者がデプロイするすべてのコンテナ イメージの詳細な検査を実行するための一連のツールが提供されます。こうした検査には、コンテナに含まれる多様なコンポーネントを特定するための詳細な分析が含まれているため、既知の脆弱性があるコンポーネントを判断できます。
オープンソースの依存関係
アトラシアン自体のコードに含まれる脆弱性の検出と修正も重要ですが、アトラシアンの製品とサービスは多くのサードパーティ ライブラリにも依存しています。そのため、使用しているライブラリの内容を把握し、最新のセキュリティ バグ修正で更新されるようにすることも同様に重要です。そのために利用しているのが Snyk と呼ばれるツールです。Snyk は、ソフトウェア ビルドにおける依存関係を特定した上で、こうしたライブラリを既知のセキュリティ脆弱性のデータベースと比較できるスキャナー機能を備えています。
特定された脆弱性は、このページで前述した脆弱性管理プロセスに従って、正式な Jira チケットから関連製品チームに自動的に登録されます。
脆弱性対策のためのその他イニシアチブ
このガイドではこれまで、主にアトラシアンが脆弱性を管理するために「バックエンド」で講じている手段、すなわち、当社の製品またはプラットフォームで特定される脆弱性への対応手順について説明してきました。しかし、アトラシアンはそもそもこうしたことが発生する頻度を下げようと常に努力しています。そのため、当社は「フロントエンド」である開発工程でも独自の対策を採り入れ、当社の製品がセキュリティを念頭に構築されるよう万全を期しています。
製品セキュリティエンジニア
脆弱性管理を語るうえで、製品セキュリティエンジニアがバグの解消や解消手段の改善において果たす重要な役割の説明は不可欠です。
Atlassian の製品セキュリティ エンジニアは、新たに報告された脆弱性について最初の選別を行い、製品エンジニア チームと共同で、課題に対する最適な修正を特定します。当社の製品セキュリティ エンジニアは、アプリケーション セキュリティ分野のエキスパートであり、世界中の拠点に常駐しているため、必要に応じて当社の製品エンジニアと最も効果的な共同作業が可能です。
アトラシアンのセキュリティエンジニアは、担当製品のセキュリティ管理のために先見性と即応性の両方が求められる役割を兼務します。以下に主な例を示します。
- 新たに台頭しつつあるリスクの最新脅威モデルの検討と分析
- 新機能のセキュリティの検討と分析
- 手作業でのコードの見直し
- ペネトレーションテストの実施
- プラットフォームとアーキテクチャの見直し
- プロジェクト関連の主要活動の追跡、および必要に応じてガイダンスを提供
- バグ報奨金プログラムを通じた、報告された問題に対する選別、申請、報償付与、迅速な解決
- 新規自動化プログラムの記述および既存自動化プログラムとツールの保守による、対応範囲と効率性の最大化
セキュリティスコアカード
アトラシアンでは、本ガイドで説明した各システムからの収集データを基に、チームと製品の基準点を相互に定めることによって、改善分野を積極的に特定できます。
概要
アトラシアンでは、製品とプラットフォーム全体にわたる脆弱性管理で多面的アプローチを採用しています。このアプローチでは、自動化スキャン ツール、バグ報奨金プログラム、常時進化しているその他の多様なメカニズムを組み合わせ、早急に脆弱性を特定および解決し、根本的に脆弱性を少なくして、発見頻度が最小化されるように万全の体制を整えています。
詳細情報
詳細情報
このガイド内でも触れたように、さまざまなリソースから脆弱性管理やセキュリティ全般に対するアトラシアンのアプローチについて詳細な情報を得られます。
- Atlassian Trust Center
- アトラシアンのセキュリティ バグ修正ポリシー
- 社外セキュリティテストに対するアプローチ
- 継続的デリバリー
- セキュリティアドバイザリー
- アトラシアンのバグ報奨金プログラム
このページで言及される脆弱性とは、「バグ」と同義ととらえることができます。別ページ「Our Approach to Security Testing (アトラシアンのセキュリティ テスト方法)」では「バグ」という用語を使用しています。