s1-shift-left-cli 0.4.0__py3-none-any.whl
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.
- s1_cns_cli/__init__.py +0 -0
- s1_cns_cli/cli/__init__.py +0 -0
- s1_cns_cli/cli/command_line_arguments.py +683 -0
- s1_cns_cli/cli/config/__init__.py +1 -0
- s1_cns_cli/cli/config/config.py +64 -0
- s1_cns_cli/cli/config/config_manager.py +30 -0
- s1_cns_cli/cli/main.py +167 -0
- s1_cns_cli/cli/registry.py +361 -0
- s1_cns_cli/cli/scan/__init__.py +0 -0
- s1_cns_cli/cli/scan/code_scanner.py +62 -0
- s1_cns_cli/cli/scan/iac.py +798 -0
- s1_cns_cli/cli/scan/secret.py +423 -0
- s1_cns_cli/cli/scan/vulnerability.py +396 -0
- s1_cns_cli/cli/utils.py +545 -0
- s1_cns_cli/s1graph/__init__.py +0 -0
- s1_cns_cli/s1graph/ansible/__init__.py +1 -0
- s1_cns_cli/s1graph/ansible/checks/__init__.py +1 -0
- s1_cns_cli/s1graph/ansible/checks/base_ansible_task_check.py +76 -0
- s1_cns_cli/s1graph/ansible/checks/base_ansible_task_value_check.py +79 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/BlockErrorHandling.yaml +10 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/DnfDisableGpgCheck.yaml +12 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/DnfSslVerify.yaml +12 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/DnfValidateCerts.yaml +12 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/GetUrlHttpsOnly.yaml +12 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/PanosInterfaceMgmtProfileNoHTTP.yaml +17 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/PanosInterfaceMgmtProfileNoTelnet.yaml +17 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/PanosPolicyDescription.yaml +16 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/PanosPolicyLogForwarding.yaml +16 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/PanosPolicyLoggingEnabled.yaml +12 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/PanosPolicyNoApplicationAny.yaml +22 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/PanosPolicyNoDSRI.yaml +17 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/PanosPolicyNoServiceAny.yaml +22 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/PanosPolicyNoSrcAnyDstAny.yaml +40 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/PanosZoneProtectionProfile.yaml +16 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/PanosZoneUserIDIncludeACL.yaml +31 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/UriHttpsOnly.yaml +12 -0
- s1_cns_cli/s1graph/ansible/checks/graph_checks/__init__.py +0 -0
- s1_cns_cli/s1graph/ansible/checks/registry.py +4 -0
- s1_cns_cli/s1graph/ansible/checks/task/__init__.py +2 -0
- s1_cns_cli/s1graph/ansible/checks/task/aws/EC2EBSOptimized.py +31 -0
- s1_cns_cli/s1graph/ansible/checks/task/aws/EC2PublicIP.py +34 -0
- s1_cns_cli/s1graph/ansible/checks/task/aws/__init__.py +4 -0
- s1_cns_cli/s1graph/ansible/checks/task/builtin/AptAllowUnauthenticated.py +28 -0
- s1_cns_cli/s1graph/ansible/checks/task/builtin/AptForce.py +28 -0
- s1_cns_cli/s1graph/ansible/checks/task/builtin/GetUrlValidateCerts.py +23 -0
- s1_cns_cli/s1graph/ansible/checks/task/builtin/UriValidateCerts.py +23 -0
- s1_cns_cli/s1graph/ansible/checks/task/builtin/YumSslVerify.py +23 -0
- s1_cns_cli/s1graph/ansible/checks/task/builtin/YumValidateCerts.py +23 -0
- s1_cns_cli/s1graph/ansible/checks/task/builtin/__init__.py +4 -0
- s1_cns_cli/s1graph/ansible/graph_builder/__init__.py +0 -0
- s1_cns_cli/s1graph/ansible/graph_builder/graph_components/__init__.py +0 -0
- s1_cns_cli/s1graph/ansible/graph_builder/graph_components/resource_types.py +10 -0
- s1_cns_cli/s1graph/ansible/graph_builder/local_graph.py +145 -0
- s1_cns_cli/s1graph/ansible/runner.py +132 -0
- s1_cns_cli/s1graph/ansible/utils.py +91 -0
- s1_cns_cli/s1graph/argo_workflows/__init__.py +1 -0
- s1_cns_cli/s1graph/argo_workflows/checks/__init__.py +1 -0
- s1_cns_cli/s1graph/argo_workflows/checks/base_argo_workflows_check.py +41 -0
- s1_cns_cli/s1graph/argo_workflows/checks/registry.py +4 -0
- s1_cns_cli/s1graph/argo_workflows/checks/template/DefaultServiceAccount.py +29 -0
- s1_cns_cli/s1graph/argo_workflows/checks/template/RunAsNonRoot.py +31 -0
- s1_cns_cli/s1graph/argo_workflows/checks/template/__init__.py +4 -0
- s1_cns_cli/s1graph/argo_workflows/common/__init__.py +0 -0
- s1_cns_cli/s1graph/argo_workflows/runner.py +142 -0
- s1_cns_cli/s1graph/arm/__init__.py +1 -0
- s1_cns_cli/s1graph/arm/base_parameter_check.py +44 -0
- s1_cns_cli/s1graph/arm/base_registry.py +16 -0
- s1_cns_cli/s1graph/arm/base_resource_check.py +66 -0
- s1_cns_cli/s1graph/arm/base_resource_negative_value_check.py +70 -0
- s1_cns_cli/s1graph/arm/base_resource_value_check.py +72 -0
- s1_cns_cli/s1graph/arm/checks/__init__.py +2 -0
- s1_cns_cli/s1graph/arm/checks/graph_checks/AzureSpringCloudConfigWithVnet.yaml +15 -0
- s1_cns_cli/s1graph/arm/checks/graph_checks/__init__.py +0 -0
- s1_cns_cli/s1graph/arm/checks/parameter/SecureStringParameterNoHardcodedValue.py +23 -0
- s1_cns_cli/s1graph/arm/checks/parameter/__init__.py +5 -0
- s1_cns_cli/s1graph/arm/checks/resource/AKSApiServerAuthorizedIpRanges.py +45 -0
- s1_cns_cli/s1graph/arm/checks/resource/AKSDashboardDisabled.py +39 -0
- s1_cns_cli/s1graph/arm/checks/resource/AKSLoggingEnabled.py +39 -0
- s1_cns_cli/s1graph/arm/checks/resource/AKSNetworkPolicy.py +36 -0
- s1_cns_cli/s1graph/arm/checks/resource/AKSRbacEnabled.py +33 -0
- s1_cns_cli/s1graph/arm/checks/resource/AppServiceAuthentication.py +39 -0
- s1_cns_cli/s1graph/arm/checks/resource/AppServiceClientCertificate.py +27 -0
- s1_cns_cli/s1graph/arm/checks/resource/AppServiceHTTPSOnly.py +26 -0
- s1_cns_cli/s1graph/arm/checks/resource/AppServiceHttps20Enabled.py +24 -0
- s1_cns_cli/s1graph/arm/checks/resource/AppServiceIdentity.py +32 -0
- s1_cns_cli/s1graph/arm/checks/resource/AppServiceMinTLSVersion.py +24 -0
- s1_cns_cli/s1graph/arm/checks/resource/AzureInstancePassword.py +37 -0
- s1_cns_cli/s1graph/arm/checks/resource/AzureManagedDiscEncryption.py +30 -0
- s1_cns_cli/s1graph/arm/checks/resource/AzureScaleSetPassword.py +38 -0
- s1_cns_cli/s1graph/arm/checks/resource/CosmosDBDisableAccessKeyWrite.py +24 -0
- s1_cns_cli/s1graph/arm/checks/resource/CustomRoleDefinitionSubscriptionOwner.py +39 -0
- s1_cns_cli/s1graph/arm/checks/resource/KeyvaultRecoveryEnabled.py +28 -0
- s1_cns_cli/s1graph/arm/checks/resource/MariaDBSSLEnforcementEnabled.py +22 -0
- s1_cns_cli/s1graph/arm/checks/resource/MonitorLogProfileCategories.py +27 -0
- s1_cns_cli/s1graph/arm/checks/resource/MonitorLogProfileRetentionDays.py +31 -0
- s1_cns_cli/s1graph/arm/checks/resource/MySQLServerSSLEnforcementEnabled.py +22 -0
- s1_cns_cli/s1graph/arm/checks/resource/NSGRulePortAccessRestricted.py +65 -0
- s1_cns_cli/s1graph/arm/checks/resource/NSGRuleRDPAccessRestricted.py +11 -0
- s1_cns_cli/s1graph/arm/checks/resource/NSGRuleSSHAccessRestricted.py +9 -0
- s1_cns_cli/s1graph/arm/checks/resource/NetworkWatcherFlowLogPeriod.py +38 -0
- s1_cns_cli/s1graph/arm/checks/resource/PostgreSQLServerConnectionThrottlingEnabled.py +43 -0
- s1_cns_cli/s1graph/arm/checks/resource/PostgreSQLServerLogCheckpointsEnabled.py +44 -0
- s1_cns_cli/s1graph/arm/checks/resource/PostgreSQLServerLogConnectionsEnabled.py +44 -0
- s1_cns_cli/s1graph/arm/checks/resource/PostgreSQLServerSSLEnforcementEnabled.py +22 -0
- s1_cns_cli/s1graph/arm/checks/resource/SQLServerAuditingEnabled.py +42 -0
- s1_cns_cli/s1graph/arm/checks/resource/SQLServerAuditingRetention90Days.py +43 -0
- s1_cns_cli/s1graph/arm/checks/resource/SQLServerEmailAlertsEnabled.py +42 -0
- s1_cns_cli/s1graph/arm/checks/resource/SQLServerEmailAlertsToAdminsEnabled.py +43 -0
- s1_cns_cli/s1graph/arm/checks/resource/SQLServerNoPublicAccess.py +38 -0
- s1_cns_cli/s1graph/arm/checks/resource/SQLServerThreatDetectionTypes.py +37 -0
- s1_cns_cli/s1graph/arm/checks/resource/SecretExpirationDate.py +27 -0
- s1_cns_cli/s1graph/arm/checks/resource/SecurityCenterContactEmailAlert.py +26 -0
- s1_cns_cli/s1graph/arm/checks/resource/SecurityCenterContactEmailAlertAdmins.py +26 -0
- s1_cns_cli/s1graph/arm/checks/resource/SecurityCenterContactPhone.py +26 -0
- s1_cns_cli/s1graph/arm/checks/resource/SecurityCenterStandardPricing.py +26 -0
- s1_cns_cli/s1graph/arm/checks/resource/StorageAccountAzureServicesAccessEnabled.py +40 -0
- s1_cns_cli/s1graph/arm/checks/resource/StorageAccountDefaultNetworkAccessDeny.py +38 -0
- s1_cns_cli/s1graph/arm/checks/resource/StorageAccountDisablePublicAccess.py +24 -0
- s1_cns_cli/s1graph/arm/checks/resource/StorageAccountLoggingQueueServiceEnabled.py +41 -0
- s1_cns_cli/s1graph/arm/checks/resource/StorageAccountsTransportEncryption.py +40 -0
- s1_cns_cli/s1graph/arm/checks/resource/StorageBlobServiceContainerPrivateAccess.py +32 -0
- s1_cns_cli/s1graph/arm/checks/resource/__init__.py +5 -0
- s1_cns_cli/s1graph/arm/context_parser.py +229 -0
- s1_cns_cli/s1graph/arm/graph_builder/__init__.py +0 -0
- s1_cns_cli/s1graph/arm/graph_builder/graph_components/__init__.py +0 -0
- s1_cns_cli/s1graph/arm/graph_builder/graph_components/block_types.py +12 -0
- s1_cns_cli/s1graph/arm/graph_builder/graph_components/blocks.py +19 -0
- s1_cns_cli/s1graph/arm/graph_builder/local_graph.py +109 -0
- s1_cns_cli/s1graph/arm/graph_manager.py +42 -0
- s1_cns_cli/s1graph/arm/parser/__init__.py +0 -0
- s1_cns_cli/s1graph/arm/parser/parser.py +79 -0
- s1_cns_cli/s1graph/arm/registry.py +4 -0
- s1_cns_cli/s1graph/arm/runner.py +291 -0
- s1_cns_cli/s1graph/arm/utils.py +59 -0
- s1_cns_cli/s1graph/azure_pipelines/__init__.py +1 -0
- s1_cns_cli/s1graph/azure_pipelines/checks/__init__.py +1 -0
- s1_cns_cli/s1graph/azure_pipelines/checks/base_azure_pipelines_check.py +41 -0
- s1_cns_cli/s1graph/azure_pipelines/checks/job/ContainerDigest.py +33 -0
- s1_cns_cli/s1graph/azure_pipelines/checks/job/ContainerLatestTag.py +42 -0
- s1_cns_cli/s1graph/azure_pipelines/checks/job/DetectImagesUsage.py +26 -0
- s1_cns_cli/s1graph/azure_pipelines/checks/job/SetSecretVariable.py +41 -0
- s1_cns_cli/s1graph/azure_pipelines/checks/job/__init__.py +4 -0
- s1_cns_cli/s1graph/azure_pipelines/checks/registry.py +4 -0
- s1_cns_cli/s1graph/azure_pipelines/common/__init__.py +0 -0
- s1_cns_cli/s1graph/azure_pipelines/common/resource_id_utils.py +41 -0
- s1_cns_cli/s1graph/azure_pipelines/image_referencer/__init__.py +0 -0
- s1_cns_cli/s1graph/azure_pipelines/image_referencer/manager.py +13 -0
- s1_cns_cli/s1graph/azure_pipelines/image_referencer/provider.py +71 -0
- s1_cns_cli/s1graph/azure_pipelines/runner.py +97 -0
- s1_cns_cli/s1graph/bicep/__init__.py +1 -0
- s1_cns_cli/s1graph/bicep/checks/__init__.py +0 -0
- s1_cns_cli/s1graph/bicep/checks/graph_checks/SQLServerAuditingEnabled.yaml +39 -0
- s1_cns_cli/s1graph/bicep/checks/graph_checks/__init__.py +0 -0
- s1_cns_cli/s1graph/bicep/checks/param/__init__.py +1 -0
- s1_cns_cli/s1graph/bicep/checks/param/azure/SecureStringParameterNoHardcodedValue.py +27 -0
- s1_cns_cli/s1graph/bicep/checks/param/azure/__init__.py +4 -0
- s1_cns_cli/s1graph/bicep/checks/param/base_param_check.py +48 -0
- s1_cns_cli/s1graph/bicep/checks/param/base_registry.py +36 -0
- s1_cns_cli/s1graph/bicep/checks/param/registry.py +3 -0
- s1_cns_cli/s1graph/bicep/checks/resource/__init__.py +1 -0
- s1_cns_cli/s1graph/bicep/checks/resource/azure/StorageAccountAzureServicesAccessEnabled.py +36 -0
- s1_cns_cli/s1graph/bicep/checks/resource/azure/StorageAccountDefaultNetworkAccessDeny.py +24 -0
- s1_cns_cli/s1graph/bicep/checks/resource/azure/StorageAccountsTransportEncryption.py +40 -0
- s1_cns_cli/s1graph/bicep/checks/resource/azure/__init__.py +4 -0
- s1_cns_cli/s1graph/bicep/checks/resource/base_registry.py +58 -0
- s1_cns_cli/s1graph/bicep/checks/resource/base_resource_check.py +47 -0
- s1_cns_cli/s1graph/bicep/checks/resource/base_resource_value_check.py +68 -0
- s1_cns_cli/s1graph/bicep/checks/resource/registry.py +3 -0
- s1_cns_cli/s1graph/bicep/graph_builder/__init__.py +0 -0
- s1_cns_cli/s1graph/bicep/graph_builder/context_definitions.py +57 -0
- s1_cns_cli/s1graph/bicep/graph_builder/graph_components/__init__.py +0 -0
- s1_cns_cli/s1graph/bicep/graph_builder/graph_components/block_types.py +16 -0
- s1_cns_cli/s1graph/bicep/graph_builder/graph_components/blocks.py +19 -0
- s1_cns_cli/s1graph/bicep/graph_builder/graph_to_tf_definitions.py +48 -0
- s1_cns_cli/s1graph/bicep/graph_builder/local_graph.py +337 -0
- s1_cns_cli/s1graph/bicep/graph_builder/variable_rendering/__init__.py +0 -0
- s1_cns_cli/s1graph/bicep/graph_builder/variable_rendering/renderer.py +57 -0
- s1_cns_cli/s1graph/bicep/graph_manager.py +41 -0
- s1_cns_cli/s1graph/bicep/image_referencer/__init__.py +0 -0
- s1_cns_cli/s1graph/bicep/image_referencer/base_provider.py +38 -0
- s1_cns_cli/s1graph/bicep/image_referencer/manager.py +19 -0
- s1_cns_cli/s1graph/bicep/image_referencer/provider/__init__.py +0 -0
- s1_cns_cli/s1graph/bicep/image_referencer/provider/azure.py +74 -0
- s1_cns_cli/s1graph/bicep/parser.py +50 -0
- s1_cns_cli/s1graph/bicep/runner.py +281 -0
- s1_cns_cli/s1graph/bicep/utils.py +113 -0
- s1_cns_cli/s1graph/bitbucket/__init__.py +1 -0
- s1_cns_cli/s1graph/bitbucket/base_bitbucket_configuration_check.py +43 -0
- s1_cns_cli/s1graph/bitbucket/checks/__init__.py +4 -0
- s1_cns_cli/s1graph/bitbucket/checks/merge_requests_approvals.py +35 -0
- s1_cns_cli/s1graph/bitbucket/dal.py +78 -0
- s1_cns_cli/s1graph/bitbucket/registry.py +4 -0
- s1_cns_cli/s1graph/bitbucket/runner.py +55 -0
- s1_cns_cli/s1graph/bitbucket/schemas/__init__.py +0 -0
- s1_cns_cli/s1graph/bitbucket/schemas/branch_restrictions.py +210 -0
- s1_cns_cli/s1graph/bitbucket_pipelines/__init__.py +1 -0
- s1_cns_cli/s1graph/bitbucket_pipelines/base_bitbucket_pipelines_check.py +39 -0
- s1_cns_cli/s1graph/bitbucket_pipelines/checks/__init__.py +4 -0
- s1_cns_cli/s1graph/bitbucket_pipelines/checks/latest_image.py +38 -0
- s1_cns_cli/s1graph/bitbucket_pipelines/registry.py +4 -0
- s1_cns_cli/s1graph/bitbucket_pipelines/runner.py +141 -0
- s1_cns_cli/s1graph/circleci_pipelines/__init__.py +1 -0
- s1_cns_cli/s1graph/circleci_pipelines/base_circleci_pipelines_check.py +42 -0
- s1_cns_cli/s1graph/circleci_pipelines/checks/DetectImagesUsage.py +27 -0
- s1_cns_cli/s1graph/circleci_pipelines/checks/ReverseShellNetcat.py +38 -0
- s1_cns_cli/s1graph/circleci_pipelines/checks/ShellInjection.py +42 -0
- s1_cns_cli/s1graph/circleci_pipelines/checks/SuspectCurlInScript.py +37 -0
- s1_cns_cli/s1graph/circleci_pipelines/checks/__init__.py +4 -0
- s1_cns_cli/s1graph/circleci_pipelines/checks/image_version_not_hash.py +37 -0
- s1_cns_cli/s1graph/circleci_pipelines/checks/latest_image.py +33 -0
- s1_cns_cli/s1graph/circleci_pipelines/checks/prevent_development_orbs.py +32 -0
- s1_cns_cli/s1graph/circleci_pipelines/checks/prevent_volatile_orbs.py +32 -0
- s1_cns_cli/s1graph/circleci_pipelines/common/__init__.py +0 -0
- s1_cns_cli/s1graph/circleci_pipelines/common/shell_injection_list.py +8 -0
- s1_cns_cli/s1graph/circleci_pipelines/image_referencer/__init__.py +0 -0
- s1_cns_cli/s1graph/circleci_pipelines/image_referencer/manager.py +12 -0
- s1_cns_cli/s1graph/circleci_pipelines/image_referencer/provider.py +50 -0
- s1_cns_cli/s1graph/circleci_pipelines/registry.py +4 -0
- s1_cns_cli/s1graph/circleci_pipelines/runner.py +123 -0
- s1_cns_cli/s1graph/cloudformation/__init__.py +1 -0
- s1_cns_cli/s1graph/cloudformation/cfn_utils.py +238 -0
- s1_cns_cli/s1graph/cloudformation/checks/__init__.py +0 -0
- s1_cns_cli/s1graph/cloudformation/checks/graph_checks/AppSyncProtectedByWAF.yaml +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/graph_checks/__init__.py +0 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/BaseCloudsplainingIAMCheck.py +82 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/__init__.py +0 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ALBDropHttpHeaders.py +41 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ALBListenerHTTPS.py +49 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ALBListenerTLS12.py +57 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/APIGatewayAccessLogging.py +21 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/APIGatewayAuthorization.py +26 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/APIGatewayCacheEnable.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/APIGatewayV2AccessLogging.py +21 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/APIGatewayXray.py +20 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/AbsSecurityGroupUnrestrictedIngress.py +50 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/AmazonMQBrokerPublicAccess.py +33 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/AppSyncFieldLevelLogs.py +22 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/AppSyncLogging.py +23 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/AthenaWorkgroupConfiguration.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/AuroraEncryption.py +33 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/BackupVaultEncrypted.py +21 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/CloudFrontTLS12.py +25 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/CloudWatchLogGroupKMSKey.py +21 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/CloudWatchLogGroupRetention.py +21 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/CloudfrontDistributionEncryption.py +38 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/CloudfrontDistributionLogging.py +21 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/CloudtrailEncryption.py +23 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/CloudtrailLogValidation.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/CloudtrailMultiRegion.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/CodeBuildProjectEncryption.py +34 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/DAXEncryption.py +20 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/DMSReplicationInstancePubliclyAccessible.py +22 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/DocDBAuditLogs.py +22 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/DocDBEncryption.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/DocDBLogging.py +27 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/DocDBTLS.py +22 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/DynamoDBTablesEncrypted.py +30 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/DynamodbGlobalTableRecovery.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/DynamodbRecovery.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/EBSDefaultEncryption.py +8 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/EBSEncryption.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/EC2Credentials.py +42 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/EC2PublicIP.py +47 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ECRImageScanning.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ECRImmutableTags.py +22 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ECRPolicy.py +81 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ECRRepositoryEncrypted.py +22 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ECSClusterContainerInsights.py +34 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ECSTaskDefinitionEFSVolumeEncryption.py +33 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/EFSEncryptionEnabled.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/EKSControlPlaneLogging.py +7 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/EKSNodeGroupRemoteAccess.py +31 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/EKSPublicAccess.py +6 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/EKSPublicAccessCIDR.py +6 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/EKSSecretsEncryption.py +32 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ELBAccessLogs.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ELBv2AccessLogs.py +28 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtRest.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransit.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransitAuthToken.py +32 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ElasticsearchDomainAuditLogging.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ElasticsearchDomainEnforceHTTPS.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ElasticsearchDomainLogging.py +28 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ElasticsearchEncryption.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/ElasticsearchNodeToNodeEncryption.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/GlobalAcceleratorAcceleratorFlowLogs.py +6 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/GlueDataCatalogEncryption.py +37 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/GlueSecurityConfiguration.py +49 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/GlueSecurityConfigurationEnabled.py +28 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/IAMAdminPolicyDocument.py +53 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/IAMCredentialsExposure.py +29 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/IAMDataExfiltration.py +15 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/IAMPermissionsManagement.py +15 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/IAMPolicyAttachedToGroupOrRoles.py +28 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/IAMPrivilegeEscalation.py +16 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/IAMRoleAllowAssumeFromAccount.py +53 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/IAMRoleAllowsPublicAssume.py +52 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/IAMStarActionPolicyDocument.py +56 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/IAMWriteAccess.py +15 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/IMDSv1Disabled.py +30 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/KMSKeyWildCardPrincipal.py +61 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/KMSRotation.py +27 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/KinesisStreamEncryptionType.py +20 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/LambdaDLQConfigured.py +28 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/LambdaEnvironmentCredentials.py +37 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/LambdaEnvironmentEncryptionSettings.py +30 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/LambdaFunctionLevelConcurrentExecutionLimit.py +23 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/LambdaFunctionURLAuth.py +21 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/LambdaInVPC.py +23 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/LaunchConfigurationEBSEncryption.py +38 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/MQBrokerAuditLogging.py +29 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/NeptuneClusterInstancePublic.py +6 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/NeptuneClusterLogging.py +28 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/NeptuneClusterStorageEncrypted.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/PasswordPolicyExpiration.py +6 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/PasswordPolicyLength.py +6 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/PasswordPolicyLowercaseLetter.py +6 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/PasswordPolicyNumber.py +6 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/PasswordPolicyReuse.py +6 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/PasswordPolicySymbol.py +6 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/PasswordPolicyUppercaseLetter.py +6 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/QLDBLedgerDeletionProtection.py +26 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/QLDBLedgerPermissionsMode.py +20 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/RDSClusterIAMAuthentication.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/RDSEncryption.py +27 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/RDSEnhancedMonitorEnabled.py +25 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/RDSIAMAuthentication.py +26 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/RDSMultiAZEnabled.py +27 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/RDSPubliclyAccessible.py +22 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/RedShiftSSL.py +28 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/RedshiftClusterEncryption.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/RedshiftClusterLogging.py +21 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/RedshiftClusterPubliclyAccessible.py +20 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/RedshiftInEc2ClassicMode.py +21 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/S3AccessLogs.py +23 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/S3BlockPublicACLs.py +18 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/S3BlockPublicPolicy.py +18 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/S3Encryption.py +25 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/S3IgnorePublicACLs.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/S3PublicACLRead.py +21 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/S3PublicACLWrite.py +22 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/S3RestrictPublicBuckets.py +18 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/S3Versioning.py +25 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/SNSTopicEncryption.py +21 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/SQSQueueEncryption.py +23 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/SecretManagerSecretEncrypted.py +29 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/SecurityGroupRuleDescription.py +46 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress22.py +10 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress3389.py +9 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/SecurityGroupUnrestrictedIngress80.py +10 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/TimestreamDatabaseKMSKey.py +23 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/TransferServerIsPublic.py +20 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/VPCEndpointAcceptanceConfigured.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/WAFACLCVE202144228.py +55 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/WAFEnabled.py +21 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/WorkspaceRootVolumeEncrypted.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/WorkspaceUserVolumeEncrypted.py +17 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/aws/__init__.py +5 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/base_registry.py +16 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/base_resource_check.py +48 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/base_resource_negative_value_check.py +76 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/base_resource_value_check.py +113 -0
- s1_cns_cli/s1graph/cloudformation/checks/resource/registry.py +3 -0
- s1_cns_cli/s1graph/cloudformation/checks/utils/__init__.py +0 -0
- s1_cns_cli/s1graph/cloudformation/checks/utils/iam_cloudformation_document_to_policy_converter.py +35 -0
- s1_cns_cli/s1graph/cloudformation/context_parser.py +193 -0
- s1_cns_cli/s1graph/cloudformation/graph_builder/__init__.py +0 -0
- s1_cns_cli/s1graph/cloudformation/graph_builder/graph_components/__init__.py +0 -0
- s1_cns_cli/s1graph/cloudformation/graph_builder/graph_components/block_types.py +15 -0
- s1_cns_cli/s1graph/cloudformation/graph_builder/graph_components/blocks.py +94 -0
- s1_cns_cli/s1graph/cloudformation/graph_builder/graph_components/generic_resource_encryption.py +100 -0
- s1_cns_cli/s1graph/cloudformation/graph_builder/graph_to_definitions.py +42 -0
- s1_cns_cli/s1graph/cloudformation/graph_builder/local_graph.py +402 -0
- s1_cns_cli/s1graph/cloudformation/graph_builder/utils.py +67 -0
- s1_cns_cli/s1graph/cloudformation/graph_builder/variable_rendering/__init__.py +0 -0
- s1_cns_cli/s1graph/cloudformation/graph_builder/variable_rendering/renderer.py +516 -0
- s1_cns_cli/s1graph/cloudformation/graph_builder/variable_rendering/vertex_reference.py +13 -0
- s1_cns_cli/s1graph/cloudformation/graph_manager.py +55 -0
- s1_cns_cli/s1graph/cloudformation/image_referencer/__init__.py +0 -0
- s1_cns_cli/s1graph/cloudformation/image_referencer/base_provider.py +38 -0
- s1_cns_cli/s1graph/cloudformation/image_referencer/manager.py +19 -0
- s1_cns_cli/s1graph/cloudformation/image_referencer/provider/__init__.py +0 -0
- s1_cns_cli/s1graph/cloudformation/image_referencer/provider/aws.py +98 -0
- s1_cns_cli/s1graph/cloudformation/parser/__init__.py +89 -0
- s1_cns_cli/s1graph/cloudformation/parser/cfn_keywords.py +50 -0
- s1_cns_cli/s1graph/cloudformation/parser/cfn_yaml.py +286 -0
- s1_cns_cli/s1graph/cloudformation/runner.py +283 -0
- s1_cns_cli/s1graph/common/__init__.py +1 -0
- s1_cns_cli/s1graph/common/checks/__init__.py +0 -0
- s1_cns_cli/s1graph/common/checks/base_check.py +121 -0
- s1_cns_cli/s1graph/common/checks/base_check_registry.py +213 -0
- s1_cns_cli/s1graph/common/checks/enums.py +8 -0
- s1_cns_cli/s1graph/common/checks/object_registry.py +222 -0
- s1_cns_cli/s1graph/common/checks_infra/__init__.py +0 -0
- s1_cns_cli/s1graph/common/checks_infra/checks_parser.py +319 -0
- s1_cns_cli/s1graph/common/checks_infra/registry.py +92 -0
- s1_cns_cli/s1graph/common/checks_infra/resources_types.py +1291 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/__init__.py +4 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/__init__.py +43 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/any_attribute_solver.py +12 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/base_attribute_solver.py +217 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/base_number_of_words_attribute_solver.py +27 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/contains_attribute_solver.py +24 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/ending_with_attribute_solver.py +12 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/equals_attribute_solver.py +19 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/equals_ignore_case_attribute_solver.py +17 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/exists_attribute_solver.py +12 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/greater_than_attribute_solver.py +21 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/greater_than_or_equal_attribute_solver.py +22 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/intersects_attribute_solver.py +19 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/is_empty_attribute_solver.py +16 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/is_false_attribute_solver.py +11 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/is_not_empty_attribute_solver.py +11 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/is_true_attribute_solver.py +15 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/length_equals_attribute_solver.py +23 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/length_greater_than_attribute_solver.py +27 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/length_greater_than_or_equal_attribute_solver.py +27 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/length_less_than_attribute_solver.py +27 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/length_less_than_or_equal_attribute_solver.py +27 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/length_not_equals_attribute_solver.py +11 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/less_than_attribute_solver.py +14 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/less_than_or_equal_attribute_solver.py +14 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/not_contains_attribute_solver.py +11 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/not_ending_with_attribute_solver.py +11 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/not_equals_attribute_solver.py +11 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/not_equals_ignore_case_attribute_solver.py +11 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/not_exists_attribute_solver.py +11 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/not_intersects_attribute_solver.py +11 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/not_regex_match_attribute_solver.py +11 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/not_starting_with_attribute_solver.py +11 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/not_subset_attribute_solver.py +11 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/not_within_attribute_solver.py +11 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/number_of_words_equals_attribute_solver.py +20 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/number_of_words_greater_than_attribute_solver.py +23 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/number_of_words_greater_than_or_equal_attribute_solver.py +23 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/number_of_words_less_than_attribute_solver.py +23 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/number_of_words_less_than_or_equal_attribute_solver.py +23 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/number_of_words_not_equals_attribute_solver.py +11 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/range_includes_attribute_solver.py +38 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/range_not_includes_attribute_solver.py +10 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/regex_match_attribute_solver.py +18 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/starting_with_attribute_solver.py +12 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/subset_attribute_solver.py +21 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/attribute_solvers/within_attribute_solver.py +12 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/complex_solvers/__init__.py +3 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/complex_solvers/and_solver.py +27 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/complex_solvers/base_complex_solver.py +48 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/complex_solvers/not_solver.py +23 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/complex_solvers/or_solver.py +27 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/connections_solvers/__init__.py +5 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/connections_solvers/and_connection_solver.py +44 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/connections_solvers/base_connection_solver.py +105 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/connections_solvers/complex_connection_solver.py +94 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/connections_solvers/connection_exists_solver.py +81 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/connections_solvers/connection_not_exists_solver.py +32 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/connections_solvers/connection_one_exists_solver.py +33 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/connections_solvers/or_connection_solver.py +36 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/filter_solvers/__init__.py +1 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/filter_solvers/base_filter_solver.py +27 -0
- s1_cns_cli/s1graph/common/checks_infra/solvers/filter_solvers/within_filter_solver.py +23 -0
- s1_cns_cli/s1graph/common/comment/__init__.py +0 -0
- s1_cns_cli/s1graph/common/comment/enum.py +3 -0
- s1_cns_cli/s1graph/common/goget/__init__.py +0 -0
- s1_cns_cli/s1graph/common/goget/base_getter.py +23 -0
- s1_cns_cli/s1graph/common/goget/github/__init__.py +0 -0
- s1_cns_cli/s1graph/common/goget/github/get_git.py +82 -0
- s1_cns_cli/s1graph/common/goget/registry/__init__.py +0 -0
- s1_cns_cli/s1graph/common/goget/registry/get_registry.py +31 -0
- s1_cns_cli/s1graph/common/graph/__init__.py +0 -0
- s1_cns_cli/s1graph/common/graph/checks_infra/__init__.py +0 -0
- s1_cns_cli/s1graph/common/graph/checks_infra/base_check.py +52 -0
- s1_cns_cli/s1graph/common/graph/checks_infra/base_parser.py +14 -0
- s1_cns_cli/s1graph/common/graph/checks_infra/enums.py +75 -0
- s1_cns_cli/s1graph/common/graph/checks_infra/registry.py +56 -0
- s1_cns_cli/s1graph/common/graph/checks_infra/solvers/__init__.py +0 -0
- s1_cns_cli/s1graph/common/graph/checks_infra/solvers/base_solver.py +32 -0
- s1_cns_cli/s1graph/common/graph/db_connectors/__init__.py +0 -0
- s1_cns_cli/s1graph/common/graph/db_connectors/db_connector.py +29 -0
- s1_cns_cli/s1graph/common/graph/db_connectors/networkx/__init__.py +0 -0
- s1_cns_cli/s1graph/common/graph/db_connectors/networkx/networkx_db_connector.py +50 -0
- s1_cns_cli/s1graph/common/graph/graph_builder/__init__.py +2 -0
- s1_cns_cli/s1graph/common/graph/graph_builder/consts.py +19 -0
- s1_cns_cli/s1graph/common/graph/graph_builder/graph_components/__init__.py +0 -0
- s1_cns_cli/s1graph/common/graph/graph_builder/graph_components/attribute_names.py +48 -0
- s1_cns_cli/s1graph/common/graph/graph_builder/graph_components/block_types.py +16 -0
- s1_cns_cli/s1graph/common/graph/graph_builder/graph_components/blocks.py +291 -0
- s1_cns_cli/s1graph/common/graph/graph_builder/graph_components/edge.py +29 -0
- s1_cns_cli/s1graph/common/graph/graph_builder/graph_components/generic_resource_encryption_base.py +51 -0
- s1_cns_cli/s1graph/common/graph/graph_builder/graph_resources_encription_manager.py +29 -0
- s1_cns_cli/s1graph/common/graph/graph_builder/local_graph.py +107 -0
- s1_cns_cli/s1graph/common/graph/graph_builder/utils.py +46 -0
- s1_cns_cli/s1graph/common/graph/graph_builder/variable_rendering/__init__.py +0 -0
- s1_cns_cli/s1graph/common/graph/graph_builder/variable_rendering/breadcrumb_metadata.py +9 -0
- s1_cns_cli/s1graph/common/graph/graph_builder/variable_rendering/renderer.py +134 -0
- s1_cns_cli/s1graph/common/graph/graph_builder/variable_rendering/vertex_reference.py +30 -0
- s1_cns_cli/s1graph/common/graph/graph_manager.py +49 -0
- s1_cns_cli/s1graph/common/images/__init__.py +0 -0
- s1_cns_cli/s1graph/common/images/graph/__init__.py +0 -0
- s1_cns_cli/s1graph/common/images/graph/image_referencer_manager.py +20 -0
- s1_cns_cli/s1graph/common/images/graph/image_referencer_provider.py +58 -0
- s1_cns_cli/s1graph/common/images/image_referencer.py +330 -0
- s1_cns_cli/s1graph/common/images/workflow/__init__.py +0 -0
- s1_cns_cli/s1graph/common/images/workflow/image_referencer_manager.py +21 -0
- s1_cns_cli/s1graph/common/images/workflow/image_referencer_provider.py +21 -0
- s1_cns_cli/s1graph/common/models/__init__.py +0 -0
- s1_cns_cli/s1graph/common/models/consts.py +35 -0
- s1_cns_cli/s1graph/common/models/enums.py +61 -0
- s1_cns_cli/s1graph/common/multi_signature.py +129 -0
- s1_cns_cli/s1graph/common/output/__init__.py +0 -0
- s1_cns_cli/s1graph/common/output/ai.py +152 -0
- s1_cns_cli/s1graph/common/output/baseline.py +98 -0
- s1_cns_cli/s1graph/common/output/common.py +54 -0
- s1_cns_cli/s1graph/common/output/csv.py +232 -0
- s1_cns_cli/s1graph/common/output/cyclonedx.py +470 -0
- s1_cns_cli/s1graph/common/output/cyclonedx_consts.py +181 -0
- s1_cns_cli/s1graph/common/output/extra_resource.py +18 -0
- s1_cns_cli/s1graph/common/output/github_actions_record.py +45 -0
- s1_cns_cli/s1graph/common/output/gitlab_sast.py +173 -0
- s1_cns_cli/s1graph/common/output/graph_record.py +17 -0
- s1_cns_cli/s1graph/common/output/record.py +246 -0
- s1_cns_cli/s1graph/common/output/report.py +607 -0
- s1_cns_cli/s1graph/common/output/sarif.py +243 -0
- s1_cns_cli/s1graph/common/output/secrets_record.py +144 -0
- s1_cns_cli/s1graph/common/packaging/__init__.py +0 -0
- s1_cns_cli/s1graph/common/packaging/version.py +141 -0
- s1_cns_cli/s1graph/common/parallelizer/__init__.py +0 -0
- s1_cns_cli/s1graph/common/parallelizer/parallel_runner.py +72 -0
- s1_cns_cli/s1graph/common/parsers/__init__.py +0 -0
- s1_cns_cli/s1graph/common/parsers/json/__init__.py +68 -0
- s1_cns_cli/s1graph/common/parsers/json/decoder.py +404 -0
- s1_cns_cli/s1graph/common/parsers/json/errors.py +41 -0
- s1_cns_cli/s1graph/common/parsers/node.py +189 -0
- s1_cns_cli/s1graph/common/parsers/yaml/__init__.py +0 -0
- s1_cns_cli/s1graph/common/parsers/yaml/loader.py +76 -0
- s1_cns_cli/s1graph/common/parsers/yaml/parser.py +49 -0
- s1_cns_cli/s1graph/common/runners/__init__.py +0 -0
- s1_cns_cli/s1graph/common/runners/base_post_runner.py +30 -0
- s1_cns_cli/s1graph/common/runners/base_runner.py +216 -0
- s1_cns_cli/s1graph/common/runners/graph_builder/__init__.py +0 -0
- s1_cns_cli/s1graph/common/runners/graph_builder/local_graph.py +57 -0
- s1_cns_cli/s1graph/common/runners/graph_manager.py +40 -0
- s1_cns_cli/s1graph/common/runners/object_runner.py +354 -0
- s1_cns_cli/s1graph/common/runners/runner_registry.py +680 -0
- s1_cns_cli/s1graph/common/s1cns/__init__.py +0 -0
- s1_cns_cli/s1graph/common/s1cns/bc_source.py +50 -0
- s1_cns_cli/s1graph/common/s1cns/check_type.py +37 -0
- s1_cns_cli/s1graph/common/s1cns/code_categories.py +55 -0
- s1_cns_cli/s1graph/common/s1cns/integration_features/__init__.py +1 -0
- s1_cns_cli/s1graph/common/s1cns/integration_features/base_integration_feature.py +45 -0
- s1_cns_cli/s1graph/common/s1cns/integration_features/features/__init__.py +4 -0
- s1_cns_cli/s1graph/common/s1cns/integration_features/features/custom_policies_integration.py +136 -0
- s1_cns_cli/s1graph/common/s1cns/integration_features/features/fixes_integration.py +142 -0
- s1_cns_cli/s1graph/common/s1cns/integration_features/features/licensing_integration.py +87 -0
- s1_cns_cli/s1graph/common/s1cns/integration_features/features/policies_3d_integration.py +82 -0
- s1_cns_cli/s1graph/common/s1cns/integration_features/features/policy_metadata_integration.py +174 -0
- s1_cns_cli/s1graph/common/s1cns/integration_features/features/repo_config_integration.py +142 -0
- s1_cns_cli/s1graph/common/s1cns/integration_features/features/suppressions_integration.py +233 -0
- s1_cns_cli/s1graph/common/s1cns/integration_features/integration_feature_registry.py +52 -0
- s1_cns_cli/s1graph/common/s1cns/licensing.py +29 -0
- s1_cns_cli/s1graph/common/s1cns/platform_errors.py +14 -0
- s1_cns_cli/s1graph/common/s1cns/platform_integration.py +1023 -0
- s1_cns_cli/s1graph/common/s1cns/platform_key.py +24 -0
- s1_cns_cli/s1graph/common/s1cns/run_metadata/__init__.py +1 -0
- s1_cns_cli/s1graph/common/s1cns/run_metadata/abstract_run_metadata_extractor.py +73 -0
- s1_cns_cli/s1graph/common/s1cns/run_metadata/ci_variables.py +15 -0
- s1_cns_cli/s1graph/common/s1cns/run_metadata/extractors/__init__.py +5 -0
- s1_cns_cli/s1graph/common/s1cns/run_metadata/extractors/bitbucket.py +38 -0
- s1_cns_cli/s1graph/common/s1cns/run_metadata/extractors/default_extractor.py +34 -0
- s1_cns_cli/s1graph/common/s1cns/run_metadata/extractors/github_actions.py +40 -0
- s1_cns_cli/s1graph/common/s1cns/run_metadata/extractors/gitlab_ci.py +40 -0
- s1_cns_cli/s1graph/common/s1cns/run_metadata/extractors/jenkins.py +39 -0
- s1_cns_cli/s1graph/common/s1cns/run_metadata/registry.py +29 -0
- s1_cns_cli/s1graph/common/s1cns/severities.py +45 -0
- s1_cns_cli/s1graph/common/s1cns/vulnerability_scanning/__init__.py +0 -0
- s1_cns_cli/s1graph/common/s1cns/vulnerability_scanning/image_scanner.py +203 -0
- s1_cns_cli/s1graph/common/s1cns/vulnerability_scanning/integrations/__init__.py +0 -0
- s1_cns_cli/s1graph/common/s1cns/vulnerability_scanning/integrations/docker_image_scanning.py +80 -0
- s1_cns_cli/s1graph/common/s1cns/vulnerability_scanning/integrations/package_scanning.py +40 -0
- s1_cns_cli/s1graph/common/s1cns/vulnerability_scanning/integrations/twistcli.py +123 -0
- s1_cns_cli/s1graph/common/s1cns/vulnerability_scanning/report.py +45 -0
- s1_cns_cli/s1graph/common/s1cns/wrapper.py +136 -0
- s1_cns_cli/s1graph/common/sca/__init__.py +0 -0
- s1_cns_cli/s1graph/common/sca/commons.py +60 -0
- s1_cns_cli/s1graph/common/sca/output.py +637 -0
- s1_cns_cli/s1graph/common/typing.py +104 -0
- s1_cns_cli/s1graph/common/util/__init__.py +0 -0
- s1_cns_cli/s1graph/common/util/banner.py +29 -0
- s1_cns_cli/s1graph/common/util/config_utils.py +26 -0
- s1_cns_cli/s1graph/common/util/consts.py +35 -0
- s1_cns_cli/s1graph/common/util/contextmanagers.py +21 -0
- s1_cns_cli/s1graph/common/util/data_structures_utils.py +101 -0
- s1_cns_cli/s1graph/common/util/decorators.py +28 -0
- s1_cns_cli/s1graph/common/util/dockerfile.py +7 -0
- s1_cns_cli/s1graph/common/util/docs_generator.py +196 -0
- s1_cns_cli/s1graph/common/util/ext_argument_parser.py +543 -0
- s1_cns_cli/s1graph/common/util/file_utils.py +84 -0
- s1_cns_cli/s1graph/common/util/http_utils.py +247 -0
- s1_cns_cli/s1graph/common/util/json_utils.py +101 -0
- s1_cns_cli/s1graph/common/util/parser_utils.py +398 -0
- s1_cns_cli/s1graph/common/util/prompt.py +277 -0
- s1_cns_cli/s1graph/common/util/runner_dependency_handler.py +50 -0
- s1_cns_cli/s1graph/common/util/secrets.py +240 -0
- s1_cns_cli/s1graph/common/util/secrets_omitter.py +111 -0
- s1_cns_cli/s1graph/common/util/stopit/__init__.py +23 -0
- s1_cns_cli/s1graph/common/util/stopit/signalstop.py +56 -0
- s1_cns_cli/s1graph/common/util/stopit/threadstop.py +81 -0
- s1_cns_cli/s1graph/common/util/stopit/utils.py +148 -0
- s1_cns_cli/s1graph/common/util/str_utils.py +17 -0
- s1_cns_cli/s1graph/common/util/suppression.py +53 -0
- s1_cns_cli/s1graph/common/util/templates/__init__.py +0 -0
- s1_cns_cli/s1graph/common/util/templates/data.jinja2 +29 -0
- s1_cns_cli/s1graph/common/util/templates/init.jinja2 +4 -0
- s1_cns_cli/s1graph/common/util/templates/provider.jinja2 +28 -0
- s1_cns_cli/s1graph/common/util/templates/resource.jinja2 +28 -0
- s1_cns_cli/s1graph/common/util/templates/unittest-python.jinja2 +41 -0
- s1_cns_cli/s1graph/common/util/templates/unittest-terraform.jinja2 +9 -0
- s1_cns_cli/s1graph/common/util/tqdm_utils.py +76 -0
- s1_cns_cli/s1graph/common/util/type_forcers.py +146 -0
- s1_cns_cli/s1graph/common/util/var_utils.py +44 -0
- s1_cns_cli/s1graph/common/variables/__init__.py +0 -0
- s1_cns_cli/s1graph/common/variables/context.py +49 -0
- s1_cns_cli/s1graph/common/vcs/__init__.py +0 -0
- s1_cns_cli/s1graph/common/vcs/base_vcs_dal.py +130 -0
- s1_cns_cli/s1graph/common/vcs/vcs_schema.py +20 -0
- s1_cns_cli/s1graph/common/version_manager.py +12 -0
- s1_cns_cli/s1graph/contributor_metrics.py +65 -0
- s1_cns_cli/s1graph/dockerfile/__init__.py +1 -0
- s1_cns_cli/s1graph/dockerfile/base_dockerfile_check.py +44 -0
- s1_cns_cli/s1graph/dockerfile/base_registry.py +101 -0
- s1_cns_cli/s1graph/dockerfile/checks/AddExists.py +27 -0
- s1_cns_cli/s1graph/dockerfile/checks/AliasIsUnique.py +36 -0
- s1_cns_cli/s1graph/dockerfile/checks/ExposePort22.py +28 -0
- s1_cns_cli/s1graph/dockerfile/checks/HealthcheckExists.py +27 -0
- s1_cns_cli/s1graph/dockerfile/checks/MaintainerExists.py +24 -0
- s1_cns_cli/s1graph/dockerfile/checks/ReferenceLatestTag.py +40 -0
- s1_cns_cli/s1graph/dockerfile/checks/RootUser.py +28 -0
- s1_cns_cli/s1graph/dockerfile/checks/RunUsingAPT.py +31 -0
- s1_cns_cli/s1graph/dockerfile/checks/UpdateNotAlone.py +57 -0
- s1_cns_cli/s1graph/dockerfile/checks/UserExists.py +27 -0
- s1_cns_cli/s1graph/dockerfile/checks/WorkdirIsAbsolute.py +39 -0
- s1_cns_cli/s1graph/dockerfile/checks/__init__.py +5 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/EnvGitSslNoVerify.yaml +19 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/EnvNodeTlsRejectUnauthorized.yaml +19 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/EnvNpmConfigStrictSsl.yaml +19 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/EnvPipTrustedHost.yaml +19 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/EnvPythonHttpsVerify.yaml +19 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/RunApkAllowUntrusted.yaml +11 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/RunAptGetAllowUnauthenticated.yaml +11 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/RunAptGetForceYes.yaml +11 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/RunNpmConfigSetStrictSsl.yaml +11 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/RunPipTrustedHost.yaml +11 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/RunRpmNoSignature.yaml +11 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/RunUnsafeCurl.yaml +11 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/RunUnsafeWget.yaml +11 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/RunUsingSudo.yaml +18 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/RunYumConfigManagerSslVerify.yaml +11 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/RunYumNoGpgCheck.yaml +11 -0
- s1_cns_cli/s1graph/dockerfile/checks/graph_checks/__init__.py +0 -0
- s1_cns_cli/s1graph/dockerfile/graph_builder/__init__.py +0 -0
- s1_cns_cli/s1graph/dockerfile/graph_builder/graph_components/__init__.py +0 -0
- s1_cns_cli/s1graph/dockerfile/graph_builder/graph_components/resource_types.py +26 -0
- s1_cns_cli/s1graph/dockerfile/graph_builder/local_graph.py +115 -0
- s1_cns_cli/s1graph/dockerfile/graph_manager.py +45 -0
- s1_cns_cli/s1graph/dockerfile/image_referencer/__init__.py +0 -0
- s1_cns_cli/s1graph/dockerfile/image_referencer/manager.py +23 -0
- s1_cns_cli/s1graph/dockerfile/image_referencer/provider.py +56 -0
- s1_cns_cli/s1graph/dockerfile/parser.py +41 -0
- s1_cns_cli/s1graph/dockerfile/registry.py +3 -0
- s1_cns_cli/s1graph/dockerfile/runner.py +291 -0
- s1_cns_cli/s1graph/dockerfile/utils.py +78 -0
- s1_cns_cli/s1graph/example_runner/__init__.py +2 -0
- s1_cns_cli/s1graph/example_runner/checks/__init__.py +1 -0
- s1_cns_cli/s1graph/example_runner/checks/base_example_runner_check.py +29 -0
- s1_cns_cli/s1graph/example_runner/checks/base_example_runner_job_check.py +24 -0
- s1_cns_cli/s1graph/example_runner/checks/job/ExampleCheckTrueFalse.py +68 -0
- s1_cns_cli/s1graph/example_runner/checks/job/__init__.py +4 -0
- s1_cns_cli/s1graph/example_runner/checks/job_registry.py +8 -0
- s1_cns_cli/s1graph/example_runner/common/__init__.py +0 -0
- s1_cns_cli/s1graph/example_runner/runner.py +61 -0
- s1_cns_cli/s1graph/github/__init__.py +1 -0
- s1_cns_cli/s1graph/github/base_github_branch_security.py +48 -0
- s1_cns_cli/s1graph/github/base_github_configuration_check.py +42 -0
- s1_cns_cli/s1graph/github/base_github_negative_branch_security.py +62 -0
- s1_cns_cli/s1graph/github/base_github_org_check.py +45 -0
- s1_cns_cli/s1graph/github/base_github_org_security.py +40 -0
- s1_cns_cli/s1graph/github/checks/2fa.py +19 -0
- s1_cns_cli/s1graph/github/checks/__init__.py +4 -0
- s1_cns_cli/s1graph/github/checks/disallow_branch_deletions.py +22 -0
- s1_cns_cli/s1graph/github/checks/disallow_force_pushes.py +22 -0
- s1_cns_cli/s1graph/github/checks/disallow_inactive_branch_60days.py +46 -0
- s1_cns_cli/s1graph/github/checks/dismiss_stale_reviews.py +16 -0
- s1_cns_cli/s1graph/github/checks/enforce_branch_protection_admins.py +19 -0
- s1_cns_cli/s1graph/github/checks/internal_repository_creation_is_limited.py +22 -0
- s1_cns_cli/s1graph/github/checks/ipallowlist.py +22 -0
- s1_cns_cli/s1graph/github/checks/minimum_admins_in_org.py +38 -0
- s1_cns_cli/s1graph/github/checks/private_repository_creation_is_limited.py +22 -0
- s1_cns_cli/s1graph/github/checks/public_repository_creation_is_limited.py +22 -0
- s1_cns_cli/s1graph/github/checks/repository_collaborators.py +42 -0
- s1_cns_cli/s1graph/github/checks/require_2approvals.py +20 -0
- s1_cns_cli/s1graph/github/checks/require_code_owner_reviews.py +16 -0
- s1_cns_cli/s1graph/github/checks/require_conversation_resolution.py +16 -0
- s1_cns_cli/s1graph/github/checks/require_linear_history.py +19 -0
- s1_cns_cli/s1graph/github/checks/require_push_restrictions.py +16 -0
- s1_cns_cli/s1graph/github/checks/require_signatures.py +19 -0
- s1_cns_cli/s1graph/github/checks/require_status_checks_pr.py +16 -0
- s1_cns_cli/s1graph/github/checks/require_strict_base_permissions_repository.py +23 -0
- s1_cns_cli/s1graph/github/checks/require_updated_branch_pr.py +22 -0
- s1_cns_cli/s1graph/github/checks/require_verified_organization.py +22 -0
- s1_cns_cli/s1graph/github/checks/restrict_pr_review_dismissal.py +22 -0
- s1_cns_cli/s1graph/github/checks/sso.py +39 -0
- s1_cns_cli/s1graph/github/checks/webhooks_https_orgs.py +45 -0
- s1_cns_cli/s1graph/github/checks/webhooks_https_repos.py +44 -0
- s1_cns_cli/s1graph/github/dal.py +233 -0
- s1_cns_cli/s1graph/github/registry.py +4 -0
- s1_cns_cli/s1graph/github/runner.py +75 -0
- s1_cns_cli/s1graph/github/schemas/__init__.py +0 -0
- s1_cns_cli/s1graph/github/schemas/branch.py +2685 -0
- s1_cns_cli/s1graph/github/schemas/branch_protection.py +99 -0
- s1_cns_cli/s1graph/github/schemas/no_branch_protection.py +25 -0
- s1_cns_cli/s1graph/github/schemas/org_members.py +173 -0
- s1_cns_cli/s1graph/github/schemas/org_security.py +73 -0
- s1_cns_cli/s1graph/github/schemas/org_webhooks.py +127 -0
- s1_cns_cli/s1graph/github/schemas/organization.py +439 -0
- s1_cns_cli/s1graph/github/schemas/repository_collaborators.py +199 -0
- s1_cns_cli/s1graph/github/schemas/repository_webhooks.py +217 -0
- s1_cns_cli/s1graph/github_actions/__init__.py +1 -0
- s1_cns_cli/s1graph/github_actions/checks/__init__.py +1 -0
- s1_cns_cli/s1graph/github_actions/checks/base_github_action_check.py +38 -0
- s1_cns_cli/s1graph/github_actions/checks/graph_checks/ReadOnlyTopLevelPermissions.yaml +11 -0
- s1_cns_cli/s1graph/github_actions/checks/graph_checks/__init__.py +0 -0
- s1_cns_cli/s1graph/github_actions/checks/job/AllowUnsecureCommandsOnJob.py +36 -0
- s1_cns_cli/s1graph/github_actions/checks/job/CosignArtifacts.py +55 -0
- s1_cns_cli/s1graph/github_actions/checks/job/CosignSBOM.py +55 -0
- s1_cns_cli/s1graph/github_actions/checks/job/EmptyWorkflowDispatch.py +43 -0
- s1_cns_cli/s1graph/github_actions/checks/job/ReverseShellNetcat.py +33 -0
- s1_cns_cli/s1graph/github_actions/checks/job/ShellInjection.py +37 -0
- s1_cns_cli/s1graph/github_actions/checks/job/SuspectCurlInScript.py +34 -0
- s1_cns_cli/s1graph/github_actions/checks/job/__init__.py +4 -0
- s1_cns_cli/s1graph/github_actions/checks/registry.py +4 -0
- s1_cns_cli/s1graph/github_actions/common/__init__.py +0 -0
- s1_cns_cli/s1graph/github_actions/common/artifact_build.py +10 -0
- s1_cns_cli/s1graph/github_actions/common/build_actions.py +5 -0
- s1_cns_cli/s1graph/github_actions/common/shell_injection_list.py +20 -0
- s1_cns_cli/s1graph/github_actions/graph_builder/__init__.py +0 -0
- s1_cns_cli/s1graph/github_actions/graph_builder/graph_components/__init__.py +0 -0
- s1_cns_cli/s1graph/github_actions/graph_builder/graph_components/resource_types.py +12 -0
- s1_cns_cli/s1graph/github_actions/graph_builder/local_graph.py +209 -0
- s1_cns_cli/s1graph/github_actions/image_referencer/__init__.py +0 -0
- s1_cns_cli/s1graph/github_actions/image_referencer/manager.py +15 -0
- s1_cns_cli/s1graph/github_actions/image_referencer/provider.py +66 -0
- s1_cns_cli/s1graph/github_actions/runner.py +165 -0
- s1_cns_cli/s1graph/github_actions/schemas.py +3139 -0
- s1_cns_cli/s1graph/github_actions/utils.py +154 -0
- s1_cns_cli/s1graph/gitlab/__init__.py +1 -0
- s1_cns_cli/s1graph/gitlab/base_gitlab_configuration_check.py +23 -0
- s1_cns_cli/s1graph/gitlab/checks/__init__.py +4 -0
- s1_cns_cli/s1graph/gitlab/checks/merge_requests_approvals.py +32 -0
- s1_cns_cli/s1graph/gitlab/checks/two_factor_authentication.py +33 -0
- s1_cns_cli/s1graph/gitlab/dal.py +69 -0
- s1_cns_cli/s1graph/gitlab/registry.py +4 -0
- s1_cns_cli/s1graph/gitlab/runner.py +54 -0
- s1_cns_cli/s1graph/gitlab/schemas/__init__.py +0 -0
- s1_cns_cli/s1graph/gitlab/schemas/groups.py +130 -0
- s1_cns_cli/s1graph/gitlab/schemas/project_approvals.py +41 -0
- s1_cns_cli/s1graph/gitlab_ci/__init__.py +1 -0
- s1_cns_cli/s1graph/gitlab_ci/checks/__init__.py +1 -0
- s1_cns_cli/s1graph/gitlab_ci/checks/base_gitlab_ci_check.py +35 -0
- s1_cns_cli/s1graph/gitlab_ci/checks/job/AvoidDoublePipelines.py +36 -0
- s1_cns_cli/s1graph/gitlab_ci/checks/job/DetectImagesUsage.py +25 -0
- s1_cns_cli/s1graph/gitlab_ci/checks/job/SuspectCurlInScript.py +29 -0
- s1_cns_cli/s1graph/gitlab_ci/checks/job/__init__.py +4 -0
- s1_cns_cli/s1graph/gitlab_ci/checks/registry.py +4 -0
- s1_cns_cli/s1graph/gitlab_ci/common/__init__.py +0 -0
- s1_cns_cli/s1graph/gitlab_ci/common/reserved.py +8 -0
- s1_cns_cli/s1graph/gitlab_ci/common/resource_id_utils.py +67 -0
- s1_cns_cli/s1graph/gitlab_ci/image_referencer/__init__.py +0 -0
- s1_cns_cli/s1graph/gitlab_ci/image_referencer/manager.py +13 -0
- s1_cns_cli/s1graph/gitlab_ci/image_referencer/provider.py +60 -0
- s1_cns_cli/s1graph/gitlab_ci/runner.py +104 -0
- s1_cns_cli/s1graph/helm/__init__.py +0 -0
- s1_cns_cli/s1graph/helm/base_registry.py +101 -0
- s1_cns_cli/s1graph/helm/image_referencer/__init__.py +0 -0
- s1_cns_cli/s1graph/helm/image_referencer/base_provider.py +25 -0
- s1_cns_cli/s1graph/helm/image_referencer/manager.py +25 -0
- s1_cns_cli/s1graph/helm/image_referencer/provider/__init__.py +0 -0
- s1_cns_cli/s1graph/helm/image_referencer/provider/helm.py +19 -0
- s1_cns_cli/s1graph/helm/registry.py +3 -0
- s1_cns_cli/s1graph/helm/runner.py +459 -0
- s1_cns_cli/s1graph/json_doc/__init__.py +0 -0
- s1_cns_cli/s1graph/json_doc/base_json_check.py +19 -0
- s1_cns_cli/s1graph/json_doc/base_registry.py +201 -0
- s1_cns_cli/s1graph/json_doc/enums.py +8 -0
- s1_cns_cli/s1graph/json_doc/registry.py +4 -0
- s1_cns_cli/s1graph/json_doc/runner.py +54 -0
- s1_cns_cli/s1graph/kubernetes/__init__.py +1 -0
- s1_cns_cli/s1graph/kubernetes/checks/__init__.py +0 -0
- s1_cns_cli/s1graph/kubernetes/checks/graph_checks/ImpersonatePermissions.yaml +60 -0
- s1_cns_cli/s1graph/kubernetes/checks/graph_checks/ModifyServicesStatus.yaml +60 -0
- s1_cns_cli/s1graph/kubernetes/checks/graph_checks/NoCreateNodesProxyOrPodsExec.yaml +59 -0
- s1_cns_cli/s1graph/kubernetes/checks/graph_checks/ReadAllSecrets.yaml +60 -0
- s1_cns_cli/s1graph/kubernetes/checks/graph_checks/RequireAllPodsToHaveNetworkPolicy.yaml +18 -0
- s1_cns_cli/s1graph/kubernetes/checks/graph_checks/RoleBindingPE.yaml +59 -0
- s1_cns_cli/s1graph/kubernetes/checks/graph_checks/__init__.py +0 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/__init__.py +1 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/base_container_check.py +146 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/base_rbac_check.py +89 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/base_registry.py +94 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/base_root_container_check.py +70 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/base_spec_check.py +55 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/base_spec_omitted_or_value_check.py +34 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/AllowPrivilegeEscalation.py +29 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/AllowPrivilegeEscalationPSP.py +37 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/AllowedCapabilities.py +26 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/AllowedCapabilitiesPSP.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/AllowedCapabilitiesSysAdmin.py +26 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerAdmissionControlAlwaysAdmit.py +29 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerAdmissionControlEventRateLimit.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerAlwaysPullImagesPlugin.py +29 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerAnonymousAuth.py +23 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerAuditLog.py +26 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxAge.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxBackup.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerAuditLogMaxSize.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNode.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeNotAlwaysAllow.py +27 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerAuthorizationModeRBAC.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerBasicAuthFile.py +24 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerEncryptionProviders.py +25 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerEtcdCaFile.py +25 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerEtcdCertAndKey.py +29 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerInsecureBindAddress.py +24 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerInsecurePort.py +23 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerKubeletClientCertAndKey.py +29 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerKubeletHttps.py +23 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerNamespaceLifecyclePlugin.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerNodeRestrictionPlugin.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerPodSecurityPolicyPlugin.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerProfiling.py +23 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerRequestTimeout.py +34 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerSecurePort.py +24 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerSecurityContextDenyPlugin.py +29 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerServiceAccountKeyFile.py +32 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerServiceAccountLookup.py +26 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerServiceAccountPlugin.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerStrongCryptographicCiphers.py +39 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerTlsCertAndKey.py +31 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerTokenAuthFile.py +23 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ApiServerkubeletCertificateAuthority.py +23 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/CPULimits.py +26 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/CPURequests.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ContainerSecurityContext.py +23 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ControllerManagerBindAddress.py +27 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/DefaultNamespace.py +50 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/DefaultServiceAccount.py +32 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/DefaultServiceAccountBinding.py +29 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/DockerSocketVolume.py +65 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/DropCapabilities.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/DropCapabilitiesPSP.py +32 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/EtcdAutoTls.py +24 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/EtcdCertAndKey.py +32 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/EtcdClientCertAuth.py +24 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/EtcdPeerFiles.py +26 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/HostPort.py +31 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ImageDigest.py +34 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ImagePullPolicyAlways.py +58 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ImageTagFixed.py +44 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubeControllerManagerBlockProfiles.py +26 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubeControllerManagerRootCAFile.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountCredentials.py +26 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubeControllerManagerServiceAccountPrivateKeyFile.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubeControllerManagerTerminatedPods.py +30 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubeletAnonymousAuth.py +24 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubeletAuthorizationModeNotAlwaysAllow.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubeletClientCa.py +27 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubeletCryptographicCiphers.py +40 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubeletHostnameOverride.py +24 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubeletKeyFilesSetAppropriate.py +30 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubeletMakeIptablesUtilChains.py +24 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubeletProtectKernelDefaults.py +24 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubeletReadOnlyPort.py +27 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubeletStreamingConnectionIdleTimeout.py +24 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubernetesDashboard.py +34 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubletEventCapture.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/KubletRotateCertificates.py +24 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/LivenessProbe.py +29 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/MemoryLimits.py +26 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/MemoryRequests.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/MinimizeCapabilities.py +28 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/MinimizeCapabilitiesPSP.py +24 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/NginxIngressCVE202125742Alias.py +29 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/NginxIngressCVE202125742AllSnippets.py +29 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/NginxIngressCVE202125742Lua.py +29 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/PeerClientCertAuthTrue.py +25 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/PodSecurityContext.py +58 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/PrivilegedContainers.py +24 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/PrivilegedContainersPSP.py +21 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/RbacApproveCertificateSigningRequests.py +26 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/RbacBindRoleBindings.py +19 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/RbacControlWebhooks.py +20 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/RbacEscalateRoles.py +19 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ReadOnlyFilesystem.py +22 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ReadinessProbe.py +29 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/RootContainers.py +71 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/RootContainersHighUID.py +71 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/RootContainersPSP.py +33 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/RotateKubeletServerCertificate.py +29 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/SchedulerBindAddress.py +27 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/SchedulerProfiling.py +23 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/Seccomp.py +65 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/SeccompPSP.py +27 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/Secrets.py +33 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ServiceAccountTokens.py +61 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ShareHostIPC.py +61 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ShareHostIPCPSP.py +21 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ShareHostPID.py +61 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/ShareHostPIDPSP.py +21 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/SharedHostNetworkNamespace.py +61 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/SharedHostNetworkNamespacePSP.py +21 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/Tiller.py +35 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/TillerDeploymentListener.py +30 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/TillerService.py +40 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/WildcardRoles.py +33 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/__init__.py +5 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/k8s/k8s_check_utils.py +22 -0
- s1_cns_cli/s1graph/kubernetes/checks/resource/registry.py +4 -0
- s1_cns_cli/s1graph/kubernetes/graph_builder/__init__.py +0 -0
- s1_cns_cli/s1graph/kubernetes/graph_builder/graph_components/ResourceKeywordIdentifier.py +31 -0
- s1_cns_cli/s1graph/kubernetes/graph_builder/graph_components/__init__.py +0 -0
- s1_cns_cli/s1graph/kubernetes/graph_builder/graph_components/blocks.py +34 -0
- s1_cns_cli/s1graph/kubernetes/graph_builder/graph_components/edge_builders/K8SEdgeBuilder.py +28 -0
- s1_cns_cli/s1graph/kubernetes/graph_builder/graph_components/edge_builders/KeywordEdgeBuilder.py +74 -0
- s1_cns_cli/s1graph/kubernetes/graph_builder/graph_components/edge_builders/LabelSelectorEdgeBuilder.py +53 -0
- s1_cns_cli/s1graph/kubernetes/graph_builder/graph_components/edge_builders/NetworkPolicyEdgeBuilder.py +61 -0
- s1_cns_cli/s1graph/kubernetes/graph_builder/graph_components/edge_builders/__init__.py +0 -0
- s1_cns_cli/s1graph/kubernetes/graph_builder/local_graph.py +176 -0
- s1_cns_cli/s1graph/kubernetes/graph_manager.py +39 -0
- s1_cns_cli/s1graph/kubernetes/image_referencer/__init__.py +0 -0
- s1_cns_cli/s1graph/kubernetes/image_referencer/base_provider.py +40 -0
- s1_cns_cli/s1graph/kubernetes/image_referencer/manager.py +19 -0
- s1_cns_cli/s1graph/kubernetes/image_referencer/provider/__init__.py +0 -0
- s1_cns_cli/s1graph/kubernetes/image_referencer/provider/k8s.py +105 -0
- s1_cns_cli/s1graph/kubernetes/kubernetes_graph_flags.py +19 -0
- s1_cns_cli/s1graph/kubernetes/kubernetes_utils.py +257 -0
- s1_cns_cli/s1graph/kubernetes/parser/__init__.py +0 -0
- s1_cns_cli/s1graph/kubernetes/parser/k8_json.py +66 -0
- s1_cns_cli/s1graph/kubernetes/parser/k8_yaml.py +65 -0
- s1_cns_cli/s1graph/kubernetes/parser/parser.py +52 -0
- s1_cns_cli/s1graph/kubernetes/runner.py +351 -0
- s1_cns_cli/s1graph/kubernetes/test/share-process-namespace.yaml +27 -0
- s1_cns_cli/s1graph/kustomize/__init__.py +0 -0
- s1_cns_cli/s1graph/kustomize/image_referencer/__init__.py +0 -0
- s1_cns_cli/s1graph/kustomize/image_referencer/base_provider.py +26 -0
- s1_cns_cli/s1graph/kustomize/image_referencer/manager.py +23 -0
- s1_cns_cli/s1graph/kustomize/image_referencer/provider/__init__.py +0 -0
- s1_cns_cli/s1graph/kustomize/image_referencer/provider/kustomize.py +18 -0
- s1_cns_cli/s1graph/kustomize/runner.py +642 -0
- s1_cns_cli/s1graph/kustomize/utils.py +25 -0
- s1_cns_cli/s1graph/logging_init.py +22 -0
- s1_cns_cli/s1graph/main.py +653 -0
- s1_cns_cli/s1graph/openapi/__init__.py +1 -0
- s1_cns_cli/s1graph/openapi/checks/__init__.py +0 -0
- s1_cns_cli/s1graph/openapi/checks/base_openapi_check.py +27 -0
- s1_cns_cli/s1graph/openapi/checks/base_registry.py +10 -0
- s1_cns_cli/s1graph/openapi/checks/registry.py +3 -0
- s1_cns_cli/s1graph/openapi/checks/resource/__init__.py +3 -0
- s1_cns_cli/s1graph/openapi/checks/resource/generic/GlobalSecurityFieldIsEmpty.py +26 -0
- s1_cns_cli/s1graph/openapi/checks/resource/generic/SecurityOperations.py +43 -0
- s1_cns_cli/s1graph/openapi/checks/resource/generic/__init__.py +5 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/BaseOpenapiCheckV2.py +29 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/GlobalSchemeDefineHTTP.py +29 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/GlobalSecurityScopeUndefined.py +45 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/Oauth2OperationObjectPasswordFlow.py +55 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/Oauth2SecurityDefinitionImplicitFlow.py +40 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/Oauth2SecurityDefinitionPasswordFlow.py +40 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/Oauth2SecurityPasswordFlow.py +45 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/Oauth2SecurityRequirement.py +47 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/OperationObjectBasicAuth.py +52 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/OperationObjectConsumesUndefined.py +43 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/OperationObjectImplicitFlow.py +54 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/OperationObjectProducesUndefined.py +45 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/OperationObjectSecurityScopeUndefined.py +65 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/PathSchemeDefineHTTP.py +42 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/SecurityDefinitionBasicAuth.py +40 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/SecurityDefinitions.py +30 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/SecurityRequirement.py +69 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v2/__init__.py +5 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v3/BaseOpenapiCheckV3.py +29 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v3/CleartextOverUnencryptedChannel.py +48 -0
- s1_cns_cli/s1graph/openapi/checks/resource/v3/__init__.py +5 -0
- s1_cns_cli/s1graph/openapi/runner.py +108 -0
- s1_cns_cli/s1graph/policies_3d/__init__.py +0 -0
- s1_cns_cli/s1graph/policies_3d/checks_infra/__init__.py +0 -0
- s1_cns_cli/s1graph/policies_3d/checks_infra/base_check.py +26 -0
- s1_cns_cli/s1graph/policies_3d/checks_infra/base_parser.py +41 -0
- s1_cns_cli/s1graph/policies_3d/checks_parser.py +145 -0
- s1_cns_cli/s1graph/policies_3d/output.py +291 -0
- s1_cns_cli/s1graph/policies_3d/record.py +47 -0
- s1_cns_cli/s1graph/policies_3d/runner.py +318 -0
- s1_cns_cli/s1graph/policies_3d/syntax/__init__.py +0 -0
- s1_cns_cli/s1graph/policies_3d/syntax/cves_syntax.py +46 -0
- s1_cns_cli/s1graph/policies_3d/syntax/iac_syntax.py +35 -0
- s1_cns_cli/s1graph/policies_3d/syntax/secrets_syntax.py +14 -0
- s1_cns_cli/s1graph/policies_3d/syntax/syntax.py +56 -0
- s1_cns_cli/s1graph/py.typed +0 -0
- s1_cns_cli/s1graph/runner_filter.py +365 -0
- s1_cns_cli/s1graph/sca_image/__init__.py +0 -0
- s1_cns_cli/s1graph/sca_image/models.py +18 -0
- s1_cns_cli/s1graph/sca_image/runner.py +345 -0
- s1_cns_cli/s1graph/sca_package/__init__.py +0 -0
- s1_cns_cli/s1graph/sca_package/output.py +360 -0
- s1_cns_cli/s1graph/sca_package/runner.py +172 -0
- s1_cns_cli/s1graph/sca_package/scanner.py +193 -0
- s1_cns_cli/s1graph/sca_package_2/__init__.py +0 -0
- s1_cns_cli/s1graph/sca_package_2/output.py +428 -0
- s1_cns_cli/s1graph/sca_package_2/runner.py +183 -0
- s1_cns_cli/s1graph/sca_package_2/scanner.py +104 -0
- s1_cns_cli/s1graph/sca_package_2/suppression.py +124 -0
- s1_cns_cli/s1graph/secrets/__init__.py +0 -0
- s1_cns_cli/s1graph/secrets/consts.py +31 -0
- s1_cns_cli/s1graph/secrets/coordinator.py +28 -0
- s1_cns_cli/s1graph/secrets/git_history_store.py +177 -0
- s1_cns_cli/s1graph/secrets/git_types.py +82 -0
- s1_cns_cli/s1graph/secrets/parsers/__init__.py +0 -0
- s1_cns_cli/s1graph/secrets/parsers/json/__init__.py +0 -0
- s1_cns_cli/s1graph/secrets/parsers/json/multiline_parser.py +60 -0
- s1_cns_cli/s1graph/secrets/parsers/multiline_parser.py +62 -0
- s1_cns_cli/s1graph/secrets/parsers/single_line_parser.py +36 -0
- s1_cns_cli/s1graph/secrets/parsers/terraform/__init__.py +0 -0
- s1_cns_cli/s1graph/secrets/parsers/terraform/multiline_parser.py +37 -0
- s1_cns_cli/s1graph/secrets/parsers/terraform/single_line_parser.py +28 -0
- s1_cns_cli/s1graph/secrets/parsers/yaml/__init__.py +0 -0
- s1_cns_cli/s1graph/secrets/parsers/yaml/multiline_parser.py +64 -0
- s1_cns_cli/s1graph/secrets/plugins/__init__.py +0 -0
- s1_cns_cli/s1graph/secrets/plugins/custom_regex_detector.py +160 -0
- s1_cns_cli/s1graph/secrets/plugins/detector_utils.py +279 -0
- s1_cns_cli/s1graph/secrets/plugins/entropy_keyword_combinator.py +234 -0
- s1_cns_cli/s1graph/secrets/plugins/load_detectors.py +120 -0
- s1_cns_cli/s1graph/secrets/runner.py +518 -0
- s1_cns_cli/s1graph/secrets/scan_git_history.py +247 -0
- s1_cns_cli/s1graph/secrets/utils.py +39 -0
- s1_cns_cli/s1graph/serverless/__init__.py +1 -0
- s1_cns_cli/s1graph/serverless/base_registry.py +36 -0
- s1_cns_cli/s1graph/serverless/checks/__init__.py +7 -0
- s1_cns_cli/s1graph/serverless/checks/base_function_check.py +4 -0
- s1_cns_cli/s1graph/serverless/checks/complete/__init__.py +0 -0
- s1_cns_cli/s1graph/serverless/checks/complete/base_complete_check.py +18 -0
- s1_cns_cli/s1graph/serverless/checks/complete/registry.py +3 -0
- s1_cns_cli/s1graph/serverless/checks/custom/__init__.py +0 -0
- s1_cns_cli/s1graph/serverless/checks/custom/base_custom_check.py +18 -0
- s1_cns_cli/s1graph/serverless/checks/custom/registry.py +3 -0
- s1_cns_cli/s1graph/serverless/checks/function/__init__.py +1 -0
- s1_cns_cli/s1graph/serverless/checks/function/aws/AWSCredentials.py +32 -0
- s1_cns_cli/s1graph/serverless/checks/function/aws/AdminPolicyDocument.py +30 -0
- s1_cns_cli/s1graph/serverless/checks/function/aws/StarActionPolicyDocument.py +33 -0
- s1_cns_cli/s1graph/serverless/checks/function/aws/__init__.py +5 -0
- s1_cns_cli/s1graph/serverless/checks/function/base_function_check.py +29 -0
- s1_cns_cli/s1graph/serverless/checks/function/registry.py +3 -0
- s1_cns_cli/s1graph/serverless/checks/layer/__init__.py +0 -0
- s1_cns_cli/s1graph/serverless/checks/layer/base_layer_check.py +18 -0
- s1_cns_cli/s1graph/serverless/checks/layer/registry.py +3 -0
- s1_cns_cli/s1graph/serverless/checks/package/__init__.py +0 -0
- s1_cns_cli/s1graph/serverless/checks/package/base_package_check.py +18 -0
- s1_cns_cli/s1graph/serverless/checks/package/registry.py +3 -0
- s1_cns_cli/s1graph/serverless/checks/plugin/__init__.py +0 -0
- s1_cns_cli/s1graph/serverless/checks/plugin/base_plugin_check.py +19 -0
- s1_cns_cli/s1graph/serverless/checks/plugin/registry.py +3 -0
- s1_cns_cli/s1graph/serverless/checks/provider/__init__.py +0 -0
- s1_cns_cli/s1graph/serverless/checks/provider/base_provider_check.py +18 -0
- s1_cns_cli/s1graph/serverless/checks/provider/registry.py +3 -0
- s1_cns_cli/s1graph/serverless/checks/service/__init__.py +0 -0
- s1_cns_cli/s1graph/serverless/checks/service/base_service_check.py +18 -0
- s1_cns_cli/s1graph/serverless/checks/service/registry.py +3 -0
- s1_cns_cli/s1graph/serverless/parsers/__init__.py +0 -0
- s1_cns_cli/s1graph/serverless/parsers/context_parser.py +75 -0
- s1_cns_cli/s1graph/serverless/parsers/parser.py +343 -0
- s1_cns_cli/s1graph/serverless/registry.py +4 -0
- s1_cns_cli/s1graph/serverless/runner.py +299 -0
- s1_cns_cli/s1graph/terraform/__init__.py +3 -0
- s1_cns_cli/s1graph/terraform/checks/__init__.py +0 -0
- s1_cns_cli/s1graph/terraform/checks/data/__init__.py +3 -0
- s1_cns_cli/s1graph/terraform/checks/data/aws/AdminPolicyDocument.py +41 -0
- s1_cns_cli/s1graph/terraform/checks/data/aws/IAMCredentialsExposure.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/data/aws/IAMDataExfiltration.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/data/aws/IAMManagedAdminPolicy.py +40 -0
- s1_cns_cli/s1graph/terraform/checks/data/aws/IAMPermissionsManagement.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/data/aws/IAMPrivilegeEscalation.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/data/aws/IAMPublicActionsPolicy.py +34 -0
- s1_cns_cli/s1graph/terraform/checks/data/aws/IAMWriteAccess.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/data/aws/StarActionPolicyDocument.py +39 -0
- s1_cns_cli/s1graph/terraform/checks/data/aws/__init__.py +4 -0
- s1_cns_cli/s1graph/terraform/checks/data/base_check.py +47 -0
- s1_cns_cli/s1graph/terraform/checks/data/base_cloudsplaining_data_iam_check.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/data/base_registry.py +12 -0
- s1_cns_cli/s1graph/terraform/checks/data/external/__init__.py +4 -0
- s1_cns_cli/s1graph/terraform/checks/data/gcp/GooglePolicyIsPrivate.py +37 -0
- s1_cns_cli/s1graph/terraform/checks/data/gcp/__init__.py +4 -0
- s1_cns_cli/s1graph/terraform/checks/data/registry.py +4 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/__init__.py +0 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/ALBProtectedByWAF.yaml +43 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/ALBRedirectsHTTPToHTTPS.yaml +82 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/AMRClustersNotOpenToInternet.yaml +23 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/APIGWLoggingLevelsDefinedProperly.yaml +37 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/APIGatewayEndpointsUsesCertificateForAuthentication.yaml +47 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/APIGatewayRequestParameterValidationEnabled.yaml +10 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/APIProtectedByWAF.yaml +76 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/AWSConfigRecorderEnabled.yaml +29 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/AWSNATGatewaysshouldbeutilized.yaml +43 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/AWSSSMParameterShouldBeEncrypted.yaml +16 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/AppLoadBalancerTLS12.yaml +81 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/AppSyncProtectedByWAF.yaml +17 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/AutoScalingEnableOnDynamoDBTables.yaml +48 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/AutoScallingEnabledELB.yaml +48 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/CLoudFrontS3OriginConfigWithOAI.yaml +30 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/CloudFrontHasCustomSSLCertificate.yaml +16 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/CloudFrontHasResponseHeadersPolicy.yaml +19 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/CloudFrontUsesSecureProtocolsForHTTPS.yaml +11 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/CloudFrontWebACLConfiguredWIthLog4jVulnerability.yaml +30 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/CloudtrailHasCloudwatch.yaml +22 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/CodecommitApprovalRulesAttached.yaml +20 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/ConfigRecorderRecordsAllGlobalResources.yaml +11 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/DMSEndpointHaveSSLConfigured.yaml +55 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/EBSAddedBackup.yaml +17 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/EC2InstanceHasIAMRoleAttached.yaml +10 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/EFSAddedBackup.yaml +18 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/EIPAllocatedToVPCAttachedEC2.yaml +104 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/EMRClusterHasSecurityConfiguration.yaml +10 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/ElastiCacheRedisConfiguredAutomaticFailOver.yaml +11 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/ElasticSearchDedicatedMasterEnabled.yaml +13 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/EncryptedEBSVolumeOnlyConnectedToEC2s.yaml +31 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/GuardDutyIsEnabled.yaml +30 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/HTTPNotSendingPasswords.yaml +38 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/IAMGroupHasAtLeastOneUser.yaml +29 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/IAMManagedIAMFullAccessPolicy.yaml +41 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/IAMPolicyNotAllowFullIAMAccess.yaml +51 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/IAMUserHasNoConsoleAccess.yaml +20 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/IAMUsersAreMembersAtLeastOneGroup.yaml +25 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/NeptuneDeletionProtectionEnabled.yaml +11 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/NetworkFirewallHasLogging.yaml +17 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/OpenSearchDomainHasFineGrainedControl.yaml +20 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/PostgresDBHasQueryLoggingEnabled.yaml +37 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/PostgresRDSHasQueryLoggingEnabled.yaml +35 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/RDSClusterHasBackupPlan.yaml +17 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/RDSEnableCopyTagsToSnapshot.yaml +26 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/Route53ARecordAttachedResource.yaml +57 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/Route53ZoneEnableDNSSECSigning.yaml +18 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/Route53ZoneHasMatchingQueryLog.yaml +17 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/S3BucketEncryption.yaml +51 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/S3BucketEventNotifications.yaml +17 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/S3BucketHasPublicAccessBlock.yaml +29 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/S3BucketLifecycle.yaml +23 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/S3BucketLogging.yaml +23 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/S3BucketReplicationConfiguration.yaml +30 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/S3BucketVersioning.yaml +30 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/S3KMSEncryptedByDefault.yaml +30 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/S3NotAllowAccessToAllAuthenticatedUsers.yaml +11 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/S3PublicACLRead.yaml +114 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/S3PublicACLWrite.yaml +99 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/SGAttachedToResource.yaml +55 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/SecretsAreRotated.yaml +17 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/SubnetHasACL.yaml +45 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/VPCHasFlowLog.yaml +19 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/VPCHasRestrictedSG.yaml +63 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/VPCPeeringRouteTableOverlyPermissive.yaml +66 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/aws/WAF2HasLogs.yaml +18 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AccessToPostgreSQLFromAzureServicesIsDisabled.yaml +37 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/ApplicationGatewayEnablesWAF.yaml +32 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureACR_HTTPSwebhook.yaml +12 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureAKSclusterAzureCNIEnabled.yaml +13 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureActiveDirectoryAdminIsConfigured.yaml +18 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureAntimalwareIsConfiguredWithAutoUpdatesForVMs.yaml +35 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureAutomationAccNotOverlyPermissiveNetAccess.yaml +12 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureConfigMSSQLwithAD.yaml +21 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureContainerInstanceconfigManagedIdentity.yaml +17 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureDataFactoriesEncryptedWithCustomerManagedKey.yaml +17 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureKeyVaultConfigPrivateEndpoint.yaml +19 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureMSSQLServerHasSecurityAlertPolicy.yaml +31 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureNetworkInterfacePublicIPAddressId.yaml +18 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzurePostgreSQLFlexServerNotOverlyPermissive.yaml +20 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureSpringCloudConfigWithVnet.yaml +19 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureSqlDbEnableTransparentDataEncryption.yaml +13 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureStorageAccConfigWithPrivateEndpoint.yaml +31 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureStorageAccountsUseCustomerManagedKeyForEncryption.yaml +23 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureSubnetConfigWithNSG.yaml +45 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureSynapseWorkspacesHaveNoIPFirewallRulesAttached.yaml +18 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/AzureUnattachedDisksAreEncrypted.yaml +43 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/CognitiveServicesCustomerManagedKey.yaml +23 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/DataExplorerEncryptionUsesCustomKey.yaml +19 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/MSQLenablesCustomerManagedKey.yaml +24 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/PGSQLenablesCustomerManagedKey.yaml +24 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/SQLServerAuditingEnabled.yaml +36 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/SQLServerAuditingRetention90Days.yaml +38 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/StorageContainerActivityLogsNotPublic.yaml +56 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/StorageCriticalDataEncryptedCMK.yaml +17 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/StorageLoggingIsEnabledForBlobService.yaml +37 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/StorageLoggingIsEnabledForTableService.yaml +28 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/VAconfiguredToSendReports.yaml +52 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/VAconfiguredToSendReportsToAdmins.yaml +51 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/VAisEnabledInStorageAccount.yaml +25 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/VAsetPeriodicScansOnSQL.yaml +43 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/VMHasBackUpMachine.yaml +19 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azure/VirtualMachinesUtilizingManagedDisks.yaml +21 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/azuredevops/ADORepositoryHasMinTwoReviewers.yaml +26 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/CloudFunctionSecureHTTPTrigger.yaml +11 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/DisableAccessToSqlDBInstanceForRootUsersWithoutPassword.yaml +50 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GCPAuditLogsConfiguredForAllServicesAndUsers.yaml +34 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GCPComputeFirewallOverlyPermissiveToAllTraffic.yaml +34 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GCPContainerRegistryReposAreNotPubliclyAccessible.yaml +63 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GCPKMSCryptoKeysAreNotPubliclyAccessible.yaml +64 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GCPKMSKeyRingsAreNotPubliclyAccessible.yaml +63 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GCPLogBucketsConfiguredUsingLock.yaml +38 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GCPMySQLdbInstancePoint_In_TimeRecoveryBackupIsEnabled.yaml +19 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GCPNetworkDoesNotUseDefaultFirewall.yaml +17 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_durationIsSetToON.yaml +17 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_executor_statsIsSetToOFF.yaml +22 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_parser_statsIsSetToOFF.yaml +22 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_planner_statsIsSetToOFF.yaml +22 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GCPPostgreSQLDatabaseFlaglog_statement_statsIsSetToOFF.yaml +22 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GCPProjectHasNoLegacyNetworks.yaml +39 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GCPdisableAlphaClusterFeatureInKubernetesEngineClusters.yaml +11 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GCRContainerVulnerabilityScanningEnabled.yaml +11 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/GKEClustersAreNotUsingDefaultServiceAccount.yaml +24 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/gcp/ServiceAccountHasGCPmanagedKey.yaml +13 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/github/RepositoryHasBranchProtection.yaml +21 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/ncp/AccessControlGroupRuleDefine.yaml +17 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/ncp/AutoScalingEnabledLB.yaml +36 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/ncp/RouteTablePublicSubnetConnection.yaml +35 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/oci/AdministratorUserNotAssociatedWithAPIKey.yaml +62 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/oci/OCI_K8EngineClusterBootVolConfigInTransitEncryption.yaml +17 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/oci/OCI_K8EngineClusterPodSecPolicyEnforced.yaml +17 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/oci/OCI_KubernetesEngineClusterEndpointConfigWithNSG.yaml +28 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/oci/OCI_NFSaccessRestrictedToRootUsers.yaml +27 -0
- s1_cns_cli/s1graph/terraform/checks/graph_checks/oci/OCI_NSGNotAllowRDP.yaml +68 -0
- s1_cns_cli/s1graph/terraform/checks/module/__init__.py +0 -0
- s1_cns_cli/s1graph/terraform/checks/module/base_module_check.py +39 -0
- s1_cns_cli/s1graph/terraform/checks/module/base_registry.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/module/registry.py +4 -0
- s1_cns_cli/s1graph/terraform/checks/provider/__init__.py +6 -0
- s1_cns_cli/s1graph/terraform/checks/provider/aws/__init__.py +5 -0
- s1_cns_cli/s1graph/terraform/checks/provider/aws/credentials.py +37 -0
- s1_cns_cli/s1graph/terraform/checks/provider/base_check.py +35 -0
- s1_cns_cli/s1graph/terraform/checks/provider/base_registry.py +11 -0
- s1_cns_cli/s1graph/terraform/checks/provider/linode/__init__.py +4 -0
- s1_cns_cli/s1graph/terraform/checks/provider/linode/credentials.py +31 -0
- s1_cns_cli/s1graph/terraform/checks/provider/ncp/__init__.py +5 -0
- s1_cns_cli/s1graph/terraform/checks/provider/ncp/credentials.py +37 -0
- s1_cns_cli/s1graph/terraform/checks/provider/oci/__init__.py +5 -0
- s1_cns_cli/s1graph/terraform/checks/provider/oci/credentials.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/provider/openstack/__init__.py +5 -0
- s1_cns_cli/s1graph/terraform/checks/provider/openstack/credentials.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/provider/panos/__init__.py +4 -0
- s1_cns_cli/s1graph/terraform/checks/provider/panos/credentials.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/provider/registry.py +4 -0
- s1_cns_cli/s1graph/terraform/checks/provider/s1cns/__init__.py +5 -0
- s1_cns_cli/s1graph/terraform/checks/provider/s1cns/credentials.py +31 -0
- s1_cns_cli/s1graph/terraform/checks/resource/__init__.py +14 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/ALBACLIsUnrestricted.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/APIGatewayProtocolHTTPS.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/AbsRDSParameter.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/AbsSecurityGroupUnrestrictedIngress.py +58 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/ActionTrailLogAllEvents.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/ActionTrailLogAllRegions.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/DiskEncryptedWithCMK.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/DiskIsEncrypted.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/K8sEnableNetworkPolicies.py +60 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/K8sNodePoolAutoRepair.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/KMSKeyIsEnabled.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/KMSKeyRotationIsEnabled.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/LaunchTemplateDisksAreEncrypted.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/LogAuditRDSEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/MongoDBInsideVPC.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/MongoDBInstanceSSL.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/MongoDBIsPublic.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/MongoDBTransparentDataEncryptionEnabled.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/OSSBucketAccessLogs.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/OSSBucketEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/OSSBucketPublic.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/OSSBucketTransferAcceleration.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/OSSBucketVersioning.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RAMPasswordPolicyExpiration.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RAMPasswordPolicyLength.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RAMPasswordPolicyLowercaseLetter.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RAMPasswordPolicyMaxLogin.py +40 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RAMPasswordPolicyNumber.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RAMPasswordPolicyReuse.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RAMPasswordPolicySymbol.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RAMPasswordPolicyUppcaseLetter.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RAMSecurityEnforceMFA.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RDSInstanceAutoUpgrade.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RDSInstanceLogConnections.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RDSInstanceLogDisconnections.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RDSInstanceLogsEnabled.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RDSInstanceSSL.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RDSIsPublic.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RDSRetention.py +36 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/RDSTransparentDataEncryptionEnabled.py +39 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/SecurityGroupUnrestrictedIngress22.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/SecurityGroupUnrestrictedIngress3389.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/TLSPoliciesAreSecure.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/alicloud/__init__.py +5 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ACMCertCreateBeforeDestroy.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ACMCertSetLoggingPreference.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ALBDesyncMode.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ALBDropHttpHeaders.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ALBListenerHTTPS.py +40 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AMICopyIsEncrypted.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AMICopyUsesCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AMIEncryption.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AMILaunchIsShared.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/APIGatewayAccessLogging.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/APIGatewayAuthorization.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/APIGatewayCacheEnable.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/APIGatewayCreateBeforeDestroy.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/APIGatewayDeploymentCreateBeforeDestroy.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/APIGatewayDomainNameTLS.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/APIGatewayMethodSettingsCacheEnabled.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/APIGatewayMethodSettingsCacheEncrypted.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/APIGatewayMethodSettingsDataTrace.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/APIGatewayV2RouteDefinesAuthorizationType.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/APIGatewayXray.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AbsNACLUnrestrictedIngress.py +111 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AbsSecurityGroupUnrestrictedIngress.py +114 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AppFlowConnectorProfileUsesCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AppFlowUsesCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AppSyncFieldLevelLogs.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AppSyncLogging.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AppsyncAPICacheEncryptionAtRest.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AppsyncAPICacheEncryptionInTransit.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AthenaDatabaseEncryption.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AthenaWorkgroupConfiguration.py +19 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AthenaWorkgroupEncryption.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AuroraEncryption.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AutoScalingLaunchTemplate.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/AutoScalingTagging.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/BackupVaultEncrypted.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/BatchJobIsNotPrivileged.py +36 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudFrontResponseHeaderStrictTransportSecurity.py +61 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudWatchAlarmsEnabled.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudWatchLogGroupKMSKey.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudWatchLogGroupRetention.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudWatchLogGroupRetentionYear.py +36 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudformationStackNotificationArns.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudfrontDistributionDefaultRoot.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudfrontDistributionEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudfrontDistributionEncryption.py +36 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudfrontDistributionLogging.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudfrontDistributionOriginFailover.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudfrontTLS12.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudsearchDomainEnforceHttps.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudsearchDomainTLS.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudtrailDefinesSNSTopic.py +37 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudtrailEnableLogging.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudtrailEncryptionWithCMK.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudtrailEventDataStoreUsesCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudtrailLogValidation.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CloudtrailMultiRegion.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CodeArtifactDomainEncryptedWithCMK.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CodeBuildPrivilegedMode.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CodeBuildProjectEncryption.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CodePipelineArtifactsEncrypted.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CodebuildHasLogs.py +34 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CodebuildS3LogsEncrypted.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CodebuildUsesCMK.py +36 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/CodecommitApprovalsRulesRequireMin2.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ComprehendEntityRecognizerModelUsesCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ComprehendEntityRecognizerVolumeUsesCMK.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ConfigConfgurationAggregatorAllRegions.py +36 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ConnectInstanceKinesisVideoStreamStorageConfigUsesCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ConnectInstanceS3StorageConfigUsesCMK.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DAXEncryption.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DAXEndpointTLS.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DBInstanceBackupRetentionPeriod.py +34 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DBInstanceLogging.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DBInstanceMinorUpgrade.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DBSnapshotCopyUsesCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DBSnapshotsArePrivate.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DLMEventsCrossRegionEncryption.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DLMEventsCrossRegionEncryptionWithCMK.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DLMScheduleCrossRegionEncryption.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DLMScheduleCrossRegionEncryptionWithCMK.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DMSEndpointUsesCMK.py +37 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DMSReplicationInstanceEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DMSReplicationInstanceMinorUpgrade.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DMSReplicationInstancePubliclyAccessible.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DMSS3DefinesIntransitEncryption.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DMSS3UsesCMK.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DatasyncLocationExposesSecrets.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DocDBAuditLogs.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DocDBEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DocDBEncryption.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DocDBGlobalClusterEncryption.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DocDBLogging.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DocDBTLS.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DynamoDBGlobalTableRecovery.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DynamoDBTableReplicaKMSUsesCMK.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DynamoDBTablesEncrypted.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/DynamodbRecovery.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EBSDefaultEncryption.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EBSEncryption.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EBSSnapshotCopyEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EBSVolumeEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EC2Credentials.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EC2DetailedMonitoringEnabled.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EC2EBSOptimized.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EC2PublicIP.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ECRImageScanning.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ECRImmutableTags.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ECRPolicy.py +62 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ECRRepositoryEncrypted.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ECSClusterContainerInsights.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ECSClusterLoggingEnabled.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ECSClusterLoggingEncryptedWithCMK.py +39 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ECSContainerHostProcess.py +41 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ECSContainerPrivilege.py +42 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ECSContainerReadOnlyRoot.py +45 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ECSServiceFargateLatest.py +37 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ECSServicePublicIP.py +33 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ECSTaskDefinitionEFSVolumeEncryption.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ECSTaskDefinitionRoleCheck.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EFSAccessPointRoot.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EFSAccessUserIdentity.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EFSEncryptionEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EFSFileSystemEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EKSControlPlaneLogging.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EKSNodeGroupRemoteAccess.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EKSPlatformVersion.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EKSPublicAccess.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EKSPublicAccessCIDR.py +34 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EKSSecretsEncryption.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ELBAccessLogs.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ELBCrossZoneEnable.py +19 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ELBPolicyUsesSecureProtocols.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ELBUsesSSL.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ELBv2AccessLogs.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EMRClusterIsEncryptedKMS.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/EMRClusterKerberosAttributes.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/Ec2TransitGatewayAutoAccept.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElastiCacheHasCustomSubnet.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticBeanstalkUseEnhancedHealthChecks.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticCacheAutomaticBackup.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticCacheAutomaticMinorUpgrades.py +33 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticacheHasSecurityGroup.py +19 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticacheReplicationGroupEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtRest.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransit.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticacheReplicationGroupEncryptionAtTransitAuthToken.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticsearchDefaultSG.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticsearchDomainAuditLogging.py +31 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticsearchDomainEnforceHTTPS.py +19 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticsearchDomainHA.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticsearchDomainLogging.py +33 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticsearchEncryption.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticsearchEncryptionWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticsearchInVPC.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticsearchNodeToNodeEncryption.py +51 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ElasticsearchTLSPolicy.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/FSXOntapFSEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/FSXOpenZFSFileSystemEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/FSXWindowsFSEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/GlacierVaultAnyPrincipal.py +44 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/GlobalAcceleratorAcceleratorFlowLogs.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/GlueDataCatalogEncryption.py +53 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/GlueSecurityConfiguration.py +55 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/GlueSecurityConfigurationEnabled.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/GuarddutyDetectorEnabled.py +19 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/IAMAdminPolicyDocument.py +50 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/IAMCredentialsExposure.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/IAMDataExfiltration.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/IAMManagedAdminPolicy.py +61 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/IAMPermissionsManagement.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/IAMPolicyAttachedToGroupOrRoles.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/IAMPrivilegeEscalation.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/IAMRoleAllowAssumeFromAccount.py +46 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/IAMRoleAllowsPublicAssume.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/IAMStarActionPolicyDocument.py +56 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/IAMUserNotUsedForAccess.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/IAMWriteAccess.py +15 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/IMDSv1Disabled.py +45 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ImagebuilderComponentEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ImagebuilderDistributionConfigurationEncryptedWithCMK.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/ImagebuilderImageRecipeEBSEncrypted.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/KMSKeyIsEnabled.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/KMSKeyWildcardPrincipal.py +42 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/KMSRotation.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/KendraIndexSSEUsesCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/KeyspacesTableUsesCMK.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/KinesisFirehoseDeliveryStreamSSE.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/KinesisFirehoseDeliveryStreamUsesCMK.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/KinesisStreamEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/KinesisStreamEncryptionType.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/KinesisVideoEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/LBCrossZone.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/LBDeletionProtection.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/LBTargetGroupsDefinesHealthcheck.py +36 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/LambdaCodeSigningConfigured.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/LambdaDLQConfigured.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/LambdaEnvironmentCredentials.py +41 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/LambdaEnvironmentEncryptionSettings.py +40 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/LambdaFunctionIsNotPublic.py +36 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/LambdaFunctionLevelConcurrentExecutionLimit.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/LambdaFunctionURLAuth.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/LambdaInVPC.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/LambdaXrayEnabled.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/LaunchConfigurationEBSEncryption.py +50 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/LustreFSEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/MQBrokerAuditLogging.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/MQBrokerEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/MQBrokerLogging.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/MQBrokerMinorAutoUpgrade.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/MQBrokerNotPubliclyExposed.py +31 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/MQBrokerVersion.py +36 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/MSKClusterEncryption.py +33 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/MSKClusterLogging.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/MSKClusterNodesArePrivate.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/MWAASchedulerLogsEnabled.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/MWAAWebserverLogsEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/MWAAWorkerLogsEnabled.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/MemoryDBClusterIntransitEncryption.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/MemoryDBEncryptionWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/MemoryDBSnapshotEncryptionWithCMK.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/NeptuneClusterInstancePublic.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/NeptuneClusterLogging.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/NeptuneClusterSnapshotEncrypted.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/NeptuneClusterSnapshotEncryptedWithCMK.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/NeptuneClusterStorageEncrypted.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress20.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress21.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress22.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/NetworkACLUnrestrictedIngress3389.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/PasswordPolicyExpiration.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/PasswordPolicyLength.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/PasswordPolicyLowercaseLetter.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/PasswordPolicyNumber.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/PasswordPolicyReuse.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/PasswordPolicySymbol.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/PasswordPolicyUppercaseLetter.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/QLDBLedgerDeletionProtection.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/QLDBLedgerPermissionsMode.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSCACertIsRecent.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSClusterActivityStreamEncryptedWithCMK.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSClusterAuditLogging.py +48 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSClusterAuroraBacktrack.py +43 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSClusterCopyTags.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSClusterEncrypted.py +33 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSClusterEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSClusterIAMAuthentication.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSClusterLogging.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSClusterSnapshotEncrypted.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSDeletionProtection.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSEncryption.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSEnhancedMonitorEnabled.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSHasSecurityGroup.py +19 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSIAMAuthentication.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSInstanceAutoBackupEncryptionWithCMK.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSInstanceDeletionProtection.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSMultiAZEnabled.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSPostgreSQLLogFDWExtension.py +87 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RDSPubliclyAccessible.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RedShiftSSL.py +31 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RedshiftClusterAllowVersionUpgrade.py +19 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RedshiftClusterDatabaseName.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RedshiftClusterEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RedshiftClusterEncryption.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RedshiftClusterKMSKey.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RedshiftClusterLogging.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RedshiftClusterSnapshotCopyGrantEncryptedWithCMK.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RedshiftClusterUseEnhancedVPCRouting.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RedshiftInEc2ClassicMode.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RedshiftServerlessNamespaceKMSKey.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/RedshitClusterPubliclyAvailable.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/S3AbortIncompleteUploads.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/S3AllowsAnyPrincipal.py +52 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/S3BlockPublicACLs.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/S3BlockPublicPolicy.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/S3BucketObjectEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/S3BucketObjectLock.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/S3IgnorePublicACLs.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/S3ObjectCopyEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/S3ProtectAgainstPolicyLockout.py +53 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/S3RestrictPublicBuckets.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SNSTopicEncryption.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SNSTopicPolicyAnyPrincipal.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SQSPolicy.py +35 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SQSQueueEncryption.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SQSQueuePolicyAnyPrincipal.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SSMDocumentsArePrivate.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SSMParameterUsesCMK.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SSMSessionManagerDocumentEncryption.py +43 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SSMSessionManagerDocumentLogging.py +47 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SageMakerInternetAccessDisabled.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SagemakerDomainEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SagemakerEndpointConfigurationEncryption.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SagemakerNotebookEncryption.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SagemakerNotebookInCustomVPC.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SagemakerNotebookRoot.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SchedulerScheduleUsesCMK.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SecretManagerSecret90days.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SecretManagerSecretEncrypted.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SecurityGroupRuleDescription.py +56 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress22.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress3389.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngress80.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SecurityGroupUnrestrictedIngressAny.py +10 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/StateMachineLoggingExecutionHistory.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/StateMachineXray.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/SubnetPublicIP.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/TimestreamDatabaseKMSKey.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/TransferServerIsPublic.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/VPCDefaultNetwork.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/VPCEndpointAcceptanceConfigured.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/WAFACLCVE202144228.py +58 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/WAFEnabled.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/WAFHasAnyRules.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/WAFHasLogs.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/WorkspaceRootVolumeEncrypted.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/WorkspaceUserVolumeEncrypted.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/aws/__init__.py +5 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/ACRAdminAccountDisabled.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/ACRAnonymousPullDisabled.py +33 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/ACRContainerScanEnabled.py +33 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/ACREnableImageQuarantine.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/ACREnableRetentionPolicy.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/ACRGeoreplicated.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/ACRPublicNetworkAccessDisabled.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/ACRUseSignedImages.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AKSApiServerAuthorizedIpRanges.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AKSDashboardDisabled.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AKSEnablesPrivateClusters.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AKSIsPaidSku.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AKSLocalAdminDisabled.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AKSLoggingEnabled.py +31 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AKSMaxPodsMinimum.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AKSNetworkPolicy.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AKSNodePublicIpDisabled.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AKSPoolTypeIsScaleSet.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AKSRbacEnabled.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AKSSecretStoreRotation.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AKSUpgradeChannel.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AKSUsesAzurePoliciesAddon.py +33 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AKSUsesDiskEncryptionSet.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/APIManagementBackendHTTPS.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/APIManagementCertsEnforced.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/APIManagementMinTLS12.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/APIManagementPublicAccess.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/APIServicesUseVirtualNetwork.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/ActiveDirectoryUsedAuthenticationServiceFabric.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppConfigEncryption.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppConfigLocalAuth.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppConfigPublicAccess.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppConfigPurgeProtection.py +19 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppConfigSku.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppGWUseWAFMode.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppGatewayWAFACLCVE202144228.py +45 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceAlwaysOn.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceAuthentication.py +34 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceClientCertificate.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceDetailedErrorMessagesEnabled.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceDisallowCORS.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceDotnetFrameworkVersion.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceEnableFailedRequest.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceFTPSState.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceHTTPSOnly.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceHttpLoggingEnabled.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceHttps20Enabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceIdentity.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceIdentityProviderEnabled.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceInstanceMinimum.py +31 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceJavaVersion.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceMinTLSVersion.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServicePHPVersion.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServicePythonVersion.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceRemoteDebuggingNotEnabled.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceSetHealthCheck.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceSkuMinimum.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceSlotDebugDisabled.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceSlotHTTPSOnly.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceSlotMinTLS.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AppServiceUsedAzureFiles.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AutomationEncrypted.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureBatchAccountUsesKeyVaultEncryption.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureContainerGroupDeployedIntoVirtualNetwork.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureDataExplorerDoubleEncryptionEnabled.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureDefenderOnAppServices.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureDefenderOnContainerRegistry.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureDefenderOnKeyVaults.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureDefenderOnKubernetes.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureDefenderOnServers.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureDefenderOnSqlServerVMS.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureDefenderOnSqlServers.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureDefenderOnStorage.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureFrontDoorEnablesWAF.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureInstanceExtensions.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureInstancePassword.py +37 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureManagedDiskEncryption.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureManagedDiskEncryptionSet.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureScaleSetPassword.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureSearchAllowedIPsNotGlobal.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureSearchManagedIdentity.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureSearchPublicNetworkAccessDisabled.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureSearchSLAIndex.py +37 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureSearchSLAQueryUpdates.py +36 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureServiceFabricClusterProtectionLevel.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureServicebusDoubleEncryptionEnabled.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureServicebusHasCMK.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureServicebusIdentityProviderEnabled.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureServicebusLocalAuthDisabled.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureServicebusMinTLSVersion.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/AzureServicebusPublicAccessDisabled.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/CDNDisableHttpEndpoints.py +31 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/CDNEnableHttpsEndpoints.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/CDNTLSProtocol12.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/CognitiveServicesDisablesPublicNetwork.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/CosmosDBAccountsRestrictedAccess.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/CosmosDBDisableAccessKeyWrite.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/CosmosDBDisablesPublicNetwork.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/CosmosDBHaveCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/CosmosDBLocalAuthDisabled.py +36 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/CutsomRoleDefinitionSubscriptionOwner.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/DataExplorerSKUHasSLA.py +33 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/DataExplorerServiceIdentity.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/DataExplorerUsesDiskEncryption.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/DataFactoryNoPublicNetworkAccess.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/DataFactoryUsesGitRepository.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/DataLakeStoreEncryption.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/DatabricksWorkspaceIsNotPublic.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/EventgridDomainIdentityProviderEnabled.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/EventgridDomainLocalAuthentication.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/EventgridDomainNetworkAccess.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/EventgridTopicIdentityProviderEnabled.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/EventgridTopicLocalAuthentication.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/EventgridTopicNetworkAccess.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/FrontDoorWAFACLCVE202144228.py +48 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/FrontdoorUseWAFMode.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/FunctionAppDisallowCORS.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/FunctionAppEnableLogging.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/FunctionAppHttpVersionLatest.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/FunctionAppMinTLSVersion.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/FunctionAppsAccessibleOverHttps.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/FunctionAppsEnableAuthentication.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/IoTNoPublicNetworkAccess.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/KeyBackedByHSM.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/KeyExpirationDate.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/KeyVaultDisablesPublicNetworkAccess.py +45 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/KeyVaultEnablesFirewallRulesSettings.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/KeyVaultEnablesPurgeProtection.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/KeyVaultEnablesSoftDelete.py +19 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/KeyvaultRecoveryEnabled.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/LinuxVMUsesSSH.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/MLCCLADisabled.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/MLComputeClusterMinNodes.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/MLPublicAccess.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/MSSQLServerAuditPolicyLogMonitor.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/MSSQLServerMinTLSVersion.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/MariaDBGeoBackupEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/MariaDBPublicAccessDisabled.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/MariaDBSSLEnforcementEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/MonitorLogProfileCategories.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/MonitorLogProfileRetentionDays.py +35 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/MySQLEncryptionEnaled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/MySQLGeoBackupEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/MySQLPublicAccessDisabled.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/MySQLServerMinTLSVersion.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/MySQLServerSSLEnforcementEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/MySQLTreatDetectionEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/NSGRuleHTTPAccessRestricted.py +13 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/NSGRulePortAccessRestricted.py +97 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/NSGRuleRDPAccessRestricted.py +13 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/NSGRuleSSHAccessRestricted.py +13 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/NSGRuleUDPAccessRestricted.py +40 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/NetworkInterfaceEnableIPForwarding.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/NetworkWatcherFlowLogPeriod.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/PostgreSQLEncryptionEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/PostgreSQLFlexiServerGeoBackupEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/PostgreSQLMinTLSVersion.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/PostgreSQLServerConnectionThrottlingEnabled.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/PostgreSQLServerLogCheckpointsEnabled.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/PostgreSQLServerLogConnectionsEnabled.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/PostgreSQLServerLogRetentionEnabled.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/PostgreSQLServerPublicAccessDisabled.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/PostgreSQLServerSSLEnforcementEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/PostgresSQLTreatDetectionEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/PostgressSQLGeoBackupEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/PubsubSKUSLA.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/PubsubSpecifyIdentity.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/RedisCacheEnableNonSSLPort.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/RedisCacheMinTLSVersion.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/RedisCachePublicNetworkAccessEnabled.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SQLServerEmailAlertsEnabled.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SQLServerEmailAlertsToAdminsEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SQLServerNoPublicAccess.py +35 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SQLServerPublicAccessDisabled.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SQLServerThreatDetectionTypes.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SecretContentType.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SecretExpirationDate.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SecurityCenterContactEmailAlert.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SecurityCenterContactEmailAlertAdmins.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SecurityCenterContactEmails.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SecurityCenterContactPhone.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SecurityCenterStandardPricing.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SignalRSKUSLA.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SpringCloudAPIPortalHTTPSOnly.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SpringCloudAPIPortalPublicAccessIsDisabled.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/StorageAccountAzureServicesAccessEnabled.py +34 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/StorageAccountDefaultNetworkAccessDeny.py +40 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/StorageAccountDisablePublicAccess.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/StorageAccountLoggingQueueServiceEnabled.py +33 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/StorageAccountMinimumTlsVersion.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/StorageAccountName.py +42 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/StorageAccountsTransportEncryption.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/StorageAccountsUseReplication.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/StorageBlobRestrictPublicAccess.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/StorageBlobServiceContainerPrivateAccess.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/StorageSyncPublicAccessDisabled.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SynapseWorkspaceEnablesDataExfilProtection.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/SynapseWorkspaceEnablesManagedVirtualNetworks.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/VMAgentIsInstalled.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/VMCredsInCustomData.py +34 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/VMDisablePasswordAuthentication.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/VMEncryptionAtHostEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/VMScaleSetsAutoOSImagePatchingEnabled.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/VMStorageOsDisk.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/VnetLocalDNS.py +45 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/VnetSingleDNSServer.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/WinVMAutomaticUpdates.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/WinVMEncryptionAtHost.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/azure/__init__.py +5 -0
- s1_cns_cli/s1graph/terraform/checks/resource/base_cloudsplaining_resource_iam_check.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/base_registry.py +12 -0
- s1_cns_cli/s1graph/terraform/checks/resource/base_resource_check.py +51 -0
- s1_cns_cli/s1graph/terraform/checks/resource/base_resource_negative_value_check.py +90 -0
- s1_cns_cli/s1graph/terraform/checks/resource/base_resource_value_check.py +114 -0
- s1_cns_cli/s1graph/terraform/checks/resource/digitalocean/DropletSSHKeys.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/digitalocean/FirewallIngressOpen.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/digitalocean/SpacesBucketPublicRead.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/digitalocean/SpacesBucketVersioning.py +19 -0
- s1_cns_cli/s1graph/terraform/checks/resource/digitalocean/__init__.py +5 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/AbsGoogleBasicRoles.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/AbsGoogleComputeFirewallUnrestrictedIngress.py +46 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/AbsGoogleIAMMemberDefaultServiceAccount.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/AbsGoogleImpersonationRoles.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/AbsGooglePostgresqlDatabaseFlags.py +37 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/ArtifactRegistryPrivateRepo.py +45 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/ArtifactRegsitryEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/BigQueryDatasetEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/BigQueryPrivateTable.py +45 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/BigQueryTableEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/BigTableInstanceEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/CloudArmorWAFACLCVE202144228.py +39 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/CloudBuildWorkersArePrivate.py +18 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/CloudFunctionsShouldNotBePublic.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/CloudPubSubEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/CloudSqlMajorVersion.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/CloudStorageLogging.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/CloudStorageSelfLogging.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/CloudStorageVersioningEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/DataFusionPrivateInstance.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/DataFusionStackdriverLogs.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/DataFusionStackdriverMonitoring.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/DataflowJobEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/DataflowPrivateJob.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/DataprocClusterEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/DataprocPrivateCluster.py +45 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/DataprocPublicIpCluster.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GCPCloudRunPrivateService.py +45 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEAliasIpEnabled.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEBasicAuth.py +37 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEBinaryAuthorization.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEClientCertificateDisabled.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEClusterLogging.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEDisableLegacyAuth.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEEnableShieldedNodes.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEEnableVPCFlowLogs.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEEnsureIntegrityMonitoring.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEHasLabels.py +31 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEKubernetesRBACGoogleGroups.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKELegacyInstanceMetadataDisabled.py +36 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEMasterAuthorizedNetworksEnabled.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEMetadataServerIsEnabled.py +35 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEMonitoringEnabled.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKENetworkPolicyEnabled.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKENodePoolAutoRepairEnabled.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKENodePoolAutoUpgradeEnabled.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEPodSecurityPolicyEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEPrivateClusterConfig.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEPrivateNodes.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEPublicControlPlane.py +34 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEReleaseChannel.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKESecureBootforShieldedNodes.py +35 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GKEUseCosImage.py +35 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleBigQueryDatasetPublicACL.py +48 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudDNSKeySpecsRSASHA1.py +36 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudDNSSECEnabled.py +37 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudMySqlLocalInfileOff.py +49 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudPostgreSqlEnablePgaudit.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogCheckpoints.py +47 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogConnection.py +44 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogDisconnection.py +50 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogHostname.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogLockWaits.py +50 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogMinDuration.py +51 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogMinErrorStatement.py +34 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogMinMessage.py +52 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogStatement.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudPostgreSqlLogTemp.py +50 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudSqlBackupConfiguration.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudSqlDatabasePubliclyAccessible.py +51 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudSqlDatabaseRequireSsl.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudSqlServerContainedDBAuthentication.py +50 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudSqlServerCrossDBOwnershipChaining.py +51 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleCloudSqlServerNoPublicIP.py +34 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeBlockProjectSSH.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeBootDiskEncryption.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeDefaultServiceAccount.py +39 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeDefaultServiceAccountFullAccess.py +54 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeDiskEncryption.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeExternalIP.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress20.py +16 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress21.py +16 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress22.py +16 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress3306.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress3389.py +16 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeFirewallUnrestrictedIngress80.py +16 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeIPForward.py +39 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeInstanceOSLogin.py +34 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeProjectOSLogin.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeSSLPolicy.py +39 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeSerialPorts.py +33 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleComputeShieldedVM.py +41 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleFolderBasicRole.py +14 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleFolderImpersonationRole.py +14 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleFolderMemberDefaultServiceAccount.py +14 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleKMSKeyIsPublic.py +57 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleKMSPreventDestroy.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleKMSRotationPeriod.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleOrgBasicRole.py +14 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleOrgImpersonationRole.py +14 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleOrgMemberDefaultServiceAccount.py +14 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleProjectAdminServiceAccount.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleProjectBasicRole.py +14 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleProjectDefaultNetwork.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleProjectImpersonationRole.py +14 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleProjectMemberDefaultServiceAccount.py +14 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleRoleServiceAccountUser.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleStorageBucketNotPublic.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleStorageBucketUniformAccess.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleStoragePublicAccessPrevention.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleSubnetworkIPV6PrivateGoogleEnabled.py +33 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleSubnetworkLoggingEnabled.py +31 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/GoogleSubnetworkPrivateGoogleEnabled.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/MemorystoreForRedisAuthEnabled.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/MemorystoreForRedisInTransitEncryption.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/PubSubPrivateTopic.py +45 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/SpannerDatabaseEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/VertexAIDatasetEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/VertexAIMetadataStoreEncryptedWithCMK.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/VertexAIPrivateInstance.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gcp/__init__.py +5 -0
- s1_cns_cli/s1graph/terraform/checks/resource/github/BranchProtectionRequireSignedCommits.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/github/BranchProtectionReviewNumTwo.py +30 -0
- s1_cns_cli/s1graph/terraform/checks/resource/github/PrivateRepo.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/github/RepositoryEnableVulnerabilityAlerts.py +33 -0
- s1_cns_cli/s1graph/terraform/checks/resource/github/SecretsEncrypted.py +37 -0
- s1_cns_cli/s1graph/terraform/checks/resource/github/WebhookInsecureSsl.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/github/__init__.py +4 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gitlab/ForcePushDisabled.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gitlab/PreventSecretsEnabled.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gitlab/RejectUnsignedCommits.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gitlab/RequireTwoApprovalsToMerge.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/gitlab/__init__.py +4 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/AllowPrivilegeEscalation.py +55 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/AllowPrivilegeEscalationPSP.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/AllowedCapabilities.py +54 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/AllowedCapabilitiesPSP.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/AllowedCapabilitiesSysAdmin.py +51 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/CPULimits.py +56 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/CPURequests.py +52 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/ContainerSecurityContext.py +45 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/DefaultNamespace.py +40 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/DefaultServiceAccount.py +34 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/DefaultServiceAccountBinding.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/DockerSocketVolume.py +57 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/DropCapabilities.py +68 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/DropCapabilitiesPSP.py +33 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/HostPort.py +58 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/ImageDigest.py +51 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/ImagePullPolicyAlways.py +58 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/ImageTagFixed.py +55 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/LivenessProbe.py +52 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/MemoryLimits.py +53 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/MemoryRequests.py +52 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/MinimiseCapabilities.py +54 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/MinimiseCapabilitiesPSP.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/PodSecurityContext.py +57 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/PrivilegedContainer.py +47 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/PrivilegedContainerPSP.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/ReadinessProbe.py +56 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/ReadonlyRootFilesystem.py +41 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/RootContainerPSP.py +35 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/SeccompPSP.py +31 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/Secrets.py +61 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/ShareHostIPC.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/ShareHostIPCPSP.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/ShareHostPID.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/ShareHostPIDPSP.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/SharedHostNetworkNamespace.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/SharedHostNetworkNamespacePSP.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/Tiller.py +77 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/TillerService.py +51 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/WildcardRoles.py +34 -0
- s1_cns_cli/s1graph/terraform/checks/resource/kubernetes/__init__.py +4 -0
- s1_cns_cli/s1graph/terraform/checks/resource/linode/__init__.py +4 -0
- s1_cns_cli/s1graph/terraform/checks/resource/linode/authorized_keys.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/linode/firewall_inbound_policy.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/linode/firewall_outbound_policy.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/linode/user_email_set.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/linode/user_username_set.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/AccessControlGroupInboundRule.py +58 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/AccessControlGroupInboundRulePort22.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/AccessControlGroupInboundRulePort3389.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/AccessControlGroupInboundRulePort80.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/AccessControlGroupOutboundRule.py +25 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/AccessControlGroupRuleDescription.py +47 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/LBListenerUsesSecureProtocols.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/LBListenerUsingHTTPS.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/LBNetworkPrivate.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/LBTargetGroupDefinesHealthCheck.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/LBTargetGroupUsingHTTPS.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/LaunchConfigurationEncryptionVPC.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/NACLInbound20.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/NACLInbound21.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/NACLInbound22.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/NACLInbound3389.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/NACLInboundCheck.py +27 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/NACLPortCheck.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/NASEncryptionEnabled.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/NKSControlPlaneLogging.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/NKSPublicAccess.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/RouteTableNATGatewayDefault.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/ServerEncryptionVPC.py +17 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/ServerPublicIP.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/ncp/__init__.py +4 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/AbsSecurityGroupUnrestrictedIngress.py +39 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/AbsSecurityListUnrestrictedIngress.py +45 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/FileSystemEncryption.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/IAMPasswordLength.py +31 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/IAMPasswordPolicyLowerCase.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/IAMPasswordPolicyNumeric.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/IAMPasswordPolicySpecialCharacters.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/IAMPasswordPolicyUpperCase.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/InstanceBootVolumeIntransitEncryption.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/InstanceMetadataServiceEnabled.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/InstanceMonitoringEnabled.py +24 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/ObjectStorageEmitEvents.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/ObjectStorageEncryption.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/ObjectStoragePublic.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/ObjectStorageVersioning.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/SecurityGroupUnrestrictedIngress22.py +10 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/SecurityGroupsIngressStatelessSecurityRules.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/SecurityListIngress.py +21 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/SecurityListIngressStateless.py +34 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/SecurityListUnrestrictedIngress22.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/SecurityListUnrestrictedIngress3389.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/StorageBlockBackupEnabled.py +22 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/StorageBlockEncryption.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/oci/__init__.py +4 -0
- s1_cns_cli/s1graph/terraform/checks/resource/openstack/AbsSecurityGroupUnrestrictedIngress.py +77 -0
- s1_cns_cli/s1graph/terraform/checks/resource/openstack/ComputeInstanceAdminPassword.py +32 -0
- s1_cns_cli/s1graph/terraform/checks/resource/openstack/FirewallRuleSetDestinationIP.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/openstack/SecurityGroupUnrestrictedIngress22.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/openstack/SecurityGroupUnrestrictedIngress3389.py +9 -0
- s1_cns_cli/s1graph/terraform/checks/resource/openstack/__init__.py +5 -0
- s1_cns_cli/s1graph/terraform/checks/resource/panos/InterfaceMgmtProfileNoHTTP.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/panos/InterfaceMgmtProfileNoTelnet.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/panos/NetworkIPsecAlgorithms.py +43 -0
- s1_cns_cli/s1graph/terraform/checks/resource/panos/NetworkIPsecAuthAlgorithms.py +43 -0
- s1_cns_cli/s1graph/terraform/checks/resource/panos/NetworkIPsecProtocols.py +20 -0
- s1_cns_cli/s1graph/terraform/checks/resource/panos/PolicyDescription.py +50 -0
- s1_cns_cli/s1graph/terraform/checks/resource/panos/PolicyLogForwarding.py +50 -0
- s1_cns_cli/s1graph/terraform/checks/resource/panos/PolicyLoggingEnabled.py +49 -0
- s1_cns_cli/s1graph/terraform/checks/resource/panos/PolicyNoApplicationAny.py +51 -0
- s1_cns_cli/s1graph/terraform/checks/resource/panos/PolicyNoDSRI.py +48 -0
- s1_cns_cli/s1graph/terraform/checks/resource/panos/PolicyNoServiceAny.py +51 -0
- s1_cns_cli/s1graph/terraform/checks/resource/panos/PolicyNoSrcAnyDstAny.py +70 -0
- s1_cns_cli/s1graph/terraform/checks/resource/panos/ZoneProtectionProfile.py +43 -0
- s1_cns_cli/s1graph/terraform/checks/resource/panos/ZoneUserIDIncludeACL.py +55 -0
- s1_cns_cli/s1graph/terraform/checks/resource/panos/__init__.py +5 -0
- s1_cns_cli/s1graph/terraform/checks/resource/registry.py +4 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/ComputeInstanceGroupPublicIP.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/ComputeInstanceGroupSecurityGroup.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/ComputeVMPublicIP.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/ComputeVMSecurityGroup.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/ComputeVMSerialConsole.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/IAMCloudElevatedMembers.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/IAMFolderElevatedMembers.py +26 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/IAMOrganizationElevatedMembers.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/IAMPassportAccountUsage.py +57 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/K8SAutoUpgrade.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/K8SEtcdKMSEncryption.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/K8SNetworkPolicy.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/K8SNodeGroupAutoUpgrade.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/K8SNodeGroupPublicIP.py +28 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/K8SNodeGroupSecurityGroup.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/K8SPublicIP.py +29 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/K8SSecurityGroup.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/KMSSymmetricKeyRotation.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/MDBPublicIP.py +41 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/MDBSecurityGroup.py +33 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/ObjectStorageBucketEncryption.py +23 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/ObjectStorageBucketPublicAccess.py +34 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/VPCSecurityGroupAllowAll.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/VPCSecurityGroupRuleAllowAll.py +38 -0
- s1_cns_cli/s1graph/terraform/checks/resource/yandexcloud/__init__.py +4 -0
- s1_cns_cli/s1graph/terraform/checks/utils/__init__.py +0 -0
- s1_cns_cli/s1graph/terraform/checks/utils/base_cloudsplaining_iam_scanner.py +53 -0
- s1_cns_cli/s1graph/terraform/checks/utils/consts.py +0 -0
- s1_cns_cli/s1graph/terraform/checks/utils/dependency_path_handler.py +13 -0
- s1_cns_cli/s1graph/terraform/checks/utils/iam_terraform_document_to_policy_converter.py +25 -0
- s1_cns_cli/s1graph/terraform/context_parsers/__init__.py +1 -0
- s1_cns_cli/s1graph/terraform/context_parsers/base_parser.py +186 -0
- s1_cns_cli/s1graph/terraform/context_parsers/parsers/__init__.py +4 -0
- s1_cns_cli/s1graph/terraform/context_parsers/parsers/data_context_parser.py +32 -0
- s1_cns_cli/s1graph/terraform/context_parsers/parsers/locals_context_parser.py +40 -0
- s1_cns_cli/s1graph/terraform/context_parsers/parsers/module_context_parser.py +29 -0
- s1_cns_cli/s1graph/terraform/context_parsers/parsers/provider_context_parser.py +59 -0
- s1_cns_cli/s1graph/terraform/context_parsers/parsers/resource_context_parser.py +36 -0
- s1_cns_cli/s1graph/terraform/context_parsers/parsers/variable_context_parser.py +42 -0
- s1_cns_cli/s1graph/terraform/context_parsers/registry.py +48 -0
- s1_cns_cli/s1graph/terraform/context_parsers/tf_plan/__init__.py +34 -0
- s1_cns_cli/s1graph/terraform/deep_analysis_plan_graph_manager.py +50 -0
- s1_cns_cli/s1graph/terraform/evaluation/__init__.py +0 -0
- s1_cns_cli/s1graph/terraform/evaluation/base_variable_evaluation.py +71 -0
- s1_cns_cli/s1graph/terraform/graph_builder/EncryptionCalculation.md +45 -0
- s1_cns_cli/s1graph/terraform/graph_builder/__init__.py +0 -0
- s1_cns_cli/s1graph/terraform/graph_builder/foreach/__init__.py +0 -0
- s1_cns_cli/s1graph/terraform/graph_builder/foreach/abstract_handler.py +248 -0
- s1_cns_cli/s1graph/terraform/graph_builder/foreach/builder.py +25 -0
- s1_cns_cli/s1graph/terraform/graph_builder/foreach/consts.py +14 -0
- s1_cns_cli/s1graph/terraform/graph_builder/foreach/module_handler.py +271 -0
- s1_cns_cli/s1graph/terraform/graph_builder/foreach/resource_handler.py +110 -0
- s1_cns_cli/s1graph/terraform/graph_builder/graph_components/__init__.py +0 -0
- s1_cns_cli/s1graph/terraform/graph_builder/graph_components/attribute_names.py +0 -0
- s1_cns_cli/s1graph/terraform/graph_builder/graph_components/block_types.py +15 -0
- s1_cns_cli/s1graph/terraform/graph_builder/graph_components/blocks.py +181 -0
- s1_cns_cli/s1graph/terraform/graph_builder/graph_components/generic_resource_encryption.py +122 -0
- s1_cns_cli/s1graph/terraform/graph_builder/graph_components/module.py +271 -0
- s1_cns_cli/s1graph/terraform/graph_builder/graph_to_tf_definitions.py +43 -0
- s1_cns_cli/s1graph/terraform/graph_builder/local_graph.py +710 -0
- s1_cns_cli/s1graph/terraform/graph_builder/utils.py +300 -0
- s1_cns_cli/s1graph/terraform/graph_builder/variable_rendering/__init__.py +0 -0
- s1_cns_cli/s1graph/terraform/graph_builder/variable_rendering/evaluate_terraform.py +583 -0
- s1_cns_cli/s1graph/terraform/graph_builder/variable_rendering/renderer.py +588 -0
- s1_cns_cli/s1graph/terraform/graph_builder/variable_rendering/safe_eval_functions.py +344 -0
- s1_cns_cli/s1graph/terraform/graph_builder/variable_rendering/vertex_reference.py +17 -0
- s1_cns_cli/s1graph/terraform/graph_manager.py +63 -0
- s1_cns_cli/s1graph/terraform/image_referencer/__init__.py +0 -0
- s1_cns_cli/s1graph/terraform/image_referencer/base_provider.py +57 -0
- s1_cns_cli/s1graph/terraform/image_referencer/manager.py +27 -0
- s1_cns_cli/s1graph/terraform/image_referencer/provider/__init__.py +0 -0
- s1_cns_cli/s1graph/terraform/image_referencer/provider/aws.py +97 -0
- s1_cns_cli/s1graph/terraform/image_referencer/provider/azure.py +111 -0
- s1_cns_cli/s1graph/terraform/image_referencer/provider/gcp.py +70 -0
- s1_cns_cli/s1graph/terraform/module_loading/__init__.py +8 -0
- s1_cns_cli/s1graph/terraform/module_loading/content.py +39 -0
- s1_cns_cli/s1graph/terraform/module_loading/loader.py +74 -0
- s1_cns_cli/s1graph/terraform/module_loading/loaders/__init__.py +5 -0
- s1_cns_cli/s1graph/terraform/module_loading/loaders/bitbucket_access_token_loader.py +19 -0
- s1_cns_cli/s1graph/terraform/module_loading/loaders/bitbucket_loader.py +10 -0
- s1_cns_cli/s1graph/terraform/module_loading/loaders/git_loader.py +145 -0
- s1_cns_cli/s1graph/terraform/module_loading/loaders/github_access_token_loader.py +38 -0
- s1_cns_cli/s1graph/terraform/module_loading/loaders/github_loader.py +21 -0
- s1_cns_cli/s1graph/terraform/module_loading/loaders/local_path_loader.py +49 -0
- s1_cns_cli/s1graph/terraform/module_loading/loaders/registry_loader.py +210 -0
- s1_cns_cli/s1graph/terraform/module_loading/loaders/versions_parser.py +68 -0
- s1_cns_cli/s1graph/terraform/module_loading/module_finder.py +100 -0
- s1_cns_cli/s1graph/terraform/module_loading/module_params.py +26 -0
- s1_cns_cli/s1graph/terraform/module_loading/registry.py +106 -0
- s1_cns_cli/s1graph/terraform/modules/__init__.py +2 -0
- s1_cns_cli/s1graph/terraform/modules/module_objects.py +94 -0
- s1_cns_cli/s1graph/terraform/modules/module_utils.py +288 -0
- s1_cns_cli/s1graph/terraform/parser.py +650 -0
- s1_cns_cli/s1graph/terraform/parser_functions.py +207 -0
- s1_cns_cli/s1graph/terraform/plan_parser.py +330 -0
- s1_cns_cli/s1graph/terraform/plan_runner.py +292 -0
- s1_cns_cli/s1graph/terraform/plan_utils.py +137 -0
- s1_cns_cli/s1graph/terraform/runner.py +694 -0
- s1_cns_cli/s1graph/terraform/tag_providers/__init__.py +21 -0
- s1_cns_cli/s1graph/terraform/tag_providers/aws.py +7 -0
- s1_cns_cli/s1graph/terraform/tag_providers/azure.py +7 -0
- s1_cns_cli/s1graph/terraform/tag_providers/gcp.py +7 -0
- s1_cns_cli/s1graph/terraform/tf_parser.py +563 -0
- s1_cns_cli/s1graph/terraform_json/__init__.py +0 -0
- s1_cns_cli/s1graph/terraform_json/parser.py +199 -0
- s1_cns_cli/s1graph/terraform_json/runner.py +230 -0
- s1_cns_cli/s1graph/terraform_json/utils.py +67 -0
- s1_cns_cli/s1graph/version.py +1 -0
- s1_cns_cli/s1graph/yaml_doc/__init__.py +0 -0
- s1_cns_cli/s1graph/yaml_doc/base_registry.py +349 -0
- s1_cns_cli/s1graph/yaml_doc/base_yaml_check.py +28 -0
- s1_cns_cli/s1graph/yaml_doc/enums.py +8 -0
- s1_cns_cli/s1graph/yaml_doc/registry.py +4 -0
- s1_cns_cli/s1graph/yaml_doc/runner.py +128 -0
- s1_cns_cli/sentry.py +39 -0
- s1_cns_cli/version.py +2 -0
- s1_shift_left_cli-0.4.0.dist-info/LICENSE +5 -0
- s1_shift_left_cli-0.4.0.dist-info/METADATA +113 -0
- s1_shift_left_cli-0.4.0.dist-info/RECORD +2207 -0
- s1_shift_left_cli-0.4.0.dist-info/WHEEL +4 -0
- s1_shift_left_cli-0.4.0.dist-info/entry_points.txt +5 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import copy
|
|
2
|
+
from typing import Dict, List, Any
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def convert_terraform_conf_to_iam_policy(conf: Dict[str, List[Dict[str, Any]]]) -> Dict[str, List[Dict[str, Any]]]:
|
|
6
|
+
"""
|
|
7
|
+
converts terraform parsed configuration to iam policy document
|
|
8
|
+
"""
|
|
9
|
+
result = copy.deepcopy(conf)
|
|
10
|
+
if "statement" in result.keys():
|
|
11
|
+
result["Statement"] = result.pop("statement")
|
|
12
|
+
for statement in result["Statement"]:
|
|
13
|
+
if "actions" in statement:
|
|
14
|
+
statement["Action"] = statement.pop("actions")[0]
|
|
15
|
+
if "resources" in statement:
|
|
16
|
+
statement["Resource"] = statement.pop("resources")[0]
|
|
17
|
+
if "not_actions" in statement:
|
|
18
|
+
statement["NotAction"] = statement.pop("not_actions")[0]
|
|
19
|
+
if "not_resources" in statement:
|
|
20
|
+
statement["NotResource"] = statement.pop("not_resources")[0]
|
|
21
|
+
if "effect" in statement:
|
|
22
|
+
statement["Effect"] = statement.pop("effect")[0]
|
|
23
|
+
if "effect" not in statement and "Effect" not in statement:
|
|
24
|
+
statement["Effect"] = "Allow"
|
|
25
|
+
return result
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from s1_cns_cli.s1graph.terraform.context_parsers.parsers import * # noqa
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
import re
|
|
5
|
+
from abc import ABC, abstractmethod
|
|
6
|
+
from collections import defaultdict
|
|
7
|
+
from itertools import islice
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
from typing import List, Dict, Any, Tuple
|
|
10
|
+
|
|
11
|
+
import dpath
|
|
12
|
+
|
|
13
|
+
from s1_cns_cli.s1graph.common.s1cns.integration_features.features.policy_metadata_integration import integration as metadata_integration
|
|
14
|
+
from s1_cns_cli.s1graph.common.comment.enum import COMMENT_REGEX
|
|
15
|
+
from s1_cns_cli.s1graph.common.models.enums import ContextCategories
|
|
16
|
+
from s1_cns_cli.s1graph.common.util.parser_utils import get_abs_path
|
|
17
|
+
from s1_cns_cli.s1graph.terraform.context_parsers.registry import parser_registry
|
|
18
|
+
|
|
19
|
+
OPEN_CURLY = "{"
|
|
20
|
+
CLOSE_CURLY = "}"
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class BaseContextParser(ABC):
|
|
24
|
+
def __init__(self, definition_type: str) -> None:
|
|
25
|
+
# bc_integration.setup_http_manager()
|
|
26
|
+
self.logger = logging.getLogger("{}".format(self.__module__))
|
|
27
|
+
if definition_type.upper() not in ContextCategories.__members__:
|
|
28
|
+
self.logger.error("Terraform context parser type not supported yet")
|
|
29
|
+
raise Exception()
|
|
30
|
+
self.definition_type = definition_type
|
|
31
|
+
self.tf_file = ""
|
|
32
|
+
self.tf_file_path: Path | None = None
|
|
33
|
+
self.file_lines: list[tuple[int, str]] = []
|
|
34
|
+
self.filtered_lines: list[tuple[int, str]] = []
|
|
35
|
+
self.filtered_line_numbers: list[int] = []
|
|
36
|
+
self.context: dict[str, Any] = defaultdict(dict)
|
|
37
|
+
|
|
38
|
+
parser_registry.register(self)
|
|
39
|
+
|
|
40
|
+
@abstractmethod
|
|
41
|
+
def get_entity_context_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:
|
|
42
|
+
"""
|
|
43
|
+
returns the entity's path in the context parser
|
|
44
|
+
:param entity_block: entity definition block
|
|
45
|
+
:return: list of nested entity's keys in the context parser
|
|
46
|
+
"""
|
|
47
|
+
raise NotImplementedError
|
|
48
|
+
|
|
49
|
+
def get_entity_definition_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:
|
|
50
|
+
"""
|
|
51
|
+
returns the entity's path in the entity definition block
|
|
52
|
+
:param entity_block: entity definition block
|
|
53
|
+
:return: list of nested entity's keys in the entity definition block
|
|
54
|
+
"""
|
|
55
|
+
return self.get_entity_context_path(entity_block)
|
|
56
|
+
|
|
57
|
+
def _is_block_signature(self, line_num: int, line_tokens: List[str], entity_context_path: List[str]) -> bool:
|
|
58
|
+
"""
|
|
59
|
+
Determine if the given tokenized line token is the entity signature line
|
|
60
|
+
:param line_num: The line number in the file
|
|
61
|
+
:param line_tokens: list of line tokens
|
|
62
|
+
:param entity_context_path: the entity's path in the context parser
|
|
63
|
+
:return: True/False
|
|
64
|
+
"""
|
|
65
|
+
block_type = self.get_block_type()
|
|
66
|
+
return all(x in line_tokens for x in [block_type] + entity_context_path)
|
|
67
|
+
|
|
68
|
+
@staticmethod
|
|
69
|
+
def _trim_whitespaces_linebreaks(text: str) -> str:
|
|
70
|
+
return text.strip()
|
|
71
|
+
|
|
72
|
+
def _filter_file_lines(self) -> List[Tuple[int, str]]:
|
|
73
|
+
parsed_file_lines = [(ind, self._trim_whitespaces_linebreaks(line)) for (ind, line) in self.file_lines]
|
|
74
|
+
self.filtered_lines = [(ind, line) for (ind, line) in parsed_file_lines if line]
|
|
75
|
+
self.filtered_line_numbers = [ind for ind, _ in self.filtered_lines]
|
|
76
|
+
return self.filtered_lines
|
|
77
|
+
|
|
78
|
+
def _read_file_lines(self) -> List[Tuple[int, str]]:
|
|
79
|
+
with open(self.tf_file, "r") as file:
|
|
80
|
+
file.seek(0)
|
|
81
|
+
file_lines = [(ind + 1, line) for ind, line in enumerate(file.readlines())]
|
|
82
|
+
return file_lines
|
|
83
|
+
|
|
84
|
+
@staticmethod
|
|
85
|
+
def is_optional_comment_line(line: str) -> bool:
|
|
86
|
+
line_without_whitespace = line.replace(" ", "")
|
|
87
|
+
return "s1cns:skip=" in line_without_whitespace
|
|
88
|
+
|
|
89
|
+
def _collect_skip_comments(self, definition_blocks: List[Dict[str, Any]]) -> Dict[str, Any]:
|
|
90
|
+
"""
|
|
91
|
+
Collects s1cns skip comments to all definition blocks
|
|
92
|
+
:param definition_blocks: parsed definition blocks
|
|
93
|
+
:return: context enriched with with skipped checks per skipped entity
|
|
94
|
+
"""
|
|
95
|
+
bc_id_mapping = metadata_integration.bc_to_ckv_id_mapping
|
|
96
|
+
comments = [
|
|
97
|
+
(
|
|
98
|
+
line_num,
|
|
99
|
+
{
|
|
100
|
+
"id": match.group(2),
|
|
101
|
+
"suppress_comment": match.group(3)[1:] if match.group(3) else "No comment provided",
|
|
102
|
+
},
|
|
103
|
+
)
|
|
104
|
+
for (line_num, x) in self.file_lines
|
|
105
|
+
if self.is_optional_comment_line(x)
|
|
106
|
+
for match in [re.search(COMMENT_REGEX, x)]
|
|
107
|
+
if match
|
|
108
|
+
]
|
|
109
|
+
for entity_block in definition_blocks:
|
|
110
|
+
skipped_checks = []
|
|
111
|
+
entity_context_path = self.get_entity_context_path(entity_block)
|
|
112
|
+
entity_context = self.context
|
|
113
|
+
found = True
|
|
114
|
+
for k in entity_context_path:
|
|
115
|
+
if k in entity_context:
|
|
116
|
+
entity_context = entity_context[k]
|
|
117
|
+
else:
|
|
118
|
+
logging.warning(f'Failed to find context for {".".join(entity_context_path)}')
|
|
119
|
+
found = False
|
|
120
|
+
break
|
|
121
|
+
if not found:
|
|
122
|
+
continue
|
|
123
|
+
for (skip_check_line_num, skip_check) in comments:
|
|
124
|
+
if "start_line" in entity_context and "end_line" in entity_context \
|
|
125
|
+
and entity_context["start_line"] < skip_check_line_num < entity_context["end_line"]:
|
|
126
|
+
# No matter which ID was used to skip, save the pair of IDs in the appropriate fields
|
|
127
|
+
if bc_id_mapping and skip_check["id"] in bc_id_mapping:
|
|
128
|
+
skip_check["bc_id"] = skip_check["id"]
|
|
129
|
+
skip_check["id"] = bc_id_mapping[skip_check["id"]]
|
|
130
|
+
elif metadata_integration.check_metadata:
|
|
131
|
+
skip_check["bc_id"] = metadata_integration.get_bc_id(skip_check["id"])
|
|
132
|
+
skipped_checks.append(skip_check)
|
|
133
|
+
dpath.new(self.context, entity_context_path + ["skipped_checks"], skipped_checks)
|
|
134
|
+
return self.context
|
|
135
|
+
|
|
136
|
+
def _compute_definition_end_line(self, start_line_num: int) -> int:
|
|
137
|
+
"""Given the codescanner block's start line, compute the block's end line
|
|
138
|
+
:param start_line_num: codescanner block's first line number (the signature line)
|
|
139
|
+
:return: the codescanner block's last line number
|
|
140
|
+
"""
|
|
141
|
+
parsed_file_lines = self.filtered_lines
|
|
142
|
+
start_line_idx = self.filtered_line_numbers.index(start_line_num)
|
|
143
|
+
i = 0
|
|
144
|
+
end_line_num = 0
|
|
145
|
+
for (line_num, line) in islice(parsed_file_lines, start_line_idx, None):
|
|
146
|
+
if OPEN_CURLY in line:
|
|
147
|
+
i += line.count(OPEN_CURLY)
|
|
148
|
+
if CLOSE_CURLY in line:
|
|
149
|
+
i -= line.count(CLOSE_CURLY)
|
|
150
|
+
if i == 0:
|
|
151
|
+
end_line_num = line_num
|
|
152
|
+
break
|
|
153
|
+
return end_line_num
|
|
154
|
+
|
|
155
|
+
def run(
|
|
156
|
+
self, tf_file: str, definition_blocks: List[Dict[str, Any]], collect_skip_comments: bool = True
|
|
157
|
+
) -> Dict[str, Any]:
|
|
158
|
+
# TF files for loaded modules have this formation: <file>[<referrer>#<index>]
|
|
159
|
+
# Chop off everything after the file name for our purposes here
|
|
160
|
+
self.tf_file = get_abs_path(tf_file)
|
|
161
|
+
self.tf_file_path = Path(self.tf_file)
|
|
162
|
+
self.context = defaultdict(dict)
|
|
163
|
+
self.file_lines = self._read_file_lines()
|
|
164
|
+
self.context = self.enrich_definition_block(definition_blocks)
|
|
165
|
+
if collect_skip_comments:
|
|
166
|
+
self.context = self._collect_skip_comments(definition_blocks)
|
|
167
|
+
return self.context
|
|
168
|
+
|
|
169
|
+
def get_block_type(self) -> str:
|
|
170
|
+
return self.definition_type
|
|
171
|
+
|
|
172
|
+
@staticmethod
|
|
173
|
+
def _clean_line(line: str) -> str:
|
|
174
|
+
res = line.replace('"', " ")
|
|
175
|
+
if '"{' in res:
|
|
176
|
+
res = res.split("{")[0]
|
|
177
|
+
return res
|
|
178
|
+
|
|
179
|
+
@abstractmethod
|
|
180
|
+
def enrich_definition_block(self, definition_blocks: List[Dict[str, Any]]) -> Dict[str, Any]:
|
|
181
|
+
"""
|
|
182
|
+
Enrich the context of a Terraform block
|
|
183
|
+
:param definition_blocks: Terraform block, key-value dictionary
|
|
184
|
+
:return: Enriched block context
|
|
185
|
+
"""
|
|
186
|
+
pass
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from typing import Dict, Any, List
|
|
2
|
+
|
|
3
|
+
from hcl2 import START_LINE, END_LINE
|
|
4
|
+
|
|
5
|
+
from s1_cns_cli.s1graph.terraform.context_parsers.base_parser import BaseContextParser
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class DataContextParser(BaseContextParser):
|
|
9
|
+
def __init__(self) -> None:
|
|
10
|
+
definition_type = "data"
|
|
11
|
+
super().__init__(definition_type=definition_type)
|
|
12
|
+
|
|
13
|
+
def get_entity_context_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:
|
|
14
|
+
entity_type, entity_value = next(iter(entity_block.items()))
|
|
15
|
+
entity_name = next(iter(entity_value))
|
|
16
|
+
return [entity_type, entity_name]
|
|
17
|
+
|
|
18
|
+
def enrich_definition_block(self, definition_blocks: List[Dict[str, Any]]) -> Dict[str, Any]:
|
|
19
|
+
for entity_block in definition_blocks:
|
|
20
|
+
entity_type, entity_value = next(iter(entity_block.items()))
|
|
21
|
+
entity_name, entity_config = next(iter(entity_value.items()))
|
|
22
|
+
|
|
23
|
+
self.context[entity_type][entity_name] = {
|
|
24
|
+
"start_line": entity_config[START_LINE],
|
|
25
|
+
"end_line": entity_config[END_LINE],
|
|
26
|
+
"code_lines": self.file_lines[entity_config[START_LINE] - 1: entity_config[END_LINE]],
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return self.context
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
parser = DataContextParser()
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
from typing import Dict, Any, List
|
|
2
|
+
|
|
3
|
+
from hcl2 import START_LINE, END_LINE
|
|
4
|
+
|
|
5
|
+
from s1_cns_cli.s1graph.terraform.context_parsers.base_parser import BaseContextParser
|
|
6
|
+
import dpath
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class LocalsContextParser(BaseContextParser):
|
|
10
|
+
def __init__(self) -> None:
|
|
11
|
+
definition_type = "locals"
|
|
12
|
+
super().__init__(definition_type=definition_type)
|
|
13
|
+
|
|
14
|
+
def _collect_local_values(self, local_block: Dict[str, Any]) -> None:
|
|
15
|
+
for local_name, local_value in local_block.items():
|
|
16
|
+
if local_name in {START_LINE, END_LINE}:
|
|
17
|
+
continue
|
|
18
|
+
|
|
19
|
+
local_value = local_value[0] if isinstance(local_value, list) and len(local_value) > 0 else local_value
|
|
20
|
+
if type(local_value) in (int, float, bool, str, dict):
|
|
21
|
+
dpath.new(self.context, ["assignments", local_name], local_value)
|
|
22
|
+
|
|
23
|
+
def get_entity_context_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:
|
|
24
|
+
return []
|
|
25
|
+
|
|
26
|
+
def enrich_definition_block(self, definition_blocks: List[Dict[str, Any]]) -> Dict[str, Any]:
|
|
27
|
+
for entity_block in definition_blocks:
|
|
28
|
+
if START_LINE in entity_block.keys():
|
|
29
|
+
self.context["start_line"] = entity_block[START_LINE]
|
|
30
|
+
if END_LINE in entity_block.keys():
|
|
31
|
+
self.context["end_line"] = entity_block[END_LINE]
|
|
32
|
+
if "start_line" in self.context and "end_line" in self.context:
|
|
33
|
+
self.context["code_lines"] = self.file_lines[self.context["start_line"] - 1: self.context["end_line"]]
|
|
34
|
+
|
|
35
|
+
if isinstance(entity_block, dict):
|
|
36
|
+
self._collect_local_values(entity_block)
|
|
37
|
+
return self.context
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
parser = LocalsContextParser()
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
from typing import Dict, Any, List
|
|
2
|
+
|
|
3
|
+
from hcl2 import END_LINE, START_LINE
|
|
4
|
+
|
|
5
|
+
from s1_cns_cli.s1graph.terraform.context_parsers.base_parser import BaseContextParser
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ModuleContextParser(BaseContextParser):
|
|
9
|
+
def __init__(self) -> None:
|
|
10
|
+
definition_type = "module"
|
|
11
|
+
super().__init__(definition_type=definition_type)
|
|
12
|
+
|
|
13
|
+
def get_entity_context_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:
|
|
14
|
+
entity_name = next(iter(entity_block.keys()))
|
|
15
|
+
return [entity_name]
|
|
16
|
+
|
|
17
|
+
def enrich_definition_block(self, definition_blocks: List[Dict[str, Any]]) -> Dict[str, Any]:
|
|
18
|
+
for entity_block in definition_blocks:
|
|
19
|
+
entity_name, entity_config = next(iter(entity_block.items()))
|
|
20
|
+
self.context[entity_name] = {
|
|
21
|
+
"start_line": entity_config[START_LINE],
|
|
22
|
+
"end_line": entity_config[END_LINE],
|
|
23
|
+
"code_lines": self.file_lines[entity_config[START_LINE] - 1: entity_config[END_LINE]],
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return self.context
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
parser = ModuleContextParser()
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from typing import Dict, Any, List
|
|
3
|
+
|
|
4
|
+
import hcl2
|
|
5
|
+
from hcl2 import START_LINE, END_LINE
|
|
6
|
+
|
|
7
|
+
from s1_cns_cli.s1graph.terraform.context_parsers.base_parser import BaseContextParser
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ProviderContextParser(BaseContextParser):
|
|
11
|
+
def __init__(self) -> None:
|
|
12
|
+
definition_type = "provider"
|
|
13
|
+
super().__init__(definition_type=definition_type)
|
|
14
|
+
|
|
15
|
+
def get_entity_context_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:
|
|
16
|
+
entity_type, entity_value = next(iter(entity_block.items()))
|
|
17
|
+
return [entity_type, entity_value.get("alias", ["default"])[0]]
|
|
18
|
+
|
|
19
|
+
def get_entity_definition_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:
|
|
20
|
+
entity_type, _ = next(iter(entity_block.items()))
|
|
21
|
+
return [entity_type]
|
|
22
|
+
|
|
23
|
+
def enrich_definition_block(self, definition_blocks: List[Dict[str, Any]]) -> Dict[str, Any]:
|
|
24
|
+
for entity_block in definition_blocks:
|
|
25
|
+
entity_type, entity_config = next(iter(entity_block.items()))
|
|
26
|
+
entity_name = entity_config.get("alias", ["default"])[0]
|
|
27
|
+
self.context[entity_type][entity_name] = {
|
|
28
|
+
"start_line": entity_config[START_LINE],
|
|
29
|
+
"end_line": entity_config[END_LINE],
|
|
30
|
+
"code_lines": self.file_lines[entity_config[START_LINE] - 1: entity_config[END_LINE]],
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return self.context
|
|
34
|
+
|
|
35
|
+
def _is_block_signature(self, line_num: int, line_tokens: List[str], entity_context_path: List[str]) -> bool:
|
|
36
|
+
# Ignore the alias as it is not part of the signature
|
|
37
|
+
is_provider = super()._is_block_signature(line_num, line_tokens, entity_context_path[0:-1])
|
|
38
|
+
if not is_provider or "=" in line_tokens or line_tokens[0] != "provider":
|
|
39
|
+
if not all(bracket in line_tokens for bracket in ("{", "}")):
|
|
40
|
+
# The line provider = alias is not a provider block although it has the correct words
|
|
41
|
+
# Also skips comments that include words like provider and aws
|
|
42
|
+
return False
|
|
43
|
+
|
|
44
|
+
end_line = self._compute_definition_end_line(line_num)
|
|
45
|
+
provider_type = entity_context_path[0]
|
|
46
|
+
try:
|
|
47
|
+
provider_obj = hcl2.loads(
|
|
48
|
+
"\n".join(
|
|
49
|
+
map(lambda obj: obj[1], self.file_lines[line_num - 1 : end_line if end_line > line_num else line_num])
|
|
50
|
+
)
|
|
51
|
+
)["provider"][0]
|
|
52
|
+
except Exception as e:
|
|
53
|
+
logging.info(f'got exception while loading file {self.tf_file}\n {e}')
|
|
54
|
+
return False
|
|
55
|
+
alias = provider_obj[provider_type].get("alias", ["default"])
|
|
56
|
+
return super()._is_block_signature(line_num, line_tokens + alias, entity_context_path)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
parser = ProviderContextParser()
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from typing import Dict, Any, List
|
|
2
|
+
|
|
3
|
+
from hcl2 import END_LINE, START_LINE
|
|
4
|
+
|
|
5
|
+
from s1_cns_cli.s1graph.terraform.context_parsers.base_parser import BaseContextParser
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ResourceContextParser(BaseContextParser):
|
|
9
|
+
def __init__(self) -> None:
|
|
10
|
+
definition_type = "resource"
|
|
11
|
+
super().__init__(definition_type=definition_type)
|
|
12
|
+
|
|
13
|
+
def get_entity_context_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:
|
|
14
|
+
entity_type = next(iter(entity_block.keys()))
|
|
15
|
+
entity_name = next(iter(entity_block[entity_type]))
|
|
16
|
+
return [entity_type, entity_name]
|
|
17
|
+
|
|
18
|
+
def enrich_definition_block(self, definition_blocks: List[Dict[str, Any]]) -> Dict[str, Any]:
|
|
19
|
+
for entity_block in definition_blocks:
|
|
20
|
+
entity_type, entity_value = next(iter(entity_block.items()))
|
|
21
|
+
entity_name, entity_config = next(iter(entity_value.items()))
|
|
22
|
+
|
|
23
|
+
if isinstance(entity_config[START_LINE], list) and isinstance(entity_config[END_LINE], list):
|
|
24
|
+
entity_config[START_LINE] = entity_config[START_LINE][0]
|
|
25
|
+
entity_config[END_LINE] = entity_config[END_LINE][0]
|
|
26
|
+
|
|
27
|
+
self.context[entity_type][entity_name] = {
|
|
28
|
+
"start_line": entity_config[START_LINE],
|
|
29
|
+
"end_line": entity_config[END_LINE],
|
|
30
|
+
"code_lines": self.file_lines[entity_config[START_LINE] - 1: entity_config[END_LINE]],
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return self.context
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
parser = ResourceContextParser()
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from typing import Dict, Any, List
|
|
2
|
+
|
|
3
|
+
import dpath
|
|
4
|
+
from hcl2 import START_LINE, END_LINE
|
|
5
|
+
|
|
6
|
+
from s1_cns_cli.s1graph.terraform.context_parsers.base_parser import BaseContextParser
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class VariableContextParser(BaseContextParser):
|
|
10
|
+
def __init__(self) -> None:
|
|
11
|
+
definition_type = "variable"
|
|
12
|
+
super().__init__(definition_type=definition_type)
|
|
13
|
+
|
|
14
|
+
def _collect_default_variables_values(self, variable_block: Dict[str, Dict[str, Any]]) -> None:
|
|
15
|
+
for variable_name, values in variable_block.items():
|
|
16
|
+
default_value = values.get("default")
|
|
17
|
+
if (
|
|
18
|
+
isinstance(default_value, list)
|
|
19
|
+
and len(default_value) == 1
|
|
20
|
+
and type(default_value[0]) in (int, float, bool, str)
|
|
21
|
+
):
|
|
22
|
+
dpath.new(self.context, ["assignments", variable_name], default_value[0])
|
|
23
|
+
|
|
24
|
+
def get_entity_context_path(self, entity_block: Dict[str, Dict[str, Any]]) -> List[str]:
|
|
25
|
+
entity_name = next(iter(entity_block.keys()))
|
|
26
|
+
return [entity_name]
|
|
27
|
+
|
|
28
|
+
def enrich_definition_block(self, definition_blocks: List[Dict[str, Any]]) -> Dict[str, Any]:
|
|
29
|
+
for entity_block in definition_blocks:
|
|
30
|
+
entity_name, entity_config = next(iter(entity_block.items()))
|
|
31
|
+
self.context[entity_name] = {
|
|
32
|
+
"start_line": entity_config[START_LINE],
|
|
33
|
+
"end_line": entity_config[END_LINE],
|
|
34
|
+
"code_lines": self.file_lines[entity_config[START_LINE] - 1: entity_config[END_LINE]],
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if isinstance(entity_block, dict):
|
|
38
|
+
self._collect_default_variables_values(entity_block)
|
|
39
|
+
return self.context
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
parser = VariableContextParser()
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from typing import Dict, TYPE_CHECKING, Tuple, List, Any
|
|
3
|
+
|
|
4
|
+
import dpath
|
|
5
|
+
|
|
6
|
+
from s1_cns_cli.s1graph.terraform.modules.module_objects import TFDefinitionKey
|
|
7
|
+
|
|
8
|
+
if TYPE_CHECKING:
|
|
9
|
+
from s1_cns_cli.s1graph.terraform.context_parsers.base_parser import BaseContextParser
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ParserRegistry:
|
|
13
|
+
context_parsers: Dict[str, "BaseContextParser"] = {} # noqa: CCE003
|
|
14
|
+
definitions_context: Dict[str, Dict[str, Dict[str, Any]]] = {} # noqa: CCE003
|
|
15
|
+
|
|
16
|
+
def __init__(self) -> None:
|
|
17
|
+
self.logger = logging.getLogger(__name__)
|
|
18
|
+
|
|
19
|
+
def register(self, parser: "BaseContextParser") -> None:
|
|
20
|
+
self.context_parsers[parser.definition_type] = parser
|
|
21
|
+
|
|
22
|
+
def reset_definitions_context(self) -> None:
|
|
23
|
+
self.definitions_context = {}
|
|
24
|
+
|
|
25
|
+
def enrich_definitions_context(
|
|
26
|
+
self, definitions: Tuple[str, Dict[str, List[Dict[str, Any]]]], collect_skip_comments: bool = True
|
|
27
|
+
) -> Dict[str, Dict[str, Dict[str, Any]]]:
|
|
28
|
+
supported_definitions = [parser_type for parser_type in self.context_parsers.keys()]
|
|
29
|
+
(tf_definition_key, definition_blocks_types) = definitions
|
|
30
|
+
if isinstance(tf_definition_key, TFDefinitionKey):
|
|
31
|
+
tf_file = tf_definition_key.file_path
|
|
32
|
+
else:
|
|
33
|
+
tf_file = tf_definition_key
|
|
34
|
+
if definition_blocks_types:
|
|
35
|
+
definition_blocks_types = {x: definition_blocks_types[x] for x in definition_blocks_types.keys()}
|
|
36
|
+
for definition_type in definition_blocks_types.keys():
|
|
37
|
+
if definition_type in supported_definitions:
|
|
38
|
+
dpath.new(self.definitions_context, [tf_file, definition_type], {})
|
|
39
|
+
context_parser = self.context_parsers[definition_type]
|
|
40
|
+
definition_blocks = definition_blocks_types[definition_type]
|
|
41
|
+
self.definitions_context[tf_file][definition_type] = context_parser.run(
|
|
42
|
+
tf_file, definition_blocks, collect_skip_comments
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
return self.definitions_context
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
parser_registry = ParserRegistry()
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from typing import Dict
|
|
3
|
+
|
|
4
|
+
from s1_cns_cli.s1graph.cloudformation.parser.cfn_yaml import ContentType
|
|
5
|
+
from s1_cns_cli.s1graph.cloudformation.parser import cfn_yaml
|
|
6
|
+
|
|
7
|
+
LOGGER = logging.getLogger(__name__)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def parse(filename, out_parsing_errors: Dict[str, str]):
|
|
11
|
+
"""
|
|
12
|
+
Decode filename into an object
|
|
13
|
+
"""
|
|
14
|
+
logging.debug(f"[tf_plan] - Parsing file {filename}")
|
|
15
|
+
|
|
16
|
+
try:
|
|
17
|
+
template, template_lines = cfn_yaml.load(filename, ContentType.TFPLAN)
|
|
18
|
+
except Exception as e:
|
|
19
|
+
logging.debug(f"[tf_plan] - Failed to parse file {filename}", exc_info=True)
|
|
20
|
+
out_parsing_errors[filename] = str(e)
|
|
21
|
+
return None, None
|
|
22
|
+
|
|
23
|
+
if (
|
|
24
|
+
template is not None
|
|
25
|
+
and isinstance(template, dict)
|
|
26
|
+
and 'terraform_version' in template
|
|
27
|
+
and 'planned_values' in template
|
|
28
|
+
):
|
|
29
|
+
logging.debug(f"[tf_plan] - Successfully parsed file {filename}")
|
|
30
|
+
|
|
31
|
+
return template, template_lines
|
|
32
|
+
|
|
33
|
+
logging.debug(f"[tf_plan] - Missing required fields in file {filename}")
|
|
34
|
+
return None, None
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
from s1_cns_cli.s1graph.terraform.graph_builder.graph_components.blocks import TerraformBlock
|
|
4
|
+
from s1_cns_cli.s1graph.terraform.graph_builder.local_graph import TerraformLocalGraph
|
|
5
|
+
from s1_cns_cli.s1graph.terraform.graph_builder.graph_components.block_types import BlockType
|
|
6
|
+
from s1_cns_cli.s1graph.common.output.report import Report
|
|
7
|
+
from s1_cns_cli.s1graph.terraform.plan_parser import TF_PLAN_RESOURCE_ADDRESS
|
|
8
|
+
from typing import Dict
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class DeepAnalysisGraphManager:
|
|
12
|
+
def __init__(self, tf_graph: TerraformLocalGraph, tf_plan_graph: TerraformLocalGraph) -> None:
|
|
13
|
+
self.tf_graph: TerraformLocalGraph = tf_graph
|
|
14
|
+
self.tf_plan_graph: TerraformLocalGraph = tf_plan_graph
|
|
15
|
+
self._address_to_tf_vertex_map: Dict[str, TerraformBlock] = {}
|
|
16
|
+
self._address_to_tf_plan_vertex_map: Dict[str, TerraformBlock] = {}
|
|
17
|
+
self._apply_address_mapping()
|
|
18
|
+
|
|
19
|
+
def _apply_address_mapping(self) -> None:
|
|
20
|
+
self._address_to_tf_vertex_map = {
|
|
21
|
+
vertex.attributes[TF_PLAN_RESOURCE_ADDRESS]: vertex
|
|
22
|
+
for vertex in self.tf_graph.vertices
|
|
23
|
+
if vertex.block_type == BlockType.RESOURCE
|
|
24
|
+
}
|
|
25
|
+
self._address_to_tf_plan_vertex_map = {
|
|
26
|
+
vertex.attributes[TF_PLAN_RESOURCE_ADDRESS]: vertex
|
|
27
|
+
for vertex in self.tf_plan_graph.vertices
|
|
28
|
+
if vertex.block_type == BlockType.RESOURCE
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
def enrich_tf_graph_attributes(self) -> None:
|
|
32
|
+
for address, tf_plan_vertex in self._address_to_tf_plan_vertex_map.items():
|
|
33
|
+
tf_vertex = self._address_to_tf_vertex_map.get(address)
|
|
34
|
+
if not tf_vertex:
|
|
35
|
+
logging.info(f'Cant find this address: {address} in tf graph')
|
|
36
|
+
continue
|
|
37
|
+
tf_vertex.attributes = {**tf_vertex.attributes, **tf_plan_vertex.attributes}
|
|
38
|
+
tf_vertex.path = tf_plan_vertex.path
|
|
39
|
+
|
|
40
|
+
def filter_report(self, report: Report) -> None:
|
|
41
|
+
report.failed_checks = [check for check in report.failed_checks if
|
|
42
|
+
check.resource_address in self._address_to_tf_plan_vertex_map]
|
|
43
|
+
report.passed_checks = [check for check in report.passed_checks if
|
|
44
|
+
check.resource_address in self._address_to_tf_plan_vertex_map]
|
|
45
|
+
report.skipped_checks = [check for check in report.skipped_checks if
|
|
46
|
+
check.resource_address in self._address_to_tf_plan_vertex_map]
|
|
47
|
+
# No need to filter other fields for now
|
|
48
|
+
report.resources = set()
|
|
49
|
+
report.extra_resources = set()
|
|
50
|
+
report.parsing_errors = []
|
|
File without changes
|