Skip to main content

Provider Configuration Reference

Cloud Aegis uses a factory pattern for all provider packages. Each provider is configured via an environment variable that selects the implementation.

Provider Selection

PackageEnv VarDefaultValid ValuesNotes
GRCGRC_PROVIDERmemorymemory, postgres, archer, servicenowCompliance/risk management backend
IdentityOKTA_DOMAIN / ENTRA_TENANT_IDmock providersauto-detected from credentialsReal provider activates when credentials are set
FinOpsFINOPS_PROVIDERmemorymemory, aws, gcp, azureCost aggregation source
ContainerCONTAINER_SCANNERmemorymemory, trivyImage vulnerability scanner
WorkflowWORKFLOW_ENGINEmemorymemoryWorkflow orchestration engine
WAFWAF_PROVIDERmemorymemoryWAF golden template manager
SecretsSECRETS_PROVIDERmemorymemory, aws, azure, gcp*Secrets vault provider

* = Stub implementation (returns ErrNotImplemented). Real provider to be implemented when needed for production use.

Per-Provider Configuration

GRC

Env VarRequired WhenDescription
GRC_PROVIDERalwaysProvider type
AEGIS_DATABASE_URLpostgresPostgreSQL connection string

Identity

Identity providers are selected automatically based on available credentials. Both Okta and Entra ID can be active simultaneously.

Env VarRequired WhenDescription
OKTA_DOMAINOktaOkta org domain (e.g., dev-12345.okta.com)
OKTA_API_TOKENOktaOkta API token (env var name, not value)
ENTRA_TENANT_IDEntra IDAzure AD tenant ID
ENTRA_CLIENT_IDEntra IDAzure AD app client ID
ENTRA_CLIENT_SECRETEntra IDAzure AD app client secret

FinOps

Env VarRequired WhenDescription
FINOPS_PROVIDERalwaysProvider type
FINOPS_AWS_REGIONawsAWS region for Cost Explorer (default: us-east-1)

Container

Env VarRequired WhenDescription
CONTAINER_SCANNERalwaysScanner type

Secrets

Env VarRequired WhenDescription
SECRETS_PROVIDERalwaysProvider type

Example: Production .env

# Core
PORT=8080
GRC_PROVIDER=postgres
AEGIS_DATABASE_URL=postgres://user:pass@host:5432/aegis?sslmode=require

# Identity (real providers)
OKTA_DOMAIN=haea.okta.com
OKTA_API_TOKEN=xxxxxxxxxxxx
ENTRA_TENANT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ENTRA_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ENTRA_CLIENT_SECRET=xxxxxxxxxxxx

# FinOps
FINOPS_PROVIDER=aws
FINOPS_AWS_REGION=us-east-1

# Container
CONTAINER_SCANNER=trivy

# Secrets
SECRETS_PROVIDER=memory

# Workflow / WAF (memory-only for now)
WORKFLOW_ENGINE=memory
WAF_PROVIDER=memory

Health Endpoint

GET /health returns the active provider for each package:

{
"status": "healthy",
"providers": {
"grc": "memory",
"identity": ["okta", "entra_id"],
"finops": "memory",
"container": "memory",
"workflow": "memory",
"waf": "memory",
"secrets": "memory"
}
}