Lambda のセキュリティとコンプライアンスのためのオブザーバビリティの実装 - AWS Lambda

Lambda のセキュリティとコンプライアンスのためのオブザーバビリティの実装

AWS Config は、非準拠の AWS サーバーレスリソースを見つけて修正するのに便利なツールです。サーバーレスリソースに加えた変更はすべて AWS Config に記録されます。さらに、AWS Config では、設定スナップショットデータを S3 に保存できます。Amazon Athena と Amazon QuickSight を使用して、ダッシュボードを作成し、AWS Config データを表示できます。AWS Config を使用して非準拠の Lambda デプロイと設定を検出する では、Lambda レイヤーのような特定の設定を視覚化する方法について説明しました。このトピックでは、これらの概念について詳しく説明します。

Lambda 設定の可視性

クエリを使用して、AWS アカウント ID、リージョン、AWS X-Ray トレーシング設定、VPC 設定、メモリサイズ、ランタイム、タグなどの重要な設定を取得できます。Athena からこの情報を取得するために使用できるクエリ例を次に示します。

WITH unnested AS ( SELECT item.awsaccountid AS account_id, item.awsregion AS region, item.configuration AS lambda_configuration, item.resourceid AS resourceid, item.resourcename AS resourcename, item.configuration AS configuration, json_parse(item.configuration) AS lambda_json FROM default.aws_config_configuration_snapshot, UNNEST(configurationitems) as t(item) WHERE "dt" = 'latest' AND item.resourcetype = 'AWS::Lambda::Function' ) SELECT DISTINCT account_id, tags, region as Region, resourcename as FunctionName, json_extract_scalar(lambda_json, '$.memorySize') AS memory_size, json_extract_scalar(lambda_json, '$.timeout') AS timeout, json_extract_scalar(lambda_json, '$.runtime') AS version json_extract_scalar(lambda_json, '$.vpcConfig.SubnetIds') AS vpcConfig json_extract_scalar(lambda_json, '$.tracingConfig.mode') AS tracingConfig FROM unnested

クエリを使用して Amazon QuickSight ダッシュボードを構築し、データを視覚化できます。AWS リソース設定データを集約し、Athena でテーブルを作成し、Athena からのデータに基づいて Amazon QuickSight ダッシュボードを構築するには、「AWS Cloud Operations and Management」ブログの「Visualizing AWS Config data using Athena and Amazon QuickSight」を参照してください。特に、このクエリは関数のタグ情報も取得します。これにより、特にカスタムタグを使用する場合に、ワークロードと環境をより深く把握できます。

Query results in Amazon QuickSight dashboard

実行できるアクションの詳細については、このトピックで後述する オブザーバビリティに関する検出結果への対処 セクションを参照してください。

Lambda コンプライアンスの可視性

AWS Config で生成されたデータを使用して、コンプライアンスを監視するための組織レベルのダッシュボードを作成できます。これにより、以下の項目を一貫して追跡およびモニタリングできます。

  • コンプライアンススコアによるコンプライアンスパック

  • 非準拠リソースによるルール

  • コンプライアンス状況

AWS Config console dashboard

各ルールをチェックして、そのルールに適合していないリソースを特定します。例えば、組織ですべての Lambda 関数を VPC に関連付けることが義務付けられていて、コンプライアンスを識別する AWS Config ルールをデプロイしている場合は、上のリストから lambda-inside-vpc ルールを選択できます。

View non-compliant resources in AWS Config console

実行できるアクションの詳細については、以下の オブザーバビリティに関する検出結果への対処 セクションを参照してください。

Security Hub を使用した Lambda 関数の境界の可視化

Diagram of example AWS Security Hub inputs for Lambda, such as resource policy, runtime, and code

Lambda を含む AWS サービスを安全に使用するために、AWS は基礎セキュリティのベストプラクティス v1.0.0 を導入しました。この一連のベストプラクティスは、AWS 環境内のリソースとデータを保護するための明確なガイドラインを提供し、強固なセキュリティ体制を維持することの重要性を強調しています。AWS Security Hub は、セキュリティとコンプライアンスの統合センターを提供することで、これを補完しています。Amazon Inspector、AWS Identity and Access Management Access Analyzer、Amazon GuardDuty などの複数の AWS サービスからセキュリティ結果を集計、整理、優先順位付けします。

