Back to standards and frameworks

NIS 2 Directive (EU) 2022/2555

## Statement

Category

Standards and Frameworks

Applies to

Alibaba CloudAWSGoogle CloudGoogle WorkspaceKubernetesMicrosoft AzureMicrosoft Entra IDOkta

Coverage

115 mapped controls, 174 queries, 12 procedures

Asset types

47 covered

Overview

Statement

The NIS 2 Directive establishes a common cybersecurity baseline for essential and important entities operating in the European Union. This framework translates the Directive's governance, cybersecurity risk-management, and significant-incident reporting expectations into practical cloud, identity, workload, logging, resilience, and vulnerability controls.

This mapping is built around the core operational obligations in Directive (EU) 2022/2555:

  • Article 20: governance, management accountability, oversight, and cybersecurity training.
  • Article 21: risk-based technical, operational, and organisational cybersecurity risk-management measures.
  • Article 22: supply-chain risk considerations for critical ICT services, systems, and products.
  • Article 23: significant-incident reporting and communication readiness.
  • Article 24: alignment with recognised cybersecurity certification schemes where required or appropriate.

The controls below are not a legal determination of NIS 2 applicability. They provide an operational evidence layer for cloud and identity environments so teams can demonstrate that proportionate measures are implemented, monitored, and continuously improved.

Coverage

References

  • Directive (EU) 2022/2555, Articles 20-24: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32022L2555

Procedures and mapped controls

Article 20 - Governance and management accountability

Management bodies should approve cybersecurity risk-management measures, oversee implementation, understand risk exposure, and ensure clear security roles, contacts, and escalation paths. These controls provide evidence for administrative ownership, privileged-account resilience, security contactability, and emergency support readiness.

Article 21(2)(a) - Risk analysis and information system security

Entities should maintain a risk-based information-system security baseline supported by inventory, configuration recording, exposure analysis, and security telemetry. These controls evidence that cloud and identity environments can be assessed, monitored, and governed consistently.

Article 21(2)(b) - Incident handling

Incident handling requires timely detection, triage, containment, response, and recovery. The mapped controls focus on high-risk administrative changes, suspicious API activity, policy changes, network control changes, and alerting channels that support incident response teams.

Article 21(2)(c) - Business continuity, backup, disaster recovery, and crisis management

Continuity measures should preserve recoverability of systems, data, cryptographic material, and critical services. These controls support backup coverage, object versioning, soft delete, delete-protection, and protection against accidental or malicious key loss.

Article 21(2)(d) and Article 22 - Supply chain security

Supply-chain security should cover direct suppliers, service providers, external identities, service identities, registries, and build/runtime dependencies. These controls help identify excessive trust, externally exposed principals, public registries, and unsafe service identity patterns.

Article 21(2)(e) - Secure acquisition, development, maintenance, and vulnerability handling

Secure acquisition and maintenance should reduce exploitable vulnerabilities, unsupported runtimes, mutable artifacts, unsafe metadata services, and insecure secret handling across applications and infrastructure. These controls provide technical evidence for vulnerability management and secure lifecycle practices.

Article 21(2)(f) - Assessing effectiveness of cybersecurity measures

Effectiveness assessment requires evidence that cybersecurity measures are operating and auditable. These controls focus on audit logging, validation, retention, log sinks, security activity visibility, and policy-change monitoring.

Article 21(2)(g) - Cyber hygiene and cybersecurity training

Cyber hygiene includes secure authentication, credential rotation, password quality, privileged-account discipline, and baseline hardening. Training and awareness should reinforce these practices and make insecure exceptions visible to accountable owners.

Article 21(2)(h) - Cryptography and encryption

Cryptography and encryption policies should protect data at rest and in transit, prevent public exposure of keys, require managed key rotation, and preserve control over regulated workloads. These controls map directly to encryption and key-management evidence across cloud services.

Article 21(2)(i) - Human resources security, access control, and asset management

Access control and asset management should enforce least privilege, restrict privileged roles, minimise exposed assets, and maintain visibility over cloud resources and identities. These controls cover IAM policy quality, privileged-role constraints, Kubernetes access, public exposure, and object-store access.

Article 21(2)(j) - Multi-factor authentication and secure communications

Where appropriate, entities should use multi-factor or continuous authentication and secure communications. These controls map to tenant-wide MFA, privileged-user MFA, admin-portal MFA, risky-sign-in MFA, modern TLS, and encrypted ingress.

Article 23 - Significant-incident reporting and communication readiness

Significant-incident reporting depends on detection, evidence preservation, internal escalation, and current contact information. These controls support readiness for early warning, incident notification, ongoing updates, final reporting, and communication with affected service recipients where needed.

Query logic

These are the stored checks tied to this framework.

AWS IAMPolicies with support role

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

{
  AWSIAM16 {...AssetFragment}
}
Essential Contacts Set

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

EssentialContactsSetOnConnector{...AssetFragment}
Azure connectors without subscription owner notifications

Connectors

Microsoft Azure

Covered asset types

Connector

Expected check: eq []

{
  connectors(
    where: {
      OR: [
        { securityContacts_SOME: null }
        { securityContacts_SOME: { notificationByRoleState: { eq: "Off" } } }
        {
          NOT: {
            securityContacts_SOME: { notificationRoles_INCLUDES: "Owner" }
          }
        }
      ]
    }
  ) {
    ...AssetFragment
  }
}
At least two admins are configured Google Workspace

Connectors

Google Workspace

Covered asset types

Connector

Expected check: eq []

GWTwoAdmins{...AssetFragment}
At least two Okta admins are configured

Connectors

Okta

Covered asset types

Connector

Expected check: eq []

Okta1{...AssetFragment}
Okta Super Administrator Users

Connectors

Okta

Covered asset types

User

Expected check: eq []

{
    users(where: {isSuperAdmin: { eq: true }}) {...AssetFragment}
}
IAM Access analyzer is enabled for all regions

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWS140IAM20{...AssetFragment}
AWS Config is enabled in all regions

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWSLogging5{...AssetFragment}
Sinks are configured for all Log entries

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging2{...AssetFragment}
Cloud Audit Logging is configured properly across all services and all users from a project

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging1{...AssetFragment}
Azure subscriptions without diagnostic settings

Connectors

Microsoft Azure

Covered asset types

SubscriptionDiagnosticSettings

Expected check: eq []

{
  subscriptionDiagnosticSettings(
    where: {
      OR: [
        { logSettings_SOME: null }
        {
          logSettings_SOME: {
            category_IN: ["Administrative", "Alert", "Policy", "Security"]
            enabled: { eq: false }
          }
        }
      ]
    }
  ) {
    ...AssetFragment
  }
}
Azure Connectors without Application Insights

Connectors

Microsoft Azure

Covered asset types

Connector

Expected check: eq []

{
  connectors(where: { cloudProvider: { eq: "azure" }, applicationInsights_SOME: null }) {
    ...AssetFragment
  }
}
Azure subscriptions without Microsoft Defender for Containers

Connectors

Microsoft Azure

Covered asset types

Connector

Expected check: eq []

{
  connectors(
    where: { pricing_SOME: { name: { eq: "Containers" }, pricingTier: { eq: "Free" } } }
  ) {
    ...AssetFragment
  }
}
A log metric filter and alarm exist for unauthorized API calls

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWSMonitoring(filterPattern: ".*\\s*\\(\\s*\\$\\.errorCode\\s*=\\s*[\"]?\\*UnauthorizedOperation[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.errorCode\\s*=\\s*[\"]?AccessDenied\\*[\"]?\\s*\\)\\s*.*"){...AssetFragment}
A log metric filter and alarm exist for IAM policy changes

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWSMonitoring(filterPattern: ".*\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteGroupPolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteRolePolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteUserPolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?PutGroupPolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?PutRolePolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?PutUserPolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?CreatePolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeletePolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?CreatePolicyVersion[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeletePolicyVersion[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?AttachRolePolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DetachRolePolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?AttachUserPolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DetachUserPolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?AttachGroupPolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DetachGroupPolicy[\"]?\\s*\\)\\s*\\s*.*"){...AssetFragment}
A log metric filter and alarm exist for CloudTrail configuration changes

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWSMonitoring(filterPattern: ".*\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?CreateTrail[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?UpdateTrail[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteTrail[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?StartLogging[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?StopLogging[\"]?\\s*\\)\\s*.*"){...AssetFragment}
A log metric filter and alarm exist for security group changes

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWSMonitoring(filterPattern: ".*\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?AuthorizeSecurityGroupIngress[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?AuthorizeSecurityGroupEgress[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?RevokeSecurityGroupIngress[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?RevokeSecurityGroupEgress[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?CreateSecurityGroup[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteSecurityGroup[\"]?\\s*\\)\\s*.*"){...AssetFragment}
A log metric filter and alarm exist for changes to Network Access Control Lists (NACL)

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWSMonitoring(filterPattern: ".*\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?CreateNetworkAcl[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?CreateNetworkAclEntry[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteNetworkAcl[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteNetworkAclEntry[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?ReplaceNetworkAclEntry[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?ReplaceNetworkAclAssociation[\"]?\\s*\\)\\s*.*"){...AssetFragment}
Log metric filter and alerts exist for Custom Role changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging6{...AssetFragment}
Azure connectors without notifications for high alerts

Connectors

Microsoft Azure

Covered asset types

Connector

Expected check: eq []

