Details of Security in CyberCNS
Agent security
Sqlite is used as a database in CyberCNSAgent only for probe. There is no database in lightweight agents or one time scans.
In the Probe database, the following fields are saved
Fields
Username - Plain Text
HostName - Plain Text
IP address - Encrypted with Company Specific Key
Domain Name - Plain Text
Password - Encrypted with Company Specific Key
Agent database is protected with secure password which is unique per agent.
Cloud security
Database and user login information is isolated per partner.
CyberCNS using OpenSearch as database and Keycloak as authenticator. Each partner is created as a tenant inside OpenSearch and a realm inside Keycloak.
These are tied together and this also provides complete data isolation. The credentials to access the tenant and realm are unique and this is stored in a vault post encryption.
This architecture provides the user with a two level tenant data isolation.
All secret keys are encrypted and saved.Encryption key will be different per company.
Below are the keys that are encrypted.
Agent Credentials:
- Password
Integrations
Password
APIKey
SSH PrivKey
Secret key
for each integration(Which will be different per integration model supported)
Every agent has an oauth client key and this key has capabilities to query only specific APIs for agent operation
API Layer Protection
API Keys mimic the user that the key is generated for.
Client authentication
When a confidential OIDC client needs to send a backchannel request (for example, to exchange code for the token, or to refresh the token) it needs to authenticate against the Keycloak server. By default, there are three ways to authenticate the client: client ID and client secret, client authentication with signed JWT, or client authentication with signed JWT using client secret.
Client ID and Client Secret
This is the traditional method described in the OAuth2 specification. The client has a secret, which needs to be known to both the adapter (application) and the Keycloak server.
"credentials": {
"secret": "19666a4f-32dd-4049-b082-684c74115f28"
}
Client authentication with Signed JWT
This is based on the RFC7523 specification.