Back to policies

Systems Audit

## Policy Statement

Category

Policies

Applies to

AWSGoogle Cloud

Coverage

42 controls, 42 queries

Asset types

10 covered

Overview

Policy Statement

Audit requirements, controls, effective security safeguards, and activities involving verification of operational systems shall be carefully planned and agreed upon, in order to minimize disruptions to business processes.

Purpose

Regular operational, process and security audits help to ensure that proper controls are sufficient and effective at providing information confidentiality, safeguarding data, ensuring system availability, and fostering a higher degree of data integrity.

your organization's reason for performing security systems audits is to protect against:

  • Security violations;
  • Network vulnerabilities and intrusions;
  • Unauthorized access to Protected or Confidential data;
  • Data Loss of Protected or Confidential data;
  • Performance problems and flaws in systems and applications;
  • Outdated or vulnerable software.

Scope

All devices, systems, people, and processes that constitute your organization information and cloud-based systems.

Types of Audits

  1. Internal Audit: your organization will conduct these internal audits, or it can hire any other agency for the internal audit to assess the internal processes of the organization. In any framework such as ISO 27001, a schedule of annual internal audit is made.

  2. Second-party Audit: a customer conducts this type of audit on his supplier. In this audit, both organizations (or companies) have a business relationship.

  3. Compliance Audit: an external agency (or internal team) conducts this audit for certification. If the organization fulfills the criteria, then it becomes certified. The framework can be ISO 9001, 27001, or any benchmark that the organization considers.

Procedures

Procedures and mapped controls

Audit Log Generation and Sources

All systems have one audit log. Described below are several types of audit activity that are captured in logs:

  1. User: user-level audit trails generally monitor and log all commands directly initiated by the user, all identification and authentication attempts, and files and resources accessed;
  2. Application/Database: application/database level audit trails generally monitor and log user activities, including data files opened and closed, specific actions defined in this procedure, and printing reports;
  3. System: system-level audit trails generally monitor and log user activities, applications accessed, and other system-defined specific actions;
  4. Network: network-level audit trails generally monitor what is operating, unauthorized access attempts, and vulnerabilities;
  5. Cloud: cloud-level audit trails generally monitor what is deployed, changed, or deleted from cloud environments.

Log Sources

  1. Security Software
    • Antimalware Software
    • Intrusion Detection and Prevention System (IDPS)
    • Remote Access Software (VPN and permit access)
    • Web Proxies (and WAF)
    • Vulnerability Management Software
    • Authentication Servers (IdP or other services)
    • Routers (hardware and virtual)
    • Firewalls and Security Groups
  2. Operating Systems
    • System Events
    • Audit Records
  3. Applications
    • Client requests and server responses
    • Account information
    • Usage information
    • Significant operational actions
Preparing for Audit

your organization uses an asset inventory solution to automatically retrieve assets details, users and groups details, relationships between assets, and access permissions.

Preparing for an audit is perhaps the most time-consuming process, as the organization assesses its security needs and prepares plans for the audit. During this phase, the organizational security must be assessed and at the least, basic security measures are implemented (i.e. backups and offsite storage of critical data, ensuring controls on user accounts, ensuring remote access is secured and controlled).

Activities:

  1. Designate an Audit Team
  2. Risk Assessment
  3. Pre-Audit Requirements
  4. Scope and Metrics
  5. Collecting Information for the Audit
  6. Log Management Infrastructure
Events and Log Analysis

Logs can contain a wide variety of information on the events occurring within systems and networks. This section describes the following categories of logs of particular interest:

  • Security software logs primarily contain computer security-related information;
  • Operating system logs and application logs, typically contain a variety of information, including computer security-related data.

