Public Access
initial-commit
This commit is contained in:
@@ -0,0 +1,267 @@
|
||||
# Charybdis Configuration File
|
||||
# =============================
|
||||
# This file uses TOML format and supports environment variable substitution
|
||||
# using ${VAR_NAME} syntax to avoid storing secrets in the config file.
|
||||
#
|
||||
# Copy this file to 'config.toml' and customize for your environment.
|
||||
|
||||
# Server Configuration
|
||||
# ====================
|
||||
[server]
|
||||
# gRPC server bind address
|
||||
# Default: "[::1]" (IPv6 localhost)
|
||||
# Use "0.0.0.0" to listen on all interfaces
|
||||
grpc_host = "[::1]"
|
||||
|
||||
# gRPC server port
|
||||
# Default: 50051
|
||||
grpc_port = 50051
|
||||
|
||||
# YAML Adapter for Backstage Integration
|
||||
[server.yaml_adapter]
|
||||
# Enable YAML adapter (for Backstage catalog integration)
|
||||
enabled = true
|
||||
|
||||
# YAML adapter bind address
|
||||
host = "0.0.0.0"
|
||||
|
||||
# YAML adapter port
|
||||
port = 8080
|
||||
|
||||
|
||||
# Database Configuration
|
||||
# ======================
|
||||
[database]
|
||||
# PostgreSQL connection URL
|
||||
# Use environment variable substitution to avoid storing credentials
|
||||
# Example: postgresql://user:password@localhost:5432/dbname
|
||||
url = "${DATABASE_URL}"
|
||||
|
||||
# Maximum number of connections in the pool
|
||||
# Default: 10
|
||||
max_connections = 10
|
||||
|
||||
# Connection timeout in seconds
|
||||
# Default: 30
|
||||
connection_timeout_secs = 30
|
||||
|
||||
|
||||
# Security Configuration
|
||||
# ======================
|
||||
[security.mtls]
|
||||
# Enable mutual TLS authentication
|
||||
# When enabled, all clients must present valid certificates
|
||||
# Default: false
|
||||
enabled = false
|
||||
|
||||
# Server certificate (PEM format)
|
||||
# Example: "./certs/server-cert.pem"
|
||||
server_cert = "./certs/server-cert.pem"
|
||||
|
||||
# Server private key (PEM format)
|
||||
# Example: "./certs/server-key.pem"
|
||||
server_key = "./certs/server-key.pem"
|
||||
|
||||
# Client CA certificate for verification (PEM format)
|
||||
# Example: "./certs/ca.pem"
|
||||
client_ca_cert = "./certs/ca.pem"
|
||||
|
||||
# Require client certificate (recommended: true)
|
||||
# Default: true
|
||||
require_client_cert = true
|
||||
|
||||
# Optional: Certificate Revocation List (CRL) file
|
||||
# crl_file = "./certs/crl.pem"
|
||||
|
||||
[security.rbac]
|
||||
# Enable role-based access control
|
||||
# Default: false
|
||||
enabled = false
|
||||
|
||||
# Audit logging configuration
|
||||
[security.rbac.audit]
|
||||
# Enable audit logging for security events
|
||||
# Default: true
|
||||
enabled = true
|
||||
|
||||
# Log all requests (including successful ones)
|
||||
# Default: true
|
||||
log_all_requests = true
|
||||
|
||||
# Log denied requests
|
||||
# Default: true
|
||||
log_denied_requests = true
|
||||
|
||||
# Role mappings: Certificate attributes -> RBAC roles
|
||||
# Note: Default roles are configured in code if this section is empty
|
||||
# Uncomment to customize role mappings
|
||||
#
|
||||
# [[security.rbac.role_mappings]]
|
||||
# role = "admin"
|
||||
# [[security.rbac.role_mappings.rules]]
|
||||
# [security.rbac.role_mappings.rules.subject]
|
||||
# ou = "administrators"
|
||||
#
|
||||
# [[security.rbac.role_mappings]]
|
||||
# role = "developer"
|
||||
# [[security.rbac.role_mappings.rules]]
|
||||
# [security.rbac.role_mappings.rules.subject]
|
||||
# ou = "engineering"
|
||||
|
||||
# Role permissions: role -> list of permissions
|
||||
# Uncomment to customize permissions
|
||||
#
|
||||
# [security.rbac.permissions]
|
||||
# admin = ["entity:create", "entity:read", "entity:update", "entity:delete", "entity:list"]
|
||||
# developer = ["entity:create", "entity:read", "entity:update", "entity:list"]
|
||||
# viewer = ["entity:read", "entity:list"]
|
||||
|
||||
|
||||
# OpenTelemetry Configuration
|
||||
# ============================
|
||||
[telemetry]
|
||||
# Service name for telemetry
|
||||
# Default: "charybdis"
|
||||
service_name = "charybdis"
|
||||
|
||||
# Service version
|
||||
# Default: "0.1.0"
|
||||
service_version = "0.1.0"
|
||||
|
||||
# Environment name (development, staging, production)
|
||||
# Default: "development"
|
||||
environment = "development"
|
||||
|
||||
# Console output for traces/metrics (useful for development)
|
||||
# Default: true
|
||||
# Set to false in production
|
||||
enable_console = true
|
||||
|
||||
# OTLP exporter configuration (for production)
|
||||
[telemetry.otlp]
|
||||
# Enable OTLP exporter (sends telemetry to collector)
|
||||
# Default: false
|
||||
enabled = false
|
||||
|
||||
# OTLP endpoint (without protocol prefix)
|
||||
# Example: "localhost:4317"
|
||||
# endpoint = "localhost:4317"
|
||||
|
||||
# Traces configuration
|
||||
[telemetry.traces]
|
||||
# Sampling ratio (0.0 to 1.0)
|
||||
# 1.0 = sample all traces (development)
|
||||
# 0.1 = sample 10% of traces (production)
|
||||
# Default: 1.0
|
||||
sampler_ratio = 1.0
|
||||
|
||||
# Metrics configuration
|
||||
[telemetry.metrics]
|
||||
# Export interval in seconds
|
||||
# Default: 60
|
||||
export_interval_secs = 60
|
||||
|
||||
# Logs configuration
|
||||
[telemetry.logs]
|
||||
# Log level filter
|
||||
# Options: trace, debug, info, warn, error
|
||||
# Default: "info"
|
||||
level = "info"
|
||||
|
||||
# Enable JSON formatting
|
||||
# Default: false
|
||||
json_format = false
|
||||
|
||||
|
||||
# Plugin Configuration
|
||||
# ====================
|
||||
# Plugins extend Charybdis functionality by reacting to entity lifecycle events
|
||||
|
||||
# DefectDojo Integration Plugin
|
||||
[plugins.defectdojo]
|
||||
# Enable DefectDojo plugin
|
||||
enabled = false
|
||||
|
||||
# DefectDojo API URL
|
||||
# api_url = "https://defectdojo.company.com"
|
||||
|
||||
# DefectDojo API key (use environment variable)
|
||||
# api_key = "${DEFECTDOJO_API_KEY}"
|
||||
|
||||
# Request timeout in seconds
|
||||
# timeout_secs = 30
|
||||
|
||||
# Event handlers
|
||||
# [[plugins.defectdojo.on_entity_created]]
|
||||
# kind = "Service"
|
||||
# action = "create_product"
|
||||
# auto_create_engagement = true
|
||||
#
|
||||
# [[plugins.defectdojo.on_entity_updated]]
|
||||
# kind = "Service"
|
||||
# action = "update_product"
|
||||
# sync_metadata = true
|
||||
|
||||
# Dependency-Track Integration Plugin
|
||||
[plugins.dependencytrack]
|
||||
# Enable Dependency-Track plugin
|
||||
enabled = false
|
||||
|
||||
# Dependency-Track API URL
|
||||
# base_url = "https://dependencytrack.company.com"
|
||||
|
||||
# Dependency-Track API key (use environment variable)
|
||||
# api_key = "${DEPENDENCYTRACK_API_KEY}"
|
||||
|
||||
# Request timeout in seconds
|
||||
# timeout_secs = 30
|
||||
|
||||
# Auto-create projects for new Component entities
|
||||
# auto_create_project = true
|
||||
|
||||
# Default team UUID to assign to new projects (optional)
|
||||
# default_team_uuid = ""
|
||||
|
||||
# Keycloak Identity Provider Sync Plugin
|
||||
[plugins.keycloak]
|
||||
# Enable Keycloak plugin
|
||||
enabled = false
|
||||
|
||||
# Keycloak server URL
|
||||
# base_url = "https://keycloak.company.com"
|
||||
|
||||
# Keycloak realm to sync users and groups from
|
||||
# realm = "master"
|
||||
|
||||
# Service account client credentials (use environment variables)
|
||||
# client_id = "charybdis-sync"
|
||||
# client_secret = "${KEYCLOAK_CLIENT_SECRET}"
|
||||
|
||||
# Sync options
|
||||
# [plugins.keycloak.sync]
|
||||
# Cron schedule (e.g., every 5 minutes)
|
||||
# schedule = "0 */5 * * * *"
|
||||
|
||||
# Run sync on Charybdis startup
|
||||
# on_startup = true
|
||||
|
||||
# Allow manual trigger via API
|
||||
# manual_trigger = true
|
||||
|
||||
# Sync users from Keycloak
|
||||
# sync_users = true
|
||||
|
||||
# Sync groups from Keycloak
|
||||
# sync_groups = true
|
||||
|
||||
# Namespace to assign to synced entities
|
||||
# namespace = "keycloak"
|
||||
|
||||
# Max results per API page
|
||||
# page_size = 100
|
||||
|
||||
# Custom Plugin Example
|
||||
# [plugins.custom_plugin]
|
||||
# enabled = false
|
||||
# setting1 = "value1"
|
||||
# setting2 = "${CUSTOM_PLUGIN_API_KEY}"
|
||||
Reference in New Issue
Block a user