This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
securitycritical PriorityID: zero-trust-istio-mtls

Istio Service Mesh Zero-Trust mTLS & Strict AuthorizationPolicy

Zero-trust microservice security standard using Istio service mesh. Enforces PeerAuthentication STRICT mode, SPIFFE cryptographic identity validation, explicit egress traffic gateways, and granular L7 AuthorizationPolicies.

Prohibited Anti-Pattern: AI leaves Istio in PERMISSIVE mTLS mode and allows unauthenticated east-west traffic between internal pods.

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Istio Service Mesh Zero-Trust mTLS & Strict AuthorizationPolicy - Zero-trust microservice security standard using Istio service mesh. Enforces PeerAuthentication STRICT mode, SPIFFE cryptographic identity validation, explicit egress traffic gateways, and granular L7 AuthorizationPolicies.
globs: **/*istio*.yaml, **/*authz*.yaml, k8s/security/**/*.yaml
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/zero-trust-istio-mtls"
---

# Istio Service Mesh Zero-Trust mTLS & Strict AuthorizationPolicy

> **Severity**: CRITICAL | **Category**: security
> **Anti-Pattern Warning**: AI leaves Istio in PERMISSIVE mTLS mode and allows unauthenticated east-west traffic between internal pods.

## System Constraints
You are a cloud-native zero-trust security architect. When configuring Istio service meshes, NEVER leave PeerAuthentication in PERMISSIVE mode in production. Always set mode: STRICT to mandate mutual TLS with SPIFFE certificates, and define explicit AuthorizationPolicy resources restricting pod-to-pod RPC calls to authorized service account principals.

## Strict Guidelines
- Enforce PeerAuthentication mode: STRICT cluster-wide or namespace-wide to forbid plaintext unencrypted pod communications.
- Define granular AuthorizationPolicy resources with source.principals (cluster.local/ns/.../sa/...) instead of trusting network IP ranges.
- Route all outbound external internet traffic through controlled Egress Gateways with ServiceEntry whitelists to prevent data exfiltration.
- Never inject Envoy sidecars into Kubernetes hostNetwork pods or storage drivers without customized exclusion ports.

## Bad vs Good Implementations
### Strict mTLS PeerAuthentication & SPIFFE AuthorizationPolicy

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Fails to enforce cryptographic mutual TLS, allowing lateral movement and packet eavesdropping.
```yaml
# ANTI-PATTERN: Permissive mode accepts unencrypted plaintext traffic from compromised pods
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
  namespace: production
spec:
  mtls:
    mode: PERMISSIVE # VULNERABLE: Attackers inside the cluster can sniff or spoof traffic!
```

#### Production Standard (Correct)
> **Standard**: Mandates cryptographically verified Envoy-to-Envoy TLS encryption and rejects any caller other than checkout-service.
```yaml
# PRODUCTION STANDARD: Strict mTLS + Principal-Based AuthorizationPolicy
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
  namespace: production
spec:
  mtls:
    mode: STRICT
---
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: payment-service-authz
  namespace: production
spec:
  selector:
    matchLabels:
      app: payment-service
  action: ALLOW
  rules:
  - from:
    - source:
        principals: ["cluster.local/ns/production/sa/checkout-service-sa"]
    to:
    - operation:
        methods: ["POST"]
        paths: ["/api/v1/charge"]
```

### Strict Egress ServiceEntry Whitelist

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Compromised containers can exfiltrate sensitive database credentials to arbitrary external servers.
```yaml
# ANTI-PATTERN: Pods have unrestricted outbound internet access to arbitrary external IPs
meshConfig:
  outboundTrafficPolicy:
    mode: ALLOW_ANY
```

#### Production Standard (Correct)
> **Standard**: Blocks all unauthorized outbound socket connections, stopping zero-day command-and-control exfiltration.
```yaml
# PRODUCTION STANDARD: REGISTRY_ONLY with explicit ServiceEntry
meshConfig:
  outboundTrafficPolicy:
    mode: REGISTRY_ONLY
---
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: stripe-api-external
spec:
  hosts: ["api.stripe.com"]
  ports: [{ number: 443, name: https, protocol: HTTPS }]
  resolution: DNS
  location: MESH_EXTERNAL
```

Recommended MCP Servers (mcp-serverlist.com)

Equip agent with system tools to verify code for this stack.

Recommended Agent Skills (askills.dev)

Ready-to-use executable skill functions tailored to this stack.

Architectural Specification & Invariant Rationale

Architectural Invariant Design: Istio Service Mesh Zero-Trust mTLS & Strict AuthorizationPolicy

Istio Service Mesh Zero-Trust mTLS & Strict AuthorizationPolicy defines an industrial-grade behavioral standard for security engineering. Zero-trust microservice security standard using Istio service mesh. Enforces PeerAuthentication STRICT mode, SPIFFE cryptographic identity validation, explicit egress traffic gateways, and granular L7 AuthorizationPolicies. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: AI leaves Istio in PERMISSIVE mTLS mode and allows unauthenticated east-west traffic between internal pods. Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftAI leaves Istio in PERMISSIVE mTLS mode and allows unauthenticated east-west traffic between internal pods.Critical
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Enforce PeerAuthentication mode

Enforce PeerAuthentication mode: STRICT cluster-wide or namespace-wide to forbid plaintext unencrypted pod communications.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Define granular AuthorizationPolicy resources with source.principals (cluster.local/ns/.../sa/...) instead of trusting network IP ranges.

Define granular AuthorizationPolicy resources with source.principals (cluster.local/ns/.../sa/...) instead of trusting network IP ranges.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

Route all outbound external internet traffic through controlled Egress Gateways with ServiceEntry whitelists to prevent data exfiltration.

Route all outbound external internet traffic through controlled Egress Gateways with ServiceEntry whitelists to prevent data exfiltration.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

Never inject Envoy sidecars into Kubernetes hostNetwork pods or storage drivers without customized exclusion ports.

Never inject Envoy sidecars into Kubernetes hostNetwork pods or storage drivers without customized exclusion ports.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is Istio Service Mesh Zero-Trust mTLS & Strict AuthorizationPolicy critical for AI coding assistants?

Zero-trust microservice security standard using Istio service mesh. Enforces PeerAuthentication STRICT mode, SPIFFE cryptographic identity validation, explicit egress traffic gateways, and granular L7 AuthorizationPolicies. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (AI leaves Istio in PERMISSIVE mTLS mode and allows unauthenticated east-west traffic between internal pods.) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

1 Rule in Stack

Istio