{
  connectors(
    where: {
      OR: [
        { securityContacts_SOME: null }
        { securityContacts_SOME: { alertNotifications: { eq: false } } }
      ]
    }
  ) {
    ...AssetFragment
  }
}
Activity Log Alert exists for Create Policy Assignment

Connectors

Microsoft Azure

Covered asset types

Connector

Expected check: eq []

query ($subscriptionResourceId: String!) {
  AzureActivityLogAlertsForAction(
    subscriptionResourceId: $subscriptionResourceId
    equals: "microsoft.authorization/policyassignments/write"){...AssetFragment}}
Activity Log Alert exists for Delete Policy Assignment

Connectors

Microsoft Azure

Covered asset types

Connector

Expected check: eq []

query ($subscriptionResourceId: String!) {
  AzureActivityLogAlertsForAction(
    subscriptionResourceId: $subscriptionResourceId
    equals: "microsoft.authorization/policyassignments/delete"){...AssetFragment}}
Activity Log Alert exists for Create or Update Security Solution

Connectors

Microsoft Azure

Covered asset types

Connector

Expected check: eq []

query ($subscriptionResourceId: String!) {
  AzureActivityLogAlertsForAction(
    subscriptionResourceId: $subscriptionResourceId
    equals: "microsoft.security/securitysolutions/write"){...AssetFragment}}
Activity Log Alert exists for Delete Security Solution

Connectors

Microsoft Azure

Covered asset types

Connector

Expected check: eq []

query ($subscriptionResourceId: String!) {
  AzureActivityLogAlertsForAction(
    subscriptionResourceId: $subscriptionResourceId
    equals: "microsoft.security/securitysolutions/delete"){...AssetFragment}}
Buckets without versioning enabled

Connectors

Alibaba CloudAWSGoogle CloudMicrosoft Azure

Covered asset types

BlobContainerBucket

Expected check: eq []

{ objectContainers (where: {versioningEnabled: { eq: false }}) {...AssetFragment} } 
Azure Storage Accounts Without Soft Delete

Connectors

Microsoft Azure

Covered asset types

StorageAccount

Expected check: eq []

{
  storageAccounts(
    where: {
      OR: [
        { blobServiceDeletePolicyEnabled: { eq: false } }
        { blobServiceDeletePolicyDays: { eq: 0 } }
        { containerDeleteRetentionPolicyEnabled: { eq: false } }
        { containerDeleteRetentionPolicyDays: { eq: 0 } }
      ]
    }
  ) {
    ...AssetFragment
  }
}
Cloud SQL database instances are configured with automated backups

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

cloudSqlInstances(where:{settingsBackupConfigurationEnabled: { eq: false }}){...AssetFragment}
Databases without delete protection Azure

Connectors

Microsoft Azure

Covered asset types

CosmosDBAccountMariaDBServerMySQLFlexibleServerMySQLServerPostgreSQLFlexibleServerPostgreSQLServerSQLDatabaseSQLServer

Expected check: eq []

{ databases(where: { deletionPrevention: { eq: "disabled" } }) {...AssetFragment} } 
Databases without delete protection Google Cloud Cloud SQL

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{ cloudSqlInstances (where: {deletionPrevention: { eq: "disabled" }}) {...AssetFragment} }
Databases without delete protection aws and alibaba

Connectors

Alibaba Cloud

Covered asset types

DBInstance

Expected check: eq []

{ dbInstances(where: { AND: [ {deletionPrevention: { eq: "disabled" } } {OR: [{ dbCluster: null }{ dbCluster: { deletionProtection: { eq: false } }}]}]}) {...AssetFragment} }
The key vault is recoverable

Connectors

Microsoft Azure

Covered asset types

KMSVault

Expected check: eq []

{
  kmsVaults(
    where: 
    { 
      OR: [ 
        {NOT: { enableSoftDelete: { eq: true } } } 
        {NOT: { enablePurgeProtection: { eq: true } } } 
      ]  }
    ) {...AssetFragment}
}
Azure Key Vault secrets without expiration date

Connectors

Microsoft Azure

Covered asset types

KMSSecret

Expected check: eq []

{
  kmsSecrets(where: { expires: { eq: "0000-01-01T00:00:00.000Z" } }) {
    ...AssetFragment
  }
}
Encryption Keys scheduled for deletion

Connectors

Google Cloud

Covered asset types

KMSKey

Expected check: eq []

{ kmsKeys(where: {scheduleForDeletion: { eq: true }, dataStores_SOME: {}}) {...AssetFragment} }
AWS Roles allowing external access

Connectors

AWS

Covered asset types

IAMRole

Expected check: eq []

{
  AWSRolesWithExternalAccess {
    ...AssetFragment
  }
}
Google Cloud Service Accounts allowing external access

Connectors

Google Cloud

Covered asset types

IAMServiceAccount

Expected check: eq []

{
  GCPServiceAccountsWithExternalAccess{
    ...AssetFragment
  }
}
IAM Role can be assumed only by specific Principals

Connectors

AWS

Covered asset types

IAMRole

Expected check: eq []

{iamRoles(where:{hasIAMAssumeRolePolicyStatement_SOME:{hasIAMAssumeRolePolicyPrincipal_SOME:{value: { eq: "*" }}}}){...AssetFragment}}
Ensure Service Account has no Admin privileges

Connectors

Google Cloud

Covered asset types

IAMServiceAccount

Expected check: eq []

{
  iamServiceAccounts(
    where: {
      hasIAMRole_SOME: {
        OR: [
          { name: { eq: "roles/owner" } }
          { name: { eq: "roles/editor" } }
          { name_CONTAINS: "admin" }
        ]
      }
    }
  ) {
    ...AssetFragment
  }
}
AWS/Alibaba roles granting access to everything

Connectors

Alibaba CloudAWS

Covered asset types

IAMRole

Expected check: eq []

{
  iamRoles(
    where: {
      cloudProvider_IN: ["alibaba", "aws"]
      iamPolicies_SOME: {
        iamPolicyStatements_SOME: {
          actions_INCLUDES: "*"
          resources_INCLUDES: "*"
        }
      }
    }
  ) {
    ...AssetFragment
  }
}
Google Cloud Service Accounts with access to everything

Connectors

Google Cloud

Covered asset types

IAMServiceAccount

Expected check: eq []

{
  iamServiceAccounts(
    where: { hasIAMRole_SOME: { name_IN: ["roles/owner", "roles/editor"] } }
  ) {
    ...AssetFragment
  }
}
K8s Service Accounts granting access to everything

Connectors

Kubernetes

Covered asset types

ServiceAccount

Expected check: eq []

{
  serviceAccounts(
    where: {
      OR: [
        {
          podIdentityAssociations_SOME: {
            role: {
              iamPolicies_SOME: {
                iamPolicyStatements_SOME: {
                  actions_INCLUDES: "*"
                  resources_INCLUDES: "*"
                }
              }
            }
          }
        }
        {
          annotations_SOME: {
            awsRole: {
              iamPolicies_SOME: {
                iamPolicyStatements_SOME: {
                  actions_INCLUDES: "*"
                  resources_INCLUDES: "*"
                }
              }
            }
          }
        }
      ]
    }
  ) {
    ...AssetFragment
  }
}
Azure Managed Identities with access to everything

Connectors

Microsoft Azure

Covered asset types

ManagedIdentity

Expected check: eq []

{
  managedIdentities(
    where: {
      servicePrincipals_SOME: { roles_SOME: { permissions_INCLUDES: "*" } }
    }
  ) {
    ...AssetFragment
  }
}
EKSNodeGroup roles with write access to ECR

Connectors

AWS

Covered asset types

IAMRole

Expected check: eq []

{
  EKSNodeGroupRolesWithWriteAccessToECR {
    ...AssetFragment
  }
}
Publicly accessible Artifact Registry repositories

Connectors

Google Cloud

Covered asset types

ArtifactRegistryRepository

Expected check: eq []

{ artifactRegistryRepositories(where: { iamBindings_SOME: { OR: [ { members_INCLUDES: "allAuthenticatedUsers" }, { members_INCLUDES: "allUsers" } ] } }) { ...AssetFragment } }
Ensure there are no Compute with exploitable vulnerabilities

Connectors

AWS

Covered asset types

FunctionVM

Expected check: eq []

{ComputeWithExploitableVulnerabilities {...AssetFragment}}
CloudRun revisions with high severity vulnerabilities

Connectors

Google Cloud

Covered asset types

CloudRunRevision

Expected check: eq []

{ 
  cloudRunRevisions(
    where: {
      image: {
        findings_SOME: {
          vulnerability: {
            exploitAvailable: { eq: true }
          }
        }
      }
    }) {
    ...AssetFragment
  }
}
Containers with exploitable high/critical vulnerabilities

Connectors

AWSGoogle CloudKubernetes

Covered asset types

Container

Expected check: eq []

{
  ContainersWithExploitableVulnerabilities {
    ...AssetFragment
  }
}
GCP container images with exploitable high or critical vulnerabilities

Connectors

Google Cloud

Covered asset types

Image

Expected check: eq []

{ ContainerImagesWithExploitableVulnerabilities { ...AssetFragment } }
ECR Repositories without scan on push enabled

Connectors

AWS

Covered asset types

ECRRepository

Expected check: eq []

{
  ECRRepositoriesWithoutAutomaticScanning {
    ...AssetFragment
  }
}
Artifact Registry Docker repositories with mutable tags

Connectors

Google Cloud

Covered asset types

ArtifactRegistryRepository

Expected check: eq []

