Back to policies

Security Architecture and Design

## Policy Statement

Category

Policies

Applies to

Alibaba CloudAWSGoogle CloudMicrosoft Azure

Coverage

32 controls, 31 queries

Asset types

14 covered

Overview

Policy Statement

This policy is to present system-level security principles to be considered in the design, development, and operation of an information system, especially in the cloud-first era. This should constantly be in the company's mindset and especially in the management board to ensure maximum security is achieved in business operations, product development, and customer care.

Most of your organization's Security Architecture and Design model is derived from the OWASP-maintained Software Assurance Maturity Model (SAMM).

Scope

People, processes, technology, and devices.

Objectives

  • Security should be a topic at all forums, e.g. engineering weekly calls and throughout the organization;
  • Ensure systems and business resilience with best practices for all business, operational, and technical departments;
  • Cloud-first, cloud-native, and data-centric culture;
  • Automate security, compliance, development, deployment, and monitoring using repeatable scripts and tools;
  • Enforce and raise awareness for the "Never trust, always verify" principle.

Procedures

Procedures and mapped controls

Secure Development Environment

Maintaining a secure development environment is essential for the development of a secure architecture that provides good functionality for the organization whilst minimizing risk.

It consists of a few major components which are subdivided as per their functional scope:

  • Business of security - the way information security is practiced in your organization;
  • The Cloud;
  • DevXOps - DevOps, DevSecOps, DevCloudOps - technical operations;
  • Developers - developers and development process (SDLC);
  • Technology.
Secure Production Environment
  1. Production Systems are created after the CISO has approved a request, which is then forward to the DevOps and Security Teams

  2. If the system will be used to store Protected data, the requester must ensure the volume containing this sensitive data is encrypted

  3. The requester and Security Team will ensure that the system hardening has been performed as detailed in the System Hardening Procedure

  4. Production environments are activated only after a final inspection and validation that all required procedures were respected

Secure Cloud Architecture

your organization operates a Cloud-first model, which puts cloud-native, containers, and cloud functions at the base of the software products it develops and commercializes.

A detailed implementation diagram with virtual network components and the software used to glue everything together is maintained in the company's Wiki pages. Autoscaling is enabled across multiple data centers in multiple regions around the world for resilience. The network topology segments network traffic into the following zones:

  • Inspection Zone to ensure all inbound and outbound network traffic is monitored (think WAF);
  • Private Web Tier for all web servers and content;
  • Private Application Tier to segregate Web and Application tiers;
  • Private data zone for transactions, processing, and asset inventory or other persistent data;
  • Monitoring zone to store all logs and analysis.
Principles of Engineering Secure Systems

These principles would be used from the onset of a program (at the beginning of, or during the initiation phase) and then employed throughout the system's life-cycle. These principles are also helpful in affirming and confirming the security posture of already deployed information systems.

There are several security principles grouped into the following categories:

  1. Security Foundation
  2. Risk-Based
  3. Ease of Use
  4. Increase Resilience
  5. Reduce Vulnerabilities
  6. Design with Network in Mind
Server Hardening

Linux

Security configuration is maintained as code and applied automatically. Hardening consists of:

  • Disk encryption;
  • Installing and configuring pre-approved NTP server;
  • Up-to-date with security patches;
  • Stopping and disabling any unnecessary services;
  • Expiration of SSH connections after 5 minutes of session inactivity;
  • Installing and configuring endpoint protection;
  • Configuring monitoring and audit logging as described in the System Audits, Monitoring and Assessments Policy.

Windows

Security configuration is maintained in Group Policy and can also be applied automatically. Hardening consists of:

  • Register on your organization Active Directory and apply AD Group Policy configuration;
  • Disk encryption;
  • Installing and configuring pre-approved NTP server;
  • Up-to-date with security patches;
  • Stopping and disabling any unnecessary services;
  • Expiration of remote connections after 5 minutes of session inactivity;
  • Configuring monitoring and audit logging as described in the System Audits, Monitoring and Assessments Policy.

Query logic

These are the stored checks tied to this policy.

Security Groups with management ports not restricted from the internet

Connectors

Alibaba CloudAWSMicrosoft Azure

Covered asset types

SecurityGroup

Expected check: eq []

