【Security Hub修復手順】[ECS.2] Amazon ECS サービスには、パブリック IP アドレスを自動で割り当てないでください

AWS SecurityHub 基礎セキュリティのベストプラクティスコントロール修復手順をご紹介します。
2023.01.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、AWS事業本部の平井です。

皆さん、お使いのAWS環境のセキュリティチェックはしていますか?

当エントリでは、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修正手順をご紹介します。

本記事の対象コントロール

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

[ECS.2] Amazon ECS services should not have public IP addresses assigned to them automatically

前提条件

本記事はAWS Security Hubで「AWS基礎セキュリティのベストプラクティススタンダード」を利用されている方向けの内容となります。 AWS Security Hubの詳細についてはこちらのブログをご覧ください。

対象コントロールの説明

今回の対象コントロールは、「Amazon ECS サービスには、パブリック IP アドレスを自動で割り当てないでください」です。

パブリック IPを割り当てた場合、インターネットからECSタスクへの意図しないアクセスのリスクが高まります。

一般的には、ECSタスクは、プライベートサブネットで起動し、アウトバウンド通信は NAT ゲートウェイ や VPCエンドポイントを利用することで、パブリックIPは不要になります。

そのため、パブリックIPが不要の環境を構築し、パブリックIPの自動割り当てを無効にしましょう。

修正手順

1 ステークホルダーに確認

まずはステークホルダー(リソースの作成者や管理している部署などの関係者)に以下を確認します。

  • ECSサービスには、パブリック IPの自動割り当てを無効にしてよいか
    • タスクにパブリック IPが必要な場合、抑制済みにします。
    • タスクにパブリック IPが不要な場合、コンソール画面からでは、既存のECSサービスの自動割り当ての変更はできないため、サービスを作り直します。 → [2 ECS サービスを新規作成する]の作業をしてください。
    • CLI経由であれば、既存のサービスから変更することが可能です。ただし、デプロイ方法がローリングアップデートの場合のみです。 → 下記のブログを参考に対応しますので、[3 CLI経由で既存サービスのIP自動割り当てを無効]の作業をしてください。     

※設定変更後、業務に影響が出る可能性があります。そのため、社内で注意深く確認と対応して下さい。

対象のECSサービスの確認方法

  1. AWSマネージメントコンソールにログインし、AWS 基礎セキュリティのベストプラクティス v1.0.0にて、「ECS.2」を検索します。タイトルを選択します。
  2. リソースの欄から失敗しているサービスを確認できます。
  3. ECSのコンソールを開き、[クラスター]の[サービス]から対象のサービスの詳細を確認できます。

2 ECS サービスを新規作成する

  1. ECSのコンソール画面から、対象のクラスターのサービスを作成します。既存のサービスと同じ設定にしますが、[ネットワーキング]の[パブリックIP]は、オフにします。

  2. 作成したサービスからタスクをデプロイすると、パブリックIPがないタスクが立ち上がります。タイミングのよいときに、既存のサービスのタスクは停止します。

    • サービスでのパブリック IP の自動割り当ての確認方法は、[サービス]の[ネットワーキング]で[パブリック IP の自動割り当て]から確認できます。DISABLEもしくは ENABLEDとなっています。

パブリック IPの自動割り当てをDISABLEにすることができました!

3 CLI経由で既存サービスのIP自動割り当てを無効

CLI経由で、パブリック IPの自動割り当てを無効にします。今回はCloudShellで変更を行います。

  1. CloudShellに遷移します。
  2. 下記のコマンドを実行します。クラスター名、サービス名、サブネットID、セキュリティグループIDは、各々変更してください
    aws ecs update-service \
    --cluster "cluster_name" \
    --service "service_service" \
    --network-configuration "awsvpcConfiguration={subnets=["subnet_id","subnet_id"],securityGroups="security_groups_id",assignPublicIp="DISABLED"}" \
    | jq  '.service.networkConfiguration.awsvpcConfiguration.assignPublicIp'
    • cluster_name:クラスター名
    • service_service: サービス名
    • subnet_id:サブネットID
    • security_groups_id:セキュリティグループID
  3. 実行結果がDISABLEDとなれば、既存のサービスのIP自動割り当てが無効になっています。

    • サービスでのパブリック IP の自動割り当ての確認方法は、[サービス]の[ネットワーキング]で[パブリック IP の自動割り当て]から確認できます。DISABLEもしくは ENABLEDとなっています。
  4. 無効化したサービスからローリングアップデートすると、パブリックIPがないタスクが立ち上がります。

パブリックIPがないタスクを起動することができました!

最後に

今回は、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修正手順をご紹介しました。

コントロールを修正して、お使いのAWS環境のセキュリティをパワーアップさせましょう!

最後までお読みいただきありがとうございました!どなたかのお役に立てれば幸いです。

以上、平井でした!