Overview
Identity (also known as a workload identity) is one of the four Control Plane principal types (users, service accounts, groups, and identities). A workload needing to consume cloud resources from one or more cloud providers (e.g., AWS, Azure, and GCP) without storing credentials or needing to communicate to endpoints within a private network - must be assigned an identity. An identity is a named object that allows an authorized administrator to define:Cloud Provider Access (Universal Cloud Identity)
- Least-privilege access rules allowed on cloud resources across cloud providers. Each identity can reference only one cloud account per provider. For example, you can have one account in Azure and one account in GCP, but not two different accounts in GCP within the same identity. You define access policies granted to the identity for each cloud provider you need to use (one, two, or all three clouds, depending on your workload requirements).
Private Network Access (Cloud Wormhole)
- Network traversal rules from workloads into specific endpoints in private networks (e.g., a VPC). These rules connect an agent in a private network to the Control Plane infrastructure, allowing workloads to selectively access TCP endpoints inside private networks where agents are installed and running.
Native Cloud Network Access
- Provides secure, private connectivity from a workload to cloud-hosted services across AWS (vpc endpoints) and GCP (private service connect) without traversing the public internet. It leverages cloud provider-specific private networking services to route traffic over internal infrastructure. This enables low-latency, secure communication to private resources while maintaining strict network isolation and identity-based access control.
- Access specific resources of AWS, Azure, and/or GCP
- Access private network resources from external cloud accounts, data centers or any other private network. (Tunneling network traffic from workloads to specific TCP hosts and ports is facilitated using agents. This capability is referred to as “wormholes”.)
- Access the NATS NGS service using scoped credentials automatically supplied at runtime
Identities are powerful Control Plane resources that can be granted any permission to your cloud environment. The ability to create identities should only be given to administrators by using a policy.
Create an Identity
Refer to the Create an Identity guide for additional details.Identity Specification
An identity can be configured with the following fields:Cloud Provider Access
AWS Identity (aws
)
Field | Type | Required | Description |
---|---|---|---|
cloudAccountLink | string | Yes | Link to the AWS cloud account |
roleName | string | No* | AWS role name to reuse (max 64 chars) |
policyRefs | array | No* | Array of policy references |
trustPolicy | object | No | AWS trust policy document |
roleName
OR policyRefs
is required, but not both.
Trust Policy Structure:
GCP Identity (gcp
)
Field | Type | Required | Description |
---|---|---|---|
cloudAccountLink | string | Yes | Link to the GCP cloud account |
serviceAccount | string | No* | Existing service account email (must end with .gserviceaccount.com ) |
bindings | array | No* | Array of role bindings |
scopes | array | No | OAuth scopes (defaults to ["https://www.googleapis.com/auth/cloud-platform"] ) |
serviceAccount
OR bindings
is required, but not both.
Binding Structure:
Azure Identity (azure
)
Field | Type | Required | Description |
---|---|---|---|
cloudAccountLink | string | Yes | Link to the Azure cloud account |
roleAssignments | array | Yes | Array of role assignments |
NATS Identity (ngs
)
Field | Type | Required | Description |
---|---|---|---|
cloudAccountLink | string | Yes | Link to the NATS cloud account |
pub | object | No | Publish permissions |
sub | object | No | Subscribe permissions |
resp | object | No | Response permissions |
subs | number | No | Max subscriptions per connection (default: -1, no limit) |
data | number | No | Max bytes a connection can send (default: -1, no limit) |
payload | number | No | Max message payload (default: -1, no limit) |
Private Network Access
Network Resources (networkResources
)
Field | Type | Required | Description |
---|---|---|---|
name | string | Yes | Resource name or domain |
agentLink | string | No | Link to the agent |
IPs | array | No* | Array of IPv4 addresses (1-5 addresses) |
FQDN | string | No* | Fully qualified domain name |
resolverIP | string | No | IPv4 resolver address |
ports | array | Yes | Array of ports (1-10 ports, 0-65535) |
IPs
OR FQDN
is required.
Native Network Resources (nativeNetworkResources
)
Field | Type | Required | Description |
---|---|---|---|
name | string | Yes | Resource name or domain |
FQDN | string | No | Fully qualified domain name |
ports | array | Yes | Array of ports (1-10 ports, 0-65535) |
awsPrivateLink | object | No* | AWS PrivateLink configuration |
gcpServiceConnect | object | No* | GCP Service Connect configuration |
awsPrivateLink
OR gcpServiceConnect
is required.
AWS PrivateLink Structure:
Status
Field | Type | Required | Description |
---|---|---|---|
status | object | No | Provider status information |
status.objectName | string | No | Object name |
status.aws | object | No | AWS provider status |
status.gcp | object | No | GCP provider status |
status.azure | object | No | Azure provider status |
Additional Fields
Field | Type | Required | Description |
---|---|---|---|
gvc | string | No | Parent GVC (used by local tools, ignored by server) |
Example YAML
Here’s a comprehensive example showing all identity types and configurations:Alternative AWS Identity Example (using existing role)
Alternative GCP Identity Example (using existing service account)
Permissions
The permissions below are used to define policies together with one or more of the four principal types:Permission | Description | Implies |
---|---|---|
create | Create new identities | |
delete | Delete existing identities | |
edit | Modify existing identities | view |
manage | Full access | create, delete, edit, manage, use, view |
use | Refer to this identity from other entities (workload, etc) | view |
view | Read-only access |