gVisor
gVisor とは何ですか?
gVisorgVisor は Google が公開するアプリケーションカーネルで、ユーザ空間でコンテナのシステムコールを横取りし、ホストカーネルの攻撃面を大幅に縮小します。
gVisor の Sentry プロセスは Linux のシステムコール面の大部分を Go によるユーザ空間実装で提供し、ホスト側に許可するシステムコールは seccomp-bpf でごく一部に絞り、ファイル I/O は Gofer を経由します。コンテナはホストカーネルに直接ではなく Sentry に話しかけるため、ワークロード内のカーネル悪用はまずユーザ空間サンドボックスを突破する必要があります。gVisor は Docker や CRI のランタイム(runsc)として動作し、Google Cloud Run、App Engine standard、GKE Sandbox を支えています。代償としてシステムコール互換性が完全ではなく呼び出しごとのオーバーヘッドも発生するため、短命・マルチテナント・非信頼ワークロードに最も適しています。
● 例
- 01
Google Cloud Run が既定で顧客関数を gVisor サンドボックスで実行する。
- 02
GKE Sandbox が非信頼 Pod に runtimeClassName: gvisor を付与する。
● よくある質問
gVisor とは何ですか?
gVisor は Google が公開するアプリケーションカーネルで、ユーザ空間でコンテナのシステムコールを横取りし、ホストカーネルの攻撃面を大幅に縮小します。 サイバーセキュリティの クラウドセキュリティ カテゴリに属します。
gVisor とはどういう意味ですか?
gVisor は Google が公開するアプリケーションカーネルで、ユーザ空間でコンテナのシステムコールを横取りし、ホストカーネルの攻撃面を大幅に縮小します。
gVisor はどのように機能しますか?
gVisor の Sentry プロセスは Linux のシステムコール面の大部分を Go によるユーザ空間実装で提供し、ホスト側に許可するシステムコールは seccomp-bpf でごく一部に絞り、ファイル I/O は Gofer を経由します。コンテナはホストカーネルに直接ではなく Sentry に話しかけるため、ワークロード内のカーネル悪用はまずユーザ空間サンドボックスを突破する必要があります。gVisor は Docker や CRI のランタイム(runsc)として動作し、Google Cloud Run、App Engine standard、GKE Sandbox を支えています。代償としてシステムコール互換性が完全ではなく呼び出しごとのオーバーヘッドも発生するため、短命・マルチテナント・非信頼ワークロードに最も適しています。
gVisor からどのように防御しますか?
gVisor に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
gVisor の別名は何ですか?
一般的な別名: runsc, gVisor Sentry。
● 関連用語
- cloud-security№ 582
Kata Containers
Kata Containers は、各コンテナや Kubernetes Pod を軽量な仮想マシンで包み込み、ハードウェアレベルの隔離を提供するオープンソースランタイムです。
- cloud-security№ 838
Pod Security Standards
Pod Security Standards(PSS)は Kubernetes が定める Privileged・Baseline・Restricted の三段階セキュリティプロファイルで、安全な Pod 構成を体系化し、廃止された PodSecurityPolicy を置き換えます。
- cloud-security№ 597
Kubernetes アドミッションコントローラ
アドミッションコントローラは、Kubernetes API サーバのプラグインで、認証済み要求が永続化される前にオブジェクトを検証・変更・拒否します。
- cloud-security№ 757
OPA Gatekeeper
OPA Gatekeeper は CNCF のポリシコントローラで、Open Policy Agent と Rego を用いて Kubernetes リソースに対するアドミッションと監査ポリシを強制します。
- cloud-security№ 602
Kyverno
Kyverno は CNCF の Kubernetes ポリシエンジンで、新しい DSL を使わずネイティブな YAML で記述したポリシによりリソースの検証・変更・生成を行います。
- cloud-security№ 599
Kubernetes NetworkPolicy
Kubernetes の NetworkPolicy は名前空間スコープのリソースで、IP・ポート・プロトコル単位でどの Pod がどの Pod や外部エンドポイントと通信できるかを制御します。