conviso-cli 2.7.5__tar.gz → 2.7.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/PKG-INFO +1 -1
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/conviso_cli.egg-info/PKG-INFO +1 -1
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/v1/client.py +5 -1
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/v1/resources_api.py +28 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/v1/schemas/resolvers/__init__.py +19 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/iac/run.py +2 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/sbom/generate.py +1 -1
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/vulnerability/assert_security_rules.py +62 -1
- conviso_cli-2.7.6/convisoappsec/version.py +1 -0
- conviso_cli-2.7.5/convisoappsec/version.py +0 -1
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/README.md +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/conviso_cli.egg-info/SOURCES.txt +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/conviso_cli.egg-info/dependency_links.txt +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/conviso_cli.egg-info/entry_points.txt +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/conviso_cli.egg-info/requires.txt +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/conviso_cli.egg-info/top_level.txt +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/common/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/common/box.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/common/cleaner.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/common/docker.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/common/exceptions.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/common/git_data_parser.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/common/graphql/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/common/graphql/error_handlers.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/common/graphql/errors.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/common/graphql/low_client.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/common/retry_handler.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/common/strings.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/api.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/cleaner.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/client.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/models/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/models/issues/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/models/issues/container.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/models/issues/iac.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/models/issues/normalize.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/models/issues/sast.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/models/issues/sca.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/resources_api.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/schemas/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/schemas/mutations/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/schemas/resolvers/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/v1/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/v1/models/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/v1/models/asset.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/v1/models/issues.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/v1/models/project.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/v1/schemas/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/v1/schemas/mutations/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/util/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/util/ci_provider.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/util/source_code_compressor.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/version_control_system_adapter.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/version_searchers/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/version_searchers/sorted_by_versioning_style.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/version_searchers/timebased_version_seacher.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/version_searchers/version_searcher_result.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/versioning_style/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/versioning_style/semantic_versioning.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/__main__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/assets/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/assets/create.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/assets/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/assets/ls.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/ast/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/ast/dry_run.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/ast/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/common.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/companies/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/companies/ls.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/container/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/container/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/container/run.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/context.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/deploy/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/deploy/create/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/deploy/create/context.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/deploy/create/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/deploy/create/with_/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/deploy/create/with_/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/deploy/create/with_/tag_tracker/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/deploy/create/with_/tag_tracker/context.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/deploy/create/with_/tag_tracker/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/deploy/create/with_/tag_tracker/sort_by/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/deploy/create/with_/tag_tracker/sort_by/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/deploy/create/with_/tag_tracker/sort_by/time_.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/deploy/create/with_/tag_tracker/sort_by/versioning_style.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/deploy/create/with_/values.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/environment_checker.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/findings/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/findings/create/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/findings/create/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/findings/create/with_/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/findings/create/with_/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/findings/create/with_/version_tracker.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/findings/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/findings/import_sarif/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/findings/import_sarif/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/help_option.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/iac/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/iac/dry_run.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/iac/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/requirements_verifier.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/sast/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/sast/dry_run.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/sast/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/sast/run.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/sbom/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/sbom/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/sca/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/sca/dry_run.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/sca/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/sca/run.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/vulnerability/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/vulnerability/container_vulnerability_manager.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/vulnerability/entrypoint.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/vulnerability/rules_schema.json +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/vulnerability/run.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/logger.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/sast/__init__.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/sast/decision.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/sast/sastbox.py +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/scripts/shell_completer/flow_bash_completer.sh +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/scripts/shell_completer/flow_fish_completer.fish +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/scripts/shell_completer/flow_zsh_completer.sh +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/setup.cfg +0 -0
- {conviso_cli-2.7.5 → conviso_cli-2.7.6}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from convisoappsec.common.graphql.low_client import GraphQLClient
|
|
2
2
|
from convisoappsec.flow.graphql_api.v1.resources_api import AssetsAPI, CompaniesApi, IssuesApi, DeploysApi, \
|
|
3
|
-
SbomApi, LogAstError, ContainerApi, ControlSyncStatus
|
|
3
|
+
SbomApi, LogAstError, ContainerApi, ControlSyncStatus, SecurityGateApi
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class ConvisoGraphQLClient():
|
|
@@ -44,3 +44,7 @@ class ConvisoGraphQLClient():
|
|
|
44
44
|
@property
|
|
45
45
|
def control_sync_status(self):
|
|
46
46
|
return ControlSyncStatus(self.__low_client)
|
|
47
|
+
|
|
48
|
+
@property
|
|
49
|
+
def security_gate(self):
|
|
50
|
+
return SecurityGateApi(self.__low_client)
|
|
@@ -487,3 +487,31 @@ class ControlSyncStatus:
|
|
|
487
487
|
)
|
|
488
488
|
|
|
489
489
|
return result
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
class SecurityGateApi(object):
|
|
493
|
+
""" To operations on Security Gate resources in Conviso Platform. """
|
|
494
|
+
|
|
495
|
+
def __init__(self, conviso_graphql_client):
|
|
496
|
+
self.__conviso_graphql_client = conviso_graphql_client
|
|
497
|
+
|
|
498
|
+
def run_security_gate(self, asset_id):
|
|
499
|
+
""" Execute security gate check for an asset using platform rules """
|
|
500
|
+
|
|
501
|
+
graphql_variables = {
|
|
502
|
+
'assetId': str(asset_id)
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
graphql_body_response = self.__conviso_graphql_client.execute(
|
|
506
|
+
resolvers.SECURITY_GATE_RUN,
|
|
507
|
+
graphql_variables
|
|
508
|
+
)
|
|
509
|
+
|
|
510
|
+
expected_path = 'securityGateRun'
|
|
511
|
+
|
|
512
|
+
result = jmespath.search(
|
|
513
|
+
expected_path,
|
|
514
|
+
graphql_body_response,
|
|
515
|
+
)
|
|
516
|
+
|
|
517
|
+
return result
|
|
@@ -177,4 +177,23 @@ query GetDeploysByAsset(
|
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
179
|
}
|
|
180
|
+
"""
|
|
181
|
+
|
|
182
|
+
SECURITY_GATE_RUN = """
|
|
183
|
+
query SecurityGateRun($assetId: ID!) {
|
|
184
|
+
securityGateRun(assetId: $assetId) {
|
|
185
|
+
asset {
|
|
186
|
+
id
|
|
187
|
+
name
|
|
188
|
+
}
|
|
189
|
+
executionDate
|
|
190
|
+
reason {
|
|
191
|
+
low { limit count }
|
|
192
|
+
medium { limit count }
|
|
193
|
+
high { limit count }
|
|
194
|
+
critical { limit count }
|
|
195
|
+
}
|
|
196
|
+
status
|
|
197
|
+
}
|
|
198
|
+
}
|
|
180
199
|
"""
|
|
@@ -181,6 +181,8 @@ def deploy_results_to_conviso(
|
|
|
181
181
|
except ResponseError as error:
|
|
182
182
|
if error.code == 'RECORD_NOT_UNIQUE':
|
|
183
183
|
continue
|
|
184
|
+
elif error.code == "Record not found" or "Record not found" in str(error):
|
|
185
|
+
continue
|
|
184
186
|
else:
|
|
185
187
|
retry_handler = RetryHandler(
|
|
186
188
|
flow_context=flow_context, company_id=company_id, asset_id=asset_id
|
|
@@ -182,7 +182,7 @@ def generate(context, flow_context, asset_id, company_id, repository_dir, send_t
|
|
|
182
182
|
stderr=subprocess.DEVNULL
|
|
183
183
|
)
|
|
184
184
|
command = [f"./conviso/syft scan {repository_dir} -o cyclonedx-json={file_name} "
|
|
185
|
-
f"--select-catalogers '{','.join(catalogers)}'"]
|
|
185
|
+
f"--select-catalogers '{','.join(catalogers)}' --exclude ./conviso"]
|
|
186
186
|
|
|
187
187
|
subprocess.run(command, shell=True, check=True, capture_output=True)
|
|
188
188
|
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/vulnerability/assert_security_rules.py
RENAMED
|
@@ -43,7 +43,8 @@ click_log.basic_config(logger)
|
|
|
43
43
|
'--rules-file',
|
|
44
44
|
'rules_file',
|
|
45
45
|
type=click.File('r'),
|
|
46
|
-
required=
|
|
46
|
+
required=False,
|
|
47
|
+
help="Path to local YAML rules file. If not provided, uses platform-configured rules."
|
|
47
48
|
)
|
|
48
49
|
@click.option(
|
|
49
50
|
'--asset-name',
|
|
@@ -66,6 +67,12 @@ def assert_security_rules(
|
|
|
66
67
|
company_id = company[0]['id']
|
|
67
68
|
|
|
68
69
|
try:
|
|
70
|
+
# If no rules file provided, use platform rules (default behavior)
|
|
71
|
+
if not rules_file:
|
|
72
|
+
run_platform_security_gate(flow_context, asset_id)
|
|
73
|
+
return
|
|
74
|
+
|
|
75
|
+
# Otherwise use local rules file
|
|
69
76
|
rules = yaml.load(
|
|
70
77
|
rules_file,
|
|
71
78
|
Loader=yaml.Loader
|
|
@@ -149,6 +156,60 @@ def tolerated_days_by_severity(rules):
|
|
|
149
156
|
return days_by_severity
|
|
150
157
|
|
|
151
158
|
|
|
159
|
+
def run_platform_security_gate(flow_context, asset_id):
|
|
160
|
+
"""Execute security gate using platform-configured rules."""
|
|
161
|
+
conviso_api = flow_context.create_conviso_graphql_client()
|
|
162
|
+
|
|
163
|
+
click.secho(
|
|
164
|
+
'💬 Running security gate with platform rules...',
|
|
165
|
+
bold=True
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
result = conviso_api.security_gate.run_security_gate(asset_id)
|
|
169
|
+
|
|
170
|
+
if result is None:
|
|
171
|
+
raise click.ClickException(
|
|
172
|
+
'Failed to execute security gate on platform. No result returned.'
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
asset_info = result.get('asset', {})
|
|
176
|
+
asset_name = asset_info.get('name', 'Unknown')
|
|
177
|
+
status = result.get('status')
|
|
178
|
+
reason = result.get('reason', {})
|
|
179
|
+
execution_date = result.get('executionDate', 'Unknown')
|
|
180
|
+
|
|
181
|
+
click.secho(
|
|
182
|
+
f'💬 Security Gate Result for Asset: {asset_name} (ID: {asset_id})',
|
|
183
|
+
bold=True
|
|
184
|
+
)
|
|
185
|
+
click.echo(f' Execution Date: {execution_date}')
|
|
186
|
+
click.echo('')
|
|
187
|
+
|
|
188
|
+
# Display severity counts
|
|
189
|
+
click.secho(' Severity Summary:', bold=True)
|
|
190
|
+
for severity in ['critical', 'high', 'medium', 'low']:
|
|
191
|
+
severity_data = reason.get(severity) if reason else None
|
|
192
|
+
if severity_data is None:
|
|
193
|
+
click.echo(f' ⚪ {severity.upper()}: N/A (not configured)')
|
|
194
|
+
continue
|
|
195
|
+
limit = severity_data.get('limit', 'N/A')
|
|
196
|
+
count = severity_data.get('count', 0)
|
|
197
|
+
status_icon = '❌' if limit != 'N/A' and count > limit else '✅'
|
|
198
|
+
click.echo(f' {status_icon} {severity.upper()}: {count}/{limit}')
|
|
199
|
+
|
|
200
|
+
click.echo('')
|
|
201
|
+
|
|
202
|
+
if status == 'FAIL':
|
|
203
|
+
raise click.ClickException(
|
|
204
|
+
f'Security gate FAILED. Vulnerabilities exceed configured limits.'
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
click.secho(
|
|
208
|
+
f'✅ Security gate PASSED.',
|
|
209
|
+
bold=True
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
|
|
152
213
|
def __raise_if_gate_locked(response):
|
|
153
214
|
if response['locked']:
|
|
154
215
|
click.secho('💬 Vulnerabilities summary...', bold=True)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '2.7.6'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '2.7.5'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/models/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/models/issues/iac.py
RENAMED
|
File without changes
|
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/models/issues/sast.py
RENAMED
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/models/issues/sca.py
RENAMED
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/resources_api.py
RENAMED
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/beta/schemas/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/v1/models/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/graphql_api/v1/schemas/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/version_control_system_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flow/versioning_style/semantic_versioning.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/deploy/create/with_/__init__.py
RENAMED
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/deploy/create/with_/entrypoint.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/findings/create/with_/__init__.py
RENAMED
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/findings/create/with_/entrypoint.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/findings/import_sarif/__init__.py
RENAMED
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/findings/import_sarif/entrypoint.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{conviso_cli-2.7.5 → conviso_cli-2.7.6}/convisoappsec/flowcli/vulnerability/rules_schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|