Amazon ECS サービスの露出の修正 - AWS Security Hub

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

Amazon ECS サービスの露出の修正

AWS Security Hub は、Amazon Elastic Container Service (Amazon ECS) サービスの公開結果を生成できます。

露出検出結果に関連する Amazon ECS サービスとその識別情報は、検出結果の詳細のリソースセクションに一覧表示されます。これらのリソースの詳細は、Security Hub コンソールで取得することも、Security Hub API の GetFindingsV2オペレーションを使用してプログラムで取得することもできます。

露出検出結果に関連するリソースを特定したら、不要なリソースを削除できます。不要なリソースを削除すると、露出プロファイルと AWS コストを削減できます。リソースが不可欠な場合は、以下の推奨される修復手順に従ってリスクを軽減します。修復トピックは、特性のタイプに基づいて分割されます。

1 つの公開結果には、複数の修復トピックで特定された問題が含まれます。逆に、1 つの修復トピックだけに対処することで、露出の検出結果に対処し、その重要度レベルを下げることができます。リスク修復へのアプローチは、組織の要件とワークロードによって異なります。

注記

このトピックで提供される修復ガイダンスでは、他の AWS リソースで追加の相談が必要になる場合があります。

Amazon ECS サービスの設定ミスの特性

Amazon ECS サービスの設定ミスの特徴と推奨される修復手順は次のとおりです。

Amazon ECS サービスは、昇格された権限で設定されたタスク定義を使用します。

昇格された権限を持つ Amazon ECS コンテナは、ホストシステムと同様の機能を持ち、ホストリソースやその他のコンテナへのアクセスを許可する可能性があります。この設定により、侵害されたコンテナを使用して意図した範囲外のリソースにアクセスまたは変更するリスクが高まり、コンテナのエスケープ、基盤となるホストへの不正アクセス、同じホスト上の他のコンテナに影響を与える違反につながる可能性があります。標準のセキュリティ原則に従って、 AWS は最小権限を付与することをお勧めします。つまり、タスクの実行に必要なアクセス許可のみを付与します。

タスク定義の確認と変更

公開で、タスク定義 ARN を識別します。Amazon ECS コンソールでタスク定義を開きます。タスク定義で、コンテナ定義で true に設定されている特権フラグを探します。特権モードが必要ない場合は、特権フラグなしで新しいタスク定義リビジョンを作成します。特権モードが必要な場合は、不正な変更を防ぐために読み取り専用ファイルシステムを使用するようにコンテナを設定することを検討してください。

Amazon ECS サービスには、IAM ロールを引き受けることができるコンテナがあります

IAM ロールを使用すると、Amazon ECS タスクは一時的な認証情報を使用して他の AWS サービスに安全にアクセスできます。コンテナが他の AWS リソースとやり取りする必要がある Amazon ECS タスクには、タスク実行ロールが必要になる場合があります。これはコンテナの機能に必要になる場合がありますが、ロールが正しく設定されていないと、コンテナが侵害された場合に攻撃者が悪用する可能性のある過剰な権限が付与され、 AWS リソースへの不正アクセス、データの盗難、インフラストラクチャの不正な変更が許可される可能性があります。標準のセキュリティ原則に従って、 AWS は最小特権アクセスを実装し、Amazon ECS タスクにアタッチされた IAM ロールを確認することをお勧めします。

アタッチされたロールを確認する

IAM ダッシュボードに移動し、識別されたロールを選択します。IAM ロールにアタッチされているアクセス許可ポリシーを確認します。タスクが他の AWS サービスとやり取りする必要がある場合は、タスク実行ロールを保持し、最小特権のアクセス許可の適用を検討してください。それ以外の場合は、実行ロールなしで新しいタスク定義リビジョンを作成します。

Amazon ECS サービスは、コンテナがルートファイルシステムにアクセスできるようにするタスク定義を使用します。

ホストルートファイルシステムにアクセスできる Amazon ECS コンテナは、ホストシステムで重要なファイルを読み取ったり、変更したり、実行したりする可能性があります。この設定により、侵害されたコンテナを使用して意図した範囲外のリソースにアクセスまたは変更し、ホストファイルシステムで機密データを公開するリスクが高まります。標準のセキュリティ原則に従って、 AWS は最小権限を付与することをお勧めします。つまり、タスクの実行に必要なアクセス許可のみを付与します。

ホストファイルシステムアクセスを持つコンテナの確認と変更

