Courseiva

CCNA Securing Workloads Questions

50 questions · Securing Workloads topic · All types, answers revealed

1
MCQeasy

Which component is responsible for distributing the security policies (like AuthorizationPolicy) to the Envoy sidecars?

A.Kubernetes API Server
B.Istiod
C.Prometheus
D.Envoy
AnswerB

Istiod's control plane watches Istio configuration resources such as AuthorizationPolicy and translates them into Envoy-native configuration, then pushes updates to each sidecar through the xDS protocol. This distribution mechanism satisfies the stem's requirement that policies reach every sidecar without manual intervention or per-pod configuration.

Why this answer

Istiod is the control plane component responsible for distributing configuration to sidecars via the xDS protocol.

2
MCQmedium

A security team requires that all traffic to the 'payments' service must originate from a specific IP range (10.0.0.0/24). How can this be achieved?

A.Configure the Gateway to filter by IP.
B.Use a ServiceEntry to restrict traffic.
C.Create an AuthorizationPolicy with 'source.ipBlocks: ["10.0.0.0/24"]'.
D.Create a PeerAuthentication policy with 'ipBlocks'.
AnswerC

AuthorizationPolicy source.ipBlocks matches the originating IP against the specified CIDR ranges, so only requests from 10.0.0.0/24 are permitted to reach the payments service. Other sources are denied, enforcing the security team's origin restriction at the Envoy layer.

Why this answer

The AuthorizationPolicy supports 'source.ipBlocks' to whitelist or blacklist specific CIDR ranges.

3
MCQeasy

Which Istio component is responsible for enforcing the AuthorizationPolicy at the workload level?

A.Envoy Proxy
B.Citadel
C.Ingress Gateway
D.Istiod
AnswerA

Envoy Proxy runs as the sidecar enforcing AuthorizationPolicy decisions at the workload level. Istiod distributes the policy configuration, but the actual allow or deny enforcement on each request happens inside the Envoy filter chain, satisfying the requirement for workload-level enforcement.

Why this answer

The Envoy proxy (sidecar) intercepts all inbound and outbound traffic and enforces policies defined in AuthorizationPolicy.

4
MCQmedium

If you set 'mode: PERMISSIVE' in PeerAuthentication, what does this allow?

A.It allows both mTLS and plaintext.
B.It requires plaintext only.
C.It requires mTLS only.
D.It disables all security.
AnswerA

PERMISSIVE mode accepts both mutual TLS traffic from sidecar-injected workloads and plaintext traffic from sources without sidecars, easing migration. It does not enforce mTLS; STRICT is required for that, so plaintext connections remain accepted on the same port.

Why this answer

PERMISSIVE mode allows both mTLS and plaintext traffic to coexist, which is ideal for migrations.

5
MCQmedium

What happens if a RequestAuthentication policy is applied, but no JWT is provided in the request?

A.The request is routed to the login page.
B.The request is allowed by default.
C.The request is rejected automatically.
D.The request is dropped.
AnswerB

A RequestAuthentication policy only validates JWTs when one is present; it does not itself reject requests lacking a token. Because no JWT is supplied, the policy performs no validation and the request passes through, satisfying the stem's scenario. Rejection requires a separate AuthorizationPolicy with JWT rules configured.

Why this answer

In Istio, a RequestAuthentication policy only validates JWTs if they are present. If no JWT is provided, the request is allowed by default unless an AuthorizationPolicy explicitly requires authentication. This is because RequestAuthentication does not enforce rejection; it only specifies how to validate tokens.

To reject requests without valid tokens, you must pair it with an AuthorizationPolicy that requires a valid JWT.

Exam trap

ICA often tests the misconception that RequestAuthentication alone rejects unauthenticated requests, when it only validates tokens if present; an AuthorizationPolicy is needed to enforce rejection.

How to eliminate wrong answers

Option A is wrong because Istio does not automatically route to a login page; that would require custom configuration. Option C is wrong because RequestAuthentication alone does not reject requests without JWTs; it only validates when present. Option D is wrong because dropping the request would require an explicit deny rule, not just RequestAuthentication.

6
MCQhard

You are using Istio's authorization policies to secure a workload. You want to allow requests only from a specific service account in another namespace, but only for HTTP GET requests to the path '/api/v1/data'. The service account is 'data-reader' in namespace 'analytics'. Which AuthorizationPolicy rule correctly implements this?

A.rules: - from: - source: namespaces: ["analytics"] to: - operation: methods: ["GET"] paths: ["/api/v1/data"]
B.rules: - from: - source: principals: ["cluster.local/ns/analytics/sa/data-reader"] to: - operation: paths: ["/api/v1/data"]
C.rules: - from: - source: principals: ["cluster.local/ns/analytics/sa/data-reader"] to: - operation: methods: ["GET"]
D.rules: - from: - source: principals: ["cluster.local/ns/analytics/sa/data-reader"] to: - operation: methods: ["GET"] paths: ["/api/v1/data"]
AnswerD

This rule correctly combines a source principal match with an operation match. The 'from' field restricts the source to the specified SPIFFE identity, and the 'to' field restricts the request to HTTP GET on the exact path. This enforces both identity-based and method/path-based access control in a single AuthorizationPolicy rule.

Why this answer

The correct rule must combine both source principal and operation constraints. Using source.principals with the SPIFFE ID restricts to the specific service account, and operation.methods and operation.paths restrict to GET on the exact path. This ensures least privilege.

Omitting either the service account specificity, the method, or the path would result in overly broad access.

Exam trap

The trap here is using namespace-level source matching instead of service-account-level principals, or forgetting to include both method and path conditions, leading to broader access than intended.

7
MCQmedium

Which of the following describes the role of the 'trust-domain' in Istio?

A.It is used for load balancing.
B.It determines the namespace scope of policies.
C.It limits the number of concurrent connections.
D.It defines the root of trust for identity.
AnswerD

The trust domain forms the root of the SPIFFE identity URI embedded in every workload certificate, appearing as spiffe://<trust-domain>/ns/... in the SAN. It establishes which identities are trusted within the mesh, so mismatched trust domains reject mTLS handshakes.

Why this answer

The trust domain identifies the administrative boundary for identities. It is used to construct the SPIFFE ID.

8
MCQmedium

Which field in the AuthorizationPolicy is used to restrict access based on the verified JWT claims?

