Kubernetesやクラウドネイティブをより便利に利用する技術やツールの概要、使い方を凝縮して紹介する連載。今回は、Istioのセキュリティ機能に焦点を当て、通信の暗号化、認証/認可の機能を紹介する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Kubernetesやクラウドネイティブをより便利に利用する技術やツールの概要、使い方を凝縮して紹介する本連載「Cloud Nativeチートシート」。前回、前々回とサービスメッシュ、特にIstioの機能について説明してきましたが、今回も引き続きIstioの機能について紹介していきます。今回はIstioのセキュリティ機能に焦点を当て、通信の暗号化、認証/認可の機能を紹介します。
マイクロサービスアーキテクチャでは、アジリティの向上、スケーラビリティの向上、サービスの再利用が可能になるなど、さまざまなメリットが得られます。しかし、複数のサービスが連携して1つのシステムを構成する特徴から、モノリシックアーキテクチャでは考慮する必要のなかった点が課題となります。
例として、以下のようなリスクが存在します。
モノリシックなアプリケーションでは、サービスは1つのネットワークにあるサーバで動作するので、公開されたエンドポイントに着目したり、サーバのIPアドレスを特定することが可能であったりと、セキュリティ対策が比較的容易でした。
一方、マイクロサービスでは、サービスが頻繁かつ動的に分散配置されるので、割り当てられるIPアドレスが短期間で変化します。また、サービス間で通信し、サービス単位にエンドポイントを用意するので、不正アクセスされるリスクが高まります。
モノリシックなサービスの場合、プロセス間はメモリを用いて通信することが一般的でした。そのため、公開されたエンドポイントとの通信を暗号化することで一定のセキュリティレベルを保証できます。
一方マイクロサービスの場合、ネットワーク経由でサービス同士が通信し合うことになります。そのため、仮にマイクロサービス間の通信が暗号化されていない場合、第三者から通信を傍受されるリスクが存在します。
上記で挙げたセキュティリスクは一部にすぎませんが、確実に対策する必要があります。下表の対策方法が一般的でしょう。
脅威(被害) | セキュリティ対策 | |
---|---|---|
不正アクセス(情報資産の改ざん/変更、情報資産の破壊/削除、情報資産の流出) | 各マイクロサービス間での認証 | |
外部アクセスユーザーの認証 | ||
サービス/ユーザーの認可(アクセス権の設定) | ||
盗聴(情報資産/個人情報の流出) | 外部からの通信の暗号化 | |
サービス間通信の暗号化 | ||
これらの最も単純な実現方法には、各サービスを構成するアプリケーションに、サービス間通信を規定するロジックを実装することが考えられます。しかし、全てのサービスで該当ロジックを維持することは困難なので、このアプリケーション層で全て吸収する方法はあまり現実的ではありません。
そこで本記事では、Istioの機能を活用し、マイクロサービスの課題を解決する方法を解説します。「Istioがどのような仕組みでセキュリティ機能を構成するのか」「どのリソースを使うことで、上記のセキュリティ課題への対策が可能になるのか」を確認します。
Istioのセキュリティ機能は主に4つです。
各セキュリティ機能は、これまで紹介したリソースと同様にコントロールプレーンの「Istiod」コンポーネントをからデータプレーンに対して関連する設定を伝達、管理するだけで稼働します。つまり、今回もアプリケーションのソースコードを変更する必要はありません。
以下、4つのセキュリティ機能の概要をします。
Copyright © ITmedia, Inc. All Rights Reserved.