公開結果で、タスク定義 ARN を特定します。Amazon ECS コンソールでタスク定義を開きます。ホストパスマッピングを定義するタスク定義のボリュームセクションを探します。タスク定義を確認して、コンテナ機能にホストファイルシステムアクセスが必要かどうかを確認します。 ホストファイルシステムアクセスが必要ない場合は、新しいタスク定義リビジョンを作成し、ホストパスを使用するボリューム定義を削除します。ホストファイルシステムへのアクセスが必要な場合は、不正な変更を防ぐために読み取り専用ファイルシステムを使用するようにコンテナを設定することを検討してください。

Amazon ECS サービスは、ホストのプロセス名前空間を共有するように設定されたタスク定義を使用します。

公開された名前空間で実行されている Amazon ECS コンテナは、ホストシステムリソースやその他のコンテナ名前空間にアクセスする可能性があります。この設定により、侵害されたコンテナが分離境界からエスケープでき、プロセス、ネットワークインターフェイス、または意図した範囲外のその他のリソースにアクセスする可能性があります。プロセス ID (PID) 名前空間は、プロセス間を分離します。これにより、システムプロセスが可視化されることを防ぎ、PID 1 を含む PID の再利用が可能になります。ホストの PID 名前空間がコンテナと共有されている場合、コンテナは、ホストシステム上のすべてのプロセスを参照できるようになります。これにより、ホストとコンテナ間をプロセスレベルで分離するメリットが減ります。これらの要因により、ホスト自体でプロセスを操作して終了する機能など、プロセスへの不正アクセスが発生する可能性があります。は、標準のセキュリティ原則に従って、コンテナに対して適切な名前空間分離を維持する AWS ことを推奨します。

公開された名前空間でタスク定義を更新する

公開のリソースタブを開き、公開された名前空間を持つタスク定義を特定します。Amazon ECS コンソールでタスク定義を開きます。ホストの値を持つ pidMode 設定を探します。これにより、プロセス ID 名前空間がホストと共有されます。タスク定義から pidMode: ホスト設定を削除して、コンテナが適切な名前空間分離で実行されるようにします。

Amazon ECS サービスは、環境変数でクリアテキスト認証情報で設定されたタスク定義を使用します。

環境変数にクリアテキスト認証情報を持つ Amazon ECS コンテナは、攻撃者がタスク定義、コンテナ環境、またはコンテナログにアクセスした場合に侵害される可能性のある機密認証情報を公開します。これにより、漏洩した認証情報が他の AWS サービスやリソースへのアクセスに使用される可能性があるため、重大なセキュリティリスクが発生します。

クリアテキスト認証情報を置き換える

公開結果で、クリアテキスト認証情報を使用してタスク定義を特定します。Amazon ECS コンソールでタスク定義を開きます。 AWS アクセスキー、データベースパスワード、API トークンなどの機密値を含む環境変数をコンテナ定義で探します。

認証情報を渡すには、次の代替方法を検討してください。

  • AWS アクセスキーを使用する代わりに、IAM タスク実行ロールとタスクロールを使用して、コンテナにアクセス許可を付与します。

  • Secrets Manager に認証情報をシーク AWS レットとして保存し、タスク定義で参照します。

タスク定義の更新

認証情報を安全に処理するタスク定義の新しいリビジョンを作成します。次に、新しいタスク定義リビジョンを使用するように Amazon ECS サービスを更新します。

Amazon ECS サービスにオープンセキュリティグループがある

セキュリティグループは、Amazon ECS タスクの仮想ファイアウォールとして機能し、インバウンドトラフィックとアウトバウンドトラフィックを制御します。任意の IP アドレスからの無制限のアクセスを許可するオープンセキュリティグループは、コンテナを不正アクセスにさらし、自動スキャンツールやターゲットを絞った攻撃にさらされるリスクを高める可能性があります。標準のセキュリティ原則に従って、 はセキュリティグループアクセスを特定の IP アドレスとポートに制限 AWS することをお勧めします。

セキュリティグループのルールを確認し、現在の設定を評価する

Amazon ECS セキュリティグループのリソースを開きます。などの幅広い IP 範囲からオープンおよびアクセス可能なポートを評価します(0.0.0.0/0 or ::/0)

セキュリティグループルールを変更する