A.rules.when
B.rules.from.principals
C.rules.to.operation.methods
D.rules.from.source.namespaces
AnswerA

The rules.when field holds match conditions evaluated against request attributes, including verified JWT claims via request.auth.claims. This satisfies the constraint of restricting access by claim values, since the JWT must first be validated by a RequestAuthentication policy before those claims are trusted.

Why this answer

The `rules.when` field in an Istio AuthorizationPolicy is specifically designed to define conditions that must be met for a request to be allowed. It supports a variety of condition keys, including `request.auth.claims`, which allows you to match against verified JWT claims. This is the correct mechanism to restrict access based on JWT claims because it evaluates the claims after the JWT has been validated by Istio's authentication policy.

Exam trap

The trap here is confusing the `from` field (which matches source identities like principals or namespaces) with the `when` field (which matches request attributes like JWT claims). Candidates often mistakenly think that `principals` can include arbitrary claims, but it only matches the `sub` claim or mTLS identity.

How to eliminate wrong answers

Option B is wrong because `rules.from.principals` is used to match the identity of the client based on the peer certificate (mTLS) or the JWT principal (the `sub` claim), not arbitrary JWT claims. Option C is wrong because `rules.to.operation.methods` restricts access based on the HTTP method (e.g., GET, POST) of the request, not JWT claims. Option D is wrong because `rules.from.source.namespaces` restricts access based on the Kubernetes namespace from which the request originates, not JWT claims.

9
Multi-Selecthard

Which THREE fields in an AuthorizationPolicy are evaluated under the 'rules' section?

Select 3 answers
A.action
B.selector
C.from
D.when
E.to
AnswersC, D, E

from is one of the three rule fields in an Istio AuthorizationPolicy, defining the source of the request via source principals, namespaces, or IP blocks. It satisfies the stem's requirement for a valid rules-section field.

Why this answer

In an Istio AuthorizationPolicy, the 'rules' section defines the conditions under which the policy applies, and each rule can contain the fields 'from', 'to', and 'when'. Option C ('from') is correct because it specifies the source of the request, such as a source principal, namespace, or IP block, and is evaluated as part of the rule matching. Option E ('to') is correct because it defines the destination attributes of the request, including operation methods, paths, and ports, which are matched within the rule.

Option D ('when') is correct because it provides additional custom conditions using Istio attributes (e.g., request.headers, source.ip) that must be satisfied for the rule to match. Option A ('action') is not part of the 'rules' section; it is a top-level field of the AuthorizationPolicy that specifies ALLOW, DENY, AUDIT, or CUSTOM. Option B ('selector') is also not part of the 'rules' section; it is a top-level field used to target specific workloads by label.

10
Multi-Selectmedium

Which THREE items are included in an Istio SPIFFE ID?

Select 3 answers
A.Trust domain
B.Cluster Name
C.Service Account
D.Namespace
E.IP Address
AnswersA, C, D

A SPIFFE ID follows the spiffe:// URI form, where the trust domain is the authority component identifying the issuing trust root, followed by the workload path; the trust domain is therefore one of the three constituent parts.

Why this answer

An Istio SPIFFE ID follows the format spiffe://<trust-domain>/ns/<namespace>/sa/<service-account>, so the three components it includes are the trust domain (A), the namespace (D), and the service account (C). The trust domain (A) is the first segment after the spiffe:// scheme and identifies the identity's issuing authority, which in Istio defaults to cluster.local. The namespace (D) appears in the /ns/<namespace> path segment and scopes the workload identity to its Kubernetes namespace.

The service account (C) appears in the /sa/<service-account> path segment and represents the Kubernetes service account under which the workload runs. Cluster Name (B) is not part of the SPIFFE ID format—it is a separate Istio concept used in multi-cluster configurations and mesh expansion. IP Address (E) is not encoded in a SPIFFE ID; Istio identities are based on service account and namespace, not network addresses.

11
MCQeasy

What is the default behavior of Istio mTLS if no PeerAuthentication policy is applied?

A.STRICT mTLS
B.Plaintext only
C.Disabled
D.PERMISSIVE mTLS
AnswerD

Without any PeerAuthentication policy, Istio's mesh-wide default is PERMISSIVE mode, so sidecars accept both plaintext and mTLS traffic simultaneously. This satisfies the stem's condition of no policy applied, allowing gradual migration without breaking non-mesh clients.

Why this answer

Istio defaults to PERMISSIVE mode, which allows both mTLS and plaintext traffic.

12
Multi-Selecthard

Which THREE factors influence whether a service in the mesh will accept traffic?

Select 3 answers
A.AuthorizationPolicy rules
B.Global MeshConfig 'proxyMetadata' settings
C.PeerAuthentication policy mode
D.Envoy proxy configuration state
E.Kubernetes Service Port definition
AnswersA, C, D

AuthorizationPolicy rules define the allow, deny and custom conditions applied to inbound requests at the workload. This satisfies the constraint because traffic is only accepted when an ALLOW rule matches; absent any matching rule, the request is rejected by default.

Why this answer

In an Istio service mesh, whether a workload accepts traffic is governed first by AuthorizationPolicy rules (A), which define ALLOW/DENY/CUSTOM enforcement on incoming requests and determine if a request is permitted to reach the workload. PeerAuthentication policy mode (C) also matters because it controls the mutual TLS mode (STRICT, PERMISSIVE, DISABLE) for incoming connections, so a client that cannot satisfy the required mTLS mode will be rejected before application-level authorization. Envoy proxy configuration state (D) is decisive as well, since the sidecar's listeners, filter chains, and route/RBAC configs actually enforce acceptance; if the proxy is misconfigured, stale, or not synced with istiod, traffic may be refused regardless of the intended policy.

The other options do not directly determine acceptance: MeshConfig proxyMetadata (B) only injects environment metadata into proxies and does not by itself gate traffic, and the Kubernetes Service port definition (E) merely exposes/forwards traffic at the L4 Service level without enforcing mesh authorization or mTLS acceptance.

13
MCQmedium

If you apply an AuthorizationPolicy with a 'DENY' action and an 'ALLOW' action in the same namespace, how does Istio resolve them?

A.DENY policies always take precedence over ALLOW policies.
B.ALLOW policies take precedence.
C.The policy with the highest priority field wins.
D.The policy applied most recently wins.
AnswerA