AWS 組織内で Security Hub、Amazon Inspector、IAM アクセスアナライザー、および GuardDuty が有効になっている場合、Security Hub はこれらのサービスからの結果を自動的に集計します。例えば、Amazon Inspector を考えてみましょう。Security Hub を使用すると、Lambda 関数のコードとパッケージの脆弱性を効率的に特定できます。Security Hub コンソールで、「AWS 統合からの最新の調査結果」というラベルの付いた一番下のセクションに移動します。ここでは、さまざまな統合 AWS サービスから得られた結果を表示して分析できます。

Security Hub console "Latest findings from AWS integrations" section

詳細を確認するには、2 番目の列の [結果を参照] リンクを選択します。これにより、Amazon Inspector などの製品別にフィルタリングされた結果のリストが表示されます。検索を Lambda 関数に限定するには、ResourceTypeAwsLambdaFunction に設定します。これには、Lambda 関数に関連する Amazon Inspector からの結果が表示されます。

Filter for Amazon Inspector results related to Lambda functions

GuardDuty では、疑わしいネットワークトラフィックパターンを特定できます。このような異常は、Lambda 関数内に潜在的に悪意のあるコードが存在することを示唆している可能性があります。

IAM Access Analyzer を使用すると、ポリシー、特に外部エンティティへの関数アクセスを許可する条件ステートメントを含むポリシーを確認できます。さらに、IAM アクセスアナライザーは、Lambda API の AddPermission オペレーションを EventSourceToken と共に使用したときに設定されたアクセス権限を評価します。

オブザーバビリティに関する検出結果への対処

Lambda 関数の設定は多岐にわたり、要件も異なるため、標準化された修正自動化ソリューションがすべての状況に適しているとは限りません。さらに、変更の実装方法は環境によって異なります。準拠していないと思われる設定が見つかった場合は、以下のガイドラインを検討してください。

  1. タグ付け戦略

    包括的なタグ付け戦略を実装することをお勧めします。各 Lambda 関数には、次のような重要な情報をタグ付けする必要があります。

    • オーナー: 関数の責任を負う個人またはチーム。

    • 環境: 本番、ステージング、開発、またはサンドボックス。

    • アプリケーション: この関数が属するより広いコンテキスト (該当する場合)。

  2. オーナーへの働きかけ

    重大な変更 (VPC 設定の調整など) は自動化せず、準拠していない機能 (所有者タグで識別) の所有者に事前に連絡し、次のいずれかを行うための十分な時間を確保してください。

    • Lambda 関数の非準拠設定を調整します。

    • 説明をして例外をリクエストするか、コンプライアンス基準を改定してください。

  3. 構成管理データベース (CMDB) のメンテナンス

    タグはコンテキストをすぐに提供できますが、一元管理された CMDB を管理することでより深い洞察を得ることができます。各 Lambda 関数、依存関係、その他の重要なメタデータに関するより詳細な情報を保持できます。CMDB は、監査、コンプライアンスチェック、および関数所有者の特定において非常に貴重なリソースです。

サーバーレスインフラストラクチャの状況は絶えず進化しているため、監視に対して積極的な姿勢をとることが不可欠です。AWS Config、Security Hub、Amazon Inspector などのツールを使用すると、潜在的な異常や非準拠の設定を迅速に特定できます。ただし、ツールだけでは完全なコンプライアンスや最適な構成を保証することはできません。これらのツールを、十分に文書化されたプロセスやベストプラクティスと組み合わせることが重要です。

  • フィードバックループ: 是正措置を講じたら、必ずフィードバックループを実施してください。つまり、コンプライアンス違反のリソースを定期的に見直して、更新されていないか、同じ問題がまだ発生していないかを確認します。

  • 文書化: 観察結果、実施した措置、および認められた例外事項を必ず文書化してください。適切な文書化は、監査時に役立つだけでなく、今後のコンプライアンスとセキュリティを向上させるためのプロセスを強化するのにも役立ちます。

  • トレーニングと啓発: すべての利害関係者、特に Lambda 関数の所有者に定期的にトレーニングを実施し、ベストプラクティス、組織ポリシー、コンプライアンス義務について周知徹底するようにします。定期的なワークショップ、ウェビナー、トレーニングセッションなどは、セキュリティとコンプライアンスに関して全員が同じ認識を持つようにするのに大いに役立ちます。

結論として、ツールやテクノロジーは潜在的な問題を検出して報告するための強力な機能を備えていますが、理解、コミュニケーション、トレーニング、文書化といった人的要素が極めて重要です。これらを合わせることで、Lambda 関数と広範なインフラストラクチャがコンプライアンス、安全性を維持し、ビジネスニーズに合わせて最適化されることを保証する強力な組み合わせになります。