セキュリティグループのルールを変更して、特定の信頼された IP アドレスまたは範囲へのアクセスを制限します。セキュリティグループルールを更新するときは、必要なソース IP 範囲ごとにルールを作成するか、特定のポートへのアクセスを制限することで、異なるネットワークセグメントのアクセス要件を分離することを検討してください。

セキュリティグループルールを変更する

代替アクセス方法については、次のオプションを検討してください。

  • Session Manager は、インバウンドポート、SSH キーの管理、踏み台ホストの維持を必要とせずに、Amazon EC2 インスタンスへの安全なシェルアクセスを提供します。

  • NACLsは、サブネットレベルで追加のセキュリティレイヤーを提供します。セキュリティグループとは異なり、NACLs はステートレスであり、インバウンドルールとアウトバウンドルールの両方を明示的に定義する必要があります。

Amazon ECS サービスにパブリック IP アドレスがある

タスクにパブリック IP アドレスが割り当てられている Amazon ECS サービスは、インターネットから直接アクセスできます。これは、公開する必要があるサービスで必要になる場合がありますが、攻撃対象領域が増加し、不正アクセスの可能性が高まります。

パブリック IP アドレスを持つサービスを特定する

公開結果で、タスクにパブリック IP アドレスが割り当てられている Amazon ECS サービスを特定します。サービスassignPublicIp設定ENABLEDで の値を持つ 設定を探します。

タスク定義の更新

パブリック IP アドレスを無効にするタスク定義の新しいリビジョンを作成します。次に、新しいタスク定義リビジョンを使用するように Amazon ECS サービスを更新します。

プライベートネットワークアクセスパターンを実装する

ウェブアプリケーションを実行しているインスタンスの場合は、Load Balancer (LB) の使用を検討してください。LBs は、LB がパブリックサブネットで実行され、インターネットトラフィックを処理する間、インスタンスがプライベートサブネットで実行されるように設定できます。

Amazon ECS サービスは、ホストネットワークモードが有効に設定されたタスク定義を使用します。

ホストネットワークモードで実行されている Amazon ECS コンテナは、ネットワーク名前空間をホストと共有し、ホストのネットワークインターフェイス、ポート、ルーティングテーブルに直接アクセスできるようにします。この設定は、コンテナによって提供されるネットワーク分離をバイパスし、コンテナで実行されているサービスを外部ネットワークに直接公開し、コンテナがホストネットワーク設定を変更できるようにします。は、標準のセキュリティ原則に従って、コンテナの適切なネットワーク分離を維持する AWS ことを推奨します。

ホストネットワークモードを無効にする

公開結果で、ホストネットワーキングモードでタスク定義を特定します。Amazon ECS コンソールでタスク定義を開きます。タスク定義でホストの値を持つ networkMode 設定を探します。

ホストネットワークモードを無効にするには、次のオプションを検討してください。

  • awsvpc ネットワークモードは、各タスクに独自の Elastic Network Interface を提供することで、最も強力なレベルのネットワーク分離を提供します。

  • bridge ネットワークモードは、ポートマッピングが特定のコンテナポートをホストに公開できるようにしながら、分離を提供します。

タスク定義の更新

更新されたネットワークモード設定を使用して、タスク定義の新しいリビジョンを作成します。次に、新しいタスク定義リビジョンを使用するように Amazon ECS サービスを更新します。

Amazon ECS サービスに関連付けられた IAM ロールには管理アクセスポリシーがあります

Amazon ECS タスクに管理アクセスポリシーがアタッチされた IAM ロールは、コンテナオペレーションに通常必要な範囲を超える広範なアクセス許可を提供します。この設定により、侵害されたコンテナを使用して AWS 環境全体のリソースにアクセスまたは変更するリスクが高まります。標準のセキュリティ原則に従って、 は、タスクが機能するために必要なアクセス許可のみを付与して、最小特権アクセスを実装 AWS することをお勧めします。

管理ポリシーの確認と識別

リソース ID で、IAM ロール名を指定します。IAM ダッシュボードに移動し、識別されたロールを選択します。IAM ロールにアタッチされているアクセス許可ポリシーを確認します。ポリシーが AWS 管理ポリシーの場合は、 を探しますAdministratorAccess。それ以外の場合は、ポリシードキュメントで、ステートメントが"Effect": "Allow", "Action": "*", and "Resource": "*"一緒にあるステートメントを探します。

最小特権アクセスの実装