Istio evaluates DENY policies before ALLOW policies, so any matching DENY rule blocks the request regardless of an ALLOW rule that would otherwise permit it. This deny-overrides evaluation order satisfies the scenario where both actions exist in the same namespace.

Why this answer

Istio's AuthorizationPolicy evaluation follows a deny-overrides model: if any DENY policy matches a request, the request is rejected regardless of any matching ALLOW policies. ALLOW policies are only evaluated if no DENY policy matches, and if at least one ALLOW policy exists in the namespace, a request must match one to be permitted. This ordering is enforced by the Envoy RBAC filter that Istio programs into the sidecar.

Exam trap

ICA often tests the assumption that ALLOW can override DENY or that a priority field exists — candidates who assume 'most specific wins' or 'last applied wins' pick the wrong answer.

How to eliminate wrong answers

Option B is wrong because ALLOW does not take precedence — Istio explicitly evaluates DENY first, and a matching DENY short-circuits the decision. Option C is wrong because AuthorizationPolicy has no 'priority' field; ordering is determined by action semantics (DENY > ALLOW) and specificity, not a numeric priority. Option D is wrong because Istio does not use last-applied-wins semantics; policies are compiled into the Envoy config and evaluated by fixed rules, so application order is irrelevant.

14
MCQeasy

Which resource is used to define the root certificate for a custom CA?

A.istio-ca-secret
B.root-secret
C.cacerts
D.istio-root-ca
AnswerC

The cacerts resource holds the trusted root certificates Istio uses to validate workloads. Supplying a custom CA's root certificate there lets the mesh trust that authority, satisfying the requirement to define the root certificate for a custom CA.

Why this answer

The 'cacerts' secret in the 'istio-system' namespace is used to provide custom root certificates.

15
Multi-Selecthard

Which THREE actions occur when 'mode: STRICT' is set in a PeerAuthentication policy?

Select 3 answers
A.All non-Istio traffic is automatically routed to the gateway.
B.The client proxy initiates mTLS handshakes.
C.The sidecar proxy verifies the peer's identity via certificate.
D.The proxy automatically upgrades HTTP to HTTPS.
E.The server proxy rejects all non-mTLS traffic.
AnswersB, C, E

Under STRICT PeerAuthentication, the client sidecar initiates mTLS handshakes with the destination workload, since plaintext is rejected. This satisfies the stem's constraint by describing the client-side action required when strict mutual TLS is enforced mesh-wide.

Why this answer

In Istio, setting mode: STRICT in a PeerAuthentication policy enforces mutual TLS for all workloads in the targeted scope, so option B is correct because the client-side Envoy proxy initiates the mTLS handshake with the server proxy, presenting its certificate. Option C is correct because the receiving sidecar proxy validates the peer's identity by verifying the presented X.509 certificate against the trusted CA (Istiod's root), which is the core of mTLS peer authentication. Option E is correct because in STRICT mode the server proxy rejects any plaintext (non-mTLS) traffic, allowing only connections that complete a valid mTLS handshake.

Option A is wrong because PeerAuthentication only governs transport authentication between sidecars; it does not reroute non-Istio traffic to an ingress gateway. Option D is wrong because automatic HTTP-to-HTTPS redirection is a feature of Gateway/VirtualService or the istio-ingressgateway configuration, not of PeerAuthentication STRICT mode.

16
MCQeasy

What is the correct syntax for a principal in an AuthorizationPolicy?

A.spiffe://my-service
B.default/my-service
C.cluster.local/ns/default/sa/my-service
D.my-service.default
AnswerC

The SPIFFE-style identity `cluster.local/ns/default/sa/my-service` is the exact principal format Istio expects in an AuthorizationPolicy, encoding trust domain, namespace and service account. It satisfies the stem's requirement for correct principal syntax, unlike bare service names or DNS hostnames, which Istio cannot match against workload identities.

Why this answer

The principal follows the SPIFFE ID format: 'cluster.local/ns/default/sa/my-service'.

17
MCQmedium

How do you ensure that a workload ignores a global PeerAuthentication policy?

A.Apply a PeerAuthentication policy with a selector matching the specific workload.
B.Use an AuthorizationPolicy to bypass mTLS.
C.Delete the global policy.
D.Set the 'mode' to 'DISABLE' in a DestinationRule.
AnswerA

A PeerAuthentication with a selector targets only the labelled workload's sidecars, overriding the mesh-wide default for that pod. The workload's own policy takes precedence, so it can set mTLS to PERMISSIVE or DISABLE while the global STRICT policy remains for everything else.

Why this answer

A workload-specific PeerAuthentication policy (with a selector) will override a global (namespace or root) policy.

18
MCQmedium

When multiple AuthorizationPolicies target the same workload, how are they combined?

A.The most specific policy wins, others are ignored.
B.Policies are unioned (OR logic) for ALLOW actions.
C.The first policy encountered in the API server wins.
D.All policies must match (AND logic).
AnswerB

Multiple AuthorizationPolicies targeting one workload combine additively: a request is allowed if any policy's ALLOW rule matches, giving OR semantics. This satisfies the stem's union requirement, so adding policies only widens access rather than intersecting it.

Why this answer

If multiple policies are applied to the same workload, they are evaluated using an additive approach (OR logic) for ALLOW policies within the same namespace.

19
MCQmedium

You have a global PeerAuthentication policy. What is the effect of applying a new PeerAuthentication policy in the 'default' namespace with no selector?

A.It is ignored.
B.It crashes the global policy.
C.It overrides the global policy for all workloads in the 'default' namespace.
D.It merges with the global policy.
AnswerC

A namespace-wide PeerAuthentication policy without a selector applies to every workload in that namespace, taking precedence over the mesh-wide global policy. Istio resolves policy by specificity: namespace-scoped configuration overrides mesh-scoped, satisfying the requirement to supersede the global policy for all workloads in 'default'.

Why this answer

In Istio, PeerAuthentication policies are scoped hierarchically: mesh-wide (root namespace, no selector), namespace-wide (a namespace, no selector), and workload-specific (with a selector). A namespace-wide policy in 'default' with no selector applies to all workloads in that namespace and takes precedence over the mesh-wide global policy for those workloads, effectively overriding it.

Exam trap

