awsEKS connector id:
eks
Quick start
Run Cynative from a shell where the AWS SDK default credential chain can retrieve credentials:Credential discovery
Cynative loads AWS config through the AWS SDK default credential chain and probes credential retrieval. The SDK can use standard sources such as environment variables, shared config and credentials files, SSO-backed profiles, web identity, ECS credentials, and EC2 instance roles. The SDK chain reads these variables — Cynative does not read them to authenticate; it inspects some only as a startup presence signal:AWS_PROFILE/AWS_DEFAULT_PROFILE— selects the named shared-config/credentials profile (also implies the target account).AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/AWS_SESSION_TOKEN— static or temporary credentials.AWS_ROLE_ARN/AWS_WEB_IDENTITY_TOKEN_FILE— web-identity role to assume.AWS_CONFIG_FILE/AWS_SHARED_CREDENTIALS_FILE— override the~/.aws/configand~/.aws/credentialspaths.AWS_CA_BUNDLE— TLS CA bundle for Cynative’s own AWS control calls (credential retrieval, STSAssumeRole, IAM policy fetch). It is not applied to the guarded transport that serves the model’shttp_requestcalls.
Registration and validation
Cynative eagerly validates the credential at startup withsts:GetCallerIdentity. The resolved account number and caller ARN are shown in the startup connector inventory. If config loading, credential retrieval, or that identity check fails, the aws and eks connectors are not registered.
References:
Target selection
Account and identity
The connector signs as whatever account/identity the AWS SDK default chain resolves — Cynative does not pick an account itself. Change the account or identity as you would for theaws CLI: use export AWS_PROFILE=<name>, set static credentials, point at a role, or relocate the credential files. Verify with aws sts get-caller-identity.
Region per request
Region is supplied per request viaaws_auth.region. A regional endpoint requires the region to be present and to match the request host; a partition-global endpoint (such as IAM or global STS) accepts an empty or canonical region. When the region is omitted for a global endpoint, signing falls back to the SDK-resolved region (AWS_REGION / AWS_DEFAULT_REGION / profile, default us-east-1). A region you do supply is used as given.
Change the default region with AWS_REGION (which overrides AWS_DEFAULT_REGION), or have the model pass aws_auth.region per request.
Request usage
Useauth_provider: "aws" and include an aws_auth object:
aws_auth.service is required. aws_auth.region should be supplied for regional endpoints and must match the request host.
Minimal example:
Hardening
Credential downscoping (assumed-role identities)
For assumed-role identities, Cynative re-vends credentials via STSAssumeRole for a one-hour session scoped to the configured policy (default arn:aws:iam::aws:policy/SecurityAudit). The resulting permission set is the role’s policies intersected with the configured policy. With the default SecurityAudit policy, AWS IAM becomes a server-side backstop: if a mutating action slips past the client-side action gate, the scoped credential normally cannot perform it.
IAM-user and root identities run unscoped — Cynative uses their base credentials directly. They are gated solely by the client-side host-pinning and action-authorization checks; there is no AWS-side credential backstop for those identities.
Cynative no longer mints GetFederationToken sessions. Federated-user callers are not supported (see Limitations).
Host pinning
Cynative maps AWS request hosts to an AWS service and region before signing. It rejects unsupported hosts, IP literals, localhost, and VPC endpoints. The request host must match the model-suppliedaws_auth.service and aws_auth.region, preventing a model-authored request from claiming one AWS target while sending credentials to another.
Action authorization
Before signing, Cynative classifies the AWS operation, resolves the IAM action(s) required for it, and checks them against the configured policy withiam:SimulateCustomPolicy. The gate fails closed: if Cynative cannot resolve a required action, the request is denied.
The resolver uses three sources in order: AWS Service Reference API, iam-dataset, then namespace:op derivation. iam:SimulateCustomPolicy must be available to the launching credentials; if it is denied, the gate fails closed.
One operation is pinned without policy simulation: sts:GetCallerIdentity (AWS documents it as requiring no permissions). All other operations must clear the configured policy.
Response redaction
Cynative redacts secret-shaped content and credential-named fields from responses before the model sees them. The defaultSecurityAudit policy also avoids direct secret-value APIs such as secretsmanager:GetSecretValue, kms:Decrypt, ssm:GetParameter, and ec2:GetPasswordData. Redaction is a defense-in-depth layer — treat returned AWS data as sensitive.
Reading the startup posture
The AWS connector line in the startup inventory shows the enforcement mode, configured policy, and resolved identity:access=default(read-only)— the curatedSecurityAuditdefault is in force;access=customfor any other policy.enforced=client— host pinning and action gate only (IAM-user / root identities, or a degraded assumed-role scope).enforced=client+aws— client-side gate plus an STS-scoped session; both boundaries are active.enforced=client+aws(unverified)— the eager STS probe could not pre-confirm the scope; it resolves at first request. If that resolution degrades to unscoped, Cynative emits a⚠️ aws_hardening: cred_scope degraded to disabled (reason=…)warning to stderr.(+eks)— the EKS connector is folded in.
Cynative configuration
The IAM policy the action gate enforces (for all identities), and — for assumed-role identities — the STS session scope. Defaultarn:aws:iam::aws:policy/SecurityAudit.
iam:GetPolicy / iam:GetPolicyVersion denied) causes the aws and eks connectors to fail registration at startup with a clear reason.
Cache settings
AWS hardening metadata (service models and action registries) is cached under<cache.dir>/aws. The cache is shared across connectors.
EKS connector
The EKS connector provides Kubernetes API access to Amazon EKS clusters. It registers alongside theaws connector, sharing the same AWS credentials.
Connector id: eks
How it works
Cynative inherits AWS credentials from the SDK default chain. For each request it:- Resolves the cluster endpoint and CA data via the EKS
DescribeClusterAPI (requireseks:DescribeClusteron the target cluster). - Presigns an STS
GetCallerIdentityrequest to build the Kubernetes bearer token expected by the EKS authenticator. - Applies the shared Kubernetes hardening model (host pinning,
viewRBAC gate, dial-time IP authorization, response redaction).
aws connector.
Request usage
Useauth_provider: "eks" and include an eks_auth object:
eks_auth.cluster_name is required (1–100 letters, digits, hyphens, or underscores, starting with a letter or digit). eks_auth.region defaults to the SDK-configured AWS region, then us-east-1.
Configuring the ClusterRole
The read-only ClusterRole the EKS connector authorizes against is configurable (defaultview):
view widens Cynative’s permitted verbs — including writes. See the shared Kubernetes hardening model for full details.
Defense at a glance (AWS + EKS)
Limitations
- Credential downscoping (assumed-role) is best-effort. An unrecognized caller ARN or a self-assumption denial degrades the STS scope to disabled; the inventory line shows
enforced=clientand a⚠️ aws_hardening: cred_scope degradedwarning is printed to stderr. IAM-user and root identities always showenforced=clientby design. - Federated-user callers are not supported. A federated-user session cannot call IAM APIs (
iam:GetPolicy,iam:GetPolicyVersion), which are required for hardening initialization. Switch to an IAM-user or assumed-role identity. - Custom policy ARNs that the caller cannot read (
iam:GetPolicy/iam:GetPolicyVersiondenied) fail connector registration at startup. - The assumed-role path re-assumes the underlying role with Cynative’s configured
PolicyArns; it does not inherit a session policy that may already narrow the current shell session. - Session policies are not an absolute ceiling against every resource-based policy. An S3 bucket or KMS key policy that grants directly to the STS session principal can bypass the session policy boundary.
SecurityAuditis read-oriented, not strictly side-effect-free. It includes a few audit-support actions with benign side effects, such asiam:GenerateCredentialReportandconfig:DeliverConfigSnapshot.- Action authorization simulates action names against the configured policy; it does not pass per-request resource ARNs or condition context (the resource defaults to
*). For IAM-user and root identities, a policy whose read-only intent depends on resource scoping orDenyon specific resources is not fully enforced client-side. - VPC endpoints and IP-literal AWS targets are rejected by host hardening.
- EKS requires
eks:DescribeClusteron the target cluster to resolve the endpoint and CA data. - EKS bearer-token generation is not downscoped. Kubernetes decouples authentication from authorization; authorization is server-side cluster RBAC. The in-process
viewgate, host pinning, and dial-time IP authorization are the client-side controls. - The
SecurityAuditpolicy can still return sensitive data through non-secret APIs, such as Lambda environment variables fromlambda:GetFunctionConfiguration. Treat returned AWS data as sensitive.