The logs must follow these rules:

  • Auditing logs are automatically analyzed and correlated by the monitoring solutions and/or centralized security information and event management system;
  • The systems are configured with rules/policies to identify suspicious activities, vulnerabilities, and misconfigurations;
  • Alerts are triggered upon identification of an issue based on the policy configuration;
  • The alerts are sent immediately to the responsible staff (e.g. security team) for analysis. The alerts may be sent via email, Microsoft Teams, PagerDuty, or a notification on a monitoring dashboard;
  • Analysis is prioritized based on alert severity. High severity alerts are typically reviewed within 24 hours;
  • The Incident response process is followed, as needed;
  • Patches and updates will be applied to all systems, promptly after an impact assessment is performed.

Mapped controls

Ensure CloudTrail log file validation is enabled

AWS

Ensure the S3 bucket used to store CloudTrail logs is not publicly accessible

AWS

Ensure CloudTrail trails are integrated with CloudWatch Logs

AWS

Ensure S3 bucket access logging is enabled on the CloudTrail S3 bucket

AWS

Ensure CloudTrail logs are encrypted at rest using KMS CMKs

AWS

Ensure VPC flow logging is enabled in all VPCs

AWS

Ensure a log metric filter and alarm exist for unauthorized API calls

AWS

Ensure a log metric filter and alarm exist for Management Console sign-in without MFA

AWS

Ensure a log metric filter and alarm exist for usage of "root" account

AWS

Ensure a log metric filter and alarm exist for IAM policy changes

AWS

Ensure a log metric filter and alarm exist for CloudTrail configuration changes

AWS

Ensure a log metric filter and alarm exist for AWS Management Console authentication failures

AWS

Ensure a log metric filter and alarm exist for disabling or scheduled deletion of customer created CMKs

AWS

Ensure a log metric filter and alarm exist for S3 bucket policy changes

AWS

Ensure a log metric filter and alarm exist for AWS Config configuration changes

AWS

Ensure a log metric filter and alarm exist for security group changes

AWS

Ensure a log metric filter and alarm exist for changes to Network Access Control Lists (NACL)

AWS

Ensure a log metric filter and alarm exist for changes to network gateways

AWS

Ensure a log metric filter and alarm exist for route table changes

AWS

Ensure a log metric filter and alarm exist for VPC changes

AWS

Ensure that Object-level logging for write events is enabled for S3 bucket

AWS

Ensure that Object-level logging for read events is enabled for S3 bucket

AWS

Ensure a log metric filter and alarm exist for AWS Organizations changes

AWS

Ensure that corporate login credentials are used instead of Gmail accounts

Google Cloud

Ensure Cloud Audit Logging is configured properly across all services and all users from a project

Google Cloud

Ensure sinks are configured for all Log entries

Google Cloud

Ensure that object versioning is enabled on log-buckets

Google Cloud

Ensure log metric filter and alerts exist for Project Ownership assignments/changes

Google Cloud

Ensure log metric filter and alerts exist for Audit Configuration Changes

Google Cloud

Ensure log metric filter and alerts exist for Custom Role changes

Google Cloud

Ensure log metric filter and alerts exist for VPC Network Firewall rule changes

Google Cloud

Ensure log metric filter and alerts exist for VPC network route changes

Google Cloud

Ensure log metric filter and alerts exist for VPC network changes

Google Cloud

Ensure log metric filter and alerts exist for Cloud Storage IAM permission changes

Google Cloud

Ensure log metric filter and alerts exist for SQL instance configuration changes

Google Cloud

Ensure VPC Flow logs is enabled for every subnet in a VPC Network

Google Cloud

Ensure oslogin is enabled for a Project

Google Cloud

Ensure that logging is enabled for Cloud Storage buckets

Google Cloud

Ensure that MySql database instances do not allow root login from any Host

Google Cloud

Ensure Stackdriver Logging is set to Enabled on Kubernetes Engine Clusters

Google Cloud

Ensure Retention Policies on Cloud Storage Buckets used for exporting logs are configured using Bucket Lock

Google Cloud
Log Storage