ICA often tests the precedence hierarchy of Istio policies, trapping candidates who assume policies merge or that namespace-scoped policies are ignored in favor of mesh-wide ones.

How to eliminate wrong answers

Option A (It is ignored) is wrong because namespace-scoped PeerAuthentication policies are honored and take precedence over mesh-wide policies for workloads in that namespace. Option B (It crashes the global policy) is wrong because Istio policies are not 'crashed' by overlapping scopes; the more specific policy simply takes precedence. Option D (It merges with the global policy) is wrong because Istio does not merge PeerAuthentication policies — precedence is strict, with the most specific scope winning, so the namespace policy fully replaces the global one for that namespace.

20
MCQmedium

You want to enforce that only requests with a valid JWT issued by 'https://accounts.example.com' are allowed to access the 'orders' service. You have applied a RequestAuthentication policy. What additional step is required to actually block requests without a valid JWT?

A.Apply an AuthorizationPolicy with an ALLOW action that requires a valid JWT principal.
B.Add a DENY AuthorizationPolicy that blocks all requests without a JWT.
C.Configure a PeerAuthentication policy with mode STRICT to require client certificates.
D.Modify the RequestAuthentication policy to set 'forwardOriginalToken: true'.
AnswerA

RequestAuthentication only validates JWTs if present, but it does not reject requests without a JWT. To enforce that a valid JWT is required, you must create an AuthorizationPolicy that allows only requests with a validated JWT. This is typically done by matching on the 'requestPrincipals' field, which is populated after successful JWT validation. Without this policy, requests without a JWT would still be allowed, so this step is necessary to block them.

Why this answer

RequestAuthentication validates JWTs but does not reject requests without one. To enforce JWT presence, you need an AuthorizationPolicy that allows only requests with a validated JWT principal. This is typically done by matching on 'requestPrincipals', which is set after successful validation.

The ALLOW policy will deny any request that does not have a valid JWT, effectively blocking unauthorized access.

Exam trap

The trap here is believing that RequestAuthentication alone will reject requests without a JWT, when in fact it only validates tokens if they are present.

21
Multi-Selectmedium

Which TWO of the following are true regarding the RequestAuthentication resource?

Select 2 answers
A.It enforces that the request MUST have a JWT token.
B.It can be applied to specific workloads using a selector.
C.It handles the issuance of JWT tokens.
D.It replaces the need for PeerAuthentication.
E.It can be applied at the namespace level to cover all services in that namespace.
AnswersB, E

RequestAuthentication supports a workloadSelector, so the JWT validation rules it defines apply only to the pods matching that selector rather than the whole namespace. This satisfies the requirement of scoping authentication policy to specific workloads.

Why this answer

Option B is correct because RequestAuthentication uses a workload selector (matchLabels) to target specific pods/workloads, allowing you to scope JWT validation rules to particular services rather than the entire mesh. Option E is correct because RequestAuthentication can be applied at the namespace level (with a namespace-wide policy) so that all services in that namespace inherit the JWT authentication rules. Option A is incorrect because RequestAuthentication only validates JWTs when present; it does not require a token—enforcement of a valid token is done via AuthorizationPolicy.

Option C is incorrect because RequestAuthentication does not issue JWTs; token issuance is handled by an external identity provider or an OIDC provider. Option D is incorrect because RequestAuthentication handles end-user JWT authentication, while PeerAuthentication handles mTLS between workloads; they are complementary, not replacements.

22
MCQeasy

What does the 'jwksUri' field in a RequestAuthentication resource define?

A.The URL to register the application.
B.The URL to fetch the public keys for JWT validation.
C.The location where JWTs are stored.
D.The address of the Identity Provider login page.
AnswerB

RequestAuthentication validates JWTs presented by clients. The jwksUri points to the JSON Web Key Set endpoint holding the public keys; Envoy fetches these keys to verify each token's signature, ensuring the JWT was issued by the trusted identity provider.

Why this answer

The jwksUri specifies the endpoint where the JWT issuer publishes its public keys, used by Istio to verify the token signature.

23
MCQmedium

You have a namespace 'prod' and you need to ensure that all workloads in this namespace only accept mutual TLS (mTLS) encrypted traffic. What is the most effective way to configure this?

A.Apply a DestinationRule with trafficPolicy.tls.mode set to ISTIO_MUTUAL.
B.Apply a global MeshConfig setting to enforce mTLS.
C.Apply a PeerAuthentication resource with spec.mtls.mode set to STRICT in the 'prod' namespace.
D.Create an AuthorizationPolicy that denies all traffic without a client certificate.
AnswerC

Setting PeerAuthentication's mtls.mode to STRICT in the prod namespace enforces namespace-wide mTLS, rejecting any plaintext or permissive traffic to workloads there. This satisfies the requirement that all workloads accept only mTLS, without per-pod configuration, since STRICT overrides mesh-level defaults for that namespace.

Why this answer

A PeerAuthentication policy scoped to the namespace with mode set to STRICT ensures all sidecars in that namespace enforce mTLS.

24
MCQeasy

What does an AuthorizationPolicy's 'operation' field represent?

A.HTTP methods and paths.
B.Certificate details.
C.IP addresses.
D.User identities.
AnswerA

The operation field lists the HTTP methods and exact paths a rule matches, such as GET on /products. It defines the request attributes the policy evaluates, letting you scope authorisation to specific endpoints rather than whole workloads.

Why this answer

The operation field defines the methods (GET, POST) and paths allowed or denied.

25
MCQmedium

When using JWT authentication, where does the Istio sidecar fetch the public key (JWKS) required for token verification?

A.The sidecar fetches it directly from the URL specified in the 'jwksUri' field of the RequestAuthentication resource.
B.It is hardcoded in the Envoy binary.
C.The Istio Control Plane (istiod) fetches it and pushes it to the sidecar.
D.The user must manually upload the public key as a Kubernetes Secret.
AnswerA

The Envoy sidecar retrieves the JSON Web Key Set directly from the URL declared in the RequestAuthentication resource's jwksUri field, caching the keys locally. This satisfies the verification requirement because the sidecar validates JWT signatures itself without routing token checks through an external service.

Why this answer

The sidecar automatically fetches the JWKS from the URL defined in the 'jwksUri' field within the RequestAuthentication policy.

