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

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

Amazon の Security Hub コントロール ECS

これらの Security Hub コントロールは、Amazon Elastic Container Service (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(11) NIST.800-53.r5 SC-7、 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 は、このパラメータを設定しません。このルールから除外される ARNs Amazon ECSサービスのカンマ区切りリスト。

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

    このルールはNON_COMPLIANT、Amazon ECSサービスが を AssignPublicIP に設定ENABLEDし、このパラメータリストで指定されていない場合に発生します。

このコントロールは、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-mode-check

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

パラメータ : なし

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

プロセス ID (PID) 名前空間は、プロセス間の分離を提供します。これにより、システムプロセスが表示されなくなり、1 PID を含むPIDs再利用が可能になります。ホスト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 Classic コンソールを開きます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 は、組織のセキュリティ体制の改善に役立ちます。シークレットと認証情報は、コンテナインスタンスに直接渡したり、コードにハードコーディングしたりするのではなく、Parameter Store を使用して保存することが推奨されます。

修正

を使用してパラメータを作成するにはSSM、「 ユーザーガイド」の「Systems Manager パラメータの作成AWS 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-configuration

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

パラメータ : なし

このコントロールは、最新のアクティブな 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クラスターは Container Insights を使用する必要があります

関連する要件: 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 を使用して、コンテナ化されたアプリケーションおよびマイクロサービスからメトリクスとログを収集、集約、要約します。 はCPU、、メモリ、ディスク、ネットワークなど、多くのリソースのメトリクス CloudWatch を自動的に収集します。Container Insights では、問題の迅速な特定と解決に役立つ、コンテナの再起動失敗などの診断情報も提供されます。Container Insights が収集するメトリクスに CloudWatch アラームを設定することもできます。

修正

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

〔ECS.13] ECSサービスにはタグを付ける必要があります

カテゴリ: 識別 > インベントリ > タグ付け

重要度:

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

AWS Configルール: tagged-ecs-service (カスタム Security Hub ルール)

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

パラメータ :

パラメータ 説明 [Type] (タイプ) 許可されているカスタム値 Security Hub のデフォルト値
requiredTagKeys 評価されたリソースに含める必要があるシステム以外のタグキーのリスト。タグキーでは、大文字と小文字が区別されます。 StringList AWS 要件を満たすタグのリスト デフォルト値なし

このコントロールは、Amazon ECSサービスにパラメータ で定義された特定のキーを持つタグがあるかどうかをチェックしますrequiredTagKeys。サービスにタグキーがない場合、またはパラメータ で指定されたすべてのキーがない場合、コントロールは失敗しますrequiredTagKeys。パラメータが指定されていない場合、コントロールrequiredTagKeysはタグキーの存在のみをチェックし、サービスがどのキーでもタグ付けされていない場合は失敗します。自動的に適用され、 で始まるシステムタグaws:は無視されます。

タグは、 AWS リソースに割り当てるラベルで、キーとオプションの値で構成されます。タグを作成することで、リソースを目的、所有者、環境その他の基準別に分類できます。タグは、リソースの識別、整理、検索、フィルタリングに役立ちます。また、タグ付けは、アクションと通知の説明責任のあるリソース所有者を追跡するのに役立ちます。タグ付けを使用すると、属性ベースのアクセスコントロール (ABAC) を認証戦略として実装できます。これは、タグに基づいてアクセス許可を定義します。タグは、IAMエンティティ (ユーザーまたはロール) および AWS リソースにアタッチできます。IAM プリンシパルには、単一のABACポリシーまたは個別のポリシーセットを作成できます。プリンシパルのタグがリソースタグと一致するときにオペレーションを許可するように、これらのABACポリシーを設計できます。詳細については、「 IAMユーザーガイドABAC」の「 とは AWS」を参照してください。

注記

個人を特定できる情報 (PII) やその他の機密情報や機密情報をタグに追加しないでください。タグには AWS サービス、 を含む多くの がアクセスできます AWS Billing。タグ付けのベストプラクティスの詳細については、「」の「 AWS リソースのタグ付け」を参照してくださいAWS 全般のリファレンス

修正

ECS サービスにタグを追加するには、「Amazon Elastic Container Service デベロッパーガイド」の「Amazon ECSリソースのタグ付け」を参照してください。

〔ECS0.14] ECSクラスターにはタグを付ける必要があります

カテゴリ: 識別 > インベントリ > タグ付け

重要度:

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

AWS Configルール: tagged-ecs-cluster (カスタム Security Hub ルール)

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

パラメータ :