Log rotation is closing a log file and opening a new log file when the first file is considered to be complete. Log rotation is typically performed according to a schedule (e.g., hourly, daily, weekly) or when a log file reaches a certain size. The primary benefits of log rotation are preserving log entries and keeping the size of log files manageable.

Log archival is retaining logs for an extended period, typically on cold storage (AWS Glacier), removable media, a storage area network (SAN), or a specialized log archival appliance or server. Logs often need to be preserved to meet legal or regulatory requirements.

Log Disposal

Log clearing is removing all entries that precede a certain date and time from a log. It is often performed to remove old log data that is no longer needed on a system because it is not of importance or has been archived. removes logs after 1 year of storage.

Log Format
  • Message type, known as a facility. Examples of facilities include kernel messages, mail system messages, authorization messages, printer messages, and audit messages;
  • Severity. Each log message has a severity value assigned, from 0 (emergency) to 7 (debug).

Example of log

Mar 1 06:25:43 server1 sshd[23170]: Accepted publickey for server2 from
172.30.128.115 port 21011 ssh2
Mar 1 07:16:42 server1 sshd[9326]: Accepted password for murugiah from 10.20.30.108
port 1070 ssh2
Mar 1 07:16:53 server1 sshd[22938]: reverse mapping checking getaddrinfo for
ip10.165.nist.gov failed - POSSIBLE BREAKIN ATTEMPT!
Mar 1 07:26:28 server1 sshd[22572]: Accepted publickey for server2 from
172.30.128.115 port 30606 ssh2
Mar 1 07:28:33 server1 su: BAD SU kkent to root on /dev/ttyp2
Mar 1 07:28:41 server1 su: kkent to root on /dev/ttyp2

Mapped controls

Ensure a log metric filter and alarm exist for unauthorized API calls

AWS

Ensure a log metric filter and alarm exist for Management Console sign-in without MFA

AWS

Ensure a log metric filter and alarm exist for usage of "root" account

AWS

Ensure a log metric filter and alarm exist for IAM policy changes

AWS

Ensure a log metric filter and alarm exist for CloudTrail configuration changes

AWS

Ensure a log metric filter and alarm exist for AWS Management Console authentication failures

AWS

Ensure a log metric filter and alarm exist for disabling or scheduled deletion of customer created CMKs

AWS

Ensure a log metric filter and alarm exist for S3 bucket policy changes

AWS

Ensure a log metric filter and alarm exist for AWS Config configuration changes

AWS

Ensure a log metric filter and alarm exist for security group changes

AWS

Ensure a log metric filter and alarm exist for changes to Network Access Control Lists (NACL)

AWS

Ensure a log metric filter and alarm exist for changes to network gateways

AWS

Ensure a log metric filter and alarm exist for route table changes

AWS

Ensure a log metric filter and alarm exist for VPC changes

AWS

Ensure a log metric filter and alarm exist for AWS Organizations changes

AWS

Ensure log metric filter and alerts exist for Project Ownership assignments/changes

Google Cloud

Ensure log metric filter and alerts exist for Audit Configuration Changes

Google Cloud

Ensure log metric filter and alerts exist for Custom Role changes

Google Cloud

Ensure log metric filter and alerts exist for VPC Network Firewall rule changes

Google Cloud

Ensure log metric filter and alerts exist for VPC network route changes

Google Cloud

Ensure log metric filter and alerts exist for VPC network changes

Google Cloud

Ensure log metric filter and alerts exist for Cloud Storage IAM permission changes

Google Cloud

Ensure log metric filter and alerts exist for SQL instance configuration changes

Google Cloud

Ensure Retention Policies on Cloud Storage Buckets used for exporting logs are configured using Bucket Lock

Google Cloud
Security Information and Event Management Software (SIEM)

Security information and event management (SIEM) software is a type of centralized logging software. Compared to Syslog, SIEM products have one or more log servers that perform log analysis, and one or more database servers that store the logs.

