fbpx

AquaがAWS Lambda上のコンテナイメージをサポート #aqua #コンテナ #セキュリティ #AWS #Lambda

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

本ブログは「Aqua Security」社の技術ブログで2020年12月1日に公開された「 Aqua Secures Container Image Support in AWS Lambda 」の日本語翻訳です。

AquaがAWS Lambda上のコンテナイメージをサポート


Amazon は継続してサーバーレス環境における新機能を構築し続けています。そして先日、AWS Lambda でのコンテナイメージのサポートを開始しました。これにより、Lambda function でコンテナイメージをデプロイすることが可能になります。AWS との強力なパートナーシップと、最も完全なクラウドネイティブセキュリティソリューションを提供したいという私たちの思いのもと、Aqua Security は新しい Lambda function に対応した高度なセキュリティ機能を搭載しました。

2014年に AWS Lambda が登場して以来、サーバーレスは急速に成長しているクラウドサービスです。コードスニペットを実行するためのイベントドリブンなサービスとして始まったものが、今では140の AWS サービスにまたがり、分散型サーバーレスアーキテクチャに欠かせない存在となっています。シンプルな実行環境を提供することで、インフラの懸念からユーザを開放するという革新的なコンセプトでした。その可能性を認識した Aqua は、2018年初頭からサーバーレスワークロードのサポートを正式に開始しました。

コンテナは不可欠

コンテナとそれに伴う豊富なエコシステムは、現代のアプリケーション開発とデプロイメントにとって重要な要素の一部です。AWS のこの新機能は、お客様がすでに使用している DevOps ツールやプロセスを活用してサーバーレスのエコシステムへの道を切り開くことを可能にし、サーバーレス技術の採用を加速させるのに役立つでしょう。さらに、ランタイム API の動作をエミュレートする AWS Lambda Runtime Interface Emulator(RIC)を介して、Lambda function 用に別のローカルテストソリューションを提供し、CI/CD ワークフローへ簡単にプラグインできます。

サーバーレス環境に対する攻撃要素

サーバーレスは、その設計思想から、攻撃の選択肢を論理的に最小化します。これは、マイクロ VM の概念と組み合わせて、カーネルレベルまでの高度な分離を提供することに成功しています。しかしその結果、攻撃者の注意はより一層アプリケーション層へ向けられることになりました。

Lambda はイベント指向のサービスであり、様々なランタイムであらゆるタイプのコードを実行でき、様々な異なる AWS サービスと組み合わせられます。しかし、function をトリガーに多数のイベントから様々なコードが実行されるため、攻撃対象領域が拡大します。これらのサービスによる攻撃手段の提供を防ぐために、イベントのペイロードをどのように構造化してセキュアにするかに注意を払う必要があります。

function は通常、様々なマネージドサービスを結合して全体的なビジネスロジックを構成する「コードの接着剤」としての役割を果たします。一般的に、サーバーレスアーキテクチャでは、複数の function がサービス間の通信で相互作用するため、各 function について最小の権限をきめ細かく適用することが重要です。

Aqua Enterprise Security Platform

クラウドネイティブセキュリティを代表する企業として、従来はコンテナセキュリティの保護が Aqua のメイン領域となっていましたが、サーバーレス function の保護にまで拡張されました。Aqua のプラットフォームは、アプリケーションのライフサイクル全体にわたってブロック・検出・および応答の自動化を提供し、環境を問わず、ビルド、クラウドインフラ、実行中のワークロードを安全に保護します。

この新しい Lambda function を利用している人へ、コンテナおよびサーバーレスワークロードの両方に、一貫したセキュリティ体験を提供できます。実績のある Aqua イメージスキャナを、使い慣れた DevSecOps ツールやプロセスに組み込むことで、サーバーレスアプリケーションの開発に容易に適用できます。また、サーバーレスアプリケーションのセキュリティ状態をきめ細かく制御し、本番環境におけるポリシーを設定できます。

初期からセキュリティを

Lambda function は、実行時間が非常に短い軽量なコードです。ビルドプロセスを安全なものにすることで、シフトレフトを実践し、問題を早期に検出し、スマートに修正してクリーンな成果物を生成するという DevSecOps の手法をサポートしています。Aqua はあらゆる CI/CD ワークフローへシームレスに統合された強力で正確なイメージスキャナを備えており、誤検知を最小限に抑えながら、不良な設定、埋め込まれたシークレット、脆弱性を排除できます。

また、Aquaでは Assurance Policy によって詳細なコンプライアンスを構成できます。いくつかの有効なセキュリティ制御が提供されており、セキュリティ許容度を満たすようなコンプライアンス基準が作成できます。これらの要件を満たさない場合、成果物は非準拠としてマークされます。さらに CI/CD パイプラインで Aqua スキャナ結果に応じてプロセスを終了させ、クリーンなコードのみを ECR レジストリに push することで、最終的に安全な Lambda function のみが実行させられます。

Aqua は要件を満たさなかったセキュリティリスクと、その修正方法を詳細を表す包括的なレポートを提供します。

サードパーティ製コードを守る

サーバーレス function はマイクロサービスの最も純粋な形であり、単一の目的を達成するために実行されます。しかし、それは単なるコードの一部に過ぎません。一般的に、開発者はサードパーティのパッケージやオープンソースのライブラリに大きく依存して何かを作り上げることになります。その結果、これらのチャネルを経由して悪意のあるものを継承するリスクはかなり高くなります。サードパーティの依存関係を持つ Lambda コードがコンテナイメージの形で利用できるようになったことで、アプリケーションはコンテナ環境と同等のリスクに晒されることになります。

幸いなことに、Aqua がコンテナイメージのために開発したのとナレッジとセキュリティ機能を、サーバーレス function にも拡張できました。function は、Assurance Policy によってセキュリティを適用可能になります。これにより、特定のパッケージをブロックしたり、独自のコンプライアンスチェックスクリプトを追加したり、シークレットが埋め込まれていないかどうかをチェックできます。コンテナイメージとしてパッケージ化された function に有用な使用例として、承認されたベースイメージのみを function で利用できるようにする機能もあります。

ほとんどの開発者は、Lambda function をデプロイして次のステップに進みます。時間の経過とともにこれらの function は老朽化し、適切に管理されていないとリスクが増え続けます。function コードのコンテナ化は、サーバーレスアプリケーションのパッケージングを簡素化するだけでなく、その管理も簡素化します。コンテナイメージとしてパッケージ化されたこれらの function は、ECR に容易に push できます。

Aqua を利用することで、これらのコンテナイメージを保持している ECR レジストリと連携し、スケジュールに基づいた定期自動スキャンを設定できます。

まとめ


優れたセキュリティは、Lambda の利便性を奪うべきではありません。一貫した方法論を採用し、一貫したセキュリティコントロールを開発することで、コンテナとサーバーレス function の両方のセキュリティを確保します。AWS Lambda とコンテナ開発ツールの連携をすると Aqua 内で容易にサポートすることで、これまで以上にシームレスなユーザ体験を実現しています。

Aqua では、構築段階で潜在的なリスクを特定して軽減する予防的なセキュリティアプローチを採用し、攻撃対象を劇的に減少させることで、サーバーレスアプリケーションのセキュリティを大幅に改善できると考えています。

New call-to-action
新規CTA