Skip to content

セキュリティ

対応バージョン: Istio 1.28 最終更新: February 19, 2026

Istio は、service mesh 内で堅牢なセキュリティ機能を提供します。Zero Trust セキュリティモデルに基づき、サービス間通信を自動的に暗号化し、きめ細かなアクセス制御を提供します。

目次

  1. セキュリティアーキテクチャの概要
  2. 主要なセキュリティ機能
  3. セキュリティコンポーネント
  4. 詳細ドキュメント
  5. セキュリティのベストプラクティス
  6. セキュリティモニタリング

セキュリティアーキテクチャの概要

Istio セキュリティアーキテクチャ

Istio は、service mesh 内のすべての通信を保護するために、Zero Trust セキュリティモデルを実装します。セキュリティアーキテクチャは、4 つの主要なレイヤーで構成されています。

セキュリティアーキテクチャのレイヤー

主要なアーキテクチャコンポーネント:

  1. Control Plane (istiod)

    • Certificate Authority (CA): X.509 証明書の発行と管理
    • Configuration API: セキュリティポリシーの配布と管理
    • Service Discovery: Workload identity の管理
  2. Data Plane (Envoy Proxy)

    • mTLS Termination Points: サービス間の暗号化通信
    • Policy Enforcement: 認証/認可ポリシーの適用
    • Security Telemetry: セキュリティメトリクスの収集
  3. アイデンティティ管理

    • SPIFFE 標準に基づく強力なアイデンティティ管理
    • Kubernetes ServiceAccount との統合
    • 証明書の自動更新(デフォルトは 24 時間)
  4. ポリシーエンジン

    • 宣言型セキュリティポリシー(CRD ベース)
    • きめ細かなアクセス制御(RBAC)
    • 監査ログのサポート

主要なセキュリティ機能

Istio は、以下の主要なセキュリティ機能を提供します。

1. 通信セキュリティ(mTLS)

mTLS 移行

すべてのサービス間通信は自動的に暗号化されます。Istio は、PERMISSIVE モードによる段階的な移行をサポートします。

yaml
apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
  name: default
  namespace: istio-system
spec:
  mtls:
    mode: STRICT  # Production: STRICT, Migration: PERMISSIVE

モードの説明:

  • STRICT: mTLS のみ許可(本番環境に推奨)
  • PERMISSIVE: mTLS と平文の両方を許可(移行用)
  • DISABLE: mTLS を無効化

2. 認証

認証アーキテクチャ

Istio は 2 層の認証を提供します。

  • Peer Authentication: サービス間認証(mTLS + SPIFFE ID)
  • Request Authentication: エンドユーザー認証(JWT + OAuth/OIDC)

:

yaml
# Request Authentication (JWT)
apiVersion: security.istio.io/v1
kind: RequestAuthentication
metadata:
  name: jwt-auth
spec:
  jwtRules:
  - issuer: "https://accounts.google.com"
    jwksUri: "https://www.googleapis.com/oauth2/v3/certs"

3. 認可

認可アーキテクチャ

きめ細かなアクセス制御ポリシーが適用されます。AuthorizationPolicy は、以下に基づいて制御します。

  • Service Account / Namespace
  • HTTP Method / Path
  • IP Address
  • JWT Claims
yaml
apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
  name: allow-read
spec:
  action: ALLOW
  rules:
  - from:
    - source:
        principals: ["cluster.local/ns/default/sa/myapp"]
    to:
    - operation:
        methods: ["GET"]
        paths: ["/api/*"]

セキュリティのベストプラクティス

1. 多層防御

セキュリティのベストプラクティス

複数のレイヤーでセキュリティを適用し、多層防御を実装します。

ネットワークレイヤー:

yaml
# 1. Enable mTLS STRICT mode
apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
  name: default
  namespace: istio-system
spec:
  mtls:
    mode: STRICT

アプリケーションレイヤー:

yaml
# 2. Enable JWT authentication
apiVersion: security.istio.io/v1
kind: RequestAuthentication
metadata:
  name: require-jwt
spec:
  jwtRules:
  - issuer: "https://your-auth-provider.com"
    jwksUri: "https://your-auth-provider.com/.well-known/jwks.json"

アクセス制御レイヤー:

yaml
# 3. Default deny policy
apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
  name: deny-all
spec:
  action: DENY
  rules:
  - {}
---
# 4. Allow only required access
apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
  name: allow-specific
spec:
  action: ALLOW
  rules:
  - from:
    - source:
        principals: ["cluster.local/ns/frontend/sa/webapp"]
    to:
    - operation:
        methods: ["GET", "POST"]

2. 最小権限の原則

  • 各サービスには必要最小限の権限のみを付与する
  • ServiceAccount をきめ細かく分離する
  • Namespace の分離を活用する

3. セキュリティモニタリング

  • Istio Access Logs を有効にする
  • Prometheus でセキュリティメトリクスを収集する
  • Kiali で mTLS ステータスを監視する

次のステップ

  1. mTLS: サービス間暗号化とアイデンティティ管理
  2. 認証: JWT と OAuth/OIDC の統合
  3. 認可: きめ細かなアクセス制御ポリシー

参考資料

公式ドキュメント

関連標準

クイズ

この章で学んだ内容を確認するには、Istio Security Quizに挑戦してください。