{ artifactRegistryRepositories(where: { format: { eq: "DOCKER" }, dockerImmutableTags: { eq: false } }) { ...AssetFragment } }
AWS Lambda functions with deprecated runtimes

Connectors

AWS

Covered asset types

Function

Expected check: eq []

{
  functions(
    where: {
      cloudProvider: { eq: "aws" }
      runtime_IN: [
        "dotnet6"
        "dotnetcore3.1"
        "dotnetcore2.1"
        "dotnetcore2.0"
        "dotnetcore1.0"
        "go1.x"
        "java8"
        "nodejs18.x"
        "nodejs16.x"
        "nodejs14.x"
        "nodejs12.x"
        "nodejs10.x"
        "nodejs8.10"
        "nodejs6.10"
        "nodejs4.3"
        "nodejs4.3-edge"
        "python3.9"
        "python3.8"
        "python3.7"
        "python3.6"
        "python2.7"
        "ruby2.7"
        "ruby2.5"
        "provided"
      ]
    }
  ) {
    ...AssetFragment
  }
}
Azure Function Apps with unsupported runtime

Connectors

Microsoft Azure

Covered asset types

FunctionApp

Expected check: eq []

{
  functionApps(
    where: {
      configs_SOME: {
        isDeprecated: { eq: true }
        OR: [
          { NOT: { nodeVersion: { eq: "" } } }
          { NOT: { pythonVersion: { eq: "" } } }
          { NOT: { javaVersion: { eq: "" } } }
          { NOT: { powerShellVersion: { eq: "" } } }
          { NOT: { netFrameworkVersion: { eq: "" } } }
          { NOT: { linuxFxVersion: { eq: "" } } }
        ]
      }
    }
  ) {
    ...AssetFragment
  }
}
Google Cloud Functions using deprecated or decommissioned runtimes

Connectors

Google Cloud

Covered asset types

Function

Expected check: eq []

{
  functions(
    where: {
      cloudProvider: { eq: "gcp" }
      runtime_IN: [
        "nodejs18"
        "nodejs16"
        "nodejs14"
        "nodejs12"
        "nodejs10"
        "nodejs8"
        "nodejs6"
        "python39"
        "python38"
        "python37"
        "go123"
        "go122"
        "go121"
        "go120"
        "go119"
        "go118"
        "go116"
        "go113"
        "go111"
        "java11"
        "ruby32"
        "ruby30"
        "ruby27"
        "ruby26"
        "php81"
        "php74"
        "dotnet6"
        "dotnet3"
      ]
    }
  ) {
    ...AssetFragment
  }
}
Azure MySQL servers with outdated engine

Connectors

Microsoft Azure

Covered asset types

MySQLServer

Expected check: eq []

{
  mySqlServers
  (
    where: {
      cyscaleEngineIsOutdated: { eq: true }
    }
  ) {
    ...AssetFragment
  }
}
Azure MySQL Flexible servers with outdated engine

Connectors

Microsoft Azure

Covered asset types

MySQLFlexibleServer

Expected check: eq []

{
  mySqlFlexibleServers
  (
    where: {
      cyscaleEngineIsOutdated: { eq: true }
    }
  ) {
    ...AssetFragment
  }
}
Azure PostgreSQL servers with outdated engine

Connectors

Microsoft Azure

Covered asset types

PostgreSQLServer

Expected check: eq []

{
  postgreSqlServers
  (
    where: {
      cyscaleEngineIsOutdated: { eq: true }
    }
  ) {
    ...AssetFragment
  }
}
Azure PostgreSQL Flexible servers with outdated engine

Connectors

Microsoft Azure

Covered asset types

PostgreSQLFlexibleServer

Expected check: eq []

{
  postgreSqlFlexibleServers
  (
    where: {
      cyscaleEngineIsOutdated: { eq: true }
    }
  ) {
    ...AssetFragment
  }
}
DBInstances with outdated engines

Connectors

Alibaba CloudAWS

Covered asset types

DBInstance

Expected check: eq []

{
  dbInstances
  (
    where: {
      cyscaleEngineIsOutdated: { eq: true }
    }
  ) {
    ...AssetFragment
  }
}
Cloud SQL Instances with outdated engines

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{
  cloudSqlInstances
  (
    where: {
      cyscaleEngineIsOutdated: { eq: true }
    }
  ) {
    ...AssetFragment
  }
}
Azure MariaDB servers with outdated engine

Connectors

Microsoft Azure

Covered asset types

MariaDBServer

Expected check: eq []

{
  mariaDbServers
  (
    where: {
      cyscaleEngineIsOutdated: { eq: true }
    }
  ) {
    ...AssetFragment
  }
}
Retrieve AWS VMs without IMDSv2 required

Connectors

AWS

Covered asset types

VM

Expected check: eq []

{
  vms(
    where: { NOT: { metadataOptionHTTPTokens: { eq: "required" } } }
  ) {...AssetFragment}
}
Retrieve AWS Launch Templates without IMDSv2 required

Connectors

AWS

Covered asset types

LaunchTemplateVersion

Expected check: eq []

{
  launchTemplateVersions(
    where: { NOT: { metadataOptionHTTPTokens: { eq: "required" } } }
  ) {...AssetFragment}
}
Retrieve SageMaker notebooks without IMDSv2 required

Connectors

AWS

Covered asset types

SageMakerNoteBook

Expected check: eq []

{
  sageMakerNoteBooks(
    where: {
     NOT: { minimumInstanceMetadataServiceVersion: { eq: "2" } } 
    }
  ) {...AssetFragment}
}

AWS Multi-region cloud trails with logging enabled

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

{
  AWSLogging1 {...AssetFragment}
}
CloudTrail log file validation is enabled

Connectors

AWS

Covered asset types

Trail

Expected check: eq []

trails(where:{logFileValidationEnabled: { eq: false }}){...AssetFragment}
CloudTrail trails are integrated with CloudWatch Logs

Connectors

AWS

Covered asset types

Trail

Expected check: eq []

AWSLogging4{...AssetFragment}
CloudTrail logs are encrypted at rest

Connectors

AWS

Covered asset types

Trail

Expected check: eq []

trails(where:{kmsKeyID: { eq: "" }}){...AssetFragment}
VPC flow logging is enabled in all VPCs

Connectors

AWS

Covered asset types

VPC

Expected check: eq []

vpcs(where: {OR: [{hasFlowLog_NONE: {}}, {hasFlowLog_NONE: {flowLogStatus: { eq: "ACTIVE" }}}]}){...AssetFragment}
Object versioning is enabled on log-buckets

Connectors

Google Cloud

Covered asset types

Bucket

Expected check: eq []

GCPLogging3{...AssetFragment}
Log metric filter and alerts exist for Project Ownership assignments/changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging4{...AssetFragment}
Log metric filter and alerts exist for Audit Configuration Changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging5{...AssetFragment}
Key Vaults without Diagnostic Settings

Connectors

Microsoft Azure

Covered asset types

KMSVault

Expected check: eq []

{
  kmsVaults(
    where: {
      OR: [
        { loggingEnabled: { eq: false } }
        {
          diagnosticSettings_SOME: {
            resourceType: { eq: "Microsoft.KeyVault/vaults" }
            logs_SOME: {
              enabled: { eq: false }
              categoryGroup_IN: ["audit", "allLogs"]
            }
          }
        }
      ]
    }
  ) {
    ...AssetFragment
  }
}
Azure SQL Servers without auditing

Connectors

Microsoft Azure

Covered asset types

SQLServer

Expected check: eq []

{
  sqlServers(where: { blobAuditingPolicies_NONE: { state: { eq: "Enabled" } } }) {
    ...AssetFragment
  }
}
Azure SQL Servers with audit retention lesser than 90 days

Connectors

Microsoft Azure

Covered asset types

SQLServer

Expected check: eq []

{
  sqlServers(
    where: {
      blobAuditingPolicies_NONE: {
        state: { eq: "Enabled" }
        OR: [{ retentionDays: { eq: 0 } }, { retentionDays_GT: 90 }]
      }
    }
  ) {
    ...AssetFragment
  }
}
Azure NSG Flow Logs with retention shorter than 90 days

Connectors

Microsoft Azure

Covered asset types

FlowLog

Expected check: eq []

{
  flowLogs(
    where: {
      targetResourceID_CONTAINS: "networkSecurityGroups"
      retentionPolicyDays_LT: 90
    }
  ) {
    ...AssetFragment
  }
}
Multi-factor authentication (MFA) is enabled for all IAM users that have a console password

Connectors

AWS

Covered asset types

IAMUser

Expected check: eq []

iamUsers(where:{hasIAMUserCredentials:{passwordEnabled: { eq: true },mfaActive: { eq: false }}}){...AssetFragment}
Google Cloud IAMUsers Without MFA

Connectors

Google Cloud

Covered asset types

IAMUser

Expected check: eq []

{
  iamUsers(where: { NOT: { user: { isEnrolledIn2Sv: { eq: true } } } }) {
    ...AssetFragment
  }
}
Entra Users Without MFA With Access to Azure

Connectors

Microsoft Entra ID

Covered asset types

User

Expected check: eq []

{
  users(where: { mfaActive: { eq: false }, NOT: { iamRoleAssignments_SOME: null } }) {
    ...AssetFragment
  }
}
Multi-factor authentication is enabled for all RAM users that have a console password

Connectors

Alibaba Cloud

Covered asset types

IAMUser

Expected check: eq []

