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,21 @@
|
|
|
1
|
+
from typing import Dict, Any, Optional
|
|
2
|
+
|
|
3
|
+
from s1_cns_cli.s1graph.terraform.tag_providers import aws
|
|
4
|
+
from s1_cns_cli.s1graph.terraform.tag_providers import azure
|
|
5
|
+
from s1_cns_cli.s1graph.terraform.tag_providers import gcp
|
|
6
|
+
|
|
7
|
+
provider_tag_mapping = {"aws": aws.get_resource_tags, "azure": azure.get_resource_tags, "gcp": gcp.get_resource_tags}
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def get_resource_tags(resource_type: str, entity_config: Dict[str, Any]) -> Optional[Dict[str, Any]]:
|
|
11
|
+
if not isinstance(entity_config, dict):
|
|
12
|
+
return None
|
|
13
|
+
|
|
14
|
+
if "_" not in resource_type:
|
|
15
|
+
return None # probably not a resource block
|
|
16
|
+
provider = resource_type[: resource_type.index("_")]
|
|
17
|
+
provider_tag_function = provider_tag_mapping.get(provider)
|
|
18
|
+
if provider_tag_function:
|
|
19
|
+
return provider_tag_function(entity_config)
|
|
20
|
+
else:
|
|
21
|
+
return None
|
|
@@ -0,0 +1,563 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
import os
|
|
5
|
+
from copy import deepcopy
|
|
6
|
+
from typing import Optional, Dict, Mapping, Set, Tuple, Callable, Any, List
|
|
7
|
+
|
|
8
|
+
import deep_merge
|
|
9
|
+
|
|
10
|
+
from s1_cns_cli.s1graph.common.runners.base_runner import filter_ignored_paths, IGNORE_HIDDEN_DIRECTORY_ENV
|
|
11
|
+
from s1_cns_cli.s1graph.common.util.consts import DEFAULT_EXTERNAL_MODULES_DIR, RESOLVED_MODULE_ENTRY_NAME
|
|
12
|
+
from s1_cns_cli.s1graph.common.util.type_forcers import force_list
|
|
13
|
+
from s1_cns_cli.s1graph.common.variables.context import EvaluationContext
|
|
14
|
+
from s1_cns_cli.s1graph.terraform.graph_builder.graph_components.block_types import BlockType
|
|
15
|
+
from s1_cns_cli.s1graph.terraform.graph_builder.graph_components.module import Module
|
|
16
|
+
from s1_cns_cli.s1graph.terraform.module_loading.content import ModuleContent
|
|
17
|
+
from s1_cns_cli.s1graph.terraform.module_loading.module_finder import load_tf_modules
|
|
18
|
+
from s1_cns_cli.s1graph.terraform.module_loading.registry import module_loader_registry as default_ml_registry, \
|
|
19
|
+
ModuleLoaderRegistry
|
|
20
|
+
from s1_cns_cli.s1graph.common.util.parser_utils import is_acceptable_module_param
|
|
21
|
+
from s1_cns_cli.s1graph.terraform.modules.module_utils import load_or_die_quietly, safe_index, \
|
|
22
|
+
remove_module_dependency_from_path, \
|
|
23
|
+
clean_parser_types, serialize_definitions
|
|
24
|
+
from s1_cns_cli.s1graph.terraform.modules.module_objects import TFModule, TFDefinitionKey
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _filter_ignored_paths(base_dir: str, root: str, paths: list[str], excluded_paths: list[str] | None) -> None:
|
|
28
|
+
filter_ignored_paths(base_dir, root, paths, excluded_paths)
|
|
29
|
+
for path in force_list(paths):
|
|
30
|
+
if path == default_ml_registry.external_modules_folder_name:
|
|
31
|
+
paths.remove(path)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class TFParser:
|
|
35
|
+
def __init__(self, module_class: type[Module] = Module) -> None:
|
|
36
|
+
self.module_class = module_class
|
|
37
|
+
self._parsed_directories: set[str] = set()
|
|
38
|
+
self.external_modules_source_map: Dict[Tuple[str, str], str] = {}
|
|
39
|
+
self.module_address_map: Dict[Tuple[str, str], str] = {}
|
|
40
|
+
self.loaded_files_map = {}
|
|
41
|
+
self.external_variables_data = []
|
|
42
|
+
|
|
43
|
+
def _init(self, directory: str,
|
|
44
|
+
out_evaluations_context: Dict[str, Dict[str, EvaluationContext]],
|
|
45
|
+
out_parsing_errors: Dict[str, Exception],
|
|
46
|
+
env_vars: Mapping[str, str],
|
|
47
|
+
download_external_modules: bool,
|
|
48
|
+
external_modules_download_path: str,
|
|
49
|
+
excluded_paths: Optional[List[str]] = None,
|
|
50
|
+
tf_var_files: Optional[List[str]] = None) -> None:
|
|
51
|
+
self.directory = directory
|
|
52
|
+
self.out_definitions = {}
|
|
53
|
+
self.out_evaluations_context = out_evaluations_context
|
|
54
|
+
self.out_parsing_errors = out_parsing_errors
|
|
55
|
+
self.env_vars = env_vars
|
|
56
|
+
self.download_external_modules = download_external_modules
|
|
57
|
+
self.external_modules_download_path = external_modules_download_path
|
|
58
|
+
self.external_modules_source_map = {}
|
|
59
|
+
self.module_address_map = {}
|
|
60
|
+
self.tf_var_files = tf_var_files
|
|
61
|
+
self.dirname_cache = {}
|
|
62
|
+
|
|
63
|
+
if self.out_evaluations_context is None:
|
|
64
|
+
self.out_evaluations_context = {}
|
|
65
|
+
if self.out_parsing_errors is None:
|
|
66
|
+
self.out_parsing_errors = {}
|
|
67
|
+
if self.env_vars is None:
|
|
68
|
+
self.env_vars = dict(os.environ)
|
|
69
|
+
self.excluded_paths = excluded_paths
|
|
70
|
+
self.visited_definition_keys = set()
|
|
71
|
+
self.module_to_resolved = {}
|
|
72
|
+
self.keys_to_remove = set()
|
|
73
|
+
|
|
74
|
+
def _check_process_dir(self, directory: str) -> bool:
|
|
75
|
+
if directory not in self._parsed_directories:
|
|
76
|
+
self._parsed_directories.add(directory)
|
|
77
|
+
return True
|
|
78
|
+
else:
|
|
79
|
+
return False
|
|
80
|
+
|
|
81
|
+
def parse_directory(self, directory: str,
|
|
82
|
+
out_evaluations_context: Dict[str, Dict[str, EvaluationContext]] = None,
|
|
83
|
+
out_parsing_errors: Dict[str, Exception] = None,
|
|
84
|
+
env_vars: Mapping[str, str] = None,
|
|
85
|
+
download_external_modules: bool = False,
|
|
86
|
+
external_modules_download_path: str = DEFAULT_EXTERNAL_MODULES_DIR,
|
|
87
|
+
excluded_paths: Optional[List[str]] = None,
|
|
88
|
+
vars_files: Optional[List[str]] = None,
|
|
89
|
+
external_modules_content_cache: Optional[Dict[str, ModuleContent]] = None) -> dict[str, Any]:
|
|
90
|
+
self._init(directory, out_evaluations_context, out_parsing_errors, env_vars,
|
|
91
|
+
download_external_modules, external_modules_download_path, excluded_paths)
|
|
92
|
+
self._parsed_directories.clear()
|
|
93
|
+
default_ml_registry.root_dir = directory
|
|
94
|
+
default_ml_registry.download_external_modules = download_external_modules
|
|
95
|
+
default_ml_registry.external_modules_folder_name = external_modules_download_path
|
|
96
|
+
default_ml_registry.module_content_cache = external_modules_content_cache if external_modules_content_cache else {}
|
|
97
|
+
load_tf_modules(directory)
|
|
98
|
+
self._parse_directory(dir_filter=lambda d: self._check_process_dir(d), vars_files=vars_files)
|
|
99
|
+
self._update_resolved_modules()
|
|
100
|
+
return self.out_definitions
|
|
101
|
+
|
|
102
|
+
def parse_file(self, file: str, parsing_errors: Optional[Dict[str, Exception]] = None) -> Optional[Dict[str, Any]]:
|
|
103
|
+
if file.endswith(".tf") or file.endswith(".tf.json") or file.endswith(".hcl"):
|
|
104
|
+
parse_result = load_or_die_quietly(file, parsing_errors)
|
|
105
|
+
if parse_result:
|
|
106
|
+
parse_result = serialize_definitions(parse_result)
|
|
107
|
+
parse_result = clean_parser_types(parse_result)
|
|
108
|
+
return parse_result
|
|
109
|
+
|
|
110
|
+
return None
|
|
111
|
+
|
|
112
|
+
def _parse_directory(self, include_sub_dirs: bool = True,
|
|
113
|
+
module_loader_registry: ModuleLoaderRegistry = default_ml_registry,
|
|
114
|
+
dir_filter: Callable[[str], bool] = lambda _: True,
|
|
115
|
+
vars_files: Optional[List[str]] = None) -> None:
|
|
116
|
+
|
|
117
|
+
keys_referenced_as_modules: Set[str] = set()
|
|
118
|
+
|
|
119
|
+
if include_sub_dirs:
|
|
120
|
+
for sub_dir, d_names, _ in os.walk(self.directory):
|
|
121
|
+
_filter_ignored_paths(self.directory, sub_dir, d_names, self.excluded_paths)
|
|
122
|
+
if dir_filter(os.path.abspath(sub_dir)):
|
|
123
|
+
self._internal_dir_load(self.directory, sub_dir, module_loader_registry, dir_filter,
|
|
124
|
+
keys_referenced_as_modules, vars_files=vars_files,
|
|
125
|
+
excluded_paths=self.excluded_paths)
|
|
126
|
+
else:
|
|
127
|
+
self._internal_dir_load(self.directory, self.directory, module_loader_registry, dir_filter,
|
|
128
|
+
keys_referenced_as_modules, vars_files=vars_files)
|
|
129
|
+
|
|
130
|
+
for key in keys_referenced_as_modules:
|
|
131
|
+
if key in self.out_definitions:
|
|
132
|
+
del self.out_definitions[key]
|
|
133
|
+
|
|
134
|
+
def _internal_dir_load(self, base_dir: str,
|
|
135
|
+
directory: str,
|
|
136
|
+
module_loader_registry: ModuleLoaderRegistry,
|
|
137
|
+
dir_filter: Callable[[str], bool],
|
|
138
|
+
keys_referenced_as_modules: Set[str],
|
|
139
|
+
specified_vars: Optional[Mapping[str, str]] = None,
|
|
140
|
+
vars_files: Optional[List[str]] = None,
|
|
141
|
+
excluded_paths: Optional[List[str]] = None,
|
|
142
|
+
nested_modules_data=None) -> None:
|
|
143
|
+
|
|
144
|
+
dir_contents = list(os.scandir(directory))
|
|
145
|
+
if excluded_paths or IGNORE_HIDDEN_DIRECTORY_ENV:
|
|
146
|
+
filter_ignored_paths(base_dir, directory, dir_contents, excluded_paths)
|
|
147
|
+
|
|
148
|
+
tf_files_to_load = self.handle_variables(dir_contents, vars_files, specified_vars)
|
|
149
|
+
files_to_data = self._load_files(tf_files_to_load)
|
|
150
|
+
for file, data in sorted(files_to_data, key=lambda x: x[0]):
|
|
151
|
+
if not data:
|
|
152
|
+
continue
|
|
153
|
+
self.out_definitions[TFDefinitionKey(file)] = data
|
|
154
|
+
self.add_external_vars_from_data(data, file)
|
|
155
|
+
|
|
156
|
+
force_final_module_load = False
|
|
157
|
+
for i in range(0, 10):
|
|
158
|
+
logging.debug(f"Module load loop {i}")
|
|
159
|
+
dir_filter(directory)
|
|
160
|
+
has_more_modules = self._load_modules(
|
|
161
|
+
base_dir, directory, module_loader_registry, dir_filter,
|
|
162
|
+
keys_referenced_as_modules, force_final_module_load,
|
|
163
|
+
nested_modules_data=nested_modules_data
|
|
164
|
+
)
|
|
165
|
+
made_var_changes = False
|
|
166
|
+
if not has_more_modules:
|
|
167
|
+
break
|
|
168
|
+
elif not made_var_changes:
|
|
169
|
+
force_final_module_load = True
|
|
170
|
+
|
|
171
|
+
def _load_files(self, files: list[os.DirEntry]) -> list[tuple[str | bytes, Any | None] | tuple[str | bytes, dict[str, list[dict[str, Any]]] | None]]:
|
|
172
|
+
def _load_file(file: os.DirEntry) -> tuple[tuple[str | bytes, dict[str, list[dict[str, Any]]] | None], dict]:
|
|
173
|
+
parsing_errors = {}
|
|
174
|
+
result = load_or_die_quietly(file, parsing_errors)
|
|
175
|
+
for path, e in parsing_errors.items():
|
|
176
|
+
parsing_errors[path] = e
|
|
177
|
+
|
|
178
|
+
return (file.path, result), parsing_errors
|
|
179
|
+
|
|
180
|
+
files_to_data = []
|
|
181
|
+
files_to_parse = []
|
|
182
|
+
for file in files:
|
|
183
|
+
data = self.loaded_files_map.get(file.path)
|
|
184
|
+
if data:
|
|
185
|
+
files_to_data.append((file.path, data))
|
|
186
|
+
else:
|
|
187
|
+
files_to_parse.append(file)
|
|
188
|
+
|
|
189
|
+
results = [_load_file(f) for f in files_to_parse]
|
|
190
|
+
for result, parsing_errors in results:
|
|
191
|
+
self.out_parsing_errors.update(parsing_errors)
|
|
192
|
+
files_to_data.append(result)
|
|
193
|
+
if result[0] not in self.loaded_files_map:
|
|
194
|
+
self.loaded_files_map[result[0]] = result[1]
|
|
195
|
+
return files_to_data
|
|
196
|
+
|
|
197
|
+
def _load_modules(self, base_dir: str, root_dir: str, module_loader_registry: ModuleLoaderRegistry,
|
|
198
|
+
dir_filter: Callable[[str], bool],
|
|
199
|
+
keys_referenced_as_modules: Set[str], ignore_unresolved_params: bool = False,
|
|
200
|
+
nested_modules_data=None) -> bool:
|
|
201
|
+
all_module_definitions = {}
|
|
202
|
+
skipped_a_module = False
|
|
203
|
+
for file in list(self.out_definitions.keys()):
|
|
204
|
+
if not self.should_loaded_file(file, root_dir):
|
|
205
|
+
continue
|
|
206
|
+
|
|
207
|
+
# Dont run over the nested because we already run on them - dont remove.
|
|
208
|
+
if file.tf_source_modules:
|
|
209
|
+
continue
|
|
210
|
+
|
|
211
|
+
file_data = self.out_definitions.get(file)
|
|
212
|
+
if file_data is None:
|
|
213
|
+
continue
|
|
214
|
+
module_calls = file_data.get("module")
|
|
215
|
+
if not module_calls or not isinstance(module_calls, list):
|
|
216
|
+
continue
|
|
217
|
+
|
|
218
|
+
for module_call in module_calls:
|
|
219
|
+
if not isinstance(module_call, dict):
|
|
220
|
+
continue
|
|
221
|
+
|
|
222
|
+
for module_call_name, module_call_data in module_call.items():
|
|
223
|
+
if not isinstance(module_call_data, dict):
|
|
224
|
+
continue
|
|
225
|
+
|
|
226
|
+
file_key = self.get_file_key_with_nested_data(file, nested_modules_data)
|
|
227
|
+
current_nested_data = (file_key, module_call_name)
|
|
228
|
+
resolved_loc_list = []
|
|
229
|
+
if current_nested_data in self.module_to_resolved:
|
|
230
|
+
resolved_loc_list = self.module_to_resolved[current_nested_data]
|
|
231
|
+
self.module_to_resolved[current_nested_data] = resolved_loc_list
|
|
232
|
+
|
|
233
|
+
specified_vars = {k: v[0] if isinstance(v, list) else v for k, v in module_call_data.items()
|
|
234
|
+
if k != "source" and k != "version"}
|
|
235
|
+
skipped_a_module = self.should_skip_a_module(specified_vars, ignore_unresolved_params)
|
|
236
|
+
if skipped_a_module:
|
|
237
|
+
continue
|
|
238
|
+
|
|
239
|
+
version = self.get_module_version(module_call_data)
|
|
240
|
+
source = self.get_module_source(module_call_data, module_call_name, file)
|
|
241
|
+
if not source:
|
|
242
|
+
continue
|
|
243
|
+
|
|
244
|
+
try:
|
|
245
|
+
content_path = self.get_content_path(module_loader_registry, root_dir, source, version)
|
|
246
|
+
if not content_path:
|
|
247
|
+
continue
|
|
248
|
+
new_nested_modules_data = {'module_name': module_call_name, 'file': file, 'nested_modules_data': nested_modules_data}
|
|
249
|
+
self._internal_dir_load(
|
|
250
|
+
base_dir=base_dir,
|
|
251
|
+
directory=content_path,
|
|
252
|
+
module_loader_registry=module_loader_registry,
|
|
253
|
+
dir_filter=dir_filter, specified_vars=specified_vars,
|
|
254
|
+
keys_referenced_as_modules=keys_referenced_as_modules,
|
|
255
|
+
nested_modules_data=new_nested_modules_data
|
|
256
|
+
)
|
|
257
|
+
|
|
258
|
+
module_definitions = {
|
|
259
|
+
path: definition
|
|
260
|
+
for path, definition in self.out_definitions.items()
|
|
261
|
+
if self.get_dirname(path) == content_path and not path.tf_source_modules
|
|
262
|
+
}
|
|
263
|
+
if not module_definitions:
|
|
264
|
+
continue
|
|
265
|
+
|
|
266
|
+
keys = list(module_definitions.keys())
|
|
267
|
+
for key in keys:
|
|
268
|
+
if not self.should_process_key(key, file):
|
|
269
|
+
continue
|
|
270
|
+
keys_referenced_as_modules.add(key)
|
|
271
|
+
new_key = self.get_new_nested_module_key(key, file, module_call_name, nested_modules_data)
|
|
272
|
+
if new_key in self.visited_definition_keys:
|
|
273
|
+
del module_definitions[key]
|
|
274
|
+
del self.out_definitions[key]
|
|
275
|
+
continue
|
|
276
|
+
|
|
277
|
+
module_definitions[new_key] = module_definitions[key]
|
|
278
|
+
del module_definitions[key]
|
|
279
|
+
del self.out_definitions[key]
|
|
280
|
+
self.keys_to_remove.add(key)
|
|
281
|
+
|
|
282
|
+
self.visited_definition_keys.add(new_key)
|
|
283
|
+
if new_key not in resolved_loc_list:
|
|
284
|
+
resolved_loc_list.append(new_key)
|
|
285
|
+
|
|
286
|
+
if all_module_definitions:
|
|
287
|
+
deep_merge.merge(all_module_definitions, module_definitions)
|
|
288
|
+
else:
|
|
289
|
+
all_module_definitions = module_definitions
|
|
290
|
+
|
|
291
|
+
self.external_modules_source_map[(source, version)] = content_path
|
|
292
|
+
except Exception as e:
|
|
293
|
+
logging.warning(f"Unable to load module - source: {source}, version: {version}, error: {str(e)}")
|
|
294
|
+
|
|
295
|
+
if all_module_definitions:
|
|
296
|
+
deep_merge.merge(self.out_definitions, all_module_definitions)
|
|
297
|
+
return skipped_a_module
|
|
298
|
+
|
|
299
|
+
def parse_hcl_module(
|
|
300
|
+
self,
|
|
301
|
+
source_dir: str,
|
|
302
|
+
source: str,
|
|
303
|
+
download_external_modules: bool = False,
|
|
304
|
+
external_modules_download_path: str = DEFAULT_EXTERNAL_MODULES_DIR,
|
|
305
|
+
parsing_errors: dict[str, Exception] | None = None,
|
|
306
|
+
excluded_paths: list[str] | None = None,
|
|
307
|
+
vars_files: list[str] | None = None,
|
|
308
|
+
external_modules_content_cache: dict[str, ModuleContent] | None = None,
|
|
309
|
+
create_graph: bool = True,
|
|
310
|
+
) -> tuple[Module | None, dict[str, dict[str, Any]]]:
|
|
311
|
+
tf_definitions = self.parse_directory(
|
|
312
|
+
directory=source_dir, out_evaluations_context={},
|
|
313
|
+
out_parsing_errors=parsing_errors if parsing_errors is not None else {},
|
|
314
|
+
download_external_modules=download_external_modules,
|
|
315
|
+
external_modules_download_path=external_modules_download_path, excluded_paths=excluded_paths,
|
|
316
|
+
vars_files=vars_files, external_modules_content_cache=external_modules_content_cache
|
|
317
|
+
)
|
|
318
|
+
tf_definitions = clean_parser_types(tf_definitions)
|
|
319
|
+
tf_definitions = serialize_definitions(tf_definitions)
|
|
320
|
+
|
|
321
|
+
module = None
|
|
322
|
+
if create_graph:
|
|
323
|
+
module, tf_definitions = self.parse_hcl_module_from_tf_definitions(tf_definitions, source_dir, source)
|
|
324
|
+
|
|
325
|
+
return module, tf_definitions
|
|
326
|
+
|
|
327
|
+
def _remove_unused_path_recursive(self, path) -> None:
|
|
328
|
+
self.out_definitions.pop(path, None)
|
|
329
|
+
for key in list(self.module_to_resolved.keys()):
|
|
330
|
+
if isinstance(key[0], TFDefinitionKey):
|
|
331
|
+
file_key = key[0]
|
|
332
|
+
else:
|
|
333
|
+
file_key, module_index, module_name = key
|
|
334
|
+
if path == file_key:
|
|
335
|
+
for resolved_path in self.module_to_resolved[key]:
|
|
336
|
+
self._remove_unused_path_recursive(resolved_path)
|
|
337
|
+
self.module_to_resolved.pop(key, None)
|
|
338
|
+
|
|
339
|
+
def _update_resolved_modules(self) -> None:
|
|
340
|
+
for key in list(self.module_to_resolved.keys()):
|
|
341
|
+
file_key, module_name = key
|
|
342
|
+
if file_key in self.keys_to_remove:
|
|
343
|
+
for path in self.module_to_resolved[key]:
|
|
344
|
+
self._remove_unused_path_recursive(path)
|
|
345
|
+
self.module_to_resolved.pop(key, None)
|
|
346
|
+
|
|
347
|
+
for key, resolved_list in self.module_to_resolved.items():
|
|
348
|
+
file_key, module_name = key
|
|
349
|
+
if file_key not in self.out_definitions:
|
|
350
|
+
continue
|
|
351
|
+
|
|
352
|
+
idx = self.get_idx_by_module_name(self.out_definitions[file_key]['module'], module_name)
|
|
353
|
+
self.out_definitions[file_key]['module'][idx][module_name][RESOLVED_MODULE_ENTRY_NAME] = resolved_list
|
|
354
|
+
|
|
355
|
+
@staticmethod
|
|
356
|
+
def get_idx_by_module_name(module_data_list: list[dict[str, Any]], module_name):
|
|
357
|
+
for idx, module_data in enumerate(module_data_list):
|
|
358
|
+
if module_name in module_data:
|
|
359
|
+
return idx
|
|
360
|
+
|
|
361
|
+
def parse_hcl_module_from_tf_definitions(
|
|
362
|
+
self,
|
|
363
|
+
tf_definitions: Dict[str, Dict[str, Any]],
|
|
364
|
+
source_dir: str,
|
|
365
|
+
source: str,
|
|
366
|
+
) -> Tuple[Module, Dict[str, Dict[str, Any]]]:
|
|
367
|
+
module = self.get_new_module(
|
|
368
|
+
source_dir=source_dir,
|
|
369
|
+
module_address_map=self.module_address_map,
|
|
370
|
+
external_modules_source_map=self.external_modules_source_map,
|
|
371
|
+
)
|
|
372
|
+
self.add_tfvars(module, source)
|
|
373
|
+
copy_of_tf_definitions = deepcopy(tf_definitions)
|
|
374
|
+
for file_path, blocks in copy_of_tf_definitions.items():
|
|
375
|
+
for block_type in blocks:
|
|
376
|
+
try:
|
|
377
|
+
module.add_blocks(block_type, blocks[block_type], file_path, source)
|
|
378
|
+
except Exception as e:
|
|
379
|
+
logging.warning(f'Failed to add block {blocks[block_type]}. Error:')
|
|
380
|
+
logging.warning(e, exc_info=False)
|
|
381
|
+
return module, tf_definitions
|
|
382
|
+
|
|
383
|
+
def get_file_key_with_nested_data(self, file: TFDefinitionKey, nested_data: Optional[dict[str, Any]]) -> TFDefinitionKey:
|
|
384
|
+
if not nested_data:
|
|
385
|
+
return file
|
|
386
|
+
nested_str = self.get_file_key_with_nested_data(nested_data.get("file"), nested_data.get('nested_modules_data'))
|
|
387
|
+
nested_module_name = nested_data.get('module_name')
|
|
388
|
+
return get_tf_definition_object_from_module_dependency(file, nested_str, nested_module_name)
|
|
389
|
+
|
|
390
|
+
def get_new_nested_module_key(self, key: TFDefinitionKey, file: TFDefinitionKey, module_name: str, nested_data: Optional[dict[str, Any]]) -> TFDefinitionKey:
|
|
391
|
+
if not nested_data:
|
|
392
|
+
return get_tf_definition_object_from_module_dependency(key, file, module_name)
|
|
393
|
+
visited_key_to_add = get_tf_definition_object_from_module_dependency(key, file, module_name)
|
|
394
|
+
self.visited_definition_keys.add(visited_key_to_add)
|
|
395
|
+
nested_key = self.get_new_nested_module_key(file, nested_data.get('file'),
|
|
396
|
+
nested_data.get('module_name'),
|
|
397
|
+
nested_data.get('nested_modules_data'))
|
|
398
|
+
return get_tf_definition_object_from_module_dependency(key, nested_key, module_name)
|
|
399
|
+
|
|
400
|
+
def add_tfvars(self, module: Module, source: str) -> None:
|
|
401
|
+
if not self.external_variables_data:
|
|
402
|
+
return
|
|
403
|
+
for (var_name, default, path) in self.external_variables_data:
|
|
404
|
+
if ".tfvars" in path:
|
|
405
|
+
block = {var_name: {"default": default}}
|
|
406
|
+
module.add_blocks(BlockType.TF_VARIABLE, block, path, source)
|
|
407
|
+
|
|
408
|
+
def get_dirname(self, path: str | TFDefinitionKey) -> str:
|
|
409
|
+
if isinstance(path, TFDefinitionKey):
|
|
410
|
+
path = path.file_path
|
|
411
|
+
dirname_path = self.dirname_cache.get(path)
|
|
412
|
+
if not dirname_path:
|
|
413
|
+
dirname_path = os.path.dirname(path)
|
|
414
|
+
self.dirname_cache[path] = dirname_path
|
|
415
|
+
return dirname_path
|
|
416
|
+
|
|
417
|
+
def should_loaded_file(self, file: TFDefinitionKey, root_dir: str) -> bool:
|
|
418
|
+
return not self.get_dirname(file) != root_dir
|
|
419
|
+
|
|
420
|
+
def get_module_source(self, module_call_data: dict[str, Any], module_call_name: str, file: str) -> Optional[str]:
|
|
421
|
+
source = module_call_data.get("source")
|
|
422
|
+
if not source or not isinstance(source, list):
|
|
423
|
+
return
|
|
424
|
+
source = source[0]
|
|
425
|
+
if not self.is_valid_source(source, module_call_name):
|
|
426
|
+
return
|
|
427
|
+
|
|
428
|
+
if source.startswith("./") or source.startswith("../"):
|
|
429
|
+
file_to_load = file.file_path if isinstance(file, TFDefinitionKey) else file
|
|
430
|
+
source = os.path.normpath(os.path.join(os.path.dirname(remove_module_dependency_from_path(file_to_load)), source))
|
|
431
|
+
return source
|
|
432
|
+
|
|
433
|
+
def add_external_vars_from_data(self, data: dict[str, Any], file: str) -> None:
|
|
434
|
+
var_blocks = data.get("variable")
|
|
435
|
+
if var_blocks and isinstance(var_blocks, list):
|
|
436
|
+
for var_block in var_blocks:
|
|
437
|
+
if not isinstance(var_block, dict):
|
|
438
|
+
continue
|
|
439
|
+
for var_name, var_definition in var_block.items():
|
|
440
|
+
if not isinstance(var_definition, dict):
|
|
441
|
+
continue
|
|
442
|
+
|
|
443
|
+
default_value = var_definition.get("default")
|
|
444
|
+
if default_value is not None and isinstance(default_value, list):
|
|
445
|
+
self.external_variables_data.append((var_name, default_value[0], file))
|
|
446
|
+
|
|
447
|
+
def handle_variables(self, dir_contents: list[str], vars_files: None | list[str], specified_vars: Mapping[str, str] | None) -> list[os.DirEntry]:
|
|
448
|
+
tf_files_to_load = []
|
|
449
|
+
hcl_tfvars: Optional[os.DirEntry] = None
|
|
450
|
+
json_tfvars: Optional[os.DirEntry] = None
|
|
451
|
+
auto_vars_files: List[os.DirEntry] = []
|
|
452
|
+
explicit_var_files: List[os.DirEntry] = []
|
|
453
|
+
for file in dir_contents:
|
|
454
|
+
try:
|
|
455
|
+
if not file.is_file():
|
|
456
|
+
continue
|
|
457
|
+
except OSError:
|
|
458
|
+
continue
|
|
459
|
+
|
|
460
|
+
if file.name == "terraform.tfvars.json":
|
|
461
|
+
json_tfvars = file
|
|
462
|
+
elif file.name == "terraform.tfvars":
|
|
463
|
+
hcl_tfvars = file
|
|
464
|
+
elif file.name.endswith(".auto.tfvars.json") or file.name.endswith(".auto.tfvars"):
|
|
465
|
+
auto_vars_files.append(file)
|
|
466
|
+
elif vars_files and file.path in vars_files:
|
|
467
|
+
explicit_var_files.append(file)
|
|
468
|
+
elif file.name.endswith(".tf") or file.name.endswith('.hcl'): # TODO: add support for .tf.json
|
|
469
|
+
tf_files_to_load.append(file)
|
|
470
|
+
|
|
471
|
+
for key, value in self.env_vars.items():
|
|
472
|
+
if not key.startswith("TF_VAR_"):
|
|
473
|
+
continue
|
|
474
|
+
self.external_variables_data.append((key[7:], value, f"env:{key}"))
|
|
475
|
+
if hcl_tfvars: # terraform.tfvars
|
|
476
|
+
data = load_or_die_quietly(hcl_tfvars, self.out_parsing_errors, clean_definitions=False)
|
|
477
|
+
if data:
|
|
478
|
+
self.external_variables_data.extend([(k, safe_index(v, 0), hcl_tfvars.path) for k, v in data.items()])
|
|
479
|
+
if json_tfvars: # terraform.tfvars.json
|
|
480
|
+
data = load_or_die_quietly(json_tfvars, self.out_parsing_errors)
|
|
481
|
+
if data:
|
|
482
|
+
self.external_variables_data.extend([(k, v, json_tfvars.path) for k, v in data.items()])
|
|
483
|
+
|
|
484
|
+
auto_var_files_to_data = self._load_files(auto_vars_files)
|
|
485
|
+
for var_file, data in sorted(auto_var_files_to_data, key=lambda x: x[0]):
|
|
486
|
+
if data:
|
|
487
|
+
self.external_variables_data.extend([(k, v, var_file) for k, v in data.items()])
|
|
488
|
+
|
|
489
|
+
explicit_var_files_to_data = self._load_files(explicit_var_files)
|
|
490
|
+
# it's possible that os.scandir returned the var files in a different order than they were specified
|
|
491
|
+
for var_file, data in sorted(explicit_var_files_to_data, key=lambda x: vars_files.index(x[0])):
|
|
492
|
+
if data:
|
|
493
|
+
self.external_variables_data.extend([(k, v, var_file) for k, v in data.items()])
|
|
494
|
+
|
|
495
|
+
if specified_vars: # specified
|
|
496
|
+
self.external_variables_data.extend([(k, v, "manual specification") for k, v in specified_vars.items()])
|
|
497
|
+
|
|
498
|
+
return tf_files_to_load
|
|
499
|
+
|
|
500
|
+
@staticmethod
|
|
501
|
+
def get_module_version(module_call_data: dict[str, Any]) -> str:
|
|
502
|
+
version = module_call_data.get("version", "latest")
|
|
503
|
+
if version and isinstance(version, list):
|
|
504
|
+
version = version[0]
|
|
505
|
+
return version
|
|
506
|
+
|
|
507
|
+
@staticmethod
|
|
508
|
+
def should_process_key(key: TFDefinitionKey, file: TFDefinitionKey) -> bool:
|
|
509
|
+
return not key.tf_source_modules or file.tf_source_modules
|
|
510
|
+
|
|
511
|
+
@staticmethod
|
|
512
|
+
def is_valid_source(source: Any, module_call_name: str) -> bool:
|
|
513
|
+
if not isinstance(source, str):
|
|
514
|
+
logging.debug(f"Skipping loading of {module_call_name} as source is not a string, it is: {source}")
|
|
515
|
+
return False
|
|
516
|
+
elif source in ['./', '.']:
|
|
517
|
+
logging.debug(f"Skipping loading of {module_call_name} as source is the current dir")
|
|
518
|
+
return False
|
|
519
|
+
return True
|
|
520
|
+
|
|
521
|
+
@staticmethod
|
|
522
|
+
def should_skip_a_module(specified_vars: dict[str, Any], ignore_unresolved_params: bool) -> bool:
|
|
523
|
+
if not ignore_unresolved_params:
|
|
524
|
+
has_unresolved_params = False
|
|
525
|
+
for k, v in specified_vars.items():
|
|
526
|
+
if not is_acceptable_module_param(v) or not is_acceptable_module_param(k):
|
|
527
|
+
has_unresolved_params = True
|
|
528
|
+
break
|
|
529
|
+
if has_unresolved_params:
|
|
530
|
+
return True
|
|
531
|
+
return False
|
|
532
|
+
|
|
533
|
+
@staticmethod
|
|
534
|
+
def get_content_path(module_loader_registry: ModuleLoaderRegistry, root_dir: str, source: str, version: str) -> Optional[str]:
|
|
535
|
+
content = module_loader_registry.load(root_dir, source, version)
|
|
536
|
+
if not content.loaded():
|
|
537
|
+
logging.info(f'Got no content for {source}:{version}')
|
|
538
|
+
return
|
|
539
|
+
return content.path()
|
|
540
|
+
|
|
541
|
+
@staticmethod
|
|
542
|
+
def get_new_module(
|
|
543
|
+
source_dir: str,
|
|
544
|
+
module_address_map: dict[tuple[str, str], str],
|
|
545
|
+
external_modules_source_map: dict[tuple[str, str], str],
|
|
546
|
+
) -> Module:
|
|
547
|
+
return Module(
|
|
548
|
+
source_dir=source_dir,
|
|
549
|
+
module_address_map=module_address_map,
|
|
550
|
+
external_modules_source_map=external_modules_source_map,
|
|
551
|
+
)
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
def is_nested_object(full_path: TFDefinitionKey) -> bool:
|
|
555
|
+
return True if full_path.tf_source_modules else False
|
|
556
|
+
|
|
557
|
+
|
|
558
|
+
def get_tf_definition_object_from_module_dependency(path: TFDefinitionKey, module_dependency: TFDefinitionKey, module_dependency_name: str) -> TFDefinitionKey:
|
|
559
|
+
if not module_dependency:
|
|
560
|
+
return path
|
|
561
|
+
if not is_nested_object(module_dependency):
|
|
562
|
+
return TFDefinitionKey(path.file_path, TFModule(path=module_dependency.file_path, name=module_dependency_name))
|
|
563
|
+
return TFDefinitionKey(path.file_path, TFModule(path=module_dependency.file_path, name=module_dependency_name, nested_tf_module=module_dependency.tf_source_modules))
|
|
File without changes
|