Skip to main content

CyberArk Secrets Manager Self-Hosted Integration

ggscout supports integration with CyberArk Secrets Manager Self-Hosted (Conjur Enterprise and OSS) to collect and monitor your secrets. This guide will help you set up and configure the integration.

Supported Features​

  • Multiple secret versions collection
  • User and API authentication
  • Self-hosted server configuration
  • Account-based access

Configuration​

The following table lists the available configuration options for ggscout when integrating with CyberArk Secrets Manager Self-Hosted:

ParameterDescriptionRequiredDefault Value
typeMust be set to "cyberarkselfhosted"Yes
server_urlThe URL of your self-hosted CyberArk Secrets Manager serverYes
accountThe Conjur account nameYes
auth_modeAuthentication mode (one of: "user", "api")Yes
fetch_all_versionsWhether to collect all versions of secretsYes
accept_invalid_certsAccept invalid/self-signed certificates (for development only)Nofalse
modeIntegration mode (one of: "read", "write", "read/write")No"read"
envDefault environment of this source's secrets. GitGuardian infers a per-secret environment and falls back to this valueNo
ownerOwner of this source (an email, usually of an employee or a team)No
includeList of path patterns to include in secret collectionNo
excludeList of path patterns to exclude from secret collectionNo

GitGuardian infers the environment of each secret from its policy branch path first, then from its annotations such as env or environment, and uses the source-level env only when neither names one.

With additional parameters depending on the chosen authentication mode:

For User Authentication:

ParameterDescriptionRequiredDefault Value
usernameUsername for authenticationYes
passwordPassword for authenticationYes

For API Authentication:

ParameterDescriptionRequiredDefault Value
loginLogin identity (including host/ prefix for workloads)Yes
api_keyAPI key for authenticationYes

Authentication​

ggscout supports two authentication methods for CyberArk Secrets Manager Self-Hosted:

User Authentication​

Use this method when authenticating with a username and password:

[sources.cyberarkselfhosted]
type = "cyberarkselfhosted"
server_url = "https://conjur.example.com"
account = "myorg"
auth_mode = "user"
username = "${CONJUR_USERNAME}"
password = "${CONJUR_PASSWORD}"
fetch_all_versions = true
mode = "read"
env = "production"
owner = "devops-team@example.com"

[[sources.cyberarkselfhosted.include]]
resource_ids = ["app/*", "database/*", "api-key"]

[[sources.cyberarkselfhosted.exclude]]
resource_ids = ["test/*", "temp/*", "old-secret"]

API Authentication​

Use this method when authenticating with an API key and login identity. This is the recommended approach for workloads:

[sources.cyberarkselfhosted]
type = "cyberarkselfhosted"
server_url = "https://conjur.example.com"
account = "myorg"
auth_mode = "api"
login = "${CONJUR_LOGIN}"
api_key = "${CONJUR_API_KEY}"
fetch_all_versions = true
mode = "read"
env = "production"
owner = "devops-team@example.com"

[[sources.cyberarkselfhosted.include]]
resource_ids = ["app/*", "database/*", "api-key"]

[[sources.cyberarkselfhosted.exclude]]
resource_ids = ["test/*", "temp/*", "old-secret"]
tip

For host/workload authentication, the login parameter should include the host/ prefix followed by the host identity path. For example: host/myapp/production/ggscout.

Self-Signed Certificates​

If your self-hosted CyberArk Secrets Manager uses self-signed certificates, you can disable certificate verification for development environments:

[sources.cyberarkselfhosted]
type = "cyberarkselfhosted"
server_url = "https://conjur.example.com"
account = "myorg"
auth_mode = "api"
login = "${CONJUR_LOGIN}"
api_key = "${CONJUR_API_KEY}"
fetch_all_versions = true
accept_invalid_certs = true # Only for development!
warning

Setting accept_invalid_certs = true disables TLS certificate verification. This should only be used in development environments, never in production.

Include and Exclude Patterns​

You can control which secrets are collected using include and exclude patterns:

[sources.cyberarkselfhosted]
type = "cyberarkselfhosted"
server_url = "https://conjur.example.com"
account = "myorg"
auth_mode = "api"
login = "${CONJUR_LOGIN}"
api_key = "${CONJUR_API_KEY}"
fetch_all_versions = true

# Only collect secrets matching these patterns
[[sources.cyberarkselfhosted.include]]
resource_ids = ["production/*", "shared/*"]

# Exclude secrets matching these patterns
[[sources.cyberarkselfhosted.exclude]]
resource_ids = ["test-*", "temp-*"]

Write Mode​

To enable secret synchronization (writing secrets back to CyberArk Secrets Manager Self-Hosted), set the mode to read/write or write:

[sources.cyberarkselfhosted]
type = "cyberarkselfhosted"
server_url = "https://conjur.example.com"
account = "myorg"
auth_mode = "api"
login = "${CONJUR_LOGIN}"
api_key = "${CONJUR_API_KEY}"
fetch_all_versions = true
mode = "read/write"
note

The identity must have update privileges on the target variables to write secrets.