0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コンテナのルートファイルシステムを読み取り専用に設定する方法

Posted at

AWS Security Hubを有効化したら、ECSのタスク定義まわりでセキュリティリスクが何点か検知されました。

今回はその中から、「コンテナのルートファイルシステムに対する読み取り専用アクセスが設定されていない」という問題を対応しました。

問題の内容

Security Hubで検出されたセキュリティリスクの内容は以下の通りです。

ECS containers should be limited to read-only access to root filesystems

This control checks if ECS containers are limited to read-only access to mounted root filesystems. This control fails if the ReadonlyRootFilesystem parameter in the container definition of ECS task definitions is set to ‘false’.

解説

この警告では、ECSタスク定義のReadonlyRootFilesystemパラメータがfalseに設定されていることが指摘されています。この設定が原因で、コンテナのルートファイルシステムが書き込み可能になっている状態です。

ルートファイルシステムが書き込み可能だと、以下のようなリスクがあります。

  1. システム設定ファイルの改ざん
    • 例: /etc/hosts/etc/passwdが攻撃者によって書き換えられ、DNS解決やユーザー情報が不正に変更される
  2. 実行可能ファイルの改ざん
    • 例: /usr/bin/node/bin/shが改ざんされると、意図しないコードが実行される
  3. 不適切な書き込みによるリソース圧迫
    • 例: /var/log/dev/shmに過剰なログや一時ファイルが書き込まれることで、メモリやストレージを使い果たしてしまう

解決策

1. ReadonlyRootFilesystemを有効にする

ECSタスク定義のcontainerDefinitionsセクションに以下を追加します。

"readonlyRootFilesystem": true

これにより、コンテナ全体のルートファイルシステムが読み取り専用になり、不正な書き込みや改ざんを防ぐことができます。

2. 一時ファイルへの対応

一部のアプリケーションでは、ログの出力や一時データの処理のために書き込みが必要な場合があります。このような場合、特定のディレクトリだけ書き込み可能にする設定を追加します。

ECSタスク定義で以下のようにvolumesmountPointsを設定します。

まずはボリュームを定義します。Fargate環境ではhostオプションは空にします(自動的に一時ストレージが使用される)。

  "volumes": [
    {
      "name": "temp-storage",
      "host": {}
    }
  ]

先ほど定義したボリュームを、コンテナ内の/tmpディレクトリにマウントします。

  "mountPoints": [
    {
      "sourceVolume": "temp-storage",
      "containerPath": "/tmp",
      "readOnly": false
    }
  ]

これにより、/tmpディレクトリだけが書き込み可能となり、他のルートファイルシステム部分は引き続き読み取り専用のままとなります。

注意点
アプリケーションが特定の場所(例: /var/log/data)に書き込みを行っている場合は、その書き込み先を/tmpに変更する必要があります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?