サーバーレスセキュリティのベストプラクティスとは
サーバーレスコンピューティングとは、コンピューティング能力やストレージリソースなどのアプリケーションインフラストラクチャを動的にオンデマンドで割り当て、プロビジョニングすることを指します。これにより、DevOpsチームは、インフラストラクチャに関する懸念事項を抽象化し、クラウドプロバイダーに任せることで、アプリケーションデリバリーに集中できるようになります。サーバーレスアーキテクチャには、個別のコードを実行する関数や、短期間の開発ブランチで使用される一時データベースが含まれることがあります。
サーバーレスリソースは、コンピューティングに動的で分散的なアプローチをもたらしますが、これにより、独自のアプローチを必要とする独自のセキュリティ要件が生じます。
この記事では、サーバーレスアーキテクチャに関連する一般的なセキュリティ問題に対処するための4つのベストプラクティスについて説明します。これらのベストプラクティスを採用すると、組織は強力で堅牢なセキュリティポスチャを維持できるようになります。
Expert Tip
クラウドとは、インターネット経由でリモートでアクセスされるサーバーと、それに関連するすべてのサービス、ソフトウェアアプリケーション、データベース、コンテナ、ワークロードを表すために使用される用語です。クラウド環境は、通常1人のユーザーのみによって使用されるクラウド環境のプライベートクラウドと、複数のユーザーによって共有される環境のパブリッククラウドの2つのカテゴリに分類されます。
ベストプラクティス1:最小特権の原則に従う
サーバーレスリソースの権限を構築するときは、「最小特権」の概念を理解することが重要です。サーバーレス関数に過度に広範な権限を使用すると、悪意のあるアクターがリソースを侵害した場合に不正アクセスの脆弱性のリスクが生じる可能性があります。このリスクを軽減するには、すべてのリソースのアクセス権を、タスクを完了するために必要な最小限の権限に制限し、それ以上の権限は付与しないようにします。
RBAC(ロールベースのアクセス制御)の使用
RBAC(ロールベースのアクセス制御)は、リソースにアクセスする権限を持つロールを定義します。その後、必要な場合にのみユーザーまたはグループにそれらのロールが割り当てられます。このアプローチにより、組織は詳細かつスケーラブルなアクセス制御を実現できます。RBACは、個々のユーザーに直接権限を割り当てるよりも安全なアプローチです。RBACを使用すると、アプリケーション、ユーザー、またはグループに対して、頻繁にアクセスされるリソースを再利用可能なロールに制限できるため、ロールのレビューが容易になります。
定期的な権限監査と調整
特に基盤となるアプリケーションが変更される場合には、権限とロールを定期的に確認して監査し、目的に適合していることを確認することが重要です。これらの監査と調整を怠ると、サービスとリソースの権限が乱立し、侵害されたアプリケーションにセキュリティ上の脆弱性が生じる可能性があります。
Expert Tip
このモデルによると、Google Cloud Platform (GCP)、Amazon Web Services (AWS)、Microsoft Azure (Azure) などのCSPは、基盤となるハードウェアセキュリティの管理と保護を担当します。けれども、顧客にはインフラストラクチャ層とアプリケーション層でセキュリティ保護を有効にすることが求められます。これには、組織のデータやその他のクラウドベースのアセットを保護するためのすべてのツール、テクノロジー、ポリシー、方法が含まれます。
ベストプラクティス2:堅牢なモニタリングとログ記録を実装する
サーバーレス環境では、迅速で頻度の高い一時的な展開が発生します。このような環境で効果を上げるには、セキュリティモニタリングアプローチにおいて次の点を考慮してください。
詳細な機能ログ記録
詳細なログ記録により、ランタイム時のサーバーレス関数の振る舞いを可視化し、関数の予期しない振る舞いや実行による潜在的な脅威や侵害を早期に検出できます。サーバーレス関数で十分なログ機能を実現するには、サーバーレスに最適化されたログツールを使用して関数のログを処理および出力します。これらの最適化されたモジュールは、相関ID、タイムスタンプ、診断データなどの詳細な実行ログ出力を提供します。
ログのモニタリングとアラート
アプリケーションの関数によって詳細なログが出力される際には、関数内の異常なアクティビティやパターンに注意し、潜在的な問題を迅速にトリアージします。異常なアクティビティは、実行時間の外れ値、消費メモリ、またはランタイムエラーとして表示されます。チームにとって、APIアクセスルート、データソース、またはリクエストボリュームにおけるこれらの外れ値をモニタリングすることは、予期しないコード出力や、サーバーレスシステムの脆弱性を調査している不正アクターを特定するために不可欠です。
一元化されたログ管理およびモニタリングシステムを使用して、分散システムとサーバーレス関数全体のアクティビティを関連付けます。堅牢で最新のソリューションにはアラート機能が組み込まれており、チームは迅速に修復措置を講じることができます。
ログの安全な保存と確認
ログがアプリケーションから処理および保存の場所に安全に送信されるようにします。ログの保管場所も安全でなければなりません。保存されたログのインサイトと傾向を定期的に確認して、アプリケーションに対する脆弱性や攻撃を特定します。
ベストプラクティス3:セキュアコーディングプラクティスを採用する
サーバーレス関数では、サードパーティのモジュールやサービスを統合するのが一般的です。アプリケーションコードが依存するサードパーティモジュールの数が増えるにつれて、脆弱性の影響を受ける領域も拡大します。したがって、この環境でサーバーレスアプリケーションを開発する場合は、セキュリティを考慮して関数を開発してください。レビューやスキャンのプロセスを実装して安全でないコードを排除することで、一般的なリスクを軽減します。
入力の検証
サーバーレス関数で入力を処理するときは、サーバーレス関数へのすべての入力、またはサードパーティAPIなどの外部ソースから取得されたデータをサニタイズします。このサニタイズにより、意図しないコードや悪意のあるパケットの送信などのコードインジェクションの脅威を防止できます。
レビュープロセス
前述のように、サーバーレスアプリケーションでは通常、サードパーティモジュールを統合します。保守管理者は、機能に脆弱性が生じないように、これらのモジュールをセキュリティパッチで定期的に更新します。サードパーティの依存関係を定期的に更新してください。アプリケーションランタイム(Java、Python、Node.jsなど)を現在管理されているバージョンに更新する必要があります。
アプリケーションの依存関係を確認する際には、セキュリティギャップも定期的に確認し、現在特定されている既知の脆弱性を排除します。このプロセスは、スケジュールに従って手動で実行することも、自動化されたセキュリティスキャンツールを使用して実行し、作業負荷を軽減することもできます。自動化により、コード内で安全なバージョンアップグレードやセキュリティ修正が作成され、提案を受けることができます。
シフトレフトセキュリティ
セキュリティチェックを開発プロセスに統合する場合は、設計やプロジェクトの初期化フェーズなど、開発サイクルの早い段階でチェックを統合するシフトレフトアプローチを検討してください。このプロセスでは、プロジェクトの最終テストまたはリリースフェーズの前に潜在的なセキュリティ問題を特定することで、開発時間を節約できます。
ベストプラクティス4:ネットワークセキュリティを強化する
サーバーレス関数を介して展開される可能性のある分散アプリケーションでは、多くの場合、外部サービスとの通信が必要になります。これにより、特にクライアントと外部サービス間の通信が保護されていない場合、潜在的な攻撃ポイントが増加します。したがって、データフローの傍受や改ざんを防ぐために、サーバーレス関数と外部サービス間のデータフローを保護する必要があります。
暗号化プロトコル
開発者は、サーバーレス関数が外部APIやサービスと通信するときは常に、通信を保護するために暗号化されたプロトコルを実装する必要があります。これらのプロトコルには、HTTPSに加えて、非HTTP接続用のTLSも含まれており、中間者攻撃を効果的に軽減し、データがネットワークを介してプレーンテキストで送信されるのを防ぎます。
APIゲートウェイ
サードパーティが呼び出したいAPIを公開するサーバーレス関数があるとします。その場合は、APIゲートウェイソリューションを導入してAPIをより適切に管理し、セキュリティポスチャを強化します。ゲートウェイは、APIを呼び出すクライアントとバックエンドのサーバーレス関数の間に配置されます。この一元化により、セキュリティポリシーと要件(アプリケーション認証やAPIリソースのアクセス制御ポリシーなど)がすべてのサービスにわたって均一に適用されるようになります。
ネットワークアクセスの制限
組織がサーバーレス関数をパブリッククラウドで実行することは珍しくありません。それが自分の組織である場合、信頼できるソースとサービスからの定義済みルートのみにネットワークアクセスを制限することが重要です。これはアプリケーションのセキュリティのもう1つのレイヤーであり、データがアプリケーションに到達する前に、ネットワーク環境にいないユーザーによるアクセスをブロックします。
クラウドストライクとサーバーレスセキュリティ
サーバーレス関数は、開発プロセスにおけるチームの俊敏性と、需要に応じた動的なスケーリングを可能にします。ただし、このアプローチでは、最もリスクの高い脆弱性の修正を優先する必要があります。
セキュアコーディングプラクティスと最小特権アクセスにより、サーバーレス環境における脆弱性の発生が大幅に減少します。堅牢なアプリケーションのモニタリングとログ記録のための明確な監査証跡を確立してください。こうした制御は、開発フェーズからアプリケーションランタイムに至るまでのサーバーレスセキュリティに対する包括的なアプローチの一部です。
急速に変化するテクノロジー環境でベストプラクティスの実装、確認、対応を行うには、このような機能を組み込んだプラットフォームを選択します。CrowdStrike Falcon®プラットフォームは、サーバーレス関数を含むクラウド環境を保護するための包括的なオールインワンソリューションをチームに提供します。
詳細については、当社にお問い合わせいただくか、Falconプラットフォームの15日間無料トライアルにご登録ください。