it

mTLS Service Mesh กับ SaaS Architecture —

mtls service mesh saas architecture
mTLS Service Mesh กับ SaaS Architecture —

mTLS ใน Service Mesh

mTLS Service Mesh กับ SaaS Architecture —

mTLS เข้ารหัสการสื่อสารสองทาง Client Server ยืนยันตัวตนด้วย Certificate Service Mesh จัดการอัตโนมัติ Istio Linkerd Consul Connect

SaaS Architecture ใช้ mTLS ป้องกัน Service-to-Service Communication Zero Trust ไม่เชื่อใจอะไรเลย ทุก Request ยืนยันตัวตน

Istio mTLS Configuration

=== Istio mTLS Configuration ===

1. Install Istio

curl -L https://istio.io/downloadIstio | sh -
cd istio-1.21.0
export PATH=$PWD/bin:$PATH

istioctl install --set profile=demo -y

2. Enable Sidecar Injection

kubectl label namespace default istio-injection=enabled

3. PeerAuthentication — บังคับ mTLS ทั้ง Namespace

apiVersion: security.istio.io/v1beta1

kind: PeerAuthentication

metadata:

name: default

namespace: default

spec:

mtls:

mode: STRICT # STRICT = บังคับ mTLS, PERMISSIVE = ยอมรับทั้ง mTLS และ plaintext

4. PeerAuthentication — Mesh-wide (ทั้ง Cluster)

apiVersion: security.istio.io/v1beta1

kind: PeerAuthentication

metadata:

name: default

namespace: istio-system

spec:

mtls:

mode: STRICT

5. DestinationRule — บังคับ mTLS เมื่อเรียก Service

apiVersion: networking.istio.io/v1beta1

เนื้อหาเกี่ยวข้อง — แนะนำให้อ่าน External Secrets Operator Real-time Processing

kind: DestinationRule

metadata:

name: api-service

spec:

host: api-service.default.svc.cluster.local

trafficPolicy:

tls:

mode: ISTIO_MUTUAL # ใช้ Istio certificates

6. AuthorizationPolicy — Zero Trust

apiVersion: security.istio.io/v1beta1

kind: AuthorizationPolicy

แนะนำเพิ่มเติม — บทวิเคราะห์จาก XM Signal

metadata:

name: api-policy

namespace: default

spec:

selector:

matchLabels:

app: api-service

action: ALLOW

rules:

  • from:
  • source:

principals: ["cluster.local/ns/default/sa/frontend-sa"]

to:

mTLS Service Mesh กับ SaaS Architecture —
  • operation:

methods: ["GET", "POST"]

paths: ["/api/*"]

7. ตรวจสอบ mTLS Status

istioctl x describe pod <pod-name>

istioctl proxy-config secret <pod-name>

istioctl analyze

8. Kiali Dashboard (Visualization)

istioctl dashboard kiali

from dataclasses import dataclass

from typing import List

@dataclass

เนื้อหาเกี่ยวข้อง — Ansible Vault Distributed System

class IstioConfig:

name: str

kind: str

namespace: str

description: str

configs = [

IstioConfig("default-mtls", "PeerAuthentication", "default",

"บังคับ mTLS ทั้ง Namespace"),

IstioConfig("mesh-mtls", "PeerAuthentication", "istio-system",

"บังคับ mTLS ทั้ง Mesh"),

IstioConfig("api-dr", "DestinationRule", "default",

"บังคับ mTLS เมื่อเรียก API Service"),

IstioConfig("api-policy", "AuthorizationPolicy", "default",

"อนุญาตเฉพาะ Frontend เรียก API"),

แนะนำเพิ่มเติม — คอร์สเทรด Forex ที่ iCafeForex

]

Certificate Management และ Monitoring

=== Certificate Management ===

1. Istio CA (Built-in)

