Amazon ECS コントロール - AWS Security Hub

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

Amazon ECS コントロール

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

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

[ECS.1] Amazon ECS タスク定義には、セキュアなネットワークモードとユーザー定義が必要です。

関連する要件: NIST.800-53.r5 AC-2(1)、NIST.800-53.r5 AC-3、NIST.800-53.r5 AC-3(15)、NIST.800-53.r5 AC-3(7)、NIST.800-53.r5 AC-5、NIST.800-53.r5 AC-6

カテゴリ: 保護 > セキュアなアクセス管理

重要度:

リソースタイプ: AWS::ECS::TaskDefinition

AWS Config ルール : ecs-task-definition-user-for-host-mode-check

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

パラメータ:

  • SkipInactiveTaskDefinitions: true (カスタマイズ不可)

このコントロールは、ホストネットワークモードを使用するアクティブな Amazon ECS タスク定義に privileged または user コンテナの定義もあるかどうかをチェックします。ホストネットワークモードとコンテナ定義が privileged=false、空で、user=root、または空のタスク定義では、制御に失敗します。

このコントロールは、Amazon ECS タスク定義の最新のアクティブなリビジョンのみを評価します。

この制御の目的は、ホストネットワークモードを使用するタスクを実行するときに、アクセスが意図的に定義されるようにすることです。タスク定義に昇格されたアクセス権限がある場合は、その構成を選択したことによるものです。このコントロールは、タスク定義でホストネットワークが有効になっていても、お客様が昇格されたアクセス権限を選択していない場合に、予期しない権限の昇格の有無をチェックします。

修正

タスク定義を更新する方法については、「Amazon Elastic Container Service 開発者ガイド」の「タスク定義の更新」を参照してください。

タスク定義を更新しても、以前のタスク定義から起動された実行中のタスクは更新されません。実行中のタスクを更新するには、新しいタスク定義を使用してタスクを再デプロイする必要があります。

[ECS.2] ECS サービスには、パブリック IP アドレスを自動で割り当てないでください

関連する要件: 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::ECS::Service

AWS Configルール: ecs-service-assign-public-ip-disabled (カスタム Security Hub ルール)

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

パラメータ:

  • exemptEcsServiceArns (カスタマイズ不可)。Security Hub は、このパラメータを設定しません。このルールから除外する Amazon ECS サービスの ARN カンマ区切りリスト。

    Amazon ECS サービスで AssignPublicIPENABLED に設定されていて、このパラメータリストで指定されている場合、このルールは COMPLIANT が使用されます。

    Amazon ECS サービスで AssignPublicIPENABLED に設定されていて、このパラメータリストで指定されていない場合、このルールは NON_COMPLIANT が使用されます。

このコントロールは、Amazon ECS サービスがパブリック IP アドレスの自動割り当てが設定されているかどうかをチェックします。AssignPublicIPENABLED の場合、このコントロールは失敗します。AssignPublicIPDISABLED の場合、このコントロールは成功です。

パブリック IP アドレスは、インターネットから到達可能な IP アドレスです。パブリック IP アドレスを使用して Amazon ECS インスタンスを起動すると、Amazon ECS インスタンスにインターネットから到達することができます。Amazon ECS サービスは、コンテナアプリケーションサーバーへの意図しないアクセスを許可する可能性があるため、パブリックにアクセスができないようにする必要があります。

修正

パブリック IP の自動割り当てを無効にするには、「Amazon Elastic Container Service 開発者ガイド」の「サービスに VPC とセキュリティグループ設定を設定するには」を参照してください。

[ECS.3] ECS タスクの定義では、ホストのプロセス名前空間を共有しないでください

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

カテゴリ: 識別 > リソース設定

重要度:

リソースタイプ: AWS::ECS::TaskDefinition

AWS Configルール:ecs-task-definition-pid-モードチェック

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

パラメータ: なし

このコントロールは、Amazon ECS のタスク定義が、ホストのプロセス名前空間をそのコンテナと共有するように設定されているかどうかをチェックします。タスク定義が、ホストのプロセス名前空間を、そこで実行されているコンテナと共有している場合、このコントロールは失敗します。このコントロールは、Amazon ECS タスク定義の最新のアクティブなリビジョンのみを評価します。

プロセス ID (PID) 名前空間は、プロセス間を分離します。これにより、システムプロセスが可視化されることを防ぎ、PID 1 を含む PID の再利用が可能になります。ホストの PID 名前空間がコンテナと共有されている場合、コンテナは、ホストシステム上のすべてのプロセスを参照できるようになります。これにより、ホストとコンテナ間をプロセスレベルで分離するメリットが減ります。このような状況は、ホストそれ自体で行われているプロセスへの、不正アクセス (プロセスの操作や終了など) につながる可能性があります。ユーザーは、ホストのプロセス名前空間を、そこで実行されているコンテナと共有すべきではありません。

