27.1 セキュリティの推奨事項

  • Dockerコンテナには、デフォルトではリソースの制約がありません。そのため、すべてのコンテナには、ホストのカーネルによって提供されるすべてのCPUリソースおよびメモリリソースへのアクセスが提供されます。コンテナで使用できるリソースの量に制限を設定することにより、実行中の1つのコンテナによってより多くのリソースが消費され、実行中の他のコンテナがリソース不足になることがないようにする必要があります。

    • Docker runコマンドの--memoryフラグを使用して、Dockerコンテナで、コンテナによって使用されるメモリに対してハード制限が適用されるようにする必要があります。

    • Docker runコマンドの--cpuset-cpusフラグを使用して、Dockerコンテナで、実行中のコンテナによって使用されるCPUの容量に制限が適用されるようにする必要があります。

  • --pids-limitには300を設定して、任意の時点でコンテナ内で生成されるカーネルスレッドの数を制限する必要があります。これは、DoS攻撃を防ぐためです。

  • Docker runコマンドの--restartフラグを使用して、障害発生時のコンテナ再起動ポリシーを5に設定する必要があります。

  • RESTコンテナは、必ず、コンテナの起動後にヘルスステータスが[良好]と表示されてから使用する必要があります。コンテナのヘルスステータスを確認するには、次のコマンドを実行します。

    docker ps <container_name/ID>
  • RESTコンテナは、常にroot以外のユーザ(nds)として起動されます。追加のセキュリティ対策として、デーモンでのユーザ名前空間の再マッピングを有効にして、コンテナ内からの特権昇格攻撃を防止します。ユーザ名前空間の再マッピングの詳細については、「ユーザ名前空間でコンテナを分離する」を参照してください。