26
Multi-Selectmedium

Which THREE things are required for mTLS to be successful?

Select 3 answers
A.PeerAuthentication configuration
B.External load balancer
C.Sidecar proxy presence
D.Ingress Gateway
E.Certificate distribution
AnswersA, C, E

PeerAuthentication in Istio's security API defines the mTLS mode (STRICT, PERMISSIVE, DISABLE) that the mesh enforces for a workload or namespace. Without it, sidecars default to PERMISSIVE, so plaintext remains accepted and mutual authentication is never guaranteed.

Why this answer

mTLS needs certificates issued to the workloads, a mutual agreement on using mTLS (PeerAuthentication), and sidecar proxies to perform the handshake.

27
Multi-Selectmedium

Which THREE components are involved in the Istio certificate management process?

Select 3 answers
A.Istiod
B.The Workload
C.Ingress Gateway
D.Envoy Proxy
E.Kubernetes Secret
AnswersA, B, D

Acts as the CA.

Why this answer

The certificate lifecycle involves Istiod (CA), the control plane agent, and the workload sidecar/proxy.

28
Multi-Selectmedium

Which TWO scenarios indicate that a PeerAuthentication policy is working correctly?

Select 2 answers
A.Requests are rejected when mTLS is not used by the client.
B.Traffic from outside the mesh can reach the service in STRICT mode without modification.
C.All traffic is logged in plain text in the Envoy logs.
D.Services with sidecars can communicate with each other in STRICT mode.
E.The API server allows non-mTLS traffic by default.
AnswersA, D

STRICT mode enforces mutual TLS, so plaintext or non-mTLS client connections to the workload are refused at the sidecar proxy. This directly satisfies the scenario's requirement that requests without mTLS be rejected, confirming the PeerAuthentication policy is active and enforcing rather than merely permissive.

Why this answer

Option A is correct because a PeerAuthentication policy set to STRICT mode enforces mutual TLS, so any request arriving without a valid mTLS client certificate is rejected by the sidecar proxy — this rejection is exactly the expected enforcement behavior. Option D is correct because in STRICT mode, workloads that have sidecar proxies (and thus can present and validate mTLS certificates) are able to communicate with each other successfully, demonstrating that the policy permits properly authenticated mesh traffic. Option B is wrong because STRICT mode should block, not allow, non-mTLS traffic from outside the mesh unless it is upgraded to mTLS.

Option C is wrong because Envoy logs being in plain text says nothing about PeerAuthentication enforcement and is unrelated to mTLS policy validation. Option E is wrong because PeerAuthentication does not control the Kubernetes API server, and non-mTLS traffic is not allowed by default under a STRICT policy.

29
MCQmedium

What happens when an AuthorizationPolicy is applied to a workload without a sidecar?

A.The policy is logged but not enforced.
B.The workload crashes.
C.The policy is ignored.
D.Traffic is denied by default.
AnswerC

Without a sidecar proxy, there is no Envoy instance to enforce Istio's authorization rules, so the policy has no effect on traffic. Istio's control plane distributes policy to sidecars, not to the application itself; absent that enforcement point, requests proceed unauthenticated and unrestricted.

Why this answer

AuthorizationPolicy relies on the Envoy sidecar to enforce rules. If no sidecar is present, the policy is ignored for that traffic.

30
MCQmedium

Your team runs an Istio service mesh in STRICT mutual TLS mode across the cluster. A new workload in the 'payments' namespace must accept only traffic from workloads that present a SPIFFE identity of 'cluster.local/ns/payments/sa/payment-processor'. All other inbound traffic, including from other namespaces, must be denied. You create an AuthorizationPolicy in the 'payments' namespace. Which configuration correctly enforces this requirement?

A.Set action: ALLOW with rules matching source.principals: ["cluster.local/ns/payments/sa/payment-processor"].
B.Set action: DENY with rules matching source.principals: ["cluster.local/ns/payments/sa/payment-processor"].
C.Set action: ALLOW with rules matching source.ipBlocks: ["10.0.0.0/8"] and source.principals: ["cluster.local/ns/payments/sa/payment-processor"].
D.Set action: ALLOW with rules matching source.namespaces: ["payments"] and source.principals: ["*"].
AnswerA

An ALLOW policy with a source.principals match permits only requests whose peer certificate carries the SPIFFE ID cluster.local/ns/payments/sa/payment-processor. Because Istio's default is to deny when any ALLOW policy exists for the workload, all other identities are implicitly rejected. This exactly implements least-privilege, identity-based access in a STRICT mTLS mesh.

Why this answer

In Istio, when at least one ALLOW AuthorizationPolicy selects a workload, the default becomes deny-all except what the ALLOW rules permit. Specifying source.principals with the exact SPIFFE ID restricts inbound traffic to the payment-processor service account. Other identities are implicitly denied.

This is the canonical way to enforce service-account-level least privilege in a STRICT mTLS mesh.

Exam trap

The trap here is confusing DENY and ALLOW semantics: DENY rules specify what to block, while ALLOW rules specify what to permit when the default is deny.

31
MCQmedium

In an AuthorizationPolicy, what does the 'ALLOW' action mean when combined with an empty rule set?

A.It allows all requests.
B.It crashes the proxy.
C.It requires valid mTLS.
D.It denies all requests.
AnswerA

An ALLOW action paired with an empty rule set matches every request unconditionally, because no conditions restrict which traffic qualifies. This differs from ALLOW with populated rules, which permits only requests satisfying those specific conditions, and from DENY, which blocks matching traffic.

Why this answer

An empty 'rules' section in an 'ALLOW' policy effectively allows all requests that meet the identity criteria, or if no source/to constraints are specified, it allows everything.

32
MCQeasy

Which command is used to display the currently active PeerAuthentication policies in the mesh?

A.istioctl analyze
B.istioctl get peerauthentication
C.kubectl get peerauthentication -A
D.kubectl describe mtls
AnswerC

Listing the PeerAuthentication custom resources across all namespaces queries the live mesh configuration directly, so it reveals every policy currently enforced. The -A flag satisfies the requirement to show policies mesh-wide rather than only those in the current namespace.

Why this answer

The 'kubectl get peerauthentication -A' command is the standard way to list all PeerAuthentication resources in the cluster.

33
MCQeasy

What is the primary function of the 'root-cert.pem' file in the Istio control plane?