iamUsers(where:{hasIAMUserLoginProfile_SOME:{mfaBindRequired: { eq: false }}}){...AssetFragment}
Entra users without mfa

Connectors

Microsoft Entra ID

Covered asset types

User

Expected check: eq []

{
  users(where: { mfaActive: { eq: false } }) {
    ...AssetFragment
  }
}
Alibaba & AWS Admins Without MFA

Connectors

Alibaba CloudAWS

Covered asset types

IAMUser

Expected check: eq []

{
  iamUsers(where: {
    cloudProvider_IN: ["alibaba", "aws"],
    OR: [
      {
        iamPolicies_SOME: {
          OR: [{
            internalName_CONTAINS: "Administrator"  
          }, {
            internalName_CONTAINS: "FullAccess"  
          }]
        }
      },
      {
        hasIAMGroup_SOME: {
          iamPolicies_SOME: {
            OR: [{
              internalName_CONTAINS: "Administrator"  
            }, {
              internalName_CONTAINS: "FullAccess"  
            }]
          }
        }
      }
    ],
    mfaSerialNumbers: { eq: [] }
  }) {
    ...AssetFragment
  }
}
Entra users with privileged Azure assignmnets

Connectors

Microsoft Entra ID

Covered asset types

User

Expected check: eq []

{
  users(
    where: {
      mfaActive: { eq: false }
      OR: [
        {
          iamRoleAssignments_SOME: {
            OR: [
              { internalName_IN: ["Owner", "Contributor"] }
              { isClassicAdministratorAssignment: { eq: true } }
            ]
          }
        }
        {
          groups_SOME: {
            iamRoleAssignments_SOME: {
              OR: [
                { internalName_IN: ["Owner", "Contributor"] }
                { isClassicAdministratorAssignment: { eq: true } }
              ]
            }
          }
        }
      ]
    }
  ) {
    ...AssetFragment
  }
}
Okta Admins Without MFA

Connectors

Okta

Covered asset types

User

Expected check: eq []

{
  users(
    where: {
      applications_SOME: {
        name: { eq: "Okta Admin Console" }
        hasPolicy_SOME: { mfaEnabled: { eq: false } }
      }
      OR: [
        { roles_INCLUDES: "Super Administrator" }
        { roles_INCLUDES: "API Access Management Administrator" }
        { roles_INCLUDES: "Application Administrator" }
        { roles_INCLUDES: "Group Membership Administrator" }
        { roles_INCLUDES: "Help Desk Administrator" }
        { roles_INCLUDES: "Mobile Administrator" }
        { roles_INCLUDES: "Organizational Administrator" }
        { roles_INCLUDES: "Read-only Administrator" }
        { roles_INCLUDES: "Report Administrator" }
        { roles_INCLUDES: "Group Administrator" }
      ]
    }
  ) {
    ...AssetFragment
  }
}
Google Workspace Admins without MFA

Connectors

Google Workspace

Covered asset types

User

Expected check: eq []

{
  users(where: { isAdmin: { eq: true }, NOT: { isEnrolledIn2Sv: { eq: true } } }) {
    ...AssetFragment
  }
}
Google Cloud Admins Without MFA

Connectors

Google Cloud

Covered asset types

IAMUser

Expected check: eq []

{
  iamUsers(
    where: {
      hasIAMRole_SOME: {
        OR: [
          { name_IN: ["roles/owner", "roles/editor"] }
          { name_CONTAINS: "admin" }
        ]
      }
      NOT: { user: { isEnrolledIn2Sv: { eq: true } } }
    }
  ) {
    ...AssetFragment
  }
}
Entra admins without MFA

Connectors

Microsoft Entra ID

Covered asset types

User

Expected check: eq []

{
  users(where: { cloudProvider: { eq: "entra" }, isAdmin: { eq: true }, mfaActive: { eq: false } }) {
    ...AssetFragment
  }
}
Access keys are rotated every 90 days or less

Connectors

AWS

Covered asset types

IAMUser

Expected check: eq []

AWSIAM4{...AssetFragment}
IAM password policy requires at least one uppercase letter

Connectors

AWS

Covered asset types

IAMPasswordPolicy

Expected check: eq []

iamPasswordPolicies(where:{requireUppercaseCharacters: { eq: false }}){...AssetFragment}
IAM password policy requires at least one lowercase letter

Connectors

AWS

Covered asset types

IAMPasswordPolicy

Expected check: eq []

iamPasswordPolicies(where:{requireLowercaseCharacters: { eq: false }}){...AssetFragment}
IAM password policy requires at least one symbol

Connectors

AWS

Covered asset types

IAMPasswordPolicy

Expected check: eq []

iamPasswordPolicies(where:{requireSymbols: { eq: false }}){...AssetFragment}
IAM password policy requires at least one number

Connectors

AWS

Covered asset types

IAMPasswordPolicy

Expected check: eq []

iamPasswordPolicies(where:{requireNumbers: { eq: false }}){...AssetFragment}
IAM password policy requires a minimum length of 14 or greater

Connectors

AWS

Covered asset types

IAMPasswordPolicy

Expected check: eq []

iamPasswordPolicies(where:{minimumPasswordLength_LT:14}){...AssetFragment}
IAM password policy prevents password reuse (24 times)

Connectors

AWS

Covered asset types

IAMPasswordPolicy

Expected check: eq []

iamPasswordPolicies(where:{passwordReusePrevention_LT:24}){...AssetFragment}
IAM password policy expires passwords within 90 days or less

Connectors

AWS

Covered asset types

IAMPasswordPolicy

Expected check: eq []

{ iamPasswordPolicies( where: { OR: [{ maxPasswordAge: { eq: 0 } }, { maxPasswordAge_GT: 90 }] } ) {...AssetFragment} } 
Okta Users with old password

Connectors

Okta

Covered asset types

User

Expected check: eq []

{
  OktaUsersWithOldPassword {...AssetFragment}
}
There are no weak password policies

Connectors

Okta

Covered asset types

PasswordPolicy

Expected check: eq []

passwordPolicies(where: { OR:[{minLength_LT: 14}, {minLowerCase_LT: 1}, {minUpperCase_LT: 1}, {minNumber_LT: 1}, {minSymbol_LT: 1}, {reuseCount_LT: 1}]}) {...AssetFragment}
Entra Tenants without custom password policies

Connectors

Microsoft Entra ID

Covered asset types

Connector

Expected check: eq []

{
  connectors(
    where: { passwordRuleSettings: { enableBannedPasswordCheck: { eq: false } } }
  ) {
    ...AssetFragment
  }
}
Azure MySQL Servers with no encryption

Connectors

Microsoft Azure

Covered asset types

MySQLServer

Expected check: eq []

{ mySqlServers (where: {encrypted: { eq: false }}) {...AssetFragment} }
Azure MySQL Flexible Servers with no encryption

Connectors

Microsoft Azure

Covered asset types

MySQLFlexibleServer

Expected check: eq []

{ mySqlFlexibleServers (where: {encrypted: { eq: false }}) {...AssetFragment} }
Azure PostgreSQL Servers with no encryption

Connectors

Microsoft Azure

Covered asset types

PostgreSQLServer

Expected check: eq []

{ postgreSqlServers (where: {encrypted: { eq: false }}) {...AssetFragment} }
Azure PostgreSQL Flexible Servers with no encryption

Connectors

Microsoft Azure

Covered asset types

PostgreSQLFlexibleServer

Expected check: eq []

{ postgreSqlFlexibleServers (where: {encrypted: { eq: false }}) {...AssetFragment} }
AWS RDS with no encryption

Connectors

AWS

Covered asset types

DBInstance

Expected check: eq []

{ dbInstances (where: { cloudProvider: { eq: "aws" } encrypted: { eq: false } }) {...AssetFragment} }
ApsaraDB RDS with no encryption

Connectors

Alibaba Cloud

Covered asset types

DBInstance

Expected check: eq []

{ dbInstances (where: { cloudProvider: { eq: "alibaba" }, encrypted: { eq: false } }) {...AssetFragment} }
Google Cloud Cloud SQL with no encryption

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{ cloudSqlInstances (where: { encrypted: { eq: false } }) {...AssetFragment} }
Azure MariaDB Servers with no encryption

Connectors

Microsoft Azure

Covered asset types

MariaDBServer

Expected check: eq []

{
  mariaDbServers(where: { encrypted: { eq: false } }) {...AssetFragment}
}
'Data encryption' is set to 'On' on a SQL Database

Connectors

Microsoft Azure

Covered asset types

SQLDatabase

Expected check: eq []

{sqlDatabases(where: {encrypted: { eq: false }}){...AssetFragment}}
Storage for critical data is encrypted with Customer Managed Key

Connectors

Microsoft Azure

Covered asset types

StorageAccount

Expected check: eq []

{storageAccounts(where:{NOT: { byokEncrypted: { eq: true } }}){...AssetFragment}}
Azure SQL Servers without TDE protector key encrypted with CMK

Connectors

Microsoft Azure

Covered asset types

SQLServer

Expected check: eq []

{
  sqlServers(
    where: {
      OR: [
        { encryptionProtector: null }
        { encryptionProtector: { serverKeyType: { eq: "ServiceManaged" } } }
      ]
    }
  ) {
    ...AssetFragment
  }
}
Artifact Registry repositories without customer-managed encryption keys

Connectors

Google Cloud

Covered asset types

ArtifactRegistryRepository

Expected check: eq []

