サーバーレスセキュリティとは?
サーバーレスアーキテクチャの登場により、開発環境は急速に変化しました。開発者やITスペシャリストは、サーバーや基盤となるインフラストラクチャを管理する必要がないため、カスタムアプリケーションの構築に集中できます。しかし、この新たな自由は、サーバーレスワークロードにおけるセキュリティの課題という代償をもたらします。開発者はこれを無視してはなりません。
サーバーレスアーキテクチャでは、セキュリティに関する責任は、責任共有モデルと呼ばれるモデルに基づいて、クラウドプロバイダーと顧客の間で分担されます。クラウドプロバイダーは基盤となるインフラストラクチャの保護といった側面を担当し、顧客はアプリケーション、設定、アクセス制御を保護する責任を負います。安全なサーバーレス環境を維持するには、この責任分担を理解して管理することが不可欠です。
現在、主要なクラウドプロバイダーはすべて、何らかの形でサーバーレスセキュリティを提供しています(AWS Lambda、Google Cloud Run functions、Azure Functionsなど)。ただし、それぞれの実装には、個々のクラウドプロバイダー専用であるという欠点があります。
サーバーレス関数には、セキュリティの面で特有の課題があります。オペレーティングシステム (OS) レベルの管理に不安がない場合、懸念事項は、実行コード(ビルドされたパッケージやコンテナなど)とサーバーレス関数を呼び出すためのアクセス制御(Amazon API GatewayなどのWeb呼び出し、またはイベントなどのクラウドプロバイダー固有の呼び出し)に限定されます。従来のセキュリティ対策では、仮想マシンやオンプレミスサーバーのような長期間存続するリソースの維持と保護に重点が置かれることが多いのに対し、サーバーレスアーキテクチャは動的で非常に短命です。この記事では、サーバーレスコンピューティングにおけるセキュリティの違い、サーバーレスセキュリティの課題、さらに、これらの課題を軽減する方法について説明します。
サーバーレスコンピューティングにおけるセキュリティの違い
サーバーレスコンピューティングの大きな利点は、その費用効率です。料金はサーバーレスインスタンスの実行中にのみ発生します。しかし、エフェメラルコンテナ(トリガーされた場合にのみインスタンスが実行されるコンテナ)のアクティビティを監視することは簡単ではありません。サーバーレスアーキテクチャにおけるセキュリティ監視とリソース管理は、従来の長期監視環境よりもはるかに複雑です。これには、サーバーレスコンテナの迅速なプロビジョニングと短い稼働期間に対応できるエージェントや監視ツールが必要になります。包括的な監視を確実に行うためには、これが不可欠です。
サーバーレスコンピューティングにおいて、クラウドプロバイダーとITスペシャリストの間でセキュリティの責任を共有することも、一筋縄にはいきません。ワークロードを保護するには、クラウドプロバイダー固有の設定を適切に行う方法を理解し、セキュリティの問題が発生した場合には、自社のITチームに頼るだけでなく、クラウドプロバイダーとも連携する必要があります。
分散化(異なるリージョンやアベイラビリティゾーンにいつでもインスタンスを立ち上げて実行できること)は、サーバーレスの利点です。しかし、この広範な分散化は、攻撃者にとって侵入可能なポイントを増やすことにもなります。異なる場所でスピンアップする各インスタンスは、さまざまなサービス、データストア、ネットワークとやり取りする可能性があり、それらすべてに安全な設定とアクセス制御が必要です。この広範な環境全体で一貫したセキュリティポリシーを維持することは複雑になり、攻撃者が悪用できる設定ミスや脆弱性の見落としが発生する可能性が高まります。
サーバーレスコンピューティングのもう1つの利点は、イベントから関数呼び出しをスケジュールまたは実行できることです。メッセージをキューに入れるか、ファイルをクラウドストレージバケットにアップロードすることで、サーバーレス関数を実行できます。ただし、これらのイベントソースが攻撃ベクトルとなり、脅威アクターがそこから悪意のある関数を呼び出す可能性があります。つまり、イベントソースにはサーバーレス関数と同等のセキュリティが必要となります。
サーバーレス環境における主なセキュリティの課題
アーキテクチャレベルを超えて、サーバーレスセキュリティ分野全体での主な課題を考えてみましょう。
| 課題 | 説明 | 課題への対処法 |
|---|---|---|
関数の分離 | 個々のサーバーレス関数を保護して、ある関数の脆弱性が誤って別の関数に影響を与えるのを防ぎます。 |
|
データフローとアクセス管理 | サーバーレス関数と外部サービス間の安全なデータ転送を確保します。 |
|
イベントインジェクション攻撃 | 信頼できないイベントトリガーや不正なイベントトリガーによる潜在的な脅威から保護します。 |
|
サードパーティの依存関係 | サーバーレス関数でサードパーティのライブラリーや統合を使用することに伴うリスクを理解します。 |
|
サーバーレス環境向けのセキュリティツールとテクノロジー
開発ライフサイクル全体にわたってセキュリティの脆弱性と脅威を監視する統合セキュリティツールを導入することで、クラウドプロバイダーのベストプラクティスを強化できます。
ランタイム保護は、サーバーレス展開を継続的に監視し、侵害されたマシンで悪意のあるアクターが実行する可能性のある特定の呼び出しをブロックし、異常な事態が発生した瞬間にセキュリティチームに警告を発します。このサーバーレス環境の保護は、セキュリティ監視のインサイト、設定ミスや展開された脆弱性に関するアラート、コンテナに関するその他の関連セキュリティ情報も提供します。
継続的インテグレーション/継続的デリバリー (CI/CD) パイプラインとの統合も、サーバーレスセキュリティライフサイクルに不可欠です。変更が本番環境に頻繁に提供される継続的デリバリーのシナリオでは、開発プロセスの早い段階でサーバーレスセキュリティチェックを組み込む必要があります。
クラウドストライクで始めましょう
サーバーレスアーキテクチャでは、開発者はサーバー管理を気にすることなくアプリケーションを実行できます。また、分散配置されたイベントベースのエフェメラルなシステムが持つ費用効率の高さを活用する機会も得られます。サーバーレスコンピューティングは柔軟性とスケーラビリティに優れていますが、サーバーレスコンピューティングに特有のセキュリティ対策が欠かせません。これを怠ると、この動的なイベントベースの環境で問題を捉えるのは困難になります。
包括的な保護を実現するため、CrowdStrike Falcon® Cloud Securityは主要なクラウドプロバイダーとシームレスに統合されており、サーバーレス展開を保護します。今すぐ無料トライアルを開始して、サーバーレス関数を確実に保護してください。