{
  securityGroups(
    where: {
      rules_SOME: {
        direction: "Inbound"
        action: "Allow"
        AND: [
          {
            OR: [
              { sources_INCLUDES: "cidr:0.0.0.0/0" }
              { sources_INCLUDES: "cidr:::/0" }
              { sources_INCLUDES: "tag:Internet" }
              { sources: [] }
            ]
          }
          { 
            OR: [
                { destFromPort_LTE: 22, destToPort_GTE: 22 }
                { destFromPort_LTE: 3389, destToPort_GTE: 3389 }
              ]
          }
        ]
      }
    }
  ) {
    ...AssetFragment
  }
}
Firewalls with management ports not restricted from the internet

Connectors

Google Cloud

Covered asset types

Firewall

Expected check: eq []

{
  firewalls(
    where: {
      rules_SOME: {
        direction: "Inbound"
        AND: [
          {
            OR: [
              { sources_INCLUDES: "cidr:0.0.0.0/0" }
              { sources_INCLUDES: "cidr:::/0" }
              { sources: [] }
            ]
          }
          {
            OR: [
              { destFromPort_LTE: 22, destToPort_GTE: 22 }
              { destFromPort_LTE: 3389, destToPort_GTE: 3389 }
            ]
          }
        ]
      }
    }
  ) {
    ...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}
The default security group of every VPC restricts all traffic

Connectors

AWS

Covered asset types

SecurityGroup

Expected check: eq []

{
  securityGroups(where: { groupName: "default", NOT: { rules_SOME: null } }) {
    ...AssetFragment
  }
}
No Network ACLs allow ingress from 0.0.0.0/0 to remote server administration ports

Connectors

AWS

Covered asset types

NetworkACL

Expected check: eq []

networkAcls(where:{rules_SOME:{AND:[{direction:"Inbound"},{action:"Allow"},{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}
Compute instances do not have public IP addresses

Connectors

Google Cloud

Covered asset types

VM

Expected check: eq []

{
  vms(
    where: {
      networkInterfaces_SOME: { NOT: { accessConfigs_SOME: null } }
      NOT: { name_STARTS_WITH: "gke-" }
    }
  ) {
    ...AssetFragment
  }
}
Cloud SQL database instances do not have public IPs

Connectors

Google Cloud

Covered asset types

CloudSQLInstance

Expected check: eq []

{cloudSqlInstances(where:{instanceType:"CLOUD_SQL_INSTANCE",backendType:"SECOND_GEN",ipAddresses_SOME:{type:"PRIMARY"}}){...AssetFragment}}
BigQuery datasets are not anonymously or publicly accessible

Connectors

Google Cloud

Covered asset types

BigQueryTable

Expected check: eq []

bigQueryTables(where:{OR:[{policyDocument_CONTAINS:"AllUsers"},{policyDocument_CONTAINS:"allAuthenticatedUsers"}]}){...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}
A log metric filter and alarm exist for changes to network gateways

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWSMonitoring(filterPattern:".*\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?CreateCustomerGateway[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteCustomerGateway[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?AttachInternetGateway[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?CreateInternetGateway[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteInternetGateway[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DetachInternetGateway[\"]?\\s*\\)\\s*.*"){...AssetFragment}
Log metric filter and alerts exist for VPC Network Firewall rule changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging7{...AssetFragment}
Log metric filter and alerts exist for VPC network route changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging8{...AssetFragment}
Log metric filter and alerts exist for VPC network changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging9{...AssetFragment}
The default network does not exist in a project

Connectors

Google Cloud

Covered asset types

VPC

Expected check: eq []

vpcs(where:{name:"default"}){...AssetFragment}
Legacy networks do not exist for a project

Connectors

Google Cloud

Covered asset types

VPC

Expected check: eq []

vpcs(where:{IPv4Range_NOT:"" gatewayIPv4_NOT:""}){...AssetFragment}
VPC Flow logs is enabled for every subnet in a VPC Network

Connectors

Google Cloud

Covered asset types

VPC

Expected check: eq []

vpcs(where:{hasSubnetwork_SOME:{enableFlowLogs:false}}){...AssetFragment}
Master authorized networks is set to Enabled on Kubernetes Engine Clusters

Connectors

Google Cloud

Covered asset types

Cluster

Expected check: eq []

gkeClusters(where:{masterAuthorizedNetworksConfigEnabled_NOT:true}){...AssetFragment}
Network policy is enabled on Kubernetes Engine Clusters

Connectors

Google Cloud

Covered asset types

Cluster

Expected check: eq []

gkeClusters(where:{networkPolicyEnabled:false}){...AssetFragment}
DNSSEC is enabled for Cloud DNS

Connectors

Google Cloud

Covered asset types

ManagedZone

Expected check: eq []

managedZones(where:{dnsSecConfigState_NOT:"on"}){...AssetFragment}
RSASHA1 is not used for the key-signing key in Cloud DNS DNSSEC

Connectors

Google Cloud

Covered asset types

ManagedZone

Expected check: eq []

managedZones(where:{hasDNSKeySpec_SOME:{keyType:"keySigning",algorithm_MATCHES:"(?i)rsasha1"}}){...AssetFragment}
RSASHA1 is not used for the zone-signing key in Cloud DNS DNSSEC

Connectors

Google Cloud

Covered asset types

ManagedZone

Expected check: eq []

managedZones(where:{hasDNSKeySpec_SOME:{keyType:"zoneSigning",algorithm_MATCHES:"(?i)rsasha1"}}){...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: ""},
        {hasSSLPolicy: {OR: [
          {profile: "COMPATIBLE"},
          {AND: [{profile: "MODERN"}, {NOT: {minTlsVersion: "TLS_1_2"}}]},
          {AND: [
            {profile: "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: ""},
        {hasSSLPolicy: {OR: [
          {profile: "COMPATIBLE"},
          {AND: [{profile: "MODERN"}, {NOT: {minTlsVersion: "TLS_1_2"}}]},
          {AND: [
            {profile: "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
  }
}
AWS Root users with access key

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

{
  rootUsers(
    where: {
      hasIAMUserCredentials: {
        OR: [{ accessKey1Active: true }, { accessKey2Active: true }]
      }
    }
  ) {
    connector {...AssetFragment}
  }
}
CloudTrail logs are encrypted at rest

Connectors

AWS

Covered asset types

Trail

Expected check: eq []

trails(where:{kmsKeyID:""}){...AssetFragment}
There are only GCP-managed service account keys for each service account

Connectors

Google Cloud

Covered asset types

IAMServiceAccount

Expected check: eq []

{iamServiceAccounts(where:{hasIAMServiceAccountKeys_SOME:{keyType: "USER_MANAGED"}}){...AssetFragment}}
Ensure Service Account has no Admin privileges

Connectors

Google Cloud

Covered asset types

IAMServiceAccount

Expected check: eq []

{
  iamServiceAccounts(
    where: {
      hasIAMRole_SOME: {
        OR: [
          { name: "roles/owner" }
          { name: "roles/editor" }
          { name_CONTAINS: "admin" }
        ]
      }
    }
  ) {
    ...AssetFragment
  }
}
"Block Project-wide SSH keys" is enabled for VM instances

Connectors

Google Cloud

Covered asset types

VM

Expected check: eq []

vms(where:{hasVMMetadataItem_SOME:{key:"block-project-ssh-keys" value:"false"}}){...AssetFragment}
'Enable connecting to serial ports' is not enabled for VM Instance

Connectors

Google Cloud

Covered asset types

VM

Expected check: eq []

vms(where:{hasVMMetadataItem_SOME:{key:"serial-port-enable",value:"true"}}){...AssetFragment}
VM disks for critical VMs are encrypted with Customer-Supplied Encryption Keys (CSEK)

Connectors

Google Cloud

Covered asset types

Disk

Expected check: eq []

disks(where:{encryptedWithCustomerSuppliedKey: false }){...AssetFragment}
Instances are not configured to use the default service account

Connectors

Google Cloud

Covered asset types

VM

Expected check: eq []

vms(where: {serviceAccountEmail_CONTAINS: "[email protected]"}) {...AssetFragment}
GCP VMs with security features disabled

Connectors

Google Cloud

Covered asset types

VM

Expected check: eq []

{
  vms(
    where: {
      OR: [
        { shieldedInstanceConfigEnableVtpm: false }
        { shieldedInstanceConfigEnableSecureBoot: false }
        { shieldedInstanceConfigEnableIntegrityMonitoring: false }
      ]
    }
  ) {
    ...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