Skip to main content

Overview

Pod isolation actions let you respond to a threat directly from RAD Security — without leaving the platform and without kubectl access to the cluster. When you create an action, RAD Security queues it for the cluster, and the rad-sync plugin already running in that cluster picks it up and applies the change through the Kubernetes API. Three action types are available: Actions are available both from the Actions tab of a cluster in the UI and from the Cluster Actions API. Every action — whichever way it was created — is recorded with its author, timestamps, and execution result.
Actions target pods. To isolate a workload permanently, address the controller (Deployment, StatefulSet, DaemonSet) as well — see Terminate Pod.

Prerequisites

The cluster is connected to RAD Security and the sync plugin is running and healthy. The plugin status is shown on the Overview tab of the cluster details panel. See Kubernetes Setup and rad-sync.
The rad-sync ClusterRole grants the permissions the actions require. The default Helm chart already includes them:
Your RAD Security user or access key has modify permission on the account. Listing and viewing actions requires read permission.
disable_outbound creates a Kubernetes NetworkPolicy. NetworkPolicies are only enforced if your cluster runs a CNI that implements them (Calico, Cilium, Weave Net, and most managed CNIs). With a CNI that ignores NetworkPolicies, the object is created successfully and the action reports Executed, but traffic is not blocked.

How execution works

1

The action is created

You submit an action from the UI or the API. RAD Security stores it with status Pending and returns an action ID in the form ca-<ksuid>.
2

rad-sync picks it up

The rad-sync plugin in the target cluster polls RAD Security for pending work. The default poll interval is 60 seconds (sync-interval), so an action typically starts executing within a minute.
3

The change is applied

rad-sync applies the operation with the Kubernetes API using the cluster’s own service account — RAD Security never connects inbound to your cluster.
4

The result is reported back

rad-sync reports the outcome, and the action moves to Executed or Failed. The result field carries the message shown in the UI, for example Resource default/nginx-new has been deleted.
5

Failures are retried

A failing action is retried on each sync cycle up to 5 times (max-sync-retries). After that it is marked Failed with a result of Max retries reached: 5. Last error: ....

Action statuses

Using the UI

Open Data Sources → Connections → Clusters, select the cluster, and open the Actions tab.
Isolation Actions tab of a cluster showing the action history
The tab lists every isolation action for the cluster, newest first, with its type, target pod and namespace, applied parameters, status, result message, timestamps, and the user who created it. While an action is pending, the list refreshes automatically every few seconds.

Creating an action

1

Open the dialog

Select New Action in the top right of the Actions tab.
New Isolation Action dialog
2

Choose the action type

Pick Terminate Pod, Disable Outbound Traffic, or Label Pod. A short description of the selected action appears under the field.
Action type dropdown with the three available action types
3

Select the namespace

Namespaces are loaded from the cluster inventory and can be filtered by typing.
Searchable namespace picker
4

Select the pod

The pod list is scoped to the namespace you selected. Changing the namespace resets the pod selection.
5

Fill in action-specific fields and confirm

For Label Pod, add one or more key/value pairs. Then confirm with the action button — Terminate Pod, Disable Outbound, or Apply Labels.
The new action appears in the list as Pending and updates to Executed or Failed on its own once rad-sync has processed it.

Terminate Pod

Terminate Pod selected, showing the destructive action warning
Deletes the pod from the cluster.
This is destructive and cannot be undone. If the pod is managed by a controller (Deployment, ReplicaSet, StatefulSet, DaemonSet), the controller recreates it, typically within seconds and with the same image. Use termination to kill a running process immediately, then follow up by scaling down or removing the controller.

Disable Outbound Traffic

Disable Outbound Traffic selected, showing the network isolation warning
Quarantines the pod so it can no longer initiate outbound connections. A single request expands into two actions:
  1. A label_pod action that applies the quarantine labels to the target pod:
  2. A disable_outbound action that creates a deny-all-egress NetworkPolicy named deny-egress-<quarantine_id> in the pod’s namespace, selecting exactly those labels:
Because the policy selects a unique quarantine_id, each quarantine is independent — quarantining a second pod in the same namespace does not widen or replace the first policy.
The quarantine follows the labels, not the pod. If the pod is deleted and its controller creates a replacement, the new pod has no quarantine labels and is not covered by the policy. Quarantine the replacement as well, or scale the controller down.
Ingress traffic is not affected. The policy sets policyTypes: [Egress] only, so existing connections into the pod and its Service continue to work. That is deliberate: it keeps the pod reachable for forensics while cutting off command-and-control and data exfiltration.

Label Pod

Label Pod selected with a label key and value filled in
Merge-patches metadata.labels on the target pod. Existing labels that you do not name are left untouched. Labels are useful to mark a pod for follow-up tooling — for example to make it selectable by your own NetworkPolicies, admission controls, or dashboards:
Keys and values must satisfy Kubernetes label syntax; invalid labels are rejected before the action is queued. See Label validation rules.

Removing a quarantine

There is no “undo” action. To lift a quarantine, remove the objects in the cluster directly:
The quarantine_id is shown on the action entry in the Actions tab and returned in the action’s parameters.

API reference

All endpoints are served from https://api.rad.security.

Authentication

Create an access key in Settings → Access Keys, exchange it for a session token, and send the token as a bearer token. See Managing API Keys.

Create actions

The request body is an array, so several actions can be queued in one call. Returns 201 Created with the created actions.

Request fields

Response

A single disable_outbound request returns two action objects — the label_pod action that applies the quarantine labels and the disable_outbound action that creates the NetworkPolicy. Both must reach Executed for the pod to be quarantined. The generated quarantine_id is in the parameters of both.

List actions

Returns every action for the cluster, newest first.

Get an action

Use this to poll a single action until it leaves Pending.

Action object

Validation rules

Requests are validated before anything is queued. A rejected request returns 400 and creates no actions — including the other entries in the same batch.
Validation does not check that the pod exists. An action targeting a missing pod is accepted, then reported as Failed by rad-sync with the Kubernetes “not found” error.

Label validation rules

Troubleshooting

The cluster has not picked it up yet. Check the Overview tab of the cluster details panel: the sync plugin must be listed and healthy, and the cluster’s Last seen timestamp should be recent.The default poll interval is 60 seconds, so allow at least a minute. If the plugin is not running, or the cluster has lost connectivity to api.rad.security on port 443, actions queue up and execute once it reconnects.
The pod no longer exists under that name in that namespace — it was already deleted, or it is controller-managed and was recreated with a new name. Refresh the pod list and create the action against the current pod name.
The rad-sync service account is missing the RBAC permission for the operation. Confirm the rad-sync ClusterRole grants delete/patch on pods and create on networkpolicies (see Prerequisites), and upgrade the rad-plugins Helm release if the chart predates these rules.
The NetworkPolicy was created, but nothing enforces it. Verify your CNI implements NetworkPolicy, then confirm the policy and the pod labels line up:
Both quarantine labels must be present on the pod. If the label_pod half of the pair failed, the policy selects nothing.
Expected when a controller owns the pod. Terminating a pod stops the running process; the Deployment or ReplicaSet then schedules a replacement. Scale the controller to zero, or delete it, to keep the workload down.
Session tokens are short-lived — re-authenticate to get a fresh token. Creating actions requires modify permission on the account; listing them requires read.

Next Steps

Kubernetes Setup

Connect a cluster and install the RAD plugins.

rad-sync

The plugin that applies isolation actions in your cluster.

Managing API Keys

Create the access key used to call the Cluster Actions API.

Runtime Security

Detect the behavior that warrants an isolation action.