diff --git a/.mise-tasks/install-helm-plugins b/.mise-tasks/install-helm-plugins index b06c283..7819305 100755 --- a/.mise-tasks/install-helm-plugins +++ b/.mise-tasks/install-helm-plugins @@ -5,5 +5,5 @@ IFS=$'\n\t' plugins=$(helm plugin list) if ! echo "$plugins" | grep -q 'unittest'; then - helm plugin install https://github.com/helm-unittest/helm-unittest.git + helm plugin install https://github.com/helm-unittest/helm-unittest.git --verify=false # `verify` flag was added in helm v4 - topic is dicussed here https://github.com/helm-unittest/helm-unittest/issues/777 fi diff --git a/charts/ggscout/values.schema.json b/charts/ggscout/values.schema.json index f3c9e1c..24e283f 100644 --- a/charts/ggscout/values.schema.json +++ b/charts/ggscout/values.schema.json @@ -51,6 +51,93 @@ } }, "$defs": { + "APIAuth": { + "type": "object", + "required": [ + "login", + "api_key" + ], + "properties": { + "api_key": { + "description": "API key for authenticating", + "type": "string" + }, + "login": { + "description": "Login (including host/ in case of a workload)", + "type": "string" + } + } + }, + "AWSIAMConfig": { + "type": "object", + "required": [ + "aws_account_id" + ], + "properties": { + "aws_account_id": { + "type": "string" + }, + "env": { + "anyOf": [ + { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/Env" + }, + { + "const": null, + "nullable": true + } + ] + }, + "exclude": { + "type": "array", + "items": { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/FilteringRule" + }, + "nullable": true + }, + "external_id": { + "type": "string", + "nullable": true + }, + "include": { + "type": "array", + "items": { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/FilteringRule" + }, + "nullable": true + }, + "mode": { + "description": "The mode gives an additional layer of permissions allowing to configure a Scout instance, giving read-only, write-only, or read and write permissions to that source. Default is read-only.", + "type": "string", + "enum": [ + "read", + "write", + "read/write" + ], + "default": "read" + }, + "profile_name": { + "type": "string", + "nullable": true + }, + "resource_discovery": { + "description": "Optional resource discovery configuration\nIf not specified, resource discovery is disabled", + "anyOf": [ + { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/ResourceDiscoveryConfig" + }, + { + "const": null, + "nullable": true + } + ] + }, + "role_arn": { + "type": "string", + "nullable": true + } + } + }, "Accessibility": { "type": "string", "enum": [ @@ -523,6 +610,154 @@ } } }, + "ConjurConfig": { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "username", + "password", + "auth_mode", + "server_url", + "account", + "fetch_all_versions" + ], + "properties": { + "password": { + "description": "Secret for authenticating", + "type": "string" + }, + "username": { + "type": "string" + }, + "auth_mode": { + "type": "string", + "const": "user" + }, + "accept_invalid_certs": { + "title": "Accept invalid/self-signed certificates (for development only)", + "default": false, + "type": "boolean" + }, + "account": { + "title": "The Conjur account name", + "type": "string" + }, + "env": { + "anyOf": [ + { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/Env" + }, + { + "const": null, + "nullable": true + } + ] + }, + "exclude": { + "type": "array", + "items": { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/FilteringRule" + }, + "nullable": true + }, + "fetch_all_versions": { + "title": "Whether or not to collect all secret versions", + "type": "boolean" + }, + "include": { + "type": "array", + "items": { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/FilteringRule" + }, + "nullable": true + }, + "mode": { + "default": "read", + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/Mode" + }, + "server_url": { + "title": "The Conjur server URL", + "type": "string" + } + }, + "title": "User authentication" + }, + { + "type": "object", + "required": [ + "login", + "api_key", + "auth_mode", + "server_url", + "account", + "fetch_all_versions" + ], + "properties": { + "api_key": { + "description": "API key for authenticating", + "type": "string" + }, + "login": { + "description": "Login (including host/ in case of a workload)", + "type": "string" + }, + "auth_mode": { + "type": "string", + "const": "api" + }, + "accept_invalid_certs": { + "title": "Accept invalid/self-signed certificates (for development only)", + "default": false, + "type": "boolean" + }, + "account": { + "title": "The Conjur account name", + "type": "string" + }, + "env": { + "anyOf": [ + { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/Env" + }, + { + "const": null, + "nullable": true + } + ] + }, + "exclude": { + "type": "array", + "items": { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/FilteringRule" + }, + "nullable": true + }, + "fetch_all_versions": { + "title": "Whether or not to collect all secret versions", + "type": "boolean" + }, + "include": { + "type": "array", + "items": { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/FilteringRule" + }, + "nullable": true + }, + "mode": { + "default": "read", + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/Mode" + }, + "server_url": { + "title": "The Conjur server URL", + "type": "string" + } + }, + "title": "API authentication" + } + ] + }, "ConjurWorkloadAuth": { "type": "object", "required": [ @@ -963,6 +1198,83 @@ } ] }, + { + "type": "object", + "required": [ + "aws_account_id", + "type" + ], + "properties": { + "aws_account_id": { + "type": "string" + }, + "env": { + "anyOf": [ + { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/Env" + }, + { + "const": null, + "nullable": true + } + ] + }, + "exclude": { + "type": "array", + "items": { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/FilteringRule" + }, + "nullable": true + }, + "external_id": { + "type": "string", + "nullable": true + }, + "include": { + "type": "array", + "items": { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/FilteringRule" + }, + "nullable": true + }, + "mode": { + "description": "The mode gives an additional layer of permissions allowing to configure a Scout instance, giving read-only, write-only, or read and write permissions to that source. Default is read-only.", + "type": "string", + "enum": [ + "read", + "write", + "read/write" + ], + "default": "read" + }, + "profile_name": { + "type": "string", + "nullable": true + }, + "resource_discovery": { + "description": "Optional resource discovery configuration\nIf not specified, resource discovery is disabled", + "anyOf": [ + { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/ResourceDiscoveryConfig" + }, + { + "const": null, + "nullable": true + } + ] + }, + "role_arn": { + "type": "string", + "nullable": true + }, + "type": { + "type": "string", + "const": "awsiam" + } + }, + "title": "AWS IAM", + "description": "AWS IAM fetcher for IAM users, roles, groups, and policies" + }, { "type": "object", "required": [ @@ -1409,6 +1721,164 @@ "title": "Conjur Cloud", "description": "Conjur Cloud fetcher" }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "username", + "password", + "auth_mode", + "server_url", + "account", + "fetch_all_versions", + "type" + ], + "properties": { + "password": { + "description": "Secret for authenticating", + "type": "string" + }, + "username": { + "type": "string" + }, + "auth_mode": { + "type": "string", + "const": "user" + }, + "accept_invalid_certs": { + "title": "Accept invalid/self-signed certificates (for development only)", + "default": false, + "type": "boolean" + }, + "account": { + "title": "The Conjur account name", + "type": "string" + }, + "env": { + "anyOf": [ + { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/Env" + }, + { + "const": null, + "nullable": true + } + ] + }, + "exclude": { + "type": "array", + "items": { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/FilteringRule" + }, + "nullable": true + }, + "fetch_all_versions": { + "title": "Whether or not to collect all secret versions", + "type": "boolean" + }, + "include": { + "type": "array", + "items": { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/FilteringRule" + }, + "nullable": true + }, + "mode": { + "default": "read", + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/Mode" + }, + "server_url": { + "title": "The Conjur server URL", + "type": "string" + }, + "type": { + "type": "string", + "const": "conjur" + } + }, + "title": "User authentication" + }, + { + "type": "object", + "required": [ + "login", + "api_key", + "auth_mode", + "server_url", + "account", + "fetch_all_versions", + "type" + ], + "properties": { + "api_key": { + "description": "API key for authenticating", + "type": "string" + }, + "login": { + "description": "Login (including host/ in case of a workload)", + "type": "string" + }, + "auth_mode": { + "type": "string", + "const": "api" + }, + "accept_invalid_certs": { + "title": "Accept invalid/self-signed certificates (for development only)", + "default": false, + "type": "boolean" + }, + "account": { + "title": "The Conjur account name", + "type": "string" + }, + "env": { + "anyOf": [ + { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/Env" + }, + { + "const": null, + "nullable": true + } + ] + }, + "exclude": { + "type": "array", + "items": { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/FilteringRule" + }, + "nullable": true + }, + "fetch_all_versions": { + "title": "Whether or not to collect all secret versions", + "type": "boolean" + }, + "include": { + "type": "array", + "items": { + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/FilteringRule" + }, + "nullable": true + }, + "mode": { + "default": "read", + "$ref": "#/definitions/https%3A~1~1gitguardian.com~1inventory-config/$defs/Mode" + }, + "server_url": { + "title": "The Conjur server URL", + "type": "string" + }, + "type": { + "type": "string", + "const": "conjur" + } + }, + "title": "API authentication" + } + ] + }, { "type": "object", "oneOf": [ @@ -2144,6 +2614,27 @@ "read/write" ] }, + "ResourceDiscoveryConfig": { + "description": "Configuration for AWS resource discovery\n\nResource discovery fetches actual AWS resources (S3 buckets, EC2 instances, etc.)\nto match against IAM policy ResourceSelectors and create GrantsAccessTo edges.\n\n# Default Behavior\nIf `resource_discovery` is not specified in config, resource discovery is disabled.\n\n# Examples\n```toml\n# Enable resource discovery for all supported services\n[sources.aws-iam.resource_discovery]\nenabled = true\n\n# Enable but exclude specific services (performance optimization)\n[sources.aws-iam.resource_discovery]\nenabled = true\nexclude_services = [\"ec2\"] # EC2 has too many instances\n```", + "type": "object", + "required": [ + "enabled" + ], + "properties": { + "enabled": { + "description": "Enable resource discovery", + "type": "boolean" + }, + "exclude_services": { + "description": "Services to exclude from resource discovery (opt-out model)\nIf not specified, all supported services will be fetched.\nExample: [\"ec2\", \"lambda\"] to skip EC2 and Lambda resources", + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + } + }, "RuleElement": { "type": "string" }, @@ -2204,6 +2695,22 @@ "nullable": true } } + }, + "UserAuth": { + "type": "object", + "required": [ + "username", + "password" + ], + "properties": { + "password": { + "description": "Secret for authenticating", + "type": "string" + }, + "username": { + "type": "string" + } + } } } }, diff --git a/docs/index.html b/docs/index.html index 3aa87b5..08f0650 100644 --- a/docs/index.html +++ b/docs/index.html @@ -327,41 +327,51 @@
AWS Secrets Manager fetcher
+ AWS IAMAWS IAM fetcher for IAM users, roles, groups, and policies
@@ -4368,6 +4378,67 @@Optional resource discovery configuration
+If not specified, resource discovery is disabled
Configuration for AWS resource discovery
+ +Resource discovery fetches actual AWS resources (S3 buckets, EC2 instances, etc.)
+to match against IAM policy ResourceSelectors and create GrantsAccessTo edges.
If resource_discovery is not specified in config, resource discovery is disabled.
# Enable resource discovery for all supported services
+[sources.aws-iam.resource_discovery]
+enabled = true
+
+# Enable but exclude specific services (performance optimization)
+[sources.aws-iam.resource_discovery]
+enabled = true
+exclude_services = ["ec2"] # EC2 has too many instances
+
+"awssecretsmanager"
-
-
-
-
-
-
- Enable resource discovery
- - -Authentication method for GCP
-If not specified, defaults to Application Default Credentials
Use a service account key file for authentication
+ exclude_servicesServices to exclude from resource discovery (opt-out model)
+If not specified, all supported services will be fetched.
+Example: ["ec2", "lambda"] to skip EC2 and Lambda resources
Use Kubernetes API to get service account tokens and authenticate via WIF.
-This is the most secure and cloud-native authentication method.
"awsiam"
+
+
+
+
+
+
+ Custom audience for the WIF provider. If not specified, defaults to the standard
-WIF provider URL format: //iam.googleapis.com/projects/{projectnumber}/locations/global/workloadIdentityPools/{poolid}/providers/{provider_id}
AWS Secrets Manager fetcher
+ + -"k8s"
-
-
-
-
-
-
- Google Service Account name (without @project.iam.gserviceaccount.com)
- - - - - - - -Declare an environment
+Same definition as sources_additionalProperties_oneOf_i0_env_anyOf_i0 +null
+
+
+
+
+
+
+ Kubernetes service account name to use for authentication
- - - - - - - -GCP Project ID where the service account is located
- - - - - - - -The mode gives an additional layer of permissions allowing to configure a Scout instance, giving read-only, write-only, or read and write permissions to that source. Default is read-only.
+ +Token expiration time in seconds. Default to 30 minutes
- + regionsThis will infer its configuration based on its environment.
-Works with the GOOGLEAPPLICATIONCREDENTIALS environment variable
-or by automatically calling GCP's metadata endpoint (if run as a GCE or GKE workload).
"awssecretsmanager"
+
+
+
+
+
+
+ GCP Secret Manager fetcher
+ - -Authentication method for GCP
+If not specified, defaults to Application Default Credentials
Declare an environment
-Same definition as sources_additionalProperties_oneOf_i0_env_anyOf_i0 -Use a service account key file for authentication
+ + + + + + + +null
-
-
-
-
-
-
- "service_account_key_file"
@@ -6730,18 +6719,18 @@ Use Kubernetes API to get service account tokens and authenticate via WIF.
+This is the most secure and cloud-native authentication method.
Custom audience for the WIF provider. If not specified, defaults to the standard
+WIF provider URL format: //iam.googleapis.com/projects/{projectnumber}/locations/global/workloadIdentityPools/{poolid}/providers/{provider_id}
"k8s"
- No Additional ItemsGoogle Service Account name (without @project.iam.gserviceaccount.com)
+ + + + + + +The mode gives an additional layer of permissions allowing to configure a Scout instance, giving read-only, write-only, or read and write permissions to that source. Default is read-only.
+ auth + + oneOf + + Kubernetes Workload Identity Federation + + kubernetes_namespaceKubernetes namespace where the service account is located
- -Kubernetes service account name to use for authentication
+ - No Additional ItemsWorkload Identity Pool ID
+ -"gcpsecretmanager"
-
-
-
-
-
-
- GCP Project ID where the service account is located
- - -GCP Project Number
+ + + + + + + +Declare an environment
-Same definition as sources_additionalProperties_oneOf_i0_env_anyOf_i0 -Workload Identity Provider ID
+ + + + + + + +null
-
-
-
-
-
-
- Token expiration time in seconds. Default to 30 minutes
+ @@ -7492,19 +7694,9 @@This will infer its configuration based on its environment.
+Works with the GOOGLEAPPLICATIONCREDENTIALS environment variable
+or by automatically calling GCP's metadata endpoint (if run as a GCE or GKE workload).
"default"
+
+
+
+
+
+
+ Declare an environment
+Same definition as sources_additionalProperties_oneOf_i0_env_anyOf_i0 +null
+
+
+
+
+
+
+ The mode gives an additional layer of permissions allowing to configure a Scout instance, giving read-only, write-only, or read and write permissions to that source. Default is read-only.
+ + +"gcpsecretmanager"
+
+
+
+
+
+
+ Azure Key Vault fetcher
+ + + + + + + + + +Declare an environment
+Same definition as sources_additionalProperties_oneOf_i0_env_anyOf_i0 +null
+
+
+
+
+
+
+ The mode gives an additional layer of permissions allowing to configure a Scout instance, giving read-only, write-only, or read and write permissions to that source. Default is read-only.
+ + +"azurekeyvault"
+
+
+
+
+
+
+ GitLab CI fetcher
+ + + + + + + + + +Declare an environment
+Same definition as sources_additionalProperties_oneOf_i0_env_anyOf_i0 +null
+
+
+
+
+
+
+ "gitlabci"
+
+
+
+
+
+
+ GitLab Personal Access Token fetcher
+ + + + + + + + + +Admin token needed for PAT API access (requires admin privileges)
+ @@ -7664,18 +10020,210 @@Environment designation for this configuration
+Declare an environment
+Same definition as sources_additionalProperties_oneOf_i0_env_anyOf_i0 +null
+
+
+
+
+
+
+ The mode gives an additional layer of permissions allowing to configure a Scout instance, giving read-only, write-only, or read and write permissions to that source. Default is read-only.
- + includeGitLab instance URL (e.g., "https://gitlab.com" or "https://gitlab.example.com")
+ @@ -7903,18 +10496,18 @@"gitlabpat"
@@ -7965,7 +10558,7 @@ GitLab CI fetcher
+ Conjur CloudConjur Cloud fetcher
@@ -8007,18 +10600,18 @@Declare an environment
-Same definition as sources_additionalProperties_oneOf_i0_env_anyOf_i0 -CyberArk client ID or Conjur workload Client ID
+ @@ -8198,18 +10816,18 @@Secret for authenticating
+ - No Additional Items"cyber_ark"
- No Additional Items"workload"
@@ -8604,7 +11376,7 @@ GitLab Personal Access Token fetcher
- + item 8 + + auth + + oneOf + + Kubernetes authenticationAdmin token needed for PAT API access (requires admin privileges)
- + auth + + oneOf + + Kubernetes authentication + + auth_mode"k8s"
@@ -8708,18 +11518,18 @@ Optional Host ID for the K8s authenticator
+ + + + + + + +Environment designation for this configuration
-Kubernetes namespace where service account is defined
+ + + + + + + +Declare an environment
-Same definition as sources_additionalProperties_oneOf_i0_env_anyOf_i0 -null
-
-
-
-
-
-
- Kubernetes service account used for authentication
+ @@ -8900,18 +11767,18 @@Service ID for the K8s authenticator
+ - No Additional ItemsToken expiration time in seconds. Default to 30 minutes
+ + + + + + + +Declare an environment
+Same definition as sources_additionalProperties_oneOf_i0_env_anyOf_i0 +GitLab instance URL (e.g., "https://gitlab.com" or "https://gitlab.example.com")
- + item 1null
+
+
+
+
+
+
+ Conjur Cloud fetcher
- - - - - - - - - -Type: objectThe mode gives an additional layer of permissions allowing to configure a Scout instance, giving read-only, write-only, or read and write permissions to that source. Default is read-only.
+ +"conjurcloud"
@@ -9753,7 +12608,7 @@ Conjur fetcher (supports both OSS and Enterprise)
+ -Secret for authenticating
@@ -9981,18 +12788,18 @@"user"
-API key for authenticating
@@ -10289,18 +13070,18 @@Login (including host/ in case of a workload)
@@ -10372,18 +13146,18 @@"api"
@@ -10455,18 +13221,25 @@ Token expiration time in seconds. Default to 30 minutes
- - - - - + accountThe mode gives an additional layer of permissions allowing to configure a Scout instance, giving read-only, write-only, or read and write permissions to that source. Default is read-only.
@@ -11173,18 +13891,18 @@"conjur"
@@ -11296,7 +14014,7 @@ Akeyless fetcher
@@ -11340,18 +14058,18 @@Akeyless API v2 URL. Default to https://api.akeyless.io/.
If you use an Akeyless Gateway, you must use the complete URL. Example: https://my-akeyless-gw.com/api/v2/
The mode gives an additional layer of permissions allowing to configure a Scout instance, giving read-only, write-only, or read and write permissions to that source. Default is read-only.
@@ -12134,18 +14852,18 @@"apikey"
@@ -12195,18 +14913,18 @@ "akeyless"
@@ -12257,7 +14975,7 @@ Delinea SecretServer fetcher
@@ -12301,18 +15019,18 @@The mode gives an additional layer of permissions allowing to configure a Scout instance, giving read-only, write-only, or read and write permissions to that source. Default is read-only.
@@ -12903,18 +15621,18 @@Top-level domain
This can be found by clicking on "Token API documentation" in the Settings > REST API section of the Secret Server UI