A.To authorize HTTP requests.
B.To authenticate JWT tokens.
C.To encrypt user data in transit.
D.To establish the chain of trust for mTLS.
AnswerD

root-cert.pem holds the trusted root CA certificate that both workloads and the Istio control plane use to validate peer certificates, anchoring the mTLS trust chain. This satisfies the stem's constraint by providing the common trust anchor for certificate verification.

Why this answer

root-cert.pem is the root CA certificate used by Istio's Citadel (istiod) to sign intermediate CA certificates, which in turn sign workload certificates. It anchors the chain of trust that enables mutual TLS between sidecars, so every workload certificate can be verified back to this root. Without a shared root, mTLS handshakes between meshes or across clusters fail.

Exam trap

ICA often tests the distinction between authentication, authorization, and encryption primitives, so the trap is confusing the root CA's trust-anchoring role with JWT authentication or payload encryption.

How to eliminate wrong answers

Option A is wrong because HTTP request authorization is handled by AuthorizationPolicy and Envoy RBAC filters, not by a CA certificate. Option B is wrong because JWT authentication uses RequestAuthentication with a JWKS (JSON Web Key Set), not root-cert.pem. Option C is wrong because encrypting user data in transit is a function of the TLS session keys derived during the mTLS handshake; root-cert.pem only establishes trust, it does not itself encrypt payloads.

34
MCQeasy

Which of the following is NOT a valid action in an Istio AuthorizationPolicy?

A.AUDIT
B.ALLOW
C.REDIRECT
D.DENY
AnswerC

REDIRECT is an Envoy route action, not an authorization decision, so it cannot appear in an Istio AuthorizationPolicy. The policy's action field accepts only ALLOW, DENY, and CUSTOM, which satisfies the stem's requirement for an invalid action.

Why this answer

Istio AuthorizationPolicy supports exactly three actions: ALLOW, DENY, and AUDIT. REDIRECT is not a valid action — it is a feature of VirtualService (HTTP redirect) and RequestAuthentication/Envoy routing, not of AuthorizationPolicy. AUDIT is valid and logs requests that match the policy without allowing or denying them, which is why it is included as a legitimate action.

Exam trap

The trap here is conflating Istio's authorization layer (AuthorizationPolicy: ALLOW/DENY/AUDIT) with its traffic-routing layer (VirtualService: redirect, rewrite, fault injection), so candidates who know REDIRECT exists in Istio pick it without checking which resource it belongs to.

How to eliminate wrong answers

Option A is wrong because AUDIT is a valid AuthorizationPolicy action that records matching requests for audit purposes without affecting the allow/deny decision. Option B is wrong because ALLOW is the default and most commonly used action, permitting requests that match the policy rules. Option D is wrong because DENY is a valid action that explicitly blocks matching requests, and Istio evaluates DENY before ALLOW when multiple policies apply.

35
MCQeasy

You need to configure mutual TLS for a specific workload 'database' in the 'data' namespace, but you want to allow plaintext traffic from a legacy service that cannot use mTLS. Which PeerAuthentication configuration should you use?

A.A PeerAuthentication policy in the 'data' namespace with mode DISABLE and a selector matching 'database'.
B.A PeerAuthentication policy in the 'data' namespace with mode PERMISSIVE and a selector matching 'database'.
C.A PeerAuthentication policy in the 'istio-system' namespace with mode PERMISSIVE and no selector.
D.A PeerAuthentication policy in the 'data' namespace with mode STRICT and a selector matching 'database'.
AnswerB

PERMISSIVE mode allows the workload to accept both mTLS and plaintext traffic. This satisfies the requirement to enforce mTLS for mesh services while still allowing the legacy service to connect without mTLS. The selector ensures the policy applies only to the 'database' workload. This is the correct configuration for a gradual migration to strict mTLS or for accommodating non-mesh clients.

Why this answer

PERMISSIVE mode allows both mTLS and plaintext, making it suitable for workloads that need to accept traffic from both mesh services (using mTLS) and non-mesh services (using plaintext). By applying a PeerAuthentication policy with PERMISSIVE mode and a selector for 'database', you ensure that only that workload accepts both types of traffic, while the rest of the mesh can remain in STRICT mode if desired. This is a common pattern for gradual mTLS adoption.

Exam trap

The trap here is thinking that STRICT mode is needed to 'configure mutual TLS' when in fact PERMISSIVE is required to allow both mTLS and plaintext for the legacy service.

36
MCQmedium

Which of the following is true regarding PeerAuthentication and sidecar-less ambient mode?

A.It requires manual certificate rotation.
B.It only works with sidecar proxies.
C.PeerAuthentication is not supported in ambient mode.
D.It is enforced by the ztunnel on the node.
AnswerD

In ambient mode without sidecars, mTLS and authorisation are handled by the node-level ztunnel proxy rather than per-pod Envoy sidecars. PeerAuthentication policies are therefore enforced by the ztunnel, which terminates and originates the workload traffic on behalf of each pod.

Why this answer

PeerAuthentication applies to the ztunnel in ambient mode to enforce mTLS for traffic between nodes.

37
MCQhard

Why might a 'RequestAuthentication' policy fail to validate a JWT even if the issuer is correct?

A.The proxy cannot reach the JWKS URI.
B.The pod is missing a sidecar.
C.The namespace is missing.
D.The JWT is too long.
AnswerA

RequestAuthentication validates the JWT signature by fetching signing keys from the issuer's JWKS URI. If the proxy cannot reach that endpoint, key retrieval fails and signature verification cannot complete, so the token is rejected even though the issuer claim itself is correct.

Why this answer

A RequestAuthentication policy in Istio validates JWTs by fetching the JSON Web Key Set (JWKS) from the issuer's specified JWKS URI. If the proxy cannot reach that URI (due to network policies, DNS failures, or the endpoint being down), it cannot retrieve the public keys needed to verify the token's signature, causing validation to fail even when the issuer claim is correct. This is a common operational issue in service meshes where egress restrictions or misconfigured service entries block access to external identity providers.

Exam trap

ICA often tests the assumption that JWT validation failures are always due to incorrect issuer or audience claims, but the actual trap is overlooking network connectivity to the JWKS endpoint, which is a frequent real-world cause.

How to eliminate wrong answers

