コンテナ技術の話題で耳にすることが多い「Kubernetes(クバネテス/クバネティス)ですが、よく理解できていないという方も少なくないでしょう。
本記事ではそんなKubernetesについて、基本的な特徴やメリット・デメリットから、使用時の注意点とポイントまで詳しく解説します。
Kubernetesについて知りたい方、コンテナ技術の導入を検討している方はぜひご覧ください。
Kubernetes(クバネテス)とは
Kubernetesは通称「K8s(ケーエイツ)」と呼ばれる、コンテナ管理のためにGoogleが開発したオープンソースプラットフォームです。
複数のコンテナを管理・自動化するコンテナオーケストレーションのひとつで、コンテナの構築・取得・デプロイ・維持の手間を省いてくれるため作業の効率化が図れます。
また高度な専門知識を持たない人でもコンテナを扱えるようになるため、コンテナ技術の導入がより手軽になります。
Kubernetesのメリット
Kubernetesの主なメリットは以下の通りです。
- 自動的にトラフィックを分散させてくれるため、安定的にコンテナを運用できる
- コンテナの作成・削除・リソース採用もすべて自動で任せられる
- リソース情報を計算し、自動的にコンテナを最適な形に配置してくれる
- コンテナの自動更新(ローリング更新)にも対応している
不具合が起きた場合には自動復旧する機能もあるため、万が一の場合も安心です。
Kubernetesのデメリット
Kubernetesには以下のデメリットも存在します。
- アップデートの回数が多い
- 拡張性の高さから持て余してしまいがち
- 一元管理だからこそセキュリティ面での不安がある
Kubernetesは非常に拡張性が高く、次から次へと新たな機能がアップデートされていきます。
そのため、利用する側も常にアップデート情報や活用方法の知識を身に着けなければなりません。
また、セキュリティ管理が甘いと大きな被害に繋がる恐れもある点にも注意が必要です。
Kubernetesセキュリティのポイント
複数のコンテナを同時に管理できるKubernetesですが、裏を返せば悪意の第三者による攻撃で甚大な被害を受けるリスクがあるともいえます。
そのため、Kubernetesを利用する場合には以下のポイントを踏まえてセキュリティを強化しておくことが大切です。
- Kubernetes APIへのアクセスを制限する
- マスターノードを保護する
- Podセキュリティを確保する
各ポイントについて詳しく解説していくので、Kubernetesの利用を検討している方は事前に確認しておきましょう。
また、すでに導入している方も現時点でセキュリティに問題がないかチェックしてみてください。
Kubernetes APIへのアクセスを制限する
Kubernetesでハッカーなどから狙われやすいのが、Kubernetes APIです。
コンテナ実行には欠かせない機能であり、通常はこちらにアクセスして操作を行います。
ただし外部からアクセスをすべて許可しているとハッカーの被害に遭うリスクが高まるため、必ずアクセス制限を設けましょう。
方法としては、以下の3つがあります。
- すべてのAPIにデータを暗号化するTLSを導入する
- OIDCサーバーなどを使いAPI認証を行う
- RBAC(Role-based Access Control)などを使いAPI認可を行う
API認証とAPI認可の違いについて知りたい方は、 Microsoft Learnで詳しい解説があったのでそちらを参考にしてください。
マスターノードを保護する
マスターノードは、コンテナの実行ホストを提供する仮想マシン(ワーカーノード)を管理するものです。
役割が異なるノードの集合体をKubernetesでは「クラスタ」と呼ぶため、クラスタを管理するものがマスターノードと言い換えても良いでしょう。
非常に重要な役割を担うため、以下のように安全性には十分配慮する必要があります。
- 余分なアプリケーションやライブラリはインストールしない
- カーネル・レベルでアクセス制御を行う
- ノードのログファイルを継続的に監視する
万が一ログファイルで不審な動きを発見した場合には、念のためマルウェアに感染していないか確認しておきましょう。
Podセキュリティを確保する
Kubernetes Podのコンテナを1つ以上管理している最小単位のリソースで、ネットワーキング機能を実装しています。
先に挙げたクラスタ(ノードの集合体)内にあるPod間のネットワークは通信制限がされていないことから、ネットワークポリシーが割り当てられるまでの間は無防備な状態です。
そのため、悪意の第三者による攻撃を受ければ、Pod間にあるすべてのコンテナが被害に遭う恐れがあるのです。
こうした被害を防ぐために、Kubernetes導入後は早急にネットワークポリシーを追加し、Podを分離しておきましょう。
Kubernetesセキュリティを強化しよう
Kubernetesは自動でコンテナ管理をしてくれる、非常に優秀なプラットフォームです。
ただし機能を最大限に発揮させ安全に活用していくためには、利用する側も能動的に知識をアップデートしていく必要があります。 自身のリソースが足りないと感じる場合には、Kubernetesのセキュリティサービスを提供している「Sysdig」などを利用して負担を軽減させましょう。