{ artifactRegistryRepositories(where: { NOT: { encryptionKey: { managementType: { eq: "CustomerManaged" } } } }) { ...AssetFragment } }
Get unencrypted SageMaker notebooks

Connectors

AWS

Covered asset types

SageMakerNoteBook

Expected check: eq []

{
  sageMakerNoteBooks(
    where: {
      kmsKey: null
    }
  ) {...AssetFragment}
}
EKS Clusters without secrets encryption

Connectors

AWS

Covered asset types

EKSCluster

Expected check: eq []

{
  eksClusters(where:{
    OR:[{encryptionConfig: null}, {encryptionConfig: {providerKeyARN: { eq: "" }}}]
  }) {
    ...AssetFragment
  }
}
Encryption Keys haven't been rotated in more than 90 days for AWS

Connectors

AWS

Covered asset types

KMSKey

Expected check: eq []

{
  EncryptionKeysRotationAWS(days: 90) {...AssetFragment}
}
Encryption Keys haven't been rotated in more than 90 days

Connectors

Google Cloud

Covered asset types

KMSKey

Expected check: eq []

{
  EncryptionKeysRotation(days: 90) {...AssetFragment}
}
KMS encryption keys are rotated within a period of 90 days

Connectors

Google Cloud

Covered asset types

KMSKey

Expected check: eq []

GCP110IAM10{...AssetFragment}
Publicly Accessible AWS Keys

Connectors

AWS

Covered asset types

KMSKey

Expected check: eq []

{ kmsKeys( where: { keyPolicy: { statements_SOME: { effect: { eq: "Allow" } conditions: { eq: [] } principals_INCLUDES: "AWS|*" } } } ) {...AssetFragment} } 
Publicly Accessible Google Cloud Keys

Connectors

Google Cloud

Covered asset types

KMSKey

Expected check: eq []

{kmsKeys( where: { iamBindings_SOME: { OR: [{ members_INCLUDES: "allAuthenticatedUsers"}, { members_INCLUDES: "allUsers" }] } } ) {...AssetFragment}}
IAM policies that allow full "*:*" administrative privileges are not attached to IAMRoles

Connectors

AWS

Covered asset types

IAMRole

Expected check: eq []

{iamRoles(where:{iamPolicies_SOME: {iamPolicyStatements_SOME: {effect: { eq: "Allow" },actions_INCLUDES: "*", resources_INCLUDES: "*"}}}){...AssetFragment}}
IAM policies that allow full "*:*" administrative privileges are not attached to IAMUsers

Connectors

AWS

Covered asset types

IAMUser

Expected check: eq []

iamUsers(where:{iamPolicies_SOME: {iamPolicyStatements_SOME: {effect: { eq: "Allow" },actions_INCLUDES: "*", resources_INCLUDES: "*"}}}){...AssetFragment}
IAM policies that allow full "*:*" administrative privileges are not attached to IAMGroups

Connectors

AWS

Covered asset types

IAMGroup

Expected check: eq []

iamGroups(where:{iamPolicies_SOME: {iamPolicyStatements_SOME: {effect: { eq: "Allow" },actions_INCLUDES: "*", resources_INCLUDES: "*"}}}){...AssetFragment}
IAM Users receive permissions only through Groups

Connectors

AWS

Covered asset types

IAMUser

Expected check: eq []

iamUsers(where: { cloudProvider: { eq: "aws" }, iamPolicies_SOME: {} }) {...AssetFragment}
Managed IAM Policies are used instead of Inline Policies

Connectors

AWS

Covered asset types

IAMGroupIAMRoleIAMUser

Expected check: eq []

{AWSIAM8{...AssetFragment}}
Basic/primitive roles are not used

Connectors

Google Cloud

Covered asset types

IAMRole

Expected check: eq []

{
  iamUsers(
    where: {
      hasIAMRole_SOME: {
        name_IN: ["roles/viewer", "roles/editor", "roles/owner"]
      }
    }
  ) {
    ...AssetFragment
  }
}
Kubernetes RoleBindings that use cluster-admin role

Connectors

Kubernetes

Covered asset types

RoleBinding

Expected check: eq []

{
  clusterRoles(where: {internalName: { eq: "cluster-admin" }}) {
    roleBindings(where: {subjects_SOME: {NOT: { name: { eq: "" } }}}) {
      ...AssetFragment
    }
  }
}
Kubernetes ClusterRoleBindings that use cluster-admin role

Connectors

Kubernetes

Covered asset types

ClusterRoleBinding

Expected check: eq []

{
  clusterRoles(where: {internalName: { eq: "cluster-admin" }}) {
    clusterRoleBindings(where: {subjects_SOME: {NOT: { name: { eq: "system:masters" } }}}) {
      ...AssetFragment
    }
  }
}
Kubernetes RoleBindings to Roles that have access to secrets

Connectors

Kubernetes

Covered asset types

RoleBinding

Expected check: eq []

{
  roles(
    where: {
      AND: [
        {
          rules_SOME: {
            AND: [
              {
                OR: [
                  { verbs_INCLUDES: "get" }
                  { verbs_INCLUDES: "list" }
                  { verbs_INCLUDES: "watch" }
                  { verbs_INCLUDES: "*" }
                ]
              }
              {
                OR: [
                  { resources_INCLUDES: "secrets" }
                  { resources_INCLUDES: "*" }
                ]
              }
              { OR: [{ apiGroup_INCLUDES: "" }, { apiGroup_INCLUDES: "*" }] }
            ]
          }
        },
        {bindings_SOME: {NOT: { idFromProvider: { eq: "" } }}}
      ]
    }
  ) {
    bindings {
      ...AssetFragment
    }
  }
}
Kubernetes RoleBindings to ClusterRoles that have access to secrets

Connectors

Kubernetes

Covered asset types

RoleBinding

Expected check: eq []

{
  clusterRoles(
    where: {
      AND: [
        {
          rules_SOME: {
            AND: [
              {
                OR: [
                  { verbs_INCLUDES: "get" }
                  { verbs_INCLUDES: "list" }
                  { verbs_INCLUDES: "watch" }
                  { verbs_INCLUDES: "*" }
                ]
              }
              {
                OR: [
                  { resources_INCLUDES: "secrets" }
                  { resources_INCLUDES: "*" }
                ]
              }
              { OR: [{ apiGroup_INCLUDES: "" }, { apiGroup_INCLUDES: "*" }] }
            ]
          }
        },
        {roleBindings_SOME: {NOT: { idFromProvider: { eq: "" } }}}
      ]
    }
  ) {
    roleBindings {
      ...AssetFragment
    }
  }
}
Kubernetes ClusterRoleBindings to ClusterRoles that have access to secrets

Connectors

Kubernetes

Covered asset types

ClusterRoleBinding

Expected check: eq []

{
  clusterRoles(
    where: {
      AND: [
        {
          rules_SOME: {
            AND: [
              {
                OR: [
                  { verbs_INCLUDES: "get" }
                  { verbs_INCLUDES: "list" }
                  { verbs_INCLUDES: "watch" }
                  { verbs_INCLUDES: "*" }
                ]
              }
              {
                OR: [
                  { resources_INCLUDES: "secrets" }
                  { resources_INCLUDES: "*" }
                ]
              }
              { OR: [{ apiGroup_INCLUDES: "" }, { apiGroup_INCLUDES: "*" }] }
            ]
          }
        },
        {clusterRoleBindings_SOME: {NOT: { idFromProvider: { eq: "" } }}}
      ]
    }
  ) {
    clusterRoleBindings {
      ...AssetFragment
    }
  }
}
Azure key vaults not using RBAC

Connectors

Microsoft Azure

Covered asset types

KMSVault

Expected check: eq []

{
  kmsVaults(where: { enableRbacAuthorization: { eq: false } }) {
    ...AssetFragment
  }
}
Entra Tenants with too many global administrators

Connectors

Microsoft Entra ID

Covered asset types

Connector

Expected check: eq []

{
  EntraMultipleGlobalAdministrators {
    ...AssetFragment
  }
}
Azure Custom Subscription Administrator Roles

Connectors

Microsoft Azure

Covered asset types

IAMRole

Expected check: eq []

query ($subscriptionResourceId: String!) {
  iamRoles(
    where: {
      type: { eq: "CustomRole" }
      permissions_INCLUDES: "*"
      assignableScopes_INCLUDES: $subscriptionResourceId
    }
  ) {
    ...AssetFragment
  }
}
Publicly Accessible AWS Buckets

Connectors

AWS

Covered asset types

Bucket

Expected check: eq []

{
  buckets(
    where: {
      cloudProvider: { eq: "aws" }
      publicAccessBlocked: { eq: false }
      OR: [
        {
          hasBucketACLGrant_SOME: {
            OR: [
              { granteeURI: { eq: "http://acs.amazonaws.com/groups/global/AllUsers" } }
              {
                granteeURI: { eq: "http://acs.amazonaws.com/groups/global/AuthenticatedUsers" }
              }
            ]
            permission_IN: ["READ", "WRITE", "WRITE_ACP", "FULL_CONTROL"]
          }
        }
        {
          bucketPolicy: {
            statements_SOME: {
              effect: { eq: "Allow" }
              OR: [
                { actions_INCLUDES: "s3:GetObject" }
                { actions_INCLUDES: "s3:ListObjects" }
                { actions_INCLUDES: "s3:ListObjectsV2" }
                { actions_INCLUDES: "s3:PutObject" }
                { actions_INCLUDES: "s3:PutObjectAcl" }
                { actions_INCLUDES: "s3:CreateMultipartUpload" }
                { actions_INCLUDES: "s3:UploadPart" }
                { actions_INCLUDES: "s3:DeleteObject" }
                { actions_INCLUDES: "s3:DeleteObjects" }
                { actions_INCLUDES: "s3:*" }
                { actions_INCLUDES: "*" }
              ]
              principals_INCLUDES: "AWS|*"
            }
          }
        }
      ]
    }
  ) {...AssetFragment}
}
Publicly Readable Azure Blob Containers