Option B is wrong because a missing sidecar would prevent the policy from being applied at all, but the question states the policy is failing to validate, implying the sidecar is present and the policy is active. Option C is wrong because a missing namespace would cause the policy to not exist or be misapplied, not a JWT validation failure with a correct issuer. Option D is wrong because JWT length is not a validation criterion; tokens can be large, and Istio does not reject them based on size alone.

38
MCQeasy

What is the default behavior of Istio when no AuthorizationPolicy is present for a workload?

A.Allow only traffic within the same namespace.
B.Deny all traffic.
C.Require mTLS for all traffic.
D.Allow all traffic.
AnswerD

With no AuthorizationPolicy bound to a workload, Istio's default posture is permissive: requests reaching the sidecar are forwarded without authorisation checks. This satisfies the stem's "no policy present" constraint, since enforcement only activates once a policy selects the workload. Traffic is therefore allowed by default.

Why this answer

By default, Istio allows all traffic (PERMISSIVE/ALLOW ALL) unless an explicit policy is defined.

39
MCQmedium

You have a namespace 'finance' where all traffic must be encrypted using mutual TLS. You apply a PeerAuthentication policy with 'mode: STRICT' at the namespace scope. A developer reports that a legacy service in the same namespace is failing to communicate. What is the most likely reason?

A.The legacy service is not using an Istio sidecar to handle mTLS handshakes.
B.The Gateway is misconfigured for the legacy service.
C.The DestinationRule for the service is missing the 'mode: ISTIO_MUTUAL' setting.
D.The AuthorizationPolicy is missing a rule for the legacy service.
AnswerA

STRICT mode rejects plaintext traffic, so every workload in the namespace must present a sidecar-managed certificate. A legacy service without an injected sidecar cannot complete the mTLS handshake, since no Envoy proxy terminates TLS on its behalf. The namespace-wide policy therefore blocks it, satisfying the stem's encryption constraint.

Why this answer

A PeerAuthentication policy with mode: STRICT at the namespace scope requires all inbound traffic to workloads in that namespace to use Istio mutual TLS. Only workloads with an Istio sidecar proxy can originate and terminate mTLS, so a legacy service without a sidecar cannot complete the mTLS handshake and its connections fail. The fix is either to inject a sidecar into the legacy service or to use a permissive mode or port-level exception during migration.

Exam trap

ICA often tests the confusion between PeerAuthentication (inbound mTLS mode) and DestinationRule (outbound mTLS settings), tricking candidates into choosing a DestinationRule fix when the real issue is a workload lacking a sidecar under STRICT mode.

How to eliminate wrong answers

Option B is wrong because a Gateway handles ingress traffic at the mesh edge; the failure is between two services inside the same namespace, so the Gateway is not involved in this east-west communication. Option C is wrong because DestinationRule's ISTIO_MUTUAL setting controls outbound mTLS from the client side; the error here is the legacy service's inability to participate in mTLS at all (no sidecar), not a missing client-side DestinationRule setting. Option D is wrong because AuthorizationPolicy governs L7 authorization (who can call what) after mTLS is established; a missing rule would produce a 403 RBAC-style denial, not an mTLS handshake failure.

40
MCQmedium

How can you restrict traffic to a service based on the presence of a specific request header?

A.Use the 'from' field.
B.Use an EnvFilter.
C.Use the 'to' field.
D.Use the 'when' field with 'request.headers'.
AnswerD

The 'when' field in an authorization policy accepts conditions evaluated against request attributes, and 'request.headers' exposes individual header values for matching. This lets you permit or deny traffic only when the named header is present, satisfying the requirement to restrict access based on a specific request header.

Why this answer

In Istio's AuthorizationPolicy, the 'when' field defines additional conditions that must be satisfied for the rule to apply, and 'request.headers' is a supported attribute key. Using 'when' with 'request.headers["X-Custom"]' matching a specific value restricts traffic based on the presence or value of a request header.

Exam trap

The trap here is confusing the three AuthorizationPolicy matching sections — candidates often pick 'from' or 'to' because they sound like they match request attributes, but only 'when' supports header-based conditions.

How to eliminate wrong answers

Option A is wrong because the 'from' field specifies the source of the request (principals, namespaces, IP blocks) — it does not match request headers. Option B is wrong because EnvFilter is an Envoy logging configuration concept, not an Istio authorization condition. Option C is wrong because the 'to' field specifies the destination (methods, paths, ports) of the request, not headers.

41
MCQhard

You have an external service 'legacy-db' outside the mesh. You want to allow access to it from 'webapp' while ensuring 'webapp' presents a valid certificate. How is this achieved?

A.Apply a RequestAuthentication policy.
B.Configure an Egress Gateway and use a DestinationRule with client-side mTLS certificates.
C.Configure an Ingress Gateway.
D.Use a PeerAuthentication policy on the external service.
AnswerB

Egress Gateways can handle mTLS termination/origination for external traffic.

Why this answer

You must use an Egress Gateway with mTLS configured to the external service.

42
MCQmedium

How can you restrict a service to only accept requests from users authenticated via a specific JWT issuer?

A.Only DestinationRule.
B.Only ServiceEntry.
C.Only PeerAuthentication.
D.RequestAuthentication for issuer, then AuthorizationPolicy to verify.
AnswerD

RequestAuthentication validates the JWT against the specified issuer, while AuthorizationPolicy enforces that only requests carrying a token from that issuer are permitted. Together they satisfy the constraint of restricting the service to a single trusted JWT issuer.

Why this answer

You define a RequestAuthentication policy that specifies the trusted issuer, and then use an AuthorizationPolicy that checks for the 'request.auth.claims[iss]' claim.

43
MCQmedium

What is the result of applying an AuthorizationPolicy that has no 'action' field?

A.The request is rejected.
B.It defaults to DENY.
C.The policy is invalid.
D.It defaults to ALLOW.
AnswerD

An AuthorizationPolicy without an action field defaults to ALLOW, satisfying the stem's constraint that no explicit action is declared. Istio's authorisation engine treats the absence of an action as permissive, so matching requests pass through. This differs from DENY, which requires explicit specification, making ALLOW the implicit baseline behaviour.

Why this answer

If the action field is missing, it defaults to 'ALLOW', which is the standard behavior in Istio.

44
MCQeasy

