ketyiaの学んだこと議事録

このサイトでは学んだことを記事にまとめていきます

CNDの勉強58 ~コンテナについて~


こんにちは!
CNDの勉強をしていきます

今回は「コンテナ」についてまとめていきます。

コンテナについて


コンテナとは、サーバー上でアプリケーションやその必要なものをまとめた箱のようなものです。アプリケーションやその必要なものを持ち歩いたり、他のコンテナと交換したりすることができます。

コンテナを使うと、サーバー上でアプリケーションやその必要なものを管理する手間が省けます。例えば、アプリケーションがどんな環境でも動くようにすることや、アプリケーションを別々に作っておく必要がなくなります!

また、CaaS(Container as a Service)というワードもあり、コンテナ技術により仮想化されたシステム基盤をサービスとして提供するものです。ユーザーはコンテナの作成や操作に関する手間や負担をかけずに、クラウド上でコンテナの運用や管理を利用できます

下記に関連する技術を記載します!


コンテナエンジン

コンテナと呼ばれる仮想化技術を実現するためのソフトウェアです。アプリケーションの実行環境を仮想的に構築する技術で、アプリケーションが使うミドルウェアやライブラリなどを一つのパッケージにまとめています。


コンテナオーケストレーション

複数のコンテナを効率良く運用・開発するための技術のことで、ソフトウェアコンテナと動的環境のライフサイクルを管理する自動化プロセスを行います。

サービスとしては、「Docker Swarm」「OPENS-IFT」「Kubrtnetes」などがあります。


アーキテクチャ



システムコンテナ

オペレーティングシステムとして利用され、複数のサービスを実行するコンテナです。

サービスとしては、「LXC」「OpenVZ」等があります。


アプリケーションコンテナ

単一のアプリケーションを実行するために使用されるコンテナです。

サービスとしては、「Docker」「Rocket」等があります。


Docker


Dockerは、コンテナ形式でアプリケーションおよびすべての依存関係を開発、パッケージ化、実行するために使用されるオープンソーステクノロジで、アプリケーションがシームレスな環境で動作することを保証してます。

OSレベルの仮想化を通じて、PaaSを提供しコンテナ化されたソフトウェアパッケージを配布しています!

また、ネットワーク構築アーキテクチャは、CNMというインターフェースのセットで開発されています。

Kubernets


K8sは、googleによって開発されたオープンソースの移植や拡張が可能なオーケストレーションプラットフォームで、コンテナ化されたアプリケーションやマイクロサービスを管理します。

分散型コンテナを管理して、デプロイパターンを生成しアプリケーションのフェイルオーバーや冗長性を実行する復元機能を持ったフレームワークが含まれています

コンテナセキュリティの脅威


イメージの脅威

・イメージに脆弱性

マルウェアを組み込まれる

・信用できないイメージの使用


レジストリの脅威

・安全性の高くない接続

レジストリの古いイメージ

・不十分な認証認可


コンテナの脅威

・ランタイムソフトウェアの脆弱性

・安全性の高くない設定

・アプリの脆弱性


ホストOSの脅威

・大規模な攻撃可能箇所

・共有カーネル

コンポーネント脆弱性

ファイルシステムの改ざん


オーケストレーションの脅威

・無制限の管理アクセス

・非認証アクセス

・適切に分離されていないネットワークトラフィック

・ワークロードの機密レベルの混合

Dockerに対する攻撃


エスケープ

コンテナへのアクセス権を持ったユーザによるホストサーバのrootアクセス権の取得

ロスコンテナ攻撃

コンテナへのアクセス権の取得及び、それを利用した同じホストやローカルネットワーク内の他のコンテナの攻撃

コンテナ間攻撃

単一コンテナへの非認証アクセスの取得

Dockerレジストリ攻撃

Dockerレジストリへのアクセス権の取得


Dockerセキュリティ機能


Cgroup

コンテナによるCPU、メモリ、スワップ、ブロックIO、ネットワークへのアクセスを制御と制限をします

LSM

AppArmorやSELinuxがDockerエンジンでサポートされる

ケーパビリティ

デフォルトでDockerはLinuxケーパビリティグループの37個の内14個だけを許可します

Seccomp

細かいシステムコールごとの制御

Userns

ホスト制限のないIDにrootを再マッピングするユーザのネームスペースのプロセス


まとめ


ここまでです!

現在のITでは、欠かすことのできない存在になっているコンテナについて学びました!
ここら辺は、Dockerとかを触ってみるのが一番の勉強になるのかなと感じます!初めてブラウザで起動した画面が表示されたときは少し感動すると思います♪

ここまで読んでいただきありがとうございました。