パラメータ 説明 [Type] (タイプ) 許可されているカスタム値 Security Hub のデフォルト値
requiredTagKeys 評価されたリソースに含める必要があるシステム以外のタグキーのリスト。タグキーでは、大文字と小文字が区別されます。 StringList AWS 要件を満たすタグのリスト デフォルト値なし

このコントロールは、Amazon ECSクラスターにパラメータ で定義された特定のキーを持つタグがあるかどうかをチェックしますrequiredTagKeys。クラスターにタグキーがない場合、またはパラメータ で指定されたすべてのキーがない場合、コントロールは失敗しますrequiredTagKeys。パラメータが指定されていない場合、コントロールrequiredTagKeysはタグキーの存在のみをチェックし、クラスターにキーがタグ付けされていない場合は失敗します。自動的に適用され、 で始まるシステムタグaws:は無視されます。

タグは、 AWS リソースに割り当てるラベルで、キーとオプションの値で構成されます。タグを作成することで、リソースを目的、所有者、環境その他の基準別に分類できます。タグは、リソースの識別、整理、検索、フィルタリングに役立ちます。また、タグ付けは、アクションと通知の説明責任のあるリソース所有者を追跡するのに役立ちます。タグ付けを使用すると、属性ベースのアクセスコントロール (ABAC) を認証戦略として実装できます。これは、タグに基づいてアクセス許可を定義します。タグは、IAMエンティティ (ユーザーまたはロール) および AWS リソースにアタッチできます。IAM プリンシパルには、単一のABACポリシーまたは個別のポリシーセットを作成できます。プリンシパルのタグがリソースタグと一致するときにオペレーションを許可するように、これらのABACポリシーを設計できます。詳細については、「 IAMユーザーガイドABAC」の「 とは AWS」を参照してください。

注記

個人を特定できる情報 (PII) やその他の機密情報や機密情報をタグに追加しないでください。タグには AWS サービス、 を含む多くの がアクセスできます AWS Billing。タグ付けのベストプラクティスの詳細については、「」の「 AWS リソースのタグ付け」を参照してくださいAWS 全般のリファレンス

修正

ECS クラスターにタグを追加するには、「Amazon Elastic Container Service デベロッパーガイド」の「Amazon ECSリソースのタグ付け」を参照してください。

〔ECS.15] ECSタスク定義にはタグを付ける必要があります

カテゴリ: 識別 > インベントリ > タグ付け

重要度:

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

AWS Configルール: tagged-ecs-taskdefinition (カスタム Security Hub ルール)

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

パラメータ :

パラメータ 説明 [Type] (タイプ) 許可されているカスタム値 Security Hub のデフォルト値
requiredTagKeys 評価されたリソースに含める必要があるシステム以外のタグキーのリスト。タグキーでは、大文字と小文字が区別されます。 StringList AWS 要件を満たすタグのリスト デフォルト値なし

このコントロールは、Amazon ECSタスク定義にパラメータ で定義された特定のキーを持つタグがあるかどうかをチェックしますrequiredTagKeys。タスク定義にタグキーがない場合、またはパラメータ で指定されたすべてのキーがない場合、コントロールは失敗しますrequiredTagKeys。パラメータが指定されていない場合、コントロールrequiredTagKeysはタグキーの存在のみをチェックし、タスク定義にキーがタグ付けされていない場合は失敗します。自動的に適用され、 で始まるシステムタグaws:は無視されます。

タグは、 AWS リソースに割り当てるラベルで、キーとオプションの値で構成されます。タグを作成することで、リソースを目的、所有者、環境その他の基準別に分類できます。タグは、リソースの識別、整理、検索、フィルタリングに役立ちます。また、タグ付けは、アクションと通知の説明責任のあるリソース所有者を追跡するのに役立ちます。タグ付けを使用すると、属性ベースのアクセスコントロール (ABAC) を認証戦略として実装できます。これは、タグに基づいてアクセス許可を定義します。タグは、IAMエンティティ (ユーザーまたはロール) および AWS リソースにアタッチできます。IAM プリンシパルには、単一のABACポリシーまたは個別のポリシーセットを作成できます。プリンシパルのタグがリソースタグと一致するときにオペレーションを許可するように、これらのABACポリシーを設計できます。詳細については、「 IAMユーザーガイドABAC」の「 とは AWS」を参照してください。

注記

個人を特定できる情報 (PII) やその他の機密情報や機密情報をタグに追加しないでください。タグには AWS サービス、 を含む多くの がアクセスできます AWS Billing。タグ付けのベストプラクティスの詳細については、「」の「 AWS リソースのタグ付け」を参照してくださいAWS 全般のリファレンス

修正

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