Which tool would you use to verify if a pod has an active mTLS connection?

A.istioctl proxy-config endpoint <pod-name>
B.istioctl dashboard envoy <pod-name>
C.kubectl get mTLS
D.istioctl proxy-config secret <pod-name>
AnswerD

istioctl proxy-config secret <pod-name> queries the Envoy instance's secret configuration, showing the SDS-delivered certificate, its validity and the CA chain used for mTLS. This satisfies the stem's constraint by confirming the pod holds an active mTLS certificate.

Why this answer

The command `istioctl proxy-config secret <pod-name>` lists the secrets (certificates) loaded in the Envoy sidecar, including the workload's mTLS certificate and the root CA. If mTLS is active, you will see the default or custom certificate with its validity and the ROOTCA. This directly confirms that the sidecar has an mTLS identity and is participating in mutual TLS.

Exam trap

ICA often tests the confusion between commands that show endpoints, stats, or dashboards versus the specific command that reveals the actual mTLS certificate material in the sidecar.

How to eliminate wrong answers

Option A is wrong because `proxy-config endpoint` shows Envoy cluster endpoints and health, not TLS certificate state. Option B is wrong because `istioctl dashboard envoy` opens the Envoy admin UI in a browser; while it can show TLS stats, it is not the direct command to verify mTLS secrets. Option C is wrong because `kubectl get mTLS` is not a valid kubectl resource; there is no mTLS CRD.

45
MCQhard

You have a legacy service that cannot handle mTLS. How can you exclude this specific service from the namespace-wide STRICT mTLS policy?

A.Add an annotation 'sidecar.istio.io/inject: false'.
B.Delete the namespace-wide PeerAuthentication policy.
C.Use an AuthorizationPolicy to allow plaintext traffic.
D.Apply a PeerAuthentication with mode: PERMISSIVE using a selector that targets the legacy service.
AnswerD

A PeerAuthentication with mode PERMISSIVE and a workload selector overrides the namespace-wide STRICT policy for that specific workload only, allowing plaintext alongside mTLS. The legacy service, unable to present certificates, can then communicate while the rest of the namespace remains strict.

Why this answer

You can apply a PeerAuthentication policy at the workload level (using 'selector') to override the namespace-wide policy.

46
MCQmedium

You are configuring a RequestAuthentication policy for a workload that must accept JWTs from two different issuers: 'https://accounts.google.com' and 'https://auth.example.com'. Each issuer uses a different JWKS endpoint. Which configuration correctly validates tokens from both issuers?

A.Use a single RequestAuthentication with one jwtRules entry and set the jwksUri to a URL that aggregates both issuers' JWKS.
B.Create a RequestAuthentication with two jwtRules entries, each specifying its own issuer and jwksUri.
C.Create two separate RequestAuthentication policies in the same namespace, one for each issuer, and rely on Istio to merge them.
D.Create a single RequestAuthentication with one jwtRules entry that lists both issuers in the issuer field and both JWKS URIs in jwksUri.
AnswerB

RequestAuthentication supports an array of jwtRules, and each rule can define a distinct issuer and jwksUri. Istio will attempt to validate an incoming JWT against all configured rules, accepting the token if it matches any rule. This is the correct way to support multiple issuers with different key sets.

Why this answer

RequestAuthentication's jwtRules is a list, and each element can specify a different issuer and jwksUri. Istio validates an incoming JWT against each rule and accepts it if any rule matches. This allows a workload to trust tokens from multiple identity providers without custom aggregation or multiple policies.

The policy must be a single resource selecting the workload.

Exam trap

The trap here is assuming that RequestAuthentication can only handle one issuer or that multiple policies can be merged; in fact, a single policy supports multiple jwtRules.

47
MCQhard

You have a requirement to use a custom JWT claim to authorize users. How can you map this claim in an 'AuthorizationPolicy'?

A.Use the 'when' field with 'key: request.auth.claims[custom-claim]' and 'values' to match.
B.Use the 'principals' field.
C.Use the 'from' field in the 'source' object.
D.Use an 'EnvoyFilter' because AuthorizationPolicy does not support claims.
AnswerA

The 'when' condition with key request.auth.claims[custom-claim] matches the validated JWT claim against the listed values, so the policy allows or denies based on that claim. This satisfies the stem's constraint of authorising users via a custom JWT claim.

Why this answer

AuthorizationPolicy supports 'when' conditions to evaluate JWT claims using the 'request.auth.claims' key.

48
MCQmedium

What is the primary purpose of the 'RequestAuthentication' resource?

A.To issue new JWTs.
B.To define JWT validation requirements.
C.To store user credentials.
D.To encrypt traffic between services.
AnswerB

'RequestAuthentication' defines how Istio validates credentials on incoming requests, specifying JWT issuers, JWKS endpoints and audiences that must be satisfied. This directly fulfils the stem's requirement for JWT validation, rejecting tokens failing signature or claim checks before authorisation policies such as 'AuthorizationPolicy' evaluate the request.

Why this answer

RequestAuthentication is used to define which JWT issuers are trusted and how to validate tokens.

49
MCQhard

When using JWT, what is the 'forwardOriginalToken' flag in the RequestAuthentication resource?

A.It deletes the token from the request.
B.It forwards the token to the application.
C.It encrypts the token.
D.It logs the token to the audit log.
AnswerB

forwardOriginalToken preserves the original JWT and passes it unchanged to the backend application after RequestAuthentication validates it. This satisfies scenarios where the workload itself must read the token, rather than relying solely on Istio's validation.

Why this answer

When set to true, the proxy forwards the original JWT to the application, allowing the application to use the token for backend calls.

50
MCQmedium

Your team needs to allow end-users to authenticate using JWT tokens issued by an external OIDC provider. Which resource should you define to validate these tokens?

A.AuthorizationPolicy
B.ServiceEntry
C.PeerAuthentication
D.RequestAuthentication
AnswerD

RequestAuthentication defines the JWT issuer, JWKS endpoint and validation rules that Istio uses to verify tokens from an external OIDC provider, rejecting requests with invalid tokens. It satisfies the stem's requirement to validate externally issued JWTs at the mesh.

Why this answer

RequestAuthentication is specifically designed to configure how Istio validates JWT tokens.

Ready to test yourself?

Try a timed practice session using only Securing Workloads questions.