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

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

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

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

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

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

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

注記

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

目次

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

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

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

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

タスク定義の確認と変更

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

タスク定義の更新

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

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

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

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

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

セキュリティグループルールの変更

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

セキュリティグループルールの変更

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

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

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

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

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

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

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

タスク定義の更新

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

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

ウェブアプリケーションを実行しているインスタンスの場合は、Load Balancer (LB) の使用を検討してください。LB は、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 サービスを更新します。

ECS サービスに関連付けられた IAM ロールにサービス管理ポリシーがある

サービス管理者ポリシーは、Amazon ECS タスクとサービスに、特定の AWS サービス内のすべてのアクションを実行するアクセス許可を付与します。これらのポリシーには通常、Amazon ECS タスク機能に必要なアクセス許可が含まれます。Amazon ECS タスクのサービス管理者ポリシーを IAM ロールに提供すると、必要な最小限のアクセス許可のセットではなく、コンテナが侵害された場合に攻撃の範囲を広げることができます。標準のセキュリティ原則に従って、 AWS は最小権限を付与することをお勧めします。これは、タスクの実行に必要なアクセス許可のみを付与することを意味します。

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

リソース ID で、Amazon ECS タスクロールと実行ロール名を識別します。IAM ダッシュボードに移動し、識別されたロールを選択します。これらの IAM ロールにアタッチされているアクセス許可ポリシーを確認します。サービスへのフルアクセスを許可するポリシーステートメントを探します (例: "s3": "*", "ecr": "*")。IAM ポリシーを編集する手順については、IAM ユーザーガイドの「IAM ポリシーの編集」を参照してください。

最小特権アクセスの実装

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

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

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

タスク定義の更新

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

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

Amazon ECS の脆弱性特性と推奨される修復手順は次のとおりです。

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

  1. 露出を理解する

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

  2. 露出を修正する

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

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

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

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

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

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

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

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

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

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

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

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

今後の考慮事項

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

Amazon ECS サービスにはEnd-Of-Life オペレーティングシステムを備えたコンテナがあります。

Amazon ECS コンテナは、元の開発者によってサポートまたは保守されなくなったend-of-lifeオペレーティングシステムに依存しています。これにより、コンテナがセキュリティの脆弱性と潜在的な攻撃にさらされます。オペレーティングシステムend-of-life、ベンダーは通常、新しいセキュリティアドバイザリのリリースを停止します。既存のセキュリティアドバイザリは、ベンダーフィードから削除することもできます。その結果、Amazon Inspector は既知の CVEs の検出結果の生成を停止し、セキュリティカバレッジにさらなるギャップが生じる可能性があります。

Amazon Inspector で検出できるサポート終了に達したオペレーティングシステムの詳細については、Amazon Inspector ユーザーガイド」の「廃止されたオペレーティングシステム」を参照してください。 Amazon Inspector

サポートされているオペレーティングシステムバージョンへの更新

サポートされているバージョンのオペレーティングシステムに更新することをお勧めします。公開結果で、リソースを開いて、影響を受けるリソースにアクセスします。コンテナイメージのオペレーティングシステムのバージョンを更新する前に、Amazon Inspector ユーザーガイド「サポートされているオペレーティングシステム」で、現在サポートされている OS バージョンのリストを確認してください。コンテナイメージを更新したら、コンテナレジストリにプッシュし、Amazon ECS タスク定義を更新して新しいイメージを使用します。

Amazon ECS サービスに悪意のあるソフトウェアパッケージを含むコンテナがある

悪意のあるパッケージは、システムとデータの機密性、完全性、可用性を侵害するように設計された有害なコードを含むソフトウェアコンポーネントです。悪意のあるパッケージは、攻撃者が脆弱性を悪用することなく悪意のあるコードを自動的に実行できるため、Amazon ECS コンテナイメージにアクティブで重大な脅威をもたらします。セキュリティのベストプラクティスに従って、 は潜在的な攻撃からコンテナを保護するために悪意のあるパッケージを削除 AWS することをお勧めします。

悪意のあるパッケージを削除する

脅威を理解するには、特性の脆弱性タブの「リファレンス」セクションにある悪意のあるパッケージの詳細を確認してください。特定された悪意のあるパッケージをコンテナイメージから削除し、再構築します。詳細については、AWS 「Amazon ECS API リファレンス」のContainerDependency」を参照してください。コンテナイメージを更新したら、コンテナレジストリにプッシュし、Amazon ECS タスク定義を更新して新しいイメージを使用します。詳細については、「Amazon ECS デベロッパーガイド」の「コンソールを使用した Amazon ECS タスク定義の更新」を参照してください。 AWS