Connectors

Microsoft Azure

Covered asset types

BlobContainer

Expected check: eq []

{
  blobContainers(
    where: {
      cloudProvider: { eq: "azure" }
      publicAccessBlocked: { eq: false }
      publicAccess_IN: ["Blob", "Container"]
    }
  ) {...AssetFragment}
}
Publicly Accessible Google Cloud Buckets

Connectors

Google Cloud

Covered asset types

Bucket

Expected check: eq []

{
  buckets(
    where: {
      cloudProvider: { eq: "gcp" }
      publicAccessBlocked: { eq: false }
        iamBindings_SOME: {
          OR: [
            { members_INCLUDES: "allUsers" }
            { members_INCLUDES: "allAuthenticatedUsers" }
          ]
          role: {
            OR: [
              { permissions_INCLUDES: "storage.objects.get" }
              { permissions_INCLUDES: "storage.objects.list" }
              { permissions_INCLUDES: "storage.objects.create" }
              { permissions_INCLUDES: "storage.objects.delete" }
              { permissions_INCLUDES: "storage.objects.update" }
              { permissions_INCLUDES: "storage.objects.*" }
              { permissions_INCLUDES: "storage.objects.setIamPolicy" }
              {
                permissions_INCLUDES: "storage.multipartUploads.create"
              }
              { permissions_INCLUDES: "storage.multipartUploads.*" }
            ]
          }
      }
    }
  ) {...AssetFragment}
}
Publicly Accessible Alibaba Buckets

Connectors

Alibaba Cloud

Covered asset types

Bucket

Expected check: eq []

{
  buckets(
    where: {
      cloudProvider: { eq: "alibaba" }
      publicAccessBlocked: { eq: false }
      OR: [
        { acl_IN: ["public-read", "public-read-write"] }
        {
          bucketPolicy: {
            statements_SOME: {
              effect: { eq: "Allow" }
              OR: [
                { actions_INCLUDES: "oss:GetObject" }
                { actions_INCLUDES: "oss:PutObject" }
                { actions_INCLUDES: "oss:PutObjectAcl" }
                { actions_INCLUDES: "oss:ListObjects" }
                { actions_INCLUDES: "oss:GetObjectVersion" }
                { actions_INCLUDES: "oss:*" }
                { actions_INCLUDES: "*" }
              ]
              principals_INCLUDES: "*"
            }
          }
        }
      ]
    }
  ) {...AssetFragment}
}
Publicly Accessible VMs for AWS/Alibaba

Connectors

Alibaba CloudAWS

Covered asset types

VM

Expected check: eq []

{
  vms(
    where: {
      NOT: { publicIpAddress: { eq: null } }
      securityGroups_SOME: {
        rules_SOME: {
          direction: { eq: "Inbound" }
          action: { eq: "Allow" }
          AND: [
            {
              OR: [
                { sources_INCLUDES: "cidr:0.0.0.0/0" }
                { sources_INCLUDES: "cidr:::/0" }
              ]
            }
            {
              OR: [
                { destFromPort_LTE: 22, destToPort_GTE: 22 }
                { destFromPort_LTE: 3389, destToPort_GTE: 3389 }
              ]
            }
          ]
        }
      }
    }
  ) {
    ...AssetFragment
  }
}
Publicly Accessible VMs for Azure

Connectors

Microsoft Azure

Covered asset types

VM

Expected check: eq []

{
  vms(
    where: {
      networkInterfaces_SOME: {
        NOT: { publicIp: null }
        securityGroups_SOME: {
          rules_SOME: {
            direction: { eq: "Inbound" }
            action: { eq: "Allow" }
            AND: [
              {
                OR: [
                  { sources_INCLUDES: "cidr:0.0.0.0/0" }
                  { sources_INCLUDES: "cidr:::/0" }
                  { sources_INCLUDES: "tag:Internet" }
                  { sources: { eq: [] } }
                ]
              }
              {
                OR: [
                  { destFromPort_LTE: 22, destToPort_GTE: 22 }
                  { destFromPort_LTE: 3389, destToPort_GTE: 3389 }
                ]
              }
            ]
          }
        }
      }
    }
  ) {
    ...AssetFragment
  }
}
Publicly Accessible VMs for Google Cloud

Connectors

Google Cloud

Covered asset types

VM

Expected check: eq []

{
  vms(
    where: {
      networkInterfaces_SOME: { NOT: { accessConfigs_SOME: null } }
      NOT: { name_STARTS_WITH: "gke-" }
      firewalls_SOME: {
        rules_SOME: {
          direction: { eq: "Inbound" }
          AND: [
            {
              OR: [
                { sources_INCLUDES: "cidr:0.0.0.0/0" }
                { sources_INCLUDES: "cidr:::/0" }
              ]
            }
            {
              OR: [
                { destFromPort_LTE: 22, destToPort_GTE: 22 }
                { destFromPort_LTE: 3389, destToPort_GTE: 3389 }
              ]
            }
          ]
        }
      }
    }
  ) {
    ...AssetFragment
  }
}
Publicly Accessible Google Cloud Cloud SQL Instances

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{
  cloudSqlInstances(
    where: {
      ipAddresses_SOME: { type: { eq: "PRIMARY" } }
      networkSettings_SOME: {
        authorizedNetworks_SOME: { cidrValue: { eq: "0.0.0.0/0" } }
      }
    }
  ) {
    ...AssetFragment
  }
} 
Publicly Accessible Azure MySQL Single Servers

Connectors

Microsoft Azure

Covered asset types

MySQLServer

Expected check: eq []

{ mySqlServers( where: { publicAccessBlocked: { eq: false } firewallRules_SOME: { startIPAddress: { eq: "0.0.0.0" } endIPAddress: { eq: "255.255.255.255" } } } ) {...AssetFragment} } 
Publicly Accessible Azure MySQL Flexible Servers

Connectors

Microsoft Azure

Covered asset types

MySQLFlexibleServer

Expected check: eq []

{ mySqlFlexibleServers( where: { publicAccessBlocked: { eq: false } firewallRules_SOME: { startIPAddress: { eq: "0.0.0.0" } endIPAddress: { eq: "255.255.255.255" } } } ) {...AssetFragment} } 
Publicly Accessible Azure PostgreSQL Single Servers

Connectors

Microsoft Azure

Covered asset types

PostgreSQLServer

Expected check: eq []

{ postgreSqlServers( where: { publicAccessBlocked: { eq: false } firewallRules_SOME: { startIPAddress: { eq: "0.0.0.0" } endIPAddress: { eq: "255.255.255.255" } } } ) {...AssetFragment} } 
Publicly Accessible Azure PostgreSQL Flexible Servers

Connectors

Microsoft Azure

Covered asset types

PostgreSQLFlexibleServer

Expected check: eq []

{ postgreSqlFlexibleServers( where: { publicAccessBlocked: { eq: false } firewallRules_SOME: { startIPAddress: { eq: "0.0.0.0" } endIPAddress: { eq: "255.255.255.255" } } } ) {...AssetFragment} } 
Publicly Accessible Alibaba ApsaraDB Instances

Connectors

Alibaba Cloud

Covered asset types

DBInstance

Expected check: eq []

{ dbInstances( where: { publicAccessBlocked: { eq: false } whitelist: { rules_SOME: { sources_INCLUDES: "cidr:0.0.0.0/0" } } } ) {...AssetFragment} } 
Publicly Accessible Azure SQL Databases

Connectors

Microsoft Azure

Covered asset types

SQLDatabase

Expected check: eq []

{
  sqlDatabases(
    where: {
      sqlServer: {
        firewallRules_SOME: {
          startIpAddress: { eq: "0.0.0.0" }
          endIpAddress: { eq: "255.255.255.255" }
        }
      }
    }
  ) {...AssetFragment}
}
Publicly Accessible RDS Clusters

Connectors

AWS

Covered asset types

DBCluster

Expected check: eq []

{
  dbClusters(
    where: {
      dbInstances_SOME: {
        publicAccessBlocked: { eq: false }
        securityGroups_SOME: {
          rules_SOME: {
            direction: { eq: "Inbound" }
            OR: [
              { sources_INCLUDES: "cidr:0.0.0.0/0" }
              { sources_INCLUDES: "cidr:::/0" }
            ]
          }
        }
      }
    }
  ) {...AssetFragment}
}
Publicly Accessible Azure MariaDB Servers

Connectors

Microsoft Azure

Covered asset types

MariaDBServer

Expected check: eq []

{
  mariaDbServers(
    where: {
      publicAccessBlocked: { eq: false }
      firewallRules_SOME: {
        startIPAddress: { eq: "0.0.0.0" }
        endIPAddress: { eq: "255.255.255.255" }
      }
    }
  ) {...AssetFragment}
}
Publicly Accessible AWS RDS Instance

Connectors

AWS

Covered asset types

DBInstance

Expected check: eq []

