AWS Lambda コントロールします。 - AWS Security Hub

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Lambda コントロールします。

これらのコントロールは Lambda リソースに関連しています。

これらのコントロールは、一部では使用できない場合があります。 AWS リージョン詳細については、「リージョン別のコントロールの可用性」を参照してください。

[Lambda.1] Lambda 関数ポリシーでは、パブリックアクセスを禁止する必要があります

関連する要件: PCI DSS v3.2.1/1.2.1、PCI DSS v3.2.1/1.3.1、PCI DSS v3.2.1/1.3.2、PCI DSS v3.2.1/1.3.4、PCI DSS v3.2.1/7.2.1、NIST.800-53.r5 AC-21、NIST.800-53.r5 AC-3、NIST.800-53.r5 AC-3(7)、NIST.800-53.r5 AC-4、NIST.800-53.r5 AC-4(21)、NIST.800-53.r5 AC-6、NIST.800-53.r5 SC-7、NIST.800-53.r5 SC-7(11)、NIST.800-53.r5 SC-7(16)、NIST.800-53.r5 SC-7(20)、NIST.800-53.r5 SC-7(21)、NIST.800-53.r5 SC-7(3)、NIST.800-53.r5 SC-7(4)、NIST.800-53.r5 SC-7(9)

カテゴリ: 保護 > セキュアなネットワーク設定

重要度: 非常事態

リソースタイプ: AWS::Lambda::Function

AWS Config ルール : lambda-function-public-access-prohibited

スケジュールタイプ: 変更がトリガーされた場合

パラメータ: なし

このコントロールは、Lambda 関数リソースベースポリシーがアカウントの外部からのパブリックアクセスを禁止しているかどうかをチェックします。パブリックアクセスが許可されている場合、コントロールは失敗します。Lambda 関数が Amazon S3 から呼び出され、ポリシーが AWS:SourceAccount などパブリックアクセスを制限する条件が含まれていない場合も、コントロールは失敗します。より細かくアクセスするには、バケットポリシーで他の S3 条件を AWS:SourceAccount と併用することをおすすめします。

Lambda 関数は、関数コードへの意図しないアクセスを許可する可能性があるため、パブリックからアクセスできない必要があります。

修正

この問題を修正するには、関数のリソースベースのポリシーを更新して許可を削除するか、AWS:SourceAccount 条件を追加します。リソースベースのポリシーは、Lambda API またはからのみ更新できます。 AWS CLI

まず、Lambda コンソールでリソースベースのポリシーを確認します。"*" や { "AWS": "*" } など、ポリシーをパブリックにする Principal フィールド値を持つポリシーステートメントを特定します。

ポリシーはコンソールから編集できません。関数から許可を削除するには、 AWS CLIから remove-permission コマンドを作動します。

$ aws lambda remove-permission --function-name <function-name> --statement-id <statement-id>

<function-name> を Lambda 関数の名前で置き換え、<statement-id> を削除するステートメントのステートメント ID (Sid) に置き換えます。

[Lambda.2] Lambda 関数はサポートされているランタイムを使用する必要があります

関連する要件: NIST.800-53.r5 CA-9(1)、NIST.800-53.r5 CM-2、NIST.800-53.r5 SI-2、NIST.800-53.r5 SI-2(2)、NIST.800-53.r5 SI-2(4)、NIST.800-53.r5 SI-2(5)

カテゴリ: 保護 > セキュアな開発

重要度:

リソースタイプ: AWS::Lambda::Function

AWS Config ルール : lambda-function-settings-check

スケジュールタイプ: 変更がトリガーされた場合

パラメータ:

  • runtime: dotnet8, dotnet6, java21, java17, java11, java8.al2, nodejs20.x, nodejs18.x, nodejs16.x, python3.12, python3.11, python3.10, python3.9, python3.8, ruby3.3, ruby3.2 (カスタマイズ不可)

このコントロールは、ランタイムの Lambda 関数設定が、各言語でサポートされているランタイムに設定された期待値と一致するかどうかをチェックします。サポートされているランタイムを Lambda 関数が使用しない場合、コントロールは失敗します。

コントロールは、前述のパラメーターの下に表示されたランタイムの関数設定をチェックします。Security Hub は、Imageパッケージタイプがの関数を無視します。

Lambda ランタイムは、メンテナンスとセキュリティの更新の対象となる OS、プログラミング言語、およびソフトウェアライブラリの組み合わせを中心に構築されています。ランタイムコンポーネントがセキュリティアップデートでサポート対象外となった場合、Lambda はこのランタイムを非推奨にします。非推奨のランタイムを使用する関数は作成できませんが、その関数は引き続き呼び出しイベントを処理できます。Lambda 関数が最新のものであることを確認し、廃止されたランタイム環境を使用しないことをお勧めします。サポートされているランタイムのリストについては、『開発者ガイド』の「Lambda ランタイム」を参照してください。AWS Lambda