管理ポリシーを、インスタンスが機能するために必要な特定のアクセス許可のみを付与するポリシーに置き換えます。不要なアクセス許可を特定するには、IAM Access Analyzer を使用して、アクセス履歴に基づいてポリシーを変更する方法を理解します。または、新しい IAM ロールを作成して、既存のロールを使用している他のアプリケーションに影響を与えないようにすることもできます。このシナリオでは、新しい IAM ロールを作成し、新しい IAM ロールをインスタンスに関連付けます。

安全な設定に関する考慮事項

インスタンスにサービスレベルの管理権限が必要な場合は、リスクを軽減するためにこれらの追加のセキュリティコントロールを実装することを検討してください。

  • MFA は、追加の形式の認証を要求することで、セキュリティレイヤーを追加します。これにより、認証情報が侵害された場合でも、不正アクセスを防ぐことができます。

  • 条件要素を設定すると、ソース IP や MFA の経過時間などの要因に基づいて、管理アクセス許可をいつ、どのように使用できるかを制限できます。

タスク定義の更新

新規または更新された IAM ロールを参照するタスク定義の新しいリビジョンを作成します。次に、新しいタスク定義リビジョンを使用するように Amazon ECS サービスを更新します。

Amazon ECS サービスの脆弱性特性

Amazon ECS の到達可能性特性と推奨される修復手順は次のとおりです。

Amazon ECS サービスには、悪用の可能性の高いネットワークで悪用可能なソフトウェアの脆弱性を持つコンテナがあります。

  1. 露出を理解する

    パッケージ脆弱性の検出結果は、共通脆弱性識別子 (CVEs) にさらされる AWS 環境内のソフトウェアパッケージを識別します。攻撃者は、こうしたパッチが適用されていない脆弱性を利用し、データの機密性、完全性、可用性を侵害したり、他のシステムにアクセスしたりする可能性があります。ECR コンテナイメージには、パッケージの脆弱性の検出結果を含めることができます。

  2. 露出を修正する

    1. パッケージバージョンを更新する

      Lambda 関数のパッケージ脆弱性の検出結果を確認します。Amazon Inspector の提案に従ってパッケージバージョンを更新します。詳細については、Amazon Inspector ユーザーガイド」の「Amazon Inspector の検出結果の詳細の表示」を参照してください。 Amazon Inspector Amazon Inspector コンソールの検出結果の詳細の修復セクションには、パッケージを更新するために実行できるコマンドが表示されます。

    2. ベースコンテナイメージを更新する

      ベースコンテナイメージを定期的に再構築および更新して、コンテナを最新の状態に保ちます。イメージを再構築するときは、アタックサーフェスを減らすために不要なコンポーネントを含めないでください。コンテナイメージを再構築する手順については、「イメージを頻繁に再構築する」を参照してください。

Amazon ECS サービスにソフトウェアの脆弱性があるコンテナがある

Amazon ECS コンテナにインストールされているソフトウェアパッケージは、共通脆弱性識別子 (CVEs) に公開される可能性があります。優先度の低い脆弱性は、優先度の高い脆弱性と比較して重要度または悪用可能性が低いセキュリティの弱点を表します。これらの脆弱性は即時のリスクが低くなりますが、攻撃者はパッチが適用されていないこれらの脆弱性を悪用してデータの機密性、完全性、可用性を侵害したり、他のシステムにアクセスしたりする可能性があります。

影響を受けるコンテナイメージを更新する

特性の脆弱性タブのリファレンスセクションを確認します。ベンダーのドキュメントには、特定の修復ガイダンスが含まれている場合があります。

以下の一般的なガイドラインに従って、適切な修復を適用します。

  • 影響を受けるパッケージのパッチ適用されたバージョンを使用するようにコンテナイメージを更新します。

  • アプリケーションの影響を受ける依存関係を最新の安全なバージョンに更新します。

コンテナイメージを更新したら、コンテナレジストリにプッシュし、新しいイメージを使用するように Amazon ECS タスク定義を更新します。

今後の考慮事項

コンテナイメージのセキュリティ体制をさらに強化するには、Amazon ECS タスクとコンテナセキュリティのベストプラクティスに従うことを検討してください。Amazon Inspector は、コンテナの CVEs を自動的にスキャンするように設定できます。Amazon Inspector は、自動修復のために Security Hub と統合することもできます。Systems Manager メンテナンスウィンドウを使用して定期的なパッチ適用スケジュールを実装し、コンテナの中断を最小限に抑えることを検討してください。