開発者のためのデータ損失防止
2023年5月24日
0 分で読めますデータ侵害という形で発生するセキュリティ違反は、企業の評判に大きな損害をもたらすことがあります。では、データ侵害とは何でしょうか。欧州委員会は、データ侵害を3つのカテゴリーに分類しています。機密性の侵害、完全性の侵害、可用性の侵害です。
機密性の侵害とは、個人データが不正または偶発的に開示されたり、アクセスされたりすることです。
完全性の侵害とは、個人データが不正または偶発的に改変されることです。
可用性の侵害とは、個人データへのアクセスが偶発的または不正に失われること、あるいは個人データが破壊されることです。
この記事では、データ侵害とは何か、ソフトウェアの設計・開発時にデータ侵害を防ぐ方法について解説します。
データ損失とは
データ損失を防ぐ方法を学ぶ前に、データ損失とは何かを定義しておくことが重要です。ランサムウェアやハッキング攻撃など、データ損失にはさまざまな形があるからです。
ランサムウェアは、マルウェアをダウンロードしたことで企業のデータが暗号化され、ハッカーに多額の金銭を支払って復号してもらうまで利用できなくなる場合に発生します。また、ハッカーは金銭が支払われなければデータを公開すると脅すこともあり、機密性の侵害につながります。
データ漏えいはどのように起こるか
データ侵害は、競合他社や企業に損害を与えて金銭的利益を得ようとする人物によって行われるとは限りません。たとえば、人為的ミスによっても発生します。GRC eLearningのウェブサイトによると、すべてのデータ侵害の82%には人間が関与しており、何らかの手作業が侵害の原因となっています。悪意がなくても、従業員が会社のノートパソコンなどの物理デバイスを紛失すれば、データ損失が起こり得ます。こうした事態を減らすため、すべての企業で研修を実施することが不可欠です。
欧州の法律では、最大2,000万ユーロ、または年間売上高の4%のいずれか高い方に相当する、非常に高額な罰金が科されることがあります。Tessainは、今年科されたデータ侵害に対する高額な罰金をまとめた記事を公開しました。最も高額だったのはAmazonで、7億4,600万ユーロ(8億7,700万米ドル)。続いてWhatsAppに2億2,500万ユーロ(2億5,500万米ドル)の罰金が科されました。
データの機密性とデータ損失の深刻度
データ侵害の深刻度は、漏えいまたは損失したデータの種類によっても決まります。これには、個人データ、たとえば生体情報、健康情報、遺伝情報、政治的信条、宗教的信条などが含まれます。たとえば、従業員がオフィスに出入りする際に使う指紋認証リーダーがある場合、その指紋データは会社のサーバーに保存されます。サーバー上のすべてのデータが悪意のある第三者の手に渡るようなハッキングが発生すれば、全従業員の生体データが危険にさらされます。漏えいしたデータの機密性が高いほど、罰金も高額になります。
データ損失を防ぐ方法
データ量が増加し、データ損失が発生した企業に科される罰金も高額化しているため、これはますます重要な課題となっています。ソフトウェア開発時にデータ損失や漏えいを防ぐ方法、少なくともその発生を抑える方法を見ていきましょう。
適切なアーキテクチャを選ぶ
データ漏えいの防止には、優れたセキュリティポリシーを導入するだけでは不十分です。データ損失を最小限に抑える適切なアーキテクチャを選ぶ必要があります。企業は、システムコンポーネントを適切に分離できるドメイン駆動設計(DDD)を採用できます。
プレゼンテーション層をビジネスロジックやドメインエンティティから分離すれば、開発者は疎結合と高凝集を実現しやすくなります。これにはデータ転送オブジェクト(DTO)を利用できます。DTOはプロセス間でデータを受け渡すオブジェクトで、クライアントとサーバー間のメソッド呼び出し回数を最小限に抑えます。
ほとんどのデータ転送ではリモート通信が行われるため、情報の取得には複数のリクエストが必要になることがよくあります。たとえば、クライアントアプリケーションからサーバーにリモート呼び出しを行い、ある人物の名前を取得する場合は次のようになります。

必要な情報をすべて取得するには複数回のリモート呼び出しが必要になることがわかります。しかし、DTOに複数の値をまとめ、クライアントからのリクエストに対する応答として送信できます。クライアントはその後、DTOをローカルで操作し、必要に応じて値を取得できます。この方法なら、リモート呼び出しの回数を減らし、ネットワーク上に露出するデータを最小限に抑えられます。