修正

サポートされているランタイムおよび非推奨スケジュールの詳細については、「AWS Lambda デベロッパーガイド」の「ランタイムの非推奨化に関するポリシー」を参照してください。ランタイムを最新バージョンに移行するときは、言語の発行元からの構文とガイダンスに従ってください。また、まれにランタイムバージョンの互換性がない場合にワークロードに影響するリスクを軽減するために、ランタイムアップデートを適用することをお勧めします

[Lambda.3] Lambda 関数は VPC 内に存在する必要があります

関連する要件: PCI DSS v3.2.1/1.2.1、PCI DSS v3.2.1/1.3.1、PCI DSS v3.2.1/1.3.2、PCI DSS v3.2.1/1.3.4、NIST.800-53.r5 AC-21、NIST.800-53.r5 AC-3、NIST.800-53.r5 AC-3(7)、NIST.800-53.r5 AC-4、NIST.800-53.r5 AC-4(21)、NIST.800-53.r5 AC-6、NIST.800-53.r5 SC-7、NIST.800-53.r5 SC-7(11)、NIST.800-53.r5 SC-7(16)、NIST.800-53.r5 SC-7(20)、NIST.800-53.r5 SC-7(21)、NIST.800-53.r5 SC-7(3)、NIST.800-53.r5 SC-7(4)、NIST.800-53.r5 SC-7(9)

重要度:

リソースタイプ: AWS::Lambda::Function

AWS Config ルール:lambda-inside-vpc

スケジュールタイプ: 変更がトリガーされた場合

パラメータ: なし

このコントロールは、Lambda 関数が仮想プライベートクラウド (VPC) にデプロイされているかどうかを確認します。Lambda 関数が VPC にデプロイされていない場合、コントロールは失敗します。Security Hub は VPC サブネットのルーティング設定を評価してパブリックへの到達可能性を判断しません。Lambda@Edge リソースに関する失敗の結果が表示される場合があります。

VPC にリソースをデプロイすると、ネットワーク設定のセキュリティと制御が強化されます。このようなデプロイは、複数のアベイラビリティーゾーンにわたるスケーラビリティと高い耐障害性にもつながります。VPC デプロイメントは、さまざまなアプリケーション要件に合わせてカスタマイズできます。

修正

VPC のプライベートサブネットに接続する既存の機能を設定するには、「AWS Lambda  デベロッパーガイド」の「VPC アクセスの設定」を参照してください。可用性を高めるためにプライベートサブネットを少なくとも 2 つ選択し、機能の接続要件を満たすセキュリティグループを少なくとも 1 つ選択することをお勧めします。

[Lambda.5] VPC Lambda 関数は複数のアベイラビリティーゾーンで運用する必要があります

関連する要件: NIST.800-53.r5 CP-10、NIST.800-53.r5 CP-6(2)、NIST.800-53.r5 SC-36、NIST.800-53.r5 SC-5(2)、NIST.800-53.r5 SI-13(5)

カテゴリ: リカバリ > 耐障害性 > 高可用性

重要度:

リソースタイプ: AWS::Lambda::Function

AWS Config ルール : lambda-vpc-multi-az-check

スケジュールタイプ: 変更がトリガーされた場合

パラメータ:

パラメータ 説明 [Type] (タイプ) 許可されているカスタム値 Security Hub のデフォルト値

availabilityZones

アベイラビリティーゾーンの最小数

列挙型

2, 3, 4, 5, 6

2

このコントロールは、仮想プライベートクラウド (VPC) AWS Lambda に接続する機能が、少なくとも指定された数のアベイラビリティーゾーン (AZ) で動作しているかどうかを確認します。少なくとも指定された数の AZ で関数が動作していない場合、コントロールは失敗します。AZ の最小数に対してカスタムパラメータ値を指定しない限り、Security Hub はデフォルト値の 2 つの AZ を使用します。

アーキテクチャ内の可用性を高めるには、複数の AZ AWS にリソースをデプロイすることがベストプラクティスです。可用性は、機密性、完全性、可用性から成り立つセキュリティモデルの 3 要素における中心的な柱です。VPC に接続するすべての Lambda 関数には、1 つのゾーンで障害が発生しても運用が完全に中断されないように、マルチ AZ 配置がある必要があります。

修正

お客様のアカウントで VPC に接続するように関数を設定する場合は、複数のアベイラビリティーゾーン (AZ) でサブネットを指定することで、高可用性を確保します。手順については、「AWS Lambda  デベロッパーガイド」の「VPC アクセスの設定」を参照してください。

Lambda は、複数のアベイラビリティーゾーン (AZ) で他の関数を自動的に実行し、1 つのゾーンでサービスの中断が発生した場合にも、関数をイベントの処理に使用できることを保証します。