{
  dbInstances(
    where: {
      publicAccessBlocked: { eq: false }
      dbCluster: null
      securityGroups_SOME: {
        rules_SOME: {
          direction: { eq: "Inbound" }
          OR: [
            { sources_INCLUDES: "cidr:0.0.0.0/0" }
            { sources_INCLUDES: "cidr:::/0" }
          ]
        }
      }
    }
  ) {...AssetFragment}
}
Publicly Readable AWS Buckets

Connectors

AWS

Covered asset types

Bucket

Expected check: eq []

{ buckets( where: { cloudProvider: { eq: "aws" } publicAccessBlocked: { eq: false } OR: [ { hasBucketACLGrant_SOME: { OR: [ { granteeURI: { eq: "http://acs.amazonaws.com/groups/global/AllUsers" } } { granteeURI: { eq: "http://acs.amazonaws.com/groups/global/AuthenticatedUsers" } } ] permission_IN: ["READ", "FULL_CONTROL"] } } { bucketPolicy: { statements_SOME: { effect: { eq: "Allow" } OR: [ { actions_INCLUDES: "s3:GetObject" } { actions_INCLUDES: "s3:ListObjects" } { actions_INCLUDES: "s3:ListObjectsV2" } { actions_INCLUDES: "s3:*" } { actions_INCLUDES: "*" } ] principals_INCLUDES: "AWS|*" } } } ] } ) {...AssetFragment} } 
Publicly Readable Alibaba Buckets

Connectors

Alibaba Cloud

Covered asset types

Bucket

Expected check: eq []

{ buckets( where: { cloudProvider: { eq: "alibaba" } publicAccessBlocked: { eq: false } OR: [ { acl_IN: ["public-read"] } { bucketPolicy: { statements_SOME: { effect: { eq: "Allow" } OR: [ { actions_INCLUDES: "oss:GetObject" } { actions_INCLUDES: "oss:ListObjects" } { actions_INCLUDES: "oss:GetObjectVersion" } { actions_INCLUDES: "oss:*" } { actions_INCLUDES: "*" } ] principals_INCLUDES: "*" } } } ] } ) {...AssetFragment} } 
Publicly Readable Google Cloud Buckets

Connectors

Google Cloud

Covered asset types

Bucket

Expected check: eq []

{ buckets( where: { cloudProvider: { eq: "gcp" } publicAccessBlocked: { eq: false } iamBindings_SOME: { OR: [ { members_INCLUDES: "allUsers" } { members_INCLUDES: "allAuthenticatedUsers" } ] role: { OR: [ { permissions_INCLUDES: "storage.objects.get" } { permissions_INCLUDES: "storage.objects.list" } { permissions_INCLUDES: "storage.objects.*" } ] } } } ) {...AssetFragment} } 
Publicly Writable AWS Buckets

Connectors

AWS

Covered asset types

Bucket

Expected check: eq []

{ buckets( where: { cloudProvider: { eq: "aws" } publicAccessBlocked: { eq: false } OR: [ { hasBucketACLGrant_SOME: { OR: [ { granteeURI: { eq: "http://acs.amazonaws.com/groups/global/AllUsers" } } { granteeURI: { eq: "http://acs.amazonaws.com/groups/global/AuthenticatedUsers" } } ] permission_IN: ["WRITE", "WRITE_ACP", "FULL_CONTROL"] } } { bucketPolicy: { AND: [ { statements_SOME: { effect: { eq: "Allow" } OR: [ { actions_INCLUDES: "s3:PutObject" } { actions_INCLUDES: "s3:PutObjectAcl" } { actions_INCLUDES: "s3:CreateMultipartUpload" } { actions_INCLUDES: "s3:UploadPart" } { actions_INCLUDES: "s3:DeleteObject" } { actions_INCLUDES: "s3:DeleteObjects" } { actions_INCLUDES: "s3:*" } { actions_INCLUDES: "*" } ] principals_INCLUDES: "AWS|*" } } ] } } ] } ) {...AssetFragment} } 
Publicly Writable Google Cloud Buckets

Connectors

Google Cloud

Covered asset types

Bucket

Expected check: eq []

{ buckets( where: { cloudProvider: { eq: "gcp" } publicAccessBlocked: { eq: false } iamBindings_SOME: { OR: [ { members_INCLUDES: "allUsers" } { members_INCLUDES: "allAuthenticatedUsers" } ] role: { OR: [ { permissions_INCLUDES: "storage.objects.create" } { permissions_INCLUDES: "storage.objects.delete" } { permissions_INCLUDES: "storage.objects.update" } { permissions_INCLUDES: "storage.objects.setIamPolicy" } { permissions_INCLUDES: "storage.multipartUploads.create" } { permissions_INCLUDES: "storage.objects.*" } { permissions_INCLUDES: "storage.multipartUploads.*" } ] }  } } ) {...AssetFragment} } 
Publicly Writable Alibaba Buckets

Connectors

Alibaba Cloud

Covered asset types

Bucket

Expected check: eq []

{ buckets( where: { cloudProvider: { eq: "alibaba" } publicAccessBlocked: { eq: false } OR: [ { acl_IN: ["public-read-write"] } { bucketPolicy: { statements_SOME: { effect: { eq: "Allow" } OR: [ { actions_INCLUDES: "oss:PutObject" } { actions_INCLUDES: "oss:PutObjectAcl" } { actions_INCLUDES: "oss:*" } { actions_INCLUDES: "*" } ] principals_INCLUDES: "*" } } } ] } ) {...AssetFragment} } 
Entra Conditional Access Policies - Admin MFA

Connectors

Microsoft Entra ID

Covered asset types

Connector

Expected check: eq []

{
  connectors(
    where: {
      cloudProvider: { eq: "entra" }
      conditionalAccessPolicies_NONE: {
        conditions: {
          NOT: {
            excludeUsers: { eq: [] }
            OR: [
              { includeUsers: { eq: [] } }
              { includeGroups: { eq: [] } }
              { includeRoles: { eq: [] } }
            ]
          }
          includeApplications_INCLUDES: "All"
          clientAppTypes_INCLUDES: "all"
        }
        grantControls: { builtInControls_INCLUDES: "mfa" }
      }
    }
  ) {
    ...AssetFragment
  }
}
Entra Conditional Access Policies - MFA For All Users

Connectors

Microsoft Entra ID

Covered asset types

Connector

Expected check: eq []

{
  connectors(
    where: {
      conditionalAccessPolicies_NONE: {
        conditions: {
          includeUsers_INCLUDES: "All"
          NOT: { excludeUsers: { eq: [] } }
          includeApplications_INCLUDES: "All"
          clientAppTypes_INCLUDES: "all"
        }
        grantControls: { builtInControls_INCLUDES: "mfa" }
      }
    }
  ) {
    ...AssetFragment
  }
}
Entra Conditional Access - MFA for Microsoft Admin Portals

Connectors

Microsoft Entra ID

Covered asset types

Connector

Expected check: eq []

{
  connectors(
    where: {
      conditionalAccessPolicies_NONE: {
        conditions: {
          includeUsers_INCLUDES: "All"
          NOT: {
            OR: [
              { excludeUsers: { eq: [] } }
              { excludeGroups: { eq: [] } }
              { excludeRoles: { eq: [] } }
            ]
          }
          includeApplications_INCLUDES: "MicrosoftAdminPortals"
          clientAppTypes_INCLUDES: "all"
        }
        grantControls: { builtInControls_INCLUDES: "mfa" }
      }
    }
  ) {
    ...AssetFragment
  }
}
Entra Conditional Access - MFA for Windows Azure Service Management API

Connectors

Microsoft Entra ID

Covered asset types

Connector

Expected check: eq []

{
  connectors(
    where: {
      conditionalAccessPolicies_NONE: {
        conditions: {
          includeUsers_INCLUDES: "All"
          NOT: {
            OR: [
              { excludeUsers: { eq: [] } }
              { excludeGroups: { eq: [] } }
              { excludeRoles: { eq: [] } }
            ]
          }
          includeApplications_INCLUDES: "797f4846-ba00-4fd7-ba43-dac1f8f63013"
          clientAppTypes_INCLUDES: "all"
        }
        grantControls: { builtInControls_INCLUDES: "mfa" }
      }
    }
  ) {
    ...AssetFragment
  }
}
Entra Conditional Access - MFA for Risky Sign-Ins

Connectors

Microsoft Entra ID

Covered asset types

Connector

Expected check: eq []

{
  connectors(
    where: {
      conditionalAccessPolicies_NONE: {
        conditions: {
          includeUsers_INCLUDES: "All"
          NOT: { excludeUsers: { eq: [] } }
          includeApplications_INCLUDES: "All"
          clientAppTypes_INCLUDES: "all"
          signInRiskLevels_INCLUDES: "high"
        }
        grantControls: { builtInControls_INCLUDES: "mfa" }
        sessionControls: {
          signInFrequencyIsEnabled: { eq: true }
          signInFrequencyInterval: { eq: "everytime" }
        }
      }
    }
  ) {
    ...AssetFragment
  }
}
Azure app services allowing old TLS

Connectors

Microsoft Azure

Covered asset types

Site

Expected check: eq []

{
  sites(where: { siteConfig: { NOT: { minTlsVersion_IN: ["1.2", "1.3"] } } }) {
    ...AssetFragment
  }
}
Azure Function Apps allowing old TLS

Connectors

Microsoft Azure

Covered asset types

FunctionApp

Expected check: eq []

{
  functionApps(
    where: { configs_SOME: { NOT: { minTlsVersion_IN: ["1.2", "1.3"] } } }
  ) {
    ...AssetFragment
  }
}
Azure Storage Accounts Without Minimum TLS 1.2