SIEM products usually include several features to help log monitoring staff, such as the following:

  • Graphical user interfaces (GUI) that are specifically designed to assist analysts in identifying potential problems and reviewing all available data related to each problem;
  • A security knowledge base, with information on known vulnerabilities, the likely meaning of certain log messages, and other technical data;
  • Incident tracking and reporting capabilities, sometimes with robust workflow features;
  • Asset information storage and correlation (e.g., giving higher priority to an attack that targets a vulnerable OS or a more important host).

Most SIEM products support two ways of collecting logs from log generators: - Agentless. The SIEM server receives data from the individual log generating hosts without needing to have any special software installed on those hosts. Some servers pull logs from the hosts, which is usually done by having the server authenticate to each host and retrieve its logs regularly. In other cases, the hosts push their logs to the server, which usually involves each host authenticating to the server and transferring its logs regularly.

  • Agent-Based. An agent program is installed on the log generating host to perform event filtering and aggregation and log normalization for a particular type of log, then transmit the normalized log data to a SIEM server, usually on a real-time or near-real-time basis for analysis and storage.
Auditing and Assessment Tools

your organization selected assessment tools that are designed to detect vulnerabilities and intrusions. Without the explicit authorization of the Security Officer, scanning and auditing your organization infrastructure is strictly prohibited.

  • Software scanners, both OSS and 3rd Party (acquired by your organization);
  • Querying APIs from servers, endpoints, and cloud resources;
  • Network sniffers and scanners;
  • Sofware agents/clients installed on servers and endpoints;
  • Penetration tools.
Vulnerable Systems

If a system is detected as having a vulnerability, the owner or administrator of the system will be immediately notified. Information will be included regarding the remedy recommended for the system as well as the amount of time allowed to fix the problem. If the system is not repaired within the designated period, network access will be temporarily suspended until corrections and repairs are made.

Compromised Systems

If a system is detected as being compromised, IT will notify the registered owner or administrator. If possible, steps to correct the situation, as well as the amount of time they will be allowed to take corrective action will be included in the communication. Failure to correct or remedy the compromise in the specified period will result in the termination of network access for the system in question.

| Level | Time allowed | Description | |-----------|---------------------------------------|---------------| | Critical | Immediately terminate access to network | The system is in an active state being used for nefarious purposes (trying to scan or infect other systems, causing network problems, providing services to off-campus entities, etc.) | | High | 24 hours | The system is compromised but is not actively being manipulated. However, it could become critical at any moment | | Medium | 72 hours | The system has been compromised but cannot be elevated to a higher level of compromise. Impact of the compromise is minimal |

Query logic

These are the stored checks tied to this policy.

CloudTrail log file validation is enabled

Connectors

AWS

Covered asset types

Trail

Expected check: eq []

trails(where:{logFileValidationEnabled:false}){...AssetFragment}
The S3 bucket used to store CloudTrail logs is not publicly accessible

Connectors

AWS

Covered asset types

Bucket

Expected check: eq []

{buckets( where: { trails_NOT: null publicAccessBlocked: false OR: [ { hasBucketACLGrant_SOME: { OR: [ { granteeURI: "http://acs.amazonaws.com/groups/global/AllUsers" } { granteeURI: "http://acs.amazonaws.com/groups/global/AuthenticatedUsers" } ] } } { AND: [ { policyDocument_MATCHES: ".+\"Effect\":\"Allow\".+" } { policyDocument_MATCHES: ".+\"Principal\":\"*\".+" } ] } ] } ) {...AssetFragment}}
CloudTrail trails are integrated with CloudWatch Logs

Connectors

AWS

Covered asset types

Trail

Expected check: eq []

AWSLogging4{...AssetFragment}
S3 bucket access logging is enabled on the CloudTrail S3 bucket

Connectors

AWS

Covered asset types

Bucket

Expected check: eq []