修正

タスク定義上で pidMode を設定する方法については、「Amazon Elastic Container Service デベロッパーガイド」の「タスク定義パラメータ」を参照してください。

[ECS.4] ECS コンテナは、非特権として実行する必要があります

関連する要件: NIST.800-53.r5 AC-2(1)、NIST.800-53.r5 AC-3、NIST.800-53.r5 AC-3(15)、NIST.800-53.r5 AC-3(7)、NIST.800-53.r5 AC-5、NIST.800-53.r5 AC-6

カテゴリ: 保護 > セキュアなアクセス管理 > ルートユーザーのアクセス制限

重要度:

リソースタイプ: AWS::ECS::TaskDefinition

AWS Configルール: ecs-containers-nonprivileged

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

パラメータ: なし

このコントロールは、Amazon ECS のタスク定義の、コンテナ定義の privileged パラメータが true に設定されているかどうかをチェックします。このパラメータの値が true である場合、このコントロールは失敗します。このコントロールは、Amazon ECS タスク定義の最新のアクティブなリビジョンのみを評価します。

昇格された特権を、ECS タスク定義から削除することが推奨されます。この特権パラメータが true の場合、このコンテナには、ホストコンテナインスタンスに対する昇格された特権が付与されます (ルートユーザーと同様)。

修正

タスク定義上で privileged を設定する方法については、「Amazon Elastic Container Service デベロッパーガイド」の「詳細コンテナ定義パラメータ」を参照してください。

[ECS.5] ECS コンテナは、ルートファイルシステムへの読み取り専用アクセスに制限する必要があります。

関連する要件: NIST.800-53.r5 AC-2(1)、NIST.800-53.r5 AC-3、NIST.800-53.r5 AC-3(15)、NIST.800-53.r5 AC-3(7)、NIST.800-53.r5 AC-5、NIST.800-53.r5 AC-6

カテゴリ: 保護 > セキュアなアクセス管理

重要度:

リソースタイプ: AWS::ECS::TaskDefinition

AWS Configルール: ecs-containers-readonly-access

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

パラメータ: なし

このコントロールは、Amazon ECS コンテナが、マウントされたルートファイルシステムへの読み取り専用アクセスに制限されているかどうかをチェックします。readonlyRootFilesystem パラメータが false に設定されているか、タスク定義内のコンテナ定義にパラメータが存在しない場合、コントロールは失敗します。このコントロールは、Amazon ECS タスク定義の最新のアクティブなリビジョンのみを評価します。

このオプションを有効にすると、ファイルシステムフォルダとディレクトリに対する明示的な読み取り/書き込み権限がない限り、コンテナインスタンスのファイルシステムへの改ざんや書き込みができないため、セキュリティ攻撃ベクトルを減らすことができます。このコントロールは、最小特権の原則にも準拠しています。

修正