Istio จัดการ Certificates อัตโนมัติ

  • Root CA: istiod สร้างและจัดการ
  • Workload Certificates: ออกให้ทุก Pod อัตโนมัติ
  • Auto-rotation: หมุนเวียน Certificate อัตโนมัติ (24 ชม.)
  • SPIFFE Identity: spiffe://cluster.local/ns/<ns>/sa/<sa>

2. External CA (cert-manager)

apiVersion: cert-manager.io/v1

kind: Certificate

เนื้อหาเกี่ยวข้อง — บทความที่เกี่ยวข้อง: Nuclei Scanner SaaS Architecture

metadata:

name: istio-ca

namespace: istio-system

spec:

isCA: true

duration: 8760h # 1 year

secretName: istio-ca-secret

issuerRef:

name: vault-issuer

kind: ClusterIssuer

commonName: istio-ca

3. Vault Integration

apiVersion: cert-manager.io/v1

kind: ClusterIssuer

metadata:

name: vault-issuer

spec:

vault:

path: pki/sign/istio

server: https://vault.company.com

auth:

kubernetes:

role: cert-manager

mountPath: /v1/auth/kubernetes

4. Monitoring mTLS

Prometheus Queries:

istio_requests_total{connection_security_policy="mutual_tls"}

istio_tcp_connections_opened_total

envoy_cluster_ssl_handshake

5. Grafana Dashboard

Import Istio dashboards:

  • Istio Mesh Dashboard (ID: 7639)
  • Istio Service Dashboard (ID: 7636)
  • Istio Workload Dashboard (ID: 7630)

6. Jaeger Tracing

istioctl dashboard jaeger

เนื้อหาเกี่ยวข้อง — ทำความเข้าใจ Incident.io AR VR Development

7. Security Audit

istioctl analyze --all-namespaces

istioctl proxy-config secret <pod-name> -o json

kubectl get peerauthentication --all-namespaces

kubectl get authorizationpolicy --all-namespaces

cert_management = {

"Istio CA": "Built-in CA, Auto-rotation ทุก 24 ชม.",

"cert-manager": "External CA, Vault, Let's Encrypt",

"SPIFFE": "Identity: spiffe://cluster.local/ns/xxx/sa/yyy",

"Rotation": "อัตโนมัติ ไม่ต้อง Restart Pods",

}

monitoring = {

"Kiali": "Service Mesh Visualization, mTLS Status",

"Prometheus": "Metrics: requests, connections, SSL handshakes",

"Grafana": "Dashboards: Mesh, Service, Workload",

"Jaeger": "Distributed Tracing ระหว่าง Services",

}

for tool, desc in cert_management.items():

for tool, desc in monitoring.items():

Best Practices

  • STRICT mTLS: บังคับ mTLS ทั้ง Mesh ไม่ใช้ PERMISSIVE ใน Production
  • AuthorizationPolicy: กำหนด Zero Trust ทุก Service ระบุ Callers ชัดเจน
  • Certificate Rotation: ตั้ง Auto-rotation สั้น (24 ชม.) ลด Risk
  • Namespace Isolation: แยก Namespace ตาม Tenant หรือ Team
  • Monitoring: ใช้ Kiali ดู mTLS Status, Prometheus Metrics, Jaeger Tracing
  • Audit: รัน istioctl analyze ตรวจสอบ Configuration เป็นประจำ

mTLS คืออะไร

Mutual TLS เข้ารหัสสองทาง Client Server ยืนยันตัวตน Certificate Service-to-Service Communication ป้องกัน Man-in-the-Middle Attack

XM Legend · เทรดเดอร์ & ผู้สอน Forex 13 ปี

ผู้ก่อตั้ง SiamCafe ตั้งแต่ปี 1997 · เทรดเดอร์สาย Forex มากกว่า 13 ปี ได้รับการยกย่องเป็น XM Legend · แบ่งปันความรู้ Forex, ไอที, AI และการเทรด จากประสบการณ์จริงในตลาดจริง