{buckets(where:{trails_NOT: null, loggingEnabled:false}){...AssetFragment}}
CloudTrail logs are encrypted at rest

Connectors

AWS

Covered asset types

Trail

Expected check: eq []

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

Connectors

AWS

Covered asset types

VPC

Expected check: eq []

vpcs(where: {OR: [{hasFlowLog: null}, {hasFlowLog_NONE: {flowLogStatus: "ACTIVE"}}]}){...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 Management Console sign-in without MFA

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWSMonitoring(filterPattern:".*\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?ConsoleLogin[\"]?\\s*\\)\\s*\\&\\&\\s*\\(\\s*\\$\\.additionalEventData\\.MFAUsed\\s*!=\\s*[\"]?Yes[\"]?\\s*\\)\\s*.*"){...AssetFragment}
A log metric filter and alarm exist for usage of "root" account

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWSMonitoring(filterPattern:".*\\s*\\$\\.userIdentity\\.type\\s*=\\s*[\"]?Root[\"]?\\s*\\&\\&\\s*\\s*\\$\\.userIdentity\\.invokedBy\\s*NOT\\s*EXISTS\\s*\\&\\&\\s*\\$\\.eventType\\s*!=\\s*[\"]?AwsServiceEvent\\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 AWS Management Console authentication failures

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWSMonitoring(filterPattern:".*\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?ConsoleLogin[\"]?\\s*\\)\\s*\\&\\&\\s*\\(\\s*\\$\\.errorMessage\\s*=\\s*[\"]?Failed authentication[\"]?\\s*\\)\\s*.*"){...AssetFragment}
A log metric filter and alarm exist for disabling or scheduled deletion of customer created CMKs

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWSMonitoring(filterPattern:".*\\s*\\(\\s*\\$\\.eventSource\\s*=\\s*[\"]?kms\\.amazonaws\\.com[\"]?\\s*\\)\\s*\\&\\&\\s*\\(\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DisableKey[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?ScheduleKeyDeletion[\"]?\\s*\\)\\s*\\)\\s*.*"){...AssetFragment}
A log metric filter and alarm exist for S3 bucket policy changes

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWSMonitoring(filterPattern:".*\\s*\\(\\s*\\$\\.eventSource\\s*=\\s*[\"]?s3\\.amazonaws\\.com[\"]?\\s*\\)\\s*\\&\\&\\s*\\(\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?PutBucketAcl[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?PutBucketPolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?PutBucketCors[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?PutBucketLifecycle[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?PutBucketReplication[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteBucketPolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteBucketCors[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteBucketLifecycle[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteBucketReplication[\"]?\\s*\\)\\s*\\)\\s*.*"){...AssetFragment}
A log metric filter and alarm exist for AWS Config configuration changes

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWSMonitoring(filterPattern:".*\\s*\\(\\s*\\$\\.eventSource\\s*=\\s*[\"]?config\\.amazonaws\\.com[\"]?\\s*\\)\\s*\\&\\&\\s*\\(\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?StopConfigurationRecorder[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteDeliveryChannel[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?PutDeliveryChannel[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?PutConfigurationRecorder[\"]?\\s*\\)\\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}
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}
A log metric filter and alarm exist for route table changes

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWSMonitoring(filterPattern:".*\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?CreateRoute[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?CreateRouteTable[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?ReplaceRoute[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?ReplaceRouteTableAssociation[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteRouteTable[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteRoute[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DisassociateRouteTable[\"]?\\s*\\)\\s*.*"){...AssetFragment}
A log metric filter and alarm exist for VPC changes

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWSMonitoring(filterPattern:".*\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?CreateVpc[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteVpc[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?ModifyVpcAttribute[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?AcceptVpcPeeringConnection[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?CreateVpcPeeringConnection[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteVpcPeeringConnection[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?RejectVpcPeeringConnection[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?AttachClassicLinkVpc[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DetachClassicLinkVpc[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DisableVpcClassicLink[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?EnableVpcClassicLink[\"]?\\s*\\)\\s*.*"){...AssetFragment}
Object-level logging for write events is enabled for S3 bucket

Connectors

AWS

Covered asset types

Bucket

Expected check: eq []

{buckets( where: { OR: [ { trailEventSelectorDataResources_ALL: { eventSelector: { NOT: { readWriteType_IN: ["All", "WriteOnly"] } } } } { trailEventSelectorDataResources_SOME: null } ] } ) {...AssetFragment}}
Object-level logging for read events is enabled for S3 bucket

Connectors

AWS

Covered asset types

Bucket

Expected check: eq []

{buckets( where: { OR: [ { trailEventSelectorDataResources_ALL: { eventSelector: { NOT: { readWriteType_IN: ["All", "ReadOnly"] } } } } { trailEventSelectorDataResources_SOME: null } ] } ) {...AssetFragment}}
A log metric filter and alarm exist for AWS Organizations changes

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

AWSMonitoring(filterPattern:".*\\s*\\(\\s*\\$\\.eventSource\\s*=\\s*[\"]?organizations\\.amazonaws\\.com[\"]?\\s*\\)\\s*\\&\\&\\s*\\(\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?AcceptHandshake[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?AttachPolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?CreateAccount[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?CreateOrganizationalUnit[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?CreatePolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeclineHandshake[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteOrganization[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeleteOrganizationalUnit[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DeletePolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DetachPolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?DisablePolicyType[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?EnablePolicyType[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?InviteAccountToOrganization[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?LeaveOrganization[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?MoveAccount[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?RemoveAccountFromOrganization[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?UpdatePolicy[\"]?\\s*\\)\\s*\\|\\|\\s*\\(\\s*\\$\\.eventName\\s*=\\s*[\"]?UpdateOrganizationalUnit[\"]?\\s*\\)\\s*\\)\\s*.*"){...AssetFragment}
Corporate login credentials are used instead of Gmail accounts

Connectors

Google Cloud

Covered asset types

IAMServiceAccountIAMUser

Expected check: eq []

GCPIAM1{...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}
Sinks are configured for all Log entries

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging2{...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}
Log metric filter and alerts exist for Custom Role changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging6{...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}
Log metric filter and alerts exist for Cloud Storage IAM permission changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging10{...AssetFragment}
Log metric filter and alerts exist for SQL instance configuration changes

Connectors

Google Cloud

Covered asset types

Connector

Expected check: eq []

GCPLogging11{...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}
Oslogin is enabled for a Project

Connectors

Google Cloud

Covered asset types

Project

Expected check: eq []

projects(where:{hasCommonInstanceMetadataItem_SOME:{key:"os-login",value:"false"}}){...AssetFragment}
Logging is enabled for Cloud Storage buckets

Connectors

Google Cloud

Covered asset types

Bucket

Expected check: eq []

buckets(where:{loggingLogBucket_NOT:""}){...AssetFragment}
MySql database instances do not allow root login from any Host

Connectors

Google Cloud

Covered asset types

SQLUser

Expected check: eq []

sqlUsers(where:{name:"root"OR:[{host:"%"},{host:"0.0.0.0"},{host:""}]}){...AssetFragment}
Stackdriver Logging is set to Enabled on Kubernetes Engine Clusters

Connectors

Google Cloud

Covered asset types

Cluster

Expected check: eq []

gkeClusters(where:{loggingService_NOT:"logging.googleapis.com"}){...AssetFragment}
Retention policies on log buckets are configured using Bucket Lock

Connectors

Google Cloud

Covered asset types

LogBucket

Expected check: eq []

logBuckets(where:{locked:false}){...AssetFragment}
AWS Multi-region cloud trails with logging enabled

Connectors

AWS

Covered asset types

Connector

Expected check: eq []

{
  AWSLogging1 {...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