コンテナ定義をルート filesystems への読み取り専用アクセスに制限します
  1. Amazon ECS クラシックコンソール (https://console.aws.amazon.com/ecs/) を開きます。

  2. 左側のナビゲーションペインで、[タスク定義] をクリックします。

  3. 更新の必要なコンテナ定義を含むタスク定義をクリックします。それぞれ、以下のステップを完了します。

    • ドロップダウンから、[JSON を使用した新しいリビジョンの作成] を選択します。

    • readonlyRootFilesystem パラメータを追加し、タスク定義内のコンテナ定義で true に設定します。

    • [Create] (作成) を選択します。

[ECS.8] シークレットは、コンテナ環境の変数として渡さないでください

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

カテゴリ: 保護 > セキュアな開発 > 認証情報がハードコーディングされていない

重要度:

リソースタイプ: AWS::ECS::TaskDefinition

AWS Configルール: ecs-no-environment-secrets

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

パラメータ:

  • secretKeys = AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYECS_ENGINE_AUTH_DATA (カスタマイズ不可)

このコントロールは、コンテナ定義の environment パラメータにある、任意の変数のキー値に、AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYECS_ENGINE_AUTH_DATA のいずれかが含まれているかどうかをチェックします。任意のコンテナ定義内の単一の環境変数が、AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYECS_ENGINE_AUTH_DATA のいずれかである場合、このコントロールは失敗します。このコントロールは、Amazon S3 など、他のロケーションから渡される環境変数は対象としません。このコントロールは、Amazon ECS タスク定義の最新のアクティブなリビジョンのみを評価します。

AWS Systems Manager パラメータストアは、組織のセキュリティ体制の改善に役立ちます。シークレットと認証情報は、コンテナインスタンスに直接渡したり、コードにハードコーディングしたりするのではなく、Parameter Store を使用して保存することが推奨されます。

修正

SSM を使用してパラメータを作成する方法については、「AWS Systems Manager ユーザーガイド」の「Systems Manager パラメータを作成する」を参照してください。シークレットを指定するタスク定義の作成に関する詳細は、「Amazon Elastic Container Service デベロッパーガイド」の「Secrets Manager を使用した機密データの指定」を参照してください。

[ECS.9] ECS タスク定義にはログ設定が必要です。

関連する要件: NIST.800-53.r5 AC-4(26)、NIST.800-53.r5 AU-10、NIST.800-53.r5 AU-12、NIST.800-53.r5 AU-2、NIST.800-53.r5 AU-3、NIST.800-53.r5 AU-6(3)、NIST.800-53.r5 AU-6(4)、NIST.800-53.r5 CA-7、NIST.800-53.r5 SC-7(9)、NIST.800-53.r5 SI-7(8)

カテゴリ: 識別 > ログ記録

重要度:

リソースタイプ: AWS::ECS::TaskDefinition

AWS Configルール:ecs-task-definition-log-設定

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

パラメータ: なし

このコントロールは、最新のアクティブな Amazon ECS タスク定義にロギング設定が指定されているかどうかを確認します。タスク定義に logConfiguration プロパティが定義されていない場合、または少なくとも 1 つのコンテナ定義で logDriver の値が null の場合、コントロールは失敗します。

ログ記録は Amazon ECS の信頼性、可用性、パフォーマンスの維持に有益です。タスク定義からデータを収集すると可視性が得られ、プロセスのデバッグやエラーの根本原因の特定に役立ちます。ECS タスク定義で定義する必要のないロギングソリューション (サードパーティのロギングソリューションなど) を使用している場合は、ログを無効にできますが、無効にする前に、ログが適切に取得、保存されていることを確認してください。

修正

Amazon ECS タスク定義のログ設定を定義するには、「Amazon Elastic Container Service デベロッパーガイド」の「タスク定義でログ設定を指定する」を参照してください。

[ECS.10] ECS Fargate サービスは、最新の Fargate プラットフォームバージョンで実行する必要があります。

関連する要件: 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::ECS::Service

AWS Configルール : ecs-fargate-latest-platform-version

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

パラメータ:

  • latestLinuxVersion: 1.4.0 (カスタマイズ不可)

  • latestWindowsVersion: 1.0.0 (カスタマイズ不可)

このコントロールは、Amazon ECS Fargate サービスが最新バージョンの Fargate プラットフォームで実行されているかどうかをチェックします。プラットフォームが最新バージョンでない場合、このコントロールは失敗します。

AWS Fargate プラットフォームバージョンとは、Fargate タスクインフラストラクチャーの特定のランタイム環境を指します。これは、カーネルとコンテナーのランタイムバージョンを組み合わせたものです。新しいプラットフォームのバージョンは、ランタイム環境の進化に伴ってリリースされます。例えば、新しいバージョンは、カーネルやオペレーティングシステムの更新、新機能、バグ修正、セキュリティ更新があったときなどにリリースされます。セキュリティの更新やパッチは、 Fargate のタスクに自動的にデプロイされます。プラットフォームバージョンに影響するセキュリティ問題が見つかった場合は、 AWS そのプラットフォームバージョンにパッチを適用します。

修正

プラットフォームバージョンを含む既存サービスの更新方法については、「Amazon Elastic Container Service デベロッパーガイド」の「サービスの更新」を参照してください。

[ECS.12] ECS クラスターはコンテナインサイトを使用する必要があります

関連する要件: NIST.800-53.r5 AU-6(3)、NIST.800-53.r5 AU-6(4)、NIST.800-53.r5 CA-7、NIST.800-53.r5 SI-2

カテゴリ: 識別 > ログ記録

重要度:

リソースタイプ: AWS::ECS::Cluster

AWS Configルール : ecs-container-insights-enabled

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

パラメータ: なし

このコントロールは、ECS クラスターが Container Insights を使用しているかどうかをチェックします。クラスターで Container Insights がセットアップされていない場合、このコントロールは失敗します。

モニタリングは、Amazon ECS クラスターの信頼性、可用性、パフォーマンスを維持する上で欠かせない要素です。 CloudWatch Container Insights を使用すると、コンテナ化されたアプリケーションやマイクロサービスからメトリクスやログを収集、集約、要約できます。 CloudWatch CPU、メモリ、ディスク、ネットワークなど、多くのリソースのメトリクスを自動的に収集します。Container Insights では、問題の迅速な特定と解決に役立つ、コンテナの再起動失敗などの診断情報も提供されます。Container Insights CloudWatch が収集するメトリクスにアラームを設定することもできます。

修正

Container Insights を使用するには、Amazon CloudWatch ユーザーガイドのサービスの更新」を参照してください。