機密データを特定する
SDLCの初期段階から、機密データの保護を最優先事項とする必要があります。財務情報、事業目標、医療記録などに関するデータをどのように保存するか、適切に計画しましょう。
重要な検討事項の1つは、個人を特定できる情報(PII)の保護方法です。企業の内外を問わず、個人を一意に特定できるデータはPIIに該当します。PIIの保存や利用に関する法律は地域によって異なりますが、こうしたデータが損失・漏えいすれば、高額な罰金や評判の低下につながる可能性があります。
データは必要最小限しか収集しないのが望ましい方法です。アプリケーションで必要のないデータは、そもそも収集しないようにしましょう。データが少なければ、保護にかかる時間も短くなります。少なくとも、侵害が発生した場合の影響を軽減できます。データマスキングなどの難読化技術を導入することも有効です。
データを暗号化・ハッシュ化する
暗号化は、機密情報を保護するための最も古い手法の1つです。さまざまな暗号化技術を使って、転送中のデータと保存中のデータを保護できます。大量のデータをSQLテーブルに保存する場合は、透過的データ暗号化の利用を検討しましょう。米国政府は、保存データの保護にAdvanced Encryption Standard(AES)アルゴリズムを使用することを推奨しています。
アプリケーションの開発では、安全なチャネルを介したデータ転送を重視しましょう。転送中のデータにはTransport Layer Security(TLS)プロトコルを使用して、盗聴や改ざんを防ぐ必要があります。また、企業データの移動にパブリックサービスを使用するのは制限しましょう。
シークレット管理ツールを活用する
現代のアプリケーションでは、データベースへのアクセス情報、API暗号化キー、環境変数など、多くの設定シークレットを扱います。これらを保護するには、適切な計画が必要です。HashiCorp Vaultのような堅牢なシークレット管理ツールを使えば、安全に保管できます。
ただし、こうしたツールを選ぶ際は、値をできるだけ簡単に取得できるものを選びましょう。この方法で機密データを保存すれば、設定ファイルのサイズを減らし、リポジトリ経由でデータが漏えいするリスクを最小限に抑えられます。
アクセスを制限する
アクセスを制限すれば、情報漏えいやデータ損失の発生を防ぎやすくなります。アクセス制限とは、必要な人にのみアクセス権を付与することです。言うまでもなく、一般社員にCEOと同じ閲覧権限を与えるべきではありません。これは多くの場合、ロールベースアクセス制御(RBAC)と呼ばれます。従業員が日常業務に必要な情報にのみアクセスできるようにし、その他のネットワークアクセスを制限します。
最小権限
最小権限の原則では、業務の遂行に必要な最小限のアクセス権のみを付与します。全従業員のアクセス権を一元管理できるため、データ漏えいを防ぐ最も効果的な方法の1つとされています。スーパーユーザーや管理者のアクセス権を制限すれば、従業員の認証情報が漏えいしたり、社外の人間にアクセスされたりしても、従業員の権限が限られているため機密データが漏えいする可能性を抑えられます。
最小権限の考え方を適切に導入するには、いくつかの重要な手順があります。まず、ユーザーのアクセス情報と権限を一元管理するデジタル保管庫を作成し、特権アカウントを中心に全従業員を監査する必要があります。また、パスワード、SSHキー、エンドポイントを慎重に保護しましょう。
二要素認証
データ漏えいを防ぐもう1つの一般的な方法は、二要素認証です。二要素認証はブルートフォース攻撃の防止に役立ちます。また、脆弱なパスワードだけが攻撃者と大量のデータの間にあるような状況でも、保護を強化できます。
データの保存先(クラウドまたはオンプレミス)
データはMicrosoft AzureやAmazon Web Services(AWS)などのクラウドサービスを使って保存することも、物理サーバーを使って社内に保存することもできます。暗号化、ユーザー権限の分割、機密データのアップロード回避など、適切な手順(技術面・組織面の両方)を整備すれば、データ侵害の防止に役立ちます。
こうした手順を導入する前に、プライバシー・バイ・デザインの原則を念頭に置く必要があります。これは、Snykのような企業が全社的なさまざまな基準を通じて実践しているものです。一方で、データをオンプレミスに保存し、特に機密性の高いデータをオフラインで保管して、必要に応じてアクセスできるようにする企業もあります。
プライバシー・バイ・デザイン
プライバシー・バイ・デザインとは、パッチの開発でも新規プロジェクトでも、ソフトウェア開発の初期段階からプライバシーを考慮することを意味します。攻撃やデータ漏えいを防ぐために最大限の対策を講じていることを示す、さまざまなガイドラインや認証があります。たとえば、ISO 27001の認証を申請できます。この規格は、クラウド上、各種媒体(デジタル・紙)上、仮想マシンや企業デバイス上にあるあらゆる情報を保護します。
データ損失防止ソフトウェア
データ損失や漏えいを防ぐために、セキュリティソフトウェアを活用する企業は数多くあります。BetterCloudやSymantecなどのデータ損失防止ソフトウェアの多くは、操作をブロックすることに重点を置いています。たとえば、USBストレージデバイスを介した操作や、誤ってマルウェアをダウンロードする行為を禁止します。また、ファイアウォールで企業の技術エコシステム全体を保護したり、すべてのリポジトリを暗号化して悪意のある情報漏えいを防いだり、二要素認証を使って従業員が業務アカウントにログインしたりする企業もあります。こうした対策はすべて、企業環境外への機密情報や重要情報の共有を防ぐためのものです。
データ漏えいの深刻度を軽減する
データ漏えいによる影響を抑えるため、保存するデータ量を減らす企業は少なくありません。欧州一般データ保護規則(GDPR)第5条第1項(c)では、古いデータの自動削除など、データ最小化の手続きを定める必要があるとされています。たとえば、XYZ Ltd.の顧客が10年間にわたって契約を継続せず、再び利用することもなかった場合、その顧客のデータはすべて削除できますし、削除すべきです。
Snykがデータ損失にどう対処するか
Snykは、開発者向けツールに直接統合される安全な開発者プラットフォームです。前述のプライバシー・バイ・デザインの考え方を取り入れ、技術スタック全体と開発ライフサイクル全体にわたって、企業に必要なセキュリティを提供します。Snykは開発者ファーストのアプローチを採用しており、開発者が利用するパイプラインに直接統合することで、コードの構築と継続的な保守が行われる開発の最も基礎的な段階からセキュリティを組み込みます。つまり、コードを最初から安全に開発できるだけでなく、Snyk Containerを活用して環境全体も保護できます。Snyk Containerを使えば、アプリケーションをパッケージ化し、含まれる脆弱性を検出できます。
すべてのコミットをSnyk Cloud経由で処理することで、これまでに説明した対策に加えて、セキュリティをさらに強化できます。Amazon Web Services(AWS)、Azure、Google Cloud、Terraform、AWS CloudFormation、Kubernetes、Docker、Open Policy Agent (OPA)と連携し、データ損失を防ぎ、実装が最新のポリシーに準拠していることを確認するため、定期的にスナップショットを取得します。また、最新の標準に合わせて自動的に同期します。
オープンソースコードを導入する場合、Snykはパイプラインとリリース管理プロセスの各段階で、潜在的な脆弱性をスキャンして監視します。リアルタイムおよび過去のレポートを通じて、オープンソースコードの初回インストールからコードの実行中、デプロイ時に至るまで、脆弱性やセキュリティリスクを検出できます。
データ漏えいのリスクを低減
データ侵害はデータを危険にさらし、金銭的損失、個人情報の盗難、屈辱、信用の失墜、契約違反など、深刻な結果を招くおそれがあります。漏えいは、死につながるなど、さらに重大な影響を及ぼすことさえあります。ISO 27000規格、RBAC、プライバシー・バイ・デザインなど、適切な手順を整備すれば、壊滅的な事態を防ぐことができます。
Snykのような企業のツールを活用すれば、自社や従業員、その家族を守ることもできます。Snykは、導入済みのデータパイプラインやインフラストラクチャを問わず、データ損失の防止に役立つさまざまな製品を提供しています。今すぐSnykを無料でお試しください!
開発者に愛され、セキュリティチームから信頼される。
Snykの開発者ファーストのツールは、ガバナンスやコンプライアンスのニーズに応える、統合された自動化セキュリティを提供します。