Connectors

Microsoft Azure

Covered asset types

StorageAccount

Expected check: eq []

{
  storageAccounts(where: { minimumTlsVersion_IN: ["TLS1_0", "TLS1_1"] }) {
    ...AssetFragment
  }
}
No HTTPS or SSL proxy load balancers permit SSL policies with weak cipher suites

Connectors

Google Cloud

Covered asset types

LoadBalancer

Expected check: eq []

{
  loadBalancers(
    where: {OR: [
      {httpsProxies_SOME: {OR: [
        {sslPolicy: { eq: "" }},
        {hasSSLPolicy: {OR: [
          {profile: { eq: "COMPATIBLE" }},
          {AND: [{profile: { eq: "MODERN" }}, {NOT: {minTlsVersion: { eq: "TLS_1_2" }}}]},
          {AND: [
            {profile: { eq: "CUSTOM" }}, 
            {OR: [
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_AES_128_GCM_SHA256"},
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_AES_256_GCM_SHA38"},
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_AES_128_CBC_SHA"},
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_AES_256_CBC_SHA"},
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_3DES_EDE_CBC_SHA"}
                ]
            }
          ]}
        ]}
        }
      ]}},
      {sslProxies_SOME: {OR: [
        {sslPolicy: { eq: "" }},
        {hasSSLPolicy: {OR: [
          {profile: { eq: "COMPATIBLE" }},
          {AND: [{profile: { eq: "MODERN" }}, {NOT: {minTlsVersion: { eq: "TLS_1_2" }}}]},
          {AND: [
            {profile: { eq: "CUSTOM" }}, 
            {OR: [
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_AES_128_GCM_SHA256"},
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_AES_256_GCM_SHA38"},
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_AES_128_CBC_SHA"},
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_AES_256_CBC_SHA"},
                  {enabledFeatures_INCLUDES: "TLS_RSA_WITH_3DES_EDE_CBC_SHA"}
                ]
            }
          ]}
        ]}
        }
      ]}},
    ]}){
    ...AssetFragment
  }
}
Cloud SQL database instances require all incoming connections to use SSL

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

cloudSqlInstances(where:{settingsIPConfigurationRequireSsl: { eq: false }}){...AssetFragment}
Publicly Accessible Alibaba ApsaraDB Instances with no/old TLS

Connectors

Alibaba Cloud

Covered asset types

DBInstance

Expected check: eq []

{ dbInstances( where: { AND: [ { publicAccessBlocked: { eq: false } } { whitelist: { rules_SOME: { sources_INCLUDES: "cidr:0.0.0.0/0" } } } { OR: [ { tlsStatus: { eq: "disabled" } } { tlsMinimumVersion_LT: 1.2 } ] } ] } ) {...AssetFragment} } 
Publicly Accessible RDS with no/old TLS

Connectors

AWS

Covered asset types

DBClusterDBInstance

Expected check: eq []

{ dbInstances( where: { AND: [ { publicAccessBlocked: { eq: false } } { securityGroups_SOME: { rules_SOME: { sources_INCLUDES: "cidr:0.0.0.0/0" } } } { OR: [ { tlsStatus: { eq: "" } } { tlsStatus: { eq: "disabled" } } { tlsMinimumVersion_LT: 1.2 } ] } ] } ) {...AssetFragment} } 
Publicly Accessible Google Cloud Cloud SQL Instances with no/old TLS

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{
  cloudSqlInstances(
    where: {
      AND: [
        { publicAccessBlocked: { eq: false } }
        {
          ipAddresses_SOME: { type: { eq: "PRIMARY" } }
          networkSettings_SOME: {
            authorizedNetworks_SOME: { cidrValue: { eq: "0.0.0.0/0" } }
          }
        }
        {
          OR: [
            { tlsStatus: { eq: "" } }
            { tlsStatus: { eq: "disabled" } }
            { tlsMinimumVersion_LT: 1.2 }
          ]
        }
      ]
    }
  ) {
    ...AssetFragment
  }
} 
Publicly Accessible Azure MySQL Single Servers with no/old TLS

Connectors

Microsoft Azure

Covered asset types

MySQLServer

Expected check: eq []

{ mySqlServers( where: { AND: [ { publicAccessBlocked: { eq: false } } { firewallRules_SOME: { startIPAddress: { eq: "0.0.0.0" } endIPAddress: { eq: "255.255.255.255" } } } { OR: [ { tlsStatus: { eq: "disabled" } } { tlsMinimumVersion_LT: 1.2 } ] } ] } ) {...AssetFragment} } 
Publicly Accessible Azure MySQL Flexible Servers with no/old TLS

Connectors

Microsoft Azure

Covered asset types

MySQLFlexibleServer

Expected check: eq []

{ mySqlFlexibleServers( where: { AND: [ { publicAccessBlocked: { eq: false } } { firewallRules_SOME: { startIPAddress: { eq: "0.0.0.0" } endIPAddress: { eq: "255.255.255.255" } } } { OR: [ { tlsStatus: { eq: "disabled" } } { tlsMinimumVersion_LT: 1.2 } ] } ] } ) {...AssetFragment} } 
Publicly Accessible Azure PostgreSQL Single Servers with no/old TLS

Connectors

Microsoft Azure

Covered asset types

PostgreSQLServer

Expected check: eq []

{ postgreSqlServers( where: { AND: [ { publicAccessBlocked: { eq: false } } { firewallRules_SOME: { startIPAddress: { eq: "0.0.0.0" } endIPAddress: { eq: "255.255.255.255" } } } { OR: [ { tlsStatus: { eq: "disabled" } } { tlsMinimumVersion_LT: 1.2 } ] } ] } ) {...AssetFragment} }
Publicly Accessible Azure PostgreSQL Flexible Servers with no/old TLS

Connectors

Microsoft Azure

Covered asset types

PostgreSQLFlexibleServer

Expected check: eq []

{ postgreSqlFlexibleServers( where: { AND: [ { publicAccessBlocked: { eq: false } } { firewallRules_SOME: { startIPAddress: { eq: "0.0.0.0" } endIPAddress: { eq: "255.255.255.255" } } } { OR: [ { tlsStatus: { eq: "disabled" } } { tlsMinimumVersion_LT: 1.2 } ] } ] } ) {...AssetFragment} } 
Publicly Accessible Azure MariaDB Servers with no/old TLS

Connectors

Microsoft Azure

Covered asset types

MariaDBServer

Expected check: eq []

{
  mariaDbServers (
    where: {
      AND: [
        { publicAccessBlocked: { eq: false } }
        {
          firewallRules_SOME: {
            startIPAddress: { eq: "0.0.0.0" }
            endIPAddress: { eq: "255.255.255.255" }
          }
        }
        { OR: [{ tlsStatus: { eq: "disabled" } }, { tlsMinimumVersion_LT: 1.2 }] }
      ]
    }
  ) {...AssetFragment}
}
Publicly Accessible Azure SQL Databases with no/old TLS

Connectors

Microsoft Azure

Covered asset types

SQLDatabase

Expected check: eq []

{
  sqlDatabases(
    where: {
      AND: [
        { publicAccessBlocked: { eq: false } }
        {
          sqlServer: {
            firewallRules_SOME: {
              startIpAddress: { eq: "0.0.0.0" }
              endIpAddress: { eq: "255.255.255.255" }
            }
          }
        }
        { OR: [{ tlsStatus: { eq: "disabled" } }, { tlsMinimumVersion_LT: 1.2 }] }
      ]
    }
  ) {...AssetFragment}
}
Weak TLS Protocols are not used for ELB

Connectors

AWS

Covered asset types

LoadBalancer

Expected check: eq []

{loadBalancers( where: { scheme: { eq: "internet-facing" }, listensOnHTTPListener_SOME: { sslPolicy_IN: ["ELBSecurityPolicy-2016-08", "ELBSecurityPolicy-TLS-1-0-2015-04", "ELBSecurityPolicy-TLS-1-1-2017-01", "ELBSecurityPolicy-TLS13-1-0-2021-06", "ELBSecurityPolicy-TLS13-1-1-2021-06", "ELBSecurityPolicy-FS-1-1-2019-08", "ELBSecurityPolicy-FS-2018-06", "ELBSecurityPolicy-2015-05", "ELBSecurityPolicy-2015-03", "ELBSecurityPolicy-2015-02"] } } ) {...AssetFragment}}
Ingresses without TLS config

Connectors

Kubernetes

Covered asset types

Ingress

Expected check: eq []

{
  EKSIngressesWithoutTLSConfig {
    ...AssetFragment
  }
}
Azure connectors without security contact additional email addresses

Connectors

Microsoft Azure

Covered asset types

Connector

Expected check: eq []

{
  connectors(
    where: {
      OR: [
        { securityContacts_SOME: null }
        { securityContacts_SOME: { email: null } }
        { securityContacts_SOME: { email: { eq: "" } } }
      ]
    }
  ) {
    ...AssetFragment
  }
}
Cyscale Logo
Cyscale is an agentless cloud-native application protection platform (CNAPP) that automates the contextual analysis of cloud misconfigurations, vulnerabilities, access, and data, to provide an accurate and actionable assessment of risk.

Stay connected

Receive new blog posts and product updates from Cyscale

By clicking Subscribe, I agree to Cyscale’s Privacy Policy


© 2026 Cyscale Limited

LinkedIn icon
Twitter icon
Facebook icon
crunch base icon
angel icon