🛡️ [LEGACY] VHDs are not encrypted🟢⚪
VHD (Virtual Hard Disks) are stored in blob storage and are the old-style disks that were attached to Virtual Machines. The blob VHD was then leased to the VM. By default, storage accounts are not encrypted, and Microsoft Defender will then recommend that the OS disks should be encrypted.
🛡️ Access Approval is not enabled🟢
GCP Access Approval enables you to require your organizations' explicit approval whenever Google support try to access your projects. You can then select users within your organization who can approve these requests through giving them a security role in IAM. All access requests display which Google Employee requested them in an email or Pub/Sub message that you can choose to Approve. This adds an additional control and logging of who in your organization approved/denied these requests.
🛡️ Access Key Rotation Reminders are not enabled🟢⚪
Access Keys authenticate application access requests to data contained in Storage Accounts. A periodic rotation of these keys is recommended to ensure that potentially compromised keys cannot result in a long-term exploitable credential. The 'Rotation Reminder' is an automatic reminder feature for a manual procedure.
🛡️ Access Keys are not regenerated periodically🟢⚪
For increased security, regenerate storage account access keys periodically.
🛡️ Account Has No IAM Users🔴🟠
Using individual IAM users (with specific set of permissions) to access your AWS cloud account eliminates the risk of compromising your root account credentials. To protect your AWS root account and follow IAM security best practices, it is recommended to create IAM users for everyday work with AWS services and resources in order to avoid using the root credentials.
🛡️ Account has zero Total Request Units🟢
Consider deleting Cosmos DB Account or switching to the serverless option when the account has no Total Request Units over the past 30 days.
🛡️ Account Lockout Duration is not set 60 seconds or more🟢⚪
The account lockout duration value determines how long an account retains the status of lockout, and therefore how long before a user can continue to attempt to login after passing the lockout threshold.
🛡️ Account Lockout Threshold is not set to 10 or less🟢⚪
The account lockout threshold determines how many failed login attempts are permitted prior to placing the account in a locked-out state and initiating a variable lockout duration.
🛡️ Account Root User Hardware MFA is not enabled.🟢⚪
The root user account is the most privileged user in an AWS account. MFA adds an extra layer of protection on top of a user name and password. With MFA enabled, when a user signs in to an AWS website, they will be prompted for their user name and password as well as for an authentication code from their AWS MFA device. For Level 2, it is recommended that the root user account be protected with a hardware MFA.
🛡️ Account Root User has active access keys🟢
The root user account is the most privileged user in an AWS account. AWS Access Keys provide programmatic access to a given AWS account. It is recommended that all access keys associated with the root user account be deleted.
🛡️ Account Root User MFA is not enabled.🟢
The 'root' user account is the most privileged user in an AWS account. Multi-factor Authentication (MFA) adds an extra layer of protection on top of a username and password. With MFA enabled, when a user signs in to an AWS website, they will be prompted for their username and password as well as for an authentication code from their AWS MFA device.
🛡️ Activity Log Alert for Create or Update Network Security Group does not exist🟢
Create an Activity Log Alert for the Create or Update Network Security Group event.
🛡️ Activity Log Alert for Create or Update Public IP Address Rule does not exist🟢
Create an activity log alert for the Create or Update Public IP Addresses rule.
🛡️ Activity Log Alert for Create or Update Security Solution does not exist🟢
Create an activity log alert for the Create or Update Security Solution event.
🛡️ Activity Log Alert for Create or Update SQL Server Firewall Rule does not exist🟢
Create an activity log alert for the Create or Update SQL Server Firewall Rule event.
🛡️ Activity Log Alert for Create Policy Assignment does not exist🟢
Create an activity log alert for the Create Policy Assignment event.
🛡️ Activity Log Alert for Delete Network Security Group does not exist🟢
Create an activity log alert for the Delete Network Security Group event.
🛡️ Activity Log Alert for Delete Policy Assignment does not exist🟢
Create an activity log alert for the Delete Policy Assignment event.
🛡️ Activity Log Alert for Delete Public IP Address Rule does not exist🟢
Create an activity log alert for the Delete Public IP Address rule.
🛡️ Activity Log Alert for Delete Security Solution does not exist🟢
Create an activity log alert for the Delete Security Solution event.
🛡️ Activity Log Alert for Delete SQL Server Firewall Rule does not exist🟢
Create an activity log alert for the 'Delete SQL Server Firewall Rule.'
🛡️ Activity Log Alert for Service Health does not exist🟢
Create an activity log alert for Service Health.
🛡️ Admin accounts are not used for daily operations🟢⚪
Microsoft Azure admin accounts should not be used for routine, non-administrative tasks.
🛡️ Agentless Container Vulnerability Assessment Component is not enabled🟢⚪
Enable automatic vulnerability management for images stored in ACR or running in AKS clusters.
🛡️ Agentless Discovery for Kubernetes Component is not enabled🟢⚪
Enable automatic discovery and configuration scanning of the Microsoft Kubernetes clusters.
🛡️ Agentless Scanning for Machines Component is not enabled🟢⚪
The Microsoft Defender for Cloud agentless machine scanner provides threat detection, vulnerability detection, and discovery of sensitive information.
🛡️ Allow Blob Anonymous Access is enabled🟢
The Azure Storage setting 'Allow Blob Anonymous Access' (aka 'allowBlobPublicAccess') controls whether anonymous access is allowed for blob data in a storage account. When this property is set to True, it enables public read access to blob data, which can be convenient for sharing data but may carry security risks.
🛡️ Allow Users To Remember MFA On Devices They Trust is enabled🟢⚪
Do not allow users to remember multi-factor authentication on devices.
🛡️ Alternate Contact Information is not current🔴🟢⚪
AWS provides customers with the option of specifying the contact information for account's security team. It is recommended that this information be provided.
🛡️ AND🟢
🛡️ API Access Logging in CloudWatch is not enabled🟢
Ensure that access logging is enabled on API Gateway APIs, capturing essential details about API usage and access in Amazon CloudWatch Logs. This enables monitoring, troubleshooting, and auditing of API calls.
🛡️ API Execution Logging in CloudWatch is not enabled🟢
Ensure that CloudWatch execution logging is enabled for APIs in API Gateway. Execution logging for API Gateway allows tracking of API requests and responses in CloudWatch, providing insights into API usage and facilitating troubleshooting.
🛡️ API Key is not restricted for unspecified hosts and apps🟢⚪
API Keys should only be used for services in cases where other authentication methods are unavailable. In this case, unrestricted keys are insecure because they can be viewed publicly, such as from within a browser, or they can be accessed on a device where the key resides. It is recommended to restrict API key usage to trusted hosts, HTTP referrers and apps. It is recommended to use the more secure standard authentication flow instead.
🛡️ API Key is not restricted for unused APIs🟢
API Keys should only be used for services in cases where other authentication methods are unavailable. API keys are always at risk because they can be viewed publicly, such as from within a browser, or they can be accessed on a device where the key resides. It is recommended to restrict API keys to use (call) only APIs required by an application.
🛡️ API Key is not rotated every 90 days🟢
API Keys should only be used for services in cases where other authentication methods are unavailable. If they are in use it is recommended to rotate API keys every 90 days.
🛡️ API Route Authorization Type is not configured🟢
Ensure that each API Route in AWS API Gateway API has a mechanisms for controlling and managing access to the API.
🛡️ App Service does not run the latest HTTP version🟢
Periodically, newer versions are released for HTTP either due to security flaws or to include additional functionality. Using the latest HTTP version for web apps to take advantage of security fixes, if any, and/or new functionalities of the newer version.
🛡️ App Service does not run the latest Java version🟢⚪
Periodically, newer versions are released for Java software either due to security flaws or to include additional functionality. Using the latest Java version for web apps is recommended in order to take advantage of security fixes, if any, and/or new functionalities of the newer version.
🛡️ App Service does not run the latest PHP version🟢⚪
Periodically newer versions are released for PHP software either due to security flaws or to include additional functionality. Using the latest PHP version for web apps is recommended in order to take advantage of security fixes, if any, and/or additional functionalities of the newer version.
🛡️ App Service does not run the latest Python version🟢⚪
Periodically, newer versions are released for Python software either due to security flaws or to include additional functionality. Using the latest full Python version for web apps is recommended in order to take advantage of security fixes, if any, and/or additional functionalities of the newer version.
🛡️ App Service does not use Azure Key Vaults to store secrets🟢⚪
Azure Key Vault will store multiple types of sensitive information such as encryption keys, certificate thumbprints, and Managed Identity Credentials. Access to these 'Secrets' can be controlled through granular permissions.
🛡️ App Service is not registered with Microsoft Entra ID🟢
Managed service identity in App Service provides more security by eliminating secrets from the app, such as credentials in the connection strings. When registering an App Service with Entra ID, the app will connect to other Azure services securely without the need for usernames and passwords.
🛡️ App Service Plan has no Apps assigned🟢
Ensure that Azure App Service Plan has at least one attached Azure App. Consider deleting App Service Plans that are empty and have no applications, sites or jobs associated with them.
🛡️ Application HTTPS Connection is not enforced🟢⚪
In order to maintain the highest level of security all connections to an application should be secure by default.
🛡️ Application Insights are not configured🟢
Application Insights within Azure act as an Application Performance Monitoring solution providing valuable data into how well an application performs and additional information when performing incident response. The types of log data collected include application metrics, telemetry data, and application trace logging data providing organizations with detailed information about application activity and application transactions.
🛡️ Asset Inventory API is not enabled🟢
GCP Cloud Asset Inventory is services that provides a historical view of GCP resources and IAM policies through a time-series database. The information recorded includes metadata on Google Cloud resources, metadata on policies set on Google Cloud projects or resources, and runtime information gathered within a Google Cloud resource. Cloud Asset Inventory Service (CAIS) API enablement is not required for operation of the service, but rather enables the mechanism for searching/exporting CAIS asset data directly.
🛡️ Aurora Cluster access is not consistent🟢
Ensure that all the database instances within your Amazon Aurora clusters have the same accessibility (either public or private) in order to follow AWS best practices.
🛡️ Authentication is disabled and Basic Authentication is enabled🟢
Azure App Service Authentication is a feature that can prevent anonymous HTTP requests from reaching a Web Application or authenticate those with tokens before they reach the app. Disabling HTTP Basic Authentication functionality further ensures legacy authentication methods are disabled within the application.
🛡️ Auto Scaling Group and Classic Load Balancer AZs are inconsistent🟠🟢
Ensure that AWS Auto Scaling Groups (ASGs) and Classic Load Balancers (CLBs) are configured to share the same Availability Zones (AZs). This helps optimize application performance by utilizing AWS's low-latency network links across the scaling environment.
🛡️ Auto Scaling Group behind ELB assigns public IP to instances🟢
Ensure that EC2 instances launched by Auto Scaling Group launch configuration and accessible from behind a load balancer are not assigned public IP addresses.
🛡️ Auto Scaling Group behind ELB doesn't use ELB health check🟢
Ensure that Auto Scaling Groups associated with Elastic Load Balancers (ELBs) are configured to use ELB health checks instead of EC2 health checks. ELB health checks provide more accurate health status for instances behind a load balancer.
🛡️ Auto Scaling Group Capacity Rebalancing is not enabled🟢
Ensure that Capacity Rebalancing is enabled for AWS EC2 Auto Scaling Groups that use a mixed instances launch template. This feature helps improve application availability by proactively launching a replacement Spot Instance when an existing one receives a rebalance recommendation, which is a signal that the instance is at elevated risk of interruption.
🛡️ Auto Scaling Group does not span multiple Availability Zones🟢
Ensure that AWS Auto Scaling Groups are configured across multiple Availability Zones to helps applications remain resilient in case of an Availability Zone failure.
🛡️ Auto Scaling Group Launch Template is not configured to require IMDSv2🟢
Ensure that the EC2 Auto Scaling Group uses a Launch Template which is configured to require IMDSv2 (Instance Metadata Service Version 2). IMDSv2 is a session-oriented method for accessing instance metadata.
🛡️ Auto Scaling Group uses Launch Configuration instead of Launch Template🟢
Ensure Auto Scaling groups use Launch Templates instead of Launch Configurations. Launch Configurations are no longer fully supported by AWS and do not receive updates for new EC2 features.
🛡️ Automatic Key Rotation is not enabled🟢
Automatic Key Rotation is available in Public Preview. The currently supported applications are Key Vault, Managed Disks, and Storage accounts accessing keys within Key Vault. The number of supported applications will incrementally increased.
🛡️ AWS EC2 Instance Should Have Breeze Agent Installed🟢
Ensure that Breeze Agent is installed on the EC2 Instance. The Breeze Agent streams OS-level data into Cloudaware CMDB and seamlessly enables other Cloudaware modules such as Intrusion Detection (IDS), Vulnerability Scanning, Patch Management, CIS Benchmarking, and Event Monitoring.
🛡️ AWS EKS Cluster Should Have Breeze Agent Installed🟢
Ensure that Breeze Agent is installed on the EKS Cluster. The Breeze Agent streams OS-level data into Cloudaware CMDB and seamlessly enables other Cloudaware modules such as Intrusion Detection (IDS), Vulnerability Scanning, Patch Management, CIS Benchmarking, and Event Monitoring.
🛡️ AWS IAM User is not managed centrally in multi-account environments🟢⚪
In multi-account environments, IAM user centralization facilitates greater user control. User access beyond the initial account is then provided via role assumption. Centralization of users can be accomplished through federation with an external identity provider or through the use of AWS Organizations.
🛡️ AWS Organizations Changes Monitoring is not enabled🟢⚪
Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs, and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for AWS Organizations changes made in the master AWS Account.
🛡️ AWS Support Role is not created🟢
AWS provides a support center that can be used for incident notification and response, as well as technical support and customer services. Create an IAM Role, with the appropriate policy assigned, to allow authorized users to manage incidents with AWS Support.
🛡️ AWSCloudShellFullAccess Policy is attached🟢
AWS CloudShell is a convenient way of running CLI commands against AWS services. AWSCloudShellFullAccess managed IAM policy provides full access to CloudShell, which allows file upload and download capability between a user's local system and the CloudShell environment. Within the CloudShell environment a user has sudo permissions, and can access the internet. So it is feasible to install file transfer software (for example) and move data from CloudShell to external internet servers.
🛡️ Azure Active Directory Device Should Have Breeze Agent Installed🟢
Ensure that Breeze Agent is installed on the Active Directory Device. The Breeze Agent streams OS-level data into Cloudaware CMDB and seamlessly enables other Cloudaware modules such as Intrusion Detection (IDS), Vulnerability Scanning, Patch Management, CIS Benchmarking, and Event Monitoring.
🛡️ Azure AKS Cluster Should Have Breeze Agent Installed🟢
Ensure that Breeze Agent is installed on the AKS Cluster. The Breeze Agent streams OS-level data into Cloudaware CMDB and seamlessly enables other Cloudaware modules such as Intrusion Detection (IDS), Vulnerability Scanning, Patch Management, CIS Benchmarking, and Event Monitoring.
🛡️ Azure Virtual Machine Should Have Breeze Agent Installed🟢
Ensure that Breeze Agent is installed on the Azure Virtual Machine. The Breeze Agent streams OS-level data into Cloudaware CMDB and seamlessly enables other Cloudaware modules such as Intrusion Detection (IDS), Vulnerability Scanning, Patch Management, CIS Benchmarking, and Event Monitoring.
🛡️ Azure VM Scale Set Instance Should Have Breeze Agent Installed🟢
Ensure that Breeze Agent is installed on the VM Scale Set Instance. The Breeze Agent streams OS-level data into Cloudaware CMDB and seamlessly enables other Cloudaware modules such as Intrusion Detection (IDS), Vulnerability Scanning, Patch Management, CIS Benchmarking, and Event Monitoring.
🛡️ Basic Authentication is enabled🟢⚪
Basic Authentication provides the ability to create identities and authentication for an App Service without a centralized Identity Provider. For a more effective, capable, and secure solution for Identity, Authentication, Authorization, and Accountability, a centralized Identity Provider such as Entra ID is strongly advised.
🛡️ Bastion Host does not exist🟢
The Azure Bastion service allows secure remote access to Azure Virtual Machines over the Internet without exposing remote access protocol ports and services directly to the Internet. The Azure Bastion service provides this access using TLS over 443/TCP, and subscribes to hardened configurations within an organization's Azure Active Directory service.
🛡️ Blob Containers Soft Delete is not enabled🟢
It is recommended that both Azure Containers with attached Blob Storage and standalone containers with Blob Storage be made recoverable by enabling the soft delete configuration. This is to save and recover data when blobs or blob snapshots are erroneously deleted.
🛡️ Blob Logging is not enabled for Read, Write, and Delete requests🟢
The Storage Blob service provides scalable, cost-efficient object storage in the cloud. Storage Logging happens server-side and allows details for both successful and failed requests to be recorded in the storage account. These logs allow users to see the details of read, write, and delete operations against the blobs.
🛡️ Blob Service Versioning is not enabled🟢
Enabling blob versioning allows for the automatic retention of previous versions of objects. With blob versioning enabled, earlier versions of a blob are accessible for data recovery in the event of modifications or deletions.
🛡️ BOOLEAN_FROM🔴🟢
🛡️ BooleanType🔴🟢
🛡️ BooleanType🟢
🛡️ Bucket is anonymously or publicly accessible🟢
It is recommended that IAM policy on Cloud Storage bucket does not allows anonymous or public access.
🛡️ Bucket is located in a less cost-effective region🟢
This policy flags S3 Buckets that are running in AWS regions with higher pricing and could potentially be migrated to more cost-effective regions.
🛡️ Bucket is located in a less cost-effective region🟢
This policy flags Storage Buckets that are running in Google regions with higher pricing and could potentially be migrated to more cost-effective regions.
🛡️ Bucket is not configured to block public access🟢
Amazon S3 provides `Block public access (bucket settings)` and `Block public access (account settings)` to help you manage public access to Amazon S3 resources. By default, S3 buckets and objects are created with public access disabled. However, an IAM principal with sufficient S3 permissions can enable public access at the bucket and/or object level. While enabled, `Block public access (bucket settings)` prevents an individual bucket, and its contained objects, from becoming publicly accessible. Similarly, `Block public access (account settings)` prevents all buckets, and contained objects, from becoming publicly accessible across the entire account.
🛡️ Bucket Lifecycle Configuration is not enabled🟢
Configure Amazon S3 Lifecycle in order to ensure that your objects are stored cost effectively throughout their lifecycle. An S3 Lifecycle configuration is a set of rules that define actions (such as Transition and Expiration actions) that Amazon S3 applies to a group of objects.
🛡️ Bucket logging is not enabled🟢
Cloud Storage bucket logging provides detailed records of requests made to a bucket, which is crucial for security auditing and operational insights. It is recommended to enable logging for all storage buckets to track access patterns and identify potential unauthorized activities.
🛡️ Bucket MFA Delete is not enabled🟠🟢
Amazon S3 provides an MFA Delete feature to add an optional extra layer of security when deleting objects from your S3 buckets. This feature requires additional authentication via MFA before allowing the deletion of objects, thereby reducing the risk of accidental or unauthorized deletions.
🛡️ Bucket Object Lock is not enabled🟠🟢
S3 Object Lock can help prevent Amazon S3 objects from being deleted or overwritten for a fixed amount of time or indefinitely. Object Lock uses a write-once-read-many (WORM) model to store objects. You can use Object Lock to help meet regulatory requirements that require WORM storage, or to add another layer of protection against object changes or deletion.
🛡️ Bucket Policy is not set to deny HTTP requests🟢
At the Amazon S3 bucket level, you can configure permissions through a bucket policy making the objects accessible only through HTTPS.
🛡️ Bucket sensitive data is not discovered, classified, and secured🟢⚪
Amazon S3 buckets can contain sensitive data, that for security purposes should be discovered, monitored, classified and protected. Macie along with other 3rd party tools can automatically provide an inventory of Amazon S3 buckets.
🛡️ Bucket Server Access Logging is not enabled🟢
S3 server access logging enables the tracking and analysis of requests made to S3 buckets. By activating this feature, detailed records are generated, capturing such information as the requester's IP address, the time of the request, the requested resource, and the response status.
🛡️ Bucket Uniform Bucket-Level Access is not enabled🟢
It is recommended that uniform bucket-level access is enabled on Cloud Storage buckets.
🛡️ Bucket Versioning is not enabled🟢
Ensure that AWS S3 Bucket Versioning feature is enabled. Versioning allows users to keep multiple versions of an object in the same S3 bucket and provides a reliable and scalable solution for data protection, recovery, and version control within S3 buckets.
🛡️ Bucket with Intelligent-Tiering is missing Archive configurations🟢
Ensure that S3 buckets with Intelligent-Tiering enabled are configured to automatically move objects to the optional Archive Access and Deep Archive Access tiers to maximize storage cost savings.
🛡️ Bucket with Log Sink does not have Versioning🟢
Ensure that Object Versioning is enabled for Google Storage buckets configured as destinations for log sinks.
🛡️ Bytes Items🟢
🛡️ Bytes Items🟢
🛡️ Bytes Items🟢
🛡️ Bytes Items🟢
🛡️ BytesType🟢
🛡️ BytesType🟢
🛡️ Certificate Expired🟢
Remove all expired SSL/TLS certificates in AWS Certificate Manager to comply with Amazon Security Best Practices. This action mitigates risks associated with outdated certificates, which can lead to vulnerabilities and compromised security. AWS Certificate Manager provisions, manages, and deploys SSL/TLS certificates for services like Elastic Load Balancing and CloudFront, ensuring secure communications.
🛡️ Certificate expires in the next 7 days🟢
Renew your SSL/TLS certificates in AWS ACM that are ineligible for automatic renewal at least 7 days before their expiration date to ensure uninterrupted security coverage and prevent service disruptions. Proactive renewal safeguards your applications and maintains user trust. AWS Certificate Manager simplifies the provisioning, management, and deployment of SSL/TLS certificates for various AWS resources, including Elastic Load Balancers, CloudFront distributions, and APIs on Amazon API Gateway
🛡️ Certificate with Wildcard Domain Name🟢
Ensure that ACM single domain name certificates are used instead of wildcard certificates within your AWS account in order to follow security best practices and protect each domain/subdomain with its own unique private key. An AWS ACM wildcard certificate can match any first-level subdomain, potentially increasing vulnerability if compromised. For example, a wildcard certificate issued for *.cloudaware.com can protect both www.cloudaware.com and images.cloudaware.com.
🛡️ Cloud Access Transparency is not enabled🟢⚪
GCP Access Transparency provides audit logs for all actions that Google personnel take in your Google Cloud resources.
🛡️ Cloud Audit Logging is not configured properly🟢
It is recommended that Cloud Audit Logging is configured to track all admin activities and read, write access to user data.
🛡️ Cloud Function Environment Variables store confidential data🟢⚪
Google Cloud Functions allow you to host serverless code that is executed when an event is triggered, without the requiring the management a host operating system. These functions can also store environment variables to be used by the code that may contain authentication or other information that needs to remain confidential.
🛡️ CloudTrail is not encrypted with KMS CMK🟢
AWS CloudTrail is a web service that records AWS API calls for an account and makes those logs available to users and resources in accordance with IAM policies. AWS Key Management Service (KMS) is a managed service that helps create and control the encryption keys used to encrypt account data, and uses Hardware Security Modules (HSMs) to protect the security of encryption keys. CloudTrail logs can be configured to leverage server side encryption (SSE) and KMS customer created master keys (CMK) to further protect CloudTrail logs. It is recommended that CloudTrail be configured to use SSE-KMS.
🛡️ Cluster Alias IP is disabled🟢
Ensure that GKE Clusters are created with VPC-native traffic routing by enabling Alias IP. VPC-native clusters are more scalable and secure as they allow pods to have unique, routable IP addresses within the VPC.
🛡️ Cluster allows unrestricted public traffic🟢
Ensure that Amazon EKS clusters are configured to restrict public access to their Kubernetes API server endpoint to specific CIDR blocks. Unrestricted public access can expose the cluster to unauthorized access and potential attacks.
🛡️ Cluster Alpha cluster features are enabled🟢
Ensure that Google GKE Clusters are not running with alpha features enabled, especially in production environments. Alpha features are experimental and not covered by the GKE SLA.
🛡️ Cluster Control Plane Authorized Networks are disabled🟢
Enable Control Plane Authorized Networks to restrict access to the cluster's control plane to only an allowlist of authorized IPs.
🛡️ Cluster has node IAM role with AmazonEKS_CNI_Policy attached🔴🟢
Ensures that the AmazonEKS_CNI_Policy is not attached to the EKS node's IAM role, promoting least privilege for the Amazon VPC CNI plugin by utilizing IAM Roles for Service Accounts (IRSA).
🛡️ Cluster IAM OIDC provider is not created🟢
Ensure that AWS EKS clusters have an OpenID Connect (OIDC) provider configured. This is required to enable IAM Roles for Service Accounts (IRSA), which allows IAM roles to be securely assigned to Kubernetes service accounts for fine-grained access to AWS resources.
🛡️ Cluster is not encrypted using Customer-Managed Encryption Key🟢
When you use Dataproc, cluster and job data is stored on Persistent Disks (PDs) associated with the Compute Engine VMs in your cluster and in a Cloud Storage staging bucket. This PD and bucket data is encrypted using a Google-generated data encryption key (DEK) and key encryption key (KEK). The CMEK feature allows you to create, use, and revoke the key encryption key (KEK). Google still controls the data encryption key (DEK).
🛡️ Cluster is underutilized🟢
Clusters are considered underutilized if their average CPU utilization is consistently below 20% and their disk I/O is below 50 IOPS over a 30-day period. Such instances might be oversized for their workload.
🛡️ Cluster Logging is not enabled for all control plane logs types🟢
Ensure that EKS cluster control plane logs are enabled and configured to capture API, audit, authenticator, controller manager, and scheduler activity.
🛡️ Cluster Logging is not enabled🟢
Ensure that Cloud Logging is enabled for GKE Clusters to provide visibility into cluster audit, application, and system logs.
🛡️ Cluster Monitoring is not enabled🟢
Ensure that GKE clusters have Cloud Monitoring enabled to provide visibility into their performance, uptime, and overall health. Cloud Monitoring collects metrics, events, and metadata from GKE clusters.
🛡️ Cluster Network policy is disabled🟢
A network policy is a specification of how groups of pods are allowed to communicate with each other and other network endpoints. NetworkPolicy resources use labels to select pods and define rules which specify what traffic is allowed to the selected pods. The Kubernetes Network Policy API allows the cluster administrator to specify what pods are allowed to communicate with each other.
🛡️ Cluster Node Pool Auto-Repair is disabled🟢
Ensures that GKE Cluster Node Pools have the Auto-Repair feature enabled. This feature helps maintain node health by automatically repairing nodes that fail health checks.
🛡️ Cluster Node Pool Auto-Upgrade is disabled🟢
Ensure that GKE Cluster Node Pool Auto-Upgrades are enabled. This feature helps keep the nodes in your cluster up to date with the latest stable Kubernetes version, which includes critical security patches and bug fixes, enhancing the overall security and stability of your cluster.
🛡️ Cluster Node Pool uses default Service account🟢
Create and use minimally privileged Service accounts to run GKE cluster nodes instead of using the Compute Engine default Service account. Unnecessary permissions could be abused in the case of a node compromise.
🛡️ Cluster Private Google Access is not enabled.🟢
Ensure that GKE clusters are configured to use Private Google Access. Private Google Access allows cluster hosts in a subnet to reach Google APIs and services using an internal IP address rather than an external IP address.
🛡️ Cluster Server-Side Encryption is not enabled🟢
Ensure that DynamoDB Accelerator (DAX) clusters are encrypted at rest to protect sensitive data from unauthorized access to the underlying storage.
🛡️ COLLECTION_SIZE🟢
🛡️ CollectionType🟢
🛡️ CollectionType🟢
🛡️ CollectionType🟢
🛡️ Commitment expired in the last 30 days🟢
This policy identifies Google GCE Commitments that have expired within the last 30 days to alert teams of potential unplanned increases in cloud spending and verify that the expirations were intentional.
🛡️ Commitment expires in the next 60 days🟢
This policy identifies Google GCE Commitments that are set to expire within the next 60 days to help with proactive renewal and cost management.
🛡️ Conditional Access By Location is not defined🟢⚪
Conditional Access Policies can be used to block access from geographic locations that are deemed out-of-scope for your organization or application. The scope and variables for this policy should be carefully examined and defined.
🛡️ Config Configuration Changes Monitoring is not enabled🟢⚪
Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs, or an external Security information and event management (SIEM) environment, and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for detecting changes to AWS Config's configurations.
🛡️ Config is not enabled in all regions🟢
AWS Config is a web service that performs configuration management of supported AWS resources within your account and delivers log files to you. The recorded information includes the configuration item (AWS resource), relationships between configuration items (AWS resources), any configuration changes between resources. It is recommended AWS Config be enabled in all regions.
🛡️ Configuration Changes Monitoring is not enabled🟢⚪
Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs, or an external Security information and event management (SIEM) environment, where metric filters and alarms can be established. It is recommended that a metric filter and alarm be utilized for detecting changes to CloudTrail's configurations.
🛡️ Consumer Google Accounts are used🟢⚪
Use corporate login credentials instead of consumer accounts, such as Gmail accounts.
🛡️ Critical Data is not encrypted with customer managed key🟢⚪
Enable sensitive data encryption at rest using Customer Managed Keys (CMK) rather than Microsoft Managed keys.
🛡️ Cross Tenant Replication is enabled🟢
Cross Tenant Replication in Azure allows data to be replicated across multiple Azure tenants. While this feature can be beneficial for data sharing and availability, it also poses a significant security risk if not properly managed. Unauthorized data access, data leakage, and compliance violations are potential risks.
🛡️ Crypto Key is anonymously or publicly accessible🟠🟢⚪
It is recommended that the IAM policy on Cloud KMS Crypto Key should restrict anonymous and/or public access.
🛡️ Crypto Key is not rotated every 90 days🟢
Google Cloud Key Management Service stores cryptographic keys in a hierarchical structure designed for useful and elegant access control management. The format for the rotation schedule depends on the client library that is used. For the gcloud command-line tool, the next rotation time must be in ISO or RFC3339 format, and the rotation period must be in the form INTEGER[UNIT], where units can be one of seconds (s), minutes (m), hours (h) or days (d).
🛡️ Custom Banned Password List is not enforced🟢⚪
Microsoft Azure provides a Global Banned Password policy that applies to Azure administrative and normal user accounts. This is not applied to user accounts that are synced from an on-premise Active Directory unless Microsoft Entra ID Connect is used and you enable EnforceCloudPasswordPolicyForPasswordSyncedUsers.
🛡️ Custom Subscription Administrator Roles exist🟢
The principle of least privilege should be followed and only necessary privileges should be assigned instead of allowing full administrative access.
🛡️ Database allows ingress from 0.0.0.0/0 (ANY IP)🟢
Ensure that no SQL Databases allow ingress from 0.0.0.0/0 (ANY IP).
🛡️ Database is located in a less cost-effective region🟢
This policy flags SQL Database that are running in Azure regions with higher pricing and could potentially be migrated to more cost-effective regions.
🛡️ Database is underutilized🟢
Identify Azure SQL Databases that are underutilized to optimize costs and improve efficiency. Instances are considered underutilized if their average DTU, CPU utilization is consistently below 20%, or App Memory utilization is below 40%, and storage utilization is below 10% over a 30-day period.
🛡️ Database Transparent Data Encryption is not enabled🟢
Azure SQL Database transparent data encryption helps protect against the threat of malicious activity by performing real-time encryption and decryption of the database, associated backups, and transaction log files at rest without requiring changes to the application.
🛡️ Databricks Diagnostic Log Delivery is not configured🟢⚪
Azure Databricks Diagnostic Logging provides insights into system operations,
user activities, and security events within a Databricks workspace. Enabling
diagnostic logs helps organizations:
- Detect security threats by logging access, job executions, and cluster activities.
- Ensure compliance with industry regulations such as SOC 2, HIPAA, and GDPR.
- Monitor operational performance and troubleshoot issues proactively.
🛡️ Databricks network security groups are not configured🟢⚪
Network Security Groups (NSGs) should be implemented to control inbound and outbound traffic to Azure Databricks subnets, ensuring only authorized communication. NSGs should be configured with deny rules to block unwanted traffic and restrict communication to essential sources only.
🛡️ Databricks Personal Access Tokens (PATs) are not restricted and expirable🟢⚪
Databricks personal access tokens (PATs) provide API-based authentication for users and applications. By default, users can generate API tokens without expiration, leading to potential security risks if tokens are leaked, improperly stored, or not rotated regularly.
🛡️ Databricks Unity Catalog is not configured🟢⚪
Unity Catalog is a centralized governance model for managing and securing data in Azure Databricks. It provides fine-grained access control to databases, tables, and views using Microsoft Entra ID identities. Unity Catalog also enhances data lineage, audit logging, and compliance monitoring, making it a critical component for security and governance.
🛡️ Databricks users and groups are not synced from Microsoft Entra ID🟢⚪
To ensure centralized identity and access management, users and groups from Microsoft Entra ID should be synchronized with Azure Databricks. This is achieved through SCIM provisioning, which automates the creation, update, and deactivation of users and groups in Databricks based on Entra ID assignments. Enabling this integration ensures that access controls in Databricks remain consistent with corporate identity governance policies, reducing the risk of orphaned accounts, stale permissions, and unauthorized access.
🛡️ Dataset is anonymously or publicly accessible🟢
It is recommended that the IAM policy on BigQuery datasets does not allow anonymous and/or public access.
🛡️ Dataset is not encrypted with Customer-Managed Encryption Key (CMEK)🟢
BigQuery by default encrypts the data as rest by employing Envelope Encryption using Google managed cryptographic keys. The data is encrypted using the data encryption keys and data encryption keys themselves are further encrypted using key encryption keys. This is seamless and do not require any additional input from the user. However, if you want to have greater control, Customer-managed encryption keys (CMEK) can be used as encryption key management solution for BigQuery Data Sets.
🛡️ DATE_TIME_FROM🟢
🛡️ DateTimeType🟢
🛡️ DateTimeType🟢
🛡️ Default Network Access Rule is not set to Deny🟢
Restricting default network access helps to provide a new layer of security, since storage accounts accept connections from clients on any network. To limit access to selected networks, the default action must be changed.
🛡️ Default Role is ACCOUNTADMIN🟢
Ensure that the ACCOUNTADMIN role is not set as the Default Role for Snowflake Users to reduce risk and prevent accidental use of broad administrative privileges.
🛡️ Default Role is not set🟢
Ensure the Default Role is set for Snowflake Users.
🛡️ Default Security Group does not restrict all traffic🟢
VPC comes with a default security group whose initial settings deny all inbound traffic, allow all outbound traffic, and allow all traffic between instances assigned to the security group. If you don't specify a security group when you launch an instance, the instance is automatically assigned to this default security group. Security groups provide stateful filtering of ingress/egress network traffic to AWS resources. It is recommended that the default security group restrict all traffic.
🛡️ Default To OAuth Authentication is not set to Yes🟢
When this property is enabled, the Azure portal authorizes requests to blobs, files, queues, and tables with Microsoft Entra ID by default.
🛡️ Default User Role can create tenants🟢
It is recommended to only allow an administrator to create new tenants. This prevent users from creating new Microsoft Entra ID or Azure AD B2C tenants and ensures that only authorized users are able to do so.
🛡️ Detector EKS Audit Log Monitoring is not enabled🟢
Ensure that AWS GuardDuty EKS Audit Log Monitoring is enabled to monitor Kubernetes audit logs for potential threats and suspicious activities within your EKS clusters.
🛡️ Device Code Authentication Flow is not restricted🟢⚪
Conditional Access Policies can be used to prevent the Device code authentication flow. Device code flow should be permitted only for users that regularly perform duties that explicitly require the use of Device Code to authenticate, such as utilizing Azure with PowerShell.
🛡️ Diagnostic Setting captures Administrative, Alert, Policy, and Security categories🟢
The diagnostic setting should be configured to log the appropriate activities from the control/management plane.
🛡️ Diagnostic Setting does not capture Microsoft Entra activity logs🟢⚪
Ensure that a Microsoft Entra diagnostic setting is configured to send Microsoft Entra activity logs to a suitable destination, such as a Log Analytics workspace, storage account, or event hub. This enables centralized monitoring and analysis of Microsoft Entra activity logs.
🛡️ Diagnostic Setting does not capture Microsoft Graph activity logs🟢⚪
Ensure that a Microsoft Entra diagnostic setting is configured to send Microsoft Graph activity logs to a suitable destination, such as a Log Analytics workspace, storage account, or event hub. This enables centralized monitoring and analysis of all HTTP requests that the Microsoft Graph service receives and processes for a tenant.
🛡️ Diagnostic Setting exists for Subscription Activity Logs🟢⚪
Enable Diagnostic settings for exporting activity logs. Diagnostic settings are available for each individual resource within a subscription. Settings should be configured for all appropriate resources for your environment.
🛡️ Diagnostic Setting for Azure AppService HTTP logs is not enabled🟢⚪
Enable AppServiceHTTPLogs diagnostic log category for Azure App Service instances to ensure all http requests are captured and centrally logged.
🛡️ Diagnostic Setting for Azure Key Vault is not enabled🟢⚪
Enable AuditEvent logging for key vault instances to ensure interactions with key vaults are logged and available.
🛡️ Diagnostic Setting is not enabled for all services that support it🟢⚪
Resource Logs capture activity to the data access plane while the Activity log is a subscription-level log for the control plane. Resource-level diagnostic logs provide insight into operations that were performed within that resource itself; for example, reading or updating a secret from a Key Vault. Currently, 95 Azure resources support Azure Monitoring (See the more information section for a complete list), including Network Security Groups, Load Balancers, Key Vault, AD, Logic Apps, and CosmosDB.
🛡️ Diagnostic Setting Logs export to Storage Account not encrypted with Customer-managed key🟢
Storage accounts with the activity log exports can be configured to use Customer Managed Keys (CMK).
🛡️ Disable or Schedule Deletion CMK Events Monitoring is not enabled🟢⚪
Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs, or an external Security information and event management (SIEM) environment, and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for customer created CMKs which have changed state to disabled or scheduled deletion.
🛡️ Disk for critical VMs is not encrypted with Customer-Supplied Encryption Key (CSEK)🟢
Customer-Supplied Encryption Keys (CSEK) are a feature in Google Cloud Storage and Google Compute Engine. If you supply your own encryption keys, Google uses your key to protect the Google-generated keys used to encrypt and decrypt your data. By default, Google Compute Engine encrypts all data at rest. Compute Engine handles and manages this encryption for you without any additional actions on your part. However, if you wanted to control and manage this encryption yourself, you can provide your own encryption keys.
🛡️ Disk is idle🟢
Identify persistent GCE Disks that haven't been attached to a GCE Instance for more than 30 days
🛡️ Distribution Logging is not enabled🟢
Ensure that standard logging is enabled for CloudFront Web Distributions.
🛡️ DURATION_FROM🟢
🛡️ EBS Attached Volume is not encrypted🟢
Ensure that all attached EBS volumes are encrypted to protect data at rest. Encrypting EBS volumes adds a layer of security by rendering data unreadable to unauthorized users.
🛡️ EBS Snapshot is 90 days old or more🟠🟢
Consider deleting or archiving AWS EBS Snapshots that are 90 days old or more to reduce storage costs and manage data lifecycle.
🛡️ EBS Snapshot is publicly accessible🟢
Ensure that Amazon EBS snapshots are not publicly accessible to prevent unauthorized access to data. Snapshots should be shared only with specific, trusted AWS accounts.
🛡️ EBS Volume Encryption Attribute is not enabled in all regions🟢
Elastic Compute Cloud (EC2) supports encryption at rest when using the Elastic Block Store (EBS) service. While disabled by default, forcing encryption at EBS volume creation is supported.
🛡️ EBS Volume is idle🟢
This policy flags AWS EBS Volumes that are either unattached for more than 30 days or attached but show no read/write operations for the past 30 days.
🛡️ EBS Volume is underutilized🟢
Identifies provisioned IOPS EBS Volumes (gp3, io1, io2) with low read/write activity over the last 30 days
🛡️ Elastic IP is unused🟢
Identify and release unused Elastic IP addresses to avoid unnecessary charges. Elastic IPs that are allocated but not associated with a running resource incur costs.
🛡️ Elastic Pool is underutilized🟢
Identifies Azure SQL Elastic Pools that are underutilized to optimize costs. An elastic pool is considered underutilized if its average DTU/CPU consumption is below 20% and its storage utilization is below 10% over the last 30 days.
🛡️ Endpoint doesn't use SSL🟢
Ensure that AWS DMS Endpoints use Secure Sockets Layer (SSL) to encrypt connections between the DMS replication instance and your database endpoints.
🛡️ Endpoint Protection is not installed🟢⚪
Install endpoint protection for all virtual machines.
🛡️ ENDS_WITH🟢
🛡️ Entra ID Client Authentication is not used🟢⚪
Cosmos DB can use tokens or Entra ID for client authentication which in turn will use Azure RBAC for authorization. Using Entra ID is significantly more secure because Entra ID handles the credentials and allows for MFA and centralized management, and the Azure RBAC better integrated with the rest of Azure.
🛡️ Environment does not have enhanced health reporting enabled🟢
Enhanced health reporting is a feature that can be enabled within your environment to allow AWS Elastic Beanstalk to collect additional data about its associated resources. Elastic Beanstalk uses this data to provide a more comprehensive view of the environment’s overall health and to help identify potential issues that could impact application availability.
🛡️ External Attack Surface Monitoring (EASM) is not enabled🟢⚪
An organization's attack surface is the collection of assets with a public network identifier or URI that an external threat actor can see or access from outside your cloud. It is the set of points on the boundary of a system, a system element, system component, or an environment where an attacker can try to enter, cause an effect on, or extract data from, that system, system element, system component, or environment.
🛡️ External Forwarding Rule is configured to use a Target HTTP Proxy🟢
Ensures that external Google Cloud forwarding rules use Target HTTPS Proxies for secure, encrypted traffic, instead of unencrypted Target HTTP Proxies.
🛡️ File Integrity Monitoring Component is not enabled🟢⚪
File Integrity Monitoring (FIM) is a feature that monitors critical system files in Windows or Linux for potential signs of attack or compromise.
🛡️ File Shares SMB Channel Encryption is not set to AES-256-GCM or higher🟢
Implement SMB channel encryption with AES-256-GCM for SMB file shares to ensure data confidentiality and integrity in transit. This method offers strong protection against eavesdropping and man-in-the-middle attacks, safeguarding sensitive information.
🛡️ File Shares SMB Protocol Version is not set to SMB 3.1.1 or higher🟢
Ensure that SMB file shares are configured to use the latest supported SMB protocol version. Keeping the SMB protocol updated helps mitigate risks associated with older SMB versions, which may contain vulnerabilities and lack essential security controls.
🛡️ File Shares Soft Delete is not enabled🟢
Azure Files offers soft delete for file shares, allowing you to easily recover your data when it is mistakenly deleted by an application or another storage account user.
🛡️ File System encryption is not enabled🟢
EFS data should be encrypted at rest using AWS KMS (Key Management Service)
🛡️ Flexible Server audit_log_enabled Parameter is not set to ON🟢
Enable audit_log_enabled on MySQL Servers.
🛡️ Flexible Server audit_log_events Parameter is not set with the CONNECTION event🟢
Set audit_log_events to include CONNECTION on MySQL flexible servers.
🛡️ Flexible Server connection_throttle.enable Parameter is not set to ON🟢
Enable connection_throttling on PostgreSQL Servers.
🛡️ Flexible Server Firewall Rules allow access to Azure services🟢
Disable access from Azure services to PostgreSQL Database Server.
🛡️ Flexible Server log_checkpoints Parameter is not set to ON🟢
Enable log_checkpoints on PostgreSQL Flexible Servers.
🛡️ Flexible Server log_retention_days Parameter is less than 4 days🟢
Ensure log_retention_days on PostgreSQL Servers is set to an appropriate value.
🛡️ Flexible Server require_secure_transport Parameter is not set to ON🟢
SSL connectivity helps to provide a new layer of security by connecting database server to client applications using Secure Sockets Layer (SSL). Enforcing SSL connections between database server and client applications helps protect against 'man in the middle' attacks by encrypting the data stream between the server and application.
🛡️ Flexible Server require_secure_transport Parameter is not set to ON🟢
SSL connectivity helps to provide a new layer of security by connecting database server to client applications using Secure Sockets Layer (SSL). Enforcing SSL connections between database server and client applications helps protect against "man in the middle" attacks by encrypting the data stream between the server and application.
🛡️ Flexible Server TLS Version is not set to TLS 1.2🟢
TLS connectivity helps to provide a new layer of security by connecting database server to client applications using Transport Layer Security (TLS). Enforcing TLS connections between database server and client applications helps protect against 'man in the middle' attacks by encrypting the data stream between the server and application.
🛡️ Flow Logs are not enabled🟢
VPC Flow Logs is a feature that enables you to capture information about the IP traffic going to and from network interfaces in your VPC. After you've created a flow log, you can view and retrieve its data in Amazon CloudWatch Logs. It is recommended that VPC Flow Logs be enabled for packet 'Rejects' for VPCs.
🛡️ FTP deployments are not disabled🟢
By default, Azure Functions, Web, and API Services can be deployed over FTP. If FTP is required for an essential deployment workflow, FTPS should be required for FTP login for all App Service Apps and Functions.
🛡️ GCE Firewall Rule logging is disabled🟢
Ensure that Firewall Rules Logging is enabled for all GCE firewall rules. This feature records network connections that match a firewall rule, providing crucial data for security auditing, incident response, and network troubleshooting.
🛡️ GCE Instance is located in a less cost-effective region🟢
This policy flags GCE Instances that are running in Google regions with higher pricing and could potentially be migrated to more cost-effective regions.
🛡️ GCE IP Address is unused🟢
Ensure that all static IP addresses in your Google Cloud Platform project are associated with a running resource. Unused external static IP addresses can incur unnecessary costs and may pose a security risk if they are inadvertently attached to a resource in the future.
🛡️ GCE Network allows unrestricted CiscoSecure/WebSM traffic🟢
Ensure that no GCE Firewall Rules allow unrestricted ingress access from any IP address (0.0.0.0/0) to CiscoSecure/WebSM port 9090.
🛡️ GCE Network allows unrestricted DNS traffic🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to the DNS port (53).
🛡️ GCE Network allows unrestricted POP3 traffic🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to the POP3 port (TCP 110).
🛡️ GCE Network allows unrestricted SMTP traffic🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to the SMTP port (TCP 25).
🛡️ GCE Network allows unrestricted SSH traffic🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to the SSH port (TCP 22).
🛡️ GCE Network allows unrestricted Telnet traffic🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to the Telnet port (TCP 23).
🛡️ GCE Network allows unrestricted traffic to all ports🟢
Ensure that no GCE Firewall Rules allow unrestricted ingress access from any IP address (0.0.0.0/0) to all ports.
🛡️ GCE Network allows unrestricted traffic to Cassandra🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to Cassandra ports (7000, 7001, 7199, 8888, 9042, 9160, 61620, 61621).
🛡️ GCE Network allows unrestricted traffic to Memcached🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to the Memcached ports (TCP/UDP 11211, 11214, or 11215).
🛡️ GCE Network allows unrestricted traffic to OracleDB🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to Oracle Database ports (TCP 1521, 2483, 2484).
🛡️ GCE Network allows unrestricted traffic to Redis🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to the Redis port (TCP 6379).
🛡️ GCE Network DNS Policy Logging is not enabled🟢
Cloud DNS logging records the queries from the name servers within your VPC to Stackdriver. Logged queries can come from Compute Engine VMs, GKE containers, or other GCP resources provisioned within the VPC.
🛡️ GCE Network has Firewall Rules which allow unrestricted Directory services access from the Internet🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to common Directory Services port 445.
🛡️ GCE Network has Firewall Rules which allow unrestricted MongoDB access from the Internet🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to MongoDB ports (TCP 27017-27019).
🛡️ GCE Network has Firewall Rules which allow unrestricted MySQL access from the Internet🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to the MySQL port (TCP 3306).
🛡️ GCE Network has Firewall Rules which allow unrestricted NetBIOS access from the Internet🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to NetBIOS ports (TCP/UDP 137, 138, 139).
🛡️ GCE Network has Firewall Rules which allow unrestricted RDP access from the Internet🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to the RDP port (TCP/UDP 3389).
🛡️ GCE Network has no egress deny Firewall Rule🟢
Ensure that every VPC Network includes at least one egress firewall rule with a deny action. Implementing a default-deny egress policy enforces the principle of least privilege by controlling and restricting outbound traffic from the network.
🛡️ GCE Subnetwork Flow Logs are not enabled🟢
Flow Logs is a feature that enables users to capture information about the IP traffic going to and from network interfaces in the organization's VPC Subnets. Once a flow log is created, the user can view and retrieve its data in Stackdriver Logging. It is recommended that Flow Logs be enabled for every business-critical VPC subnet.
🛡️ Global Administrator Role assigned to more than 4 users🟢⚪
This recommendation aims to maintain a balance between security and operational efficiency by ensuring that a minimum of 2 and a maximum of 4 users are assigned the Global Administrator role in Microsoft Entra ID. Having at least two Global Administrators ensures redundancy, while limiting the number to four reduces the risk of excessive privileged access.
🛡️ Google Accounts are not configured with MFA🟢⚪
Setup multi-factor authentication for Google Cloud Platform accounts.
🛡️ Google GCE Instance Should Have Breeze Agent Installed🟢
Ensure that Breeze Agent is installed on the GCE Instance. The Breeze Agent streams OS-level data into Cloudaware CMDB and seamlessly enables other Cloudaware modules such as Intrusion Detection (IDS), Vulnerability Scanning, Patch Management, CIS Benchmarking, and Event Monitoring.
🛡️ Google GCE Network allows unrestricted FTP traffic🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to FTP ports (TCP 20, 21).
🛡️ Google GCE Network allows unrestricted HTTP traffic🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to the HTTP port (TCP 80).
🛡️ Google GCE Network allows unrestricted LDAP traffic🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to common LDAP ports (389 and 636).
🛡️ Google GCE Network allows unrestricted traffic to Elasticsearch🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to Elasticsearch ports (TCP 9200, 9300).
🛡️ Google GCE Network allows unrestricted traffic to PostgreSQL🟢
GCP Firewall Rules should not allow unrestricted ingress traffic from the internet (0.0.0.0/0) to the PostgreSQL port (TCP/UDP 5432).
🛡️ Google Project has API Keys🟢
API Keys should only be used for services in cases where other authentication methods are unavailable. Unused keys with their permissions in tact may still exist within a project. Keys are insecure because they can be viewed publicly, such as from within a browser, or they can be accessed on a device where the key resides. It is recommended to use standard authentication flow instead.
🛡️ GREATER_THAN_EQUAL🟢
🛡️ GREATER_THAN🟢
🛡️ GuardDuty is not enabled in all regions🟢
Amazon GuardDuty is a threat detection service that continuously monitors for malicious activity and unauthorized behavior to protect your AWS accounts and workloads. It is recommended that GuardDuty be enabled in all supported AWS regions to ensure comprehensive threat coverage.
🛡️ Guest Invite Settings is not set to Only Users Assigned To Specific Admin Roles Can Invite Guest Users🟢
Restrict invitations to users with specific administrative roles only.
🛡️ Guest Users are not reviewed on a regular basis🟢⚪
Microsoft Entra ID has native and extended identity functionality allowing you to invite people from outside your organization to be guest users in your cloud account and sign in with their own work, school, or social identities.
🛡️ Guest Users restricted to their own directory objects🟢
Limit guest user permissions.
🛡️ HTTP(S) Load Balancer Logging is not enabled🟢
Logging enabled on a HTTPS Load Balancer will show all network traffic and its destination.
🛡️ HTTPS Only configuration is not enabled🟢
Azure Web Apps allows sites to run under both HTTP and HTTPS by default. Web apps can be accessed by anyone using non-secure HTTP links by default. Non-secure HTTP requests can be restricted and all HTTP requests redirected to the secure HTTPS port. It is recommended to enforce HTTPS-only traffic.
🛡️ HTTPS or SSL Proxy Load Balancer permits SSL policies with weak cipher suites🟢⚪
Secure Sockets Layer (SSL) policies determine what port Transport Layer Security (TLS) features clients are permitted to use when connecting to load balancers. To prevent usage of insecure features, SSL policies should use (a) at least TLS 1.2 with the MODERN profile; or (b) the RESTRICTED profile, because it effectively requires clients to use TLS 1.2 regardless of the chosen minimum TLS version; or (3) a CUSTOM profile that does not support any of the following features: TLS_RSA_WITH_AES_128_GCM_SHA256 TLS_RSA_WITH_AES_256_GCM_SHA384 TLS_RSA_WITH_AES_128_CBC_SHA TLS_RSA_WITH_AES_256_CBC_SHA TLS_RSA_WITH_3DES_EDE_CBC_SHA
🛡️ IAM Access Analyzer is not enabled for all regions🟢
Enable IAM Access analyzer for IAM policies about all resources in each active AWS region. IAM Access Analyzer is a technology introduced at AWS reinvent 2019. After the Analyzer is enabled in IAM, scan results are displayed on the console showing the accessible resources. Scans show resources that other accounts and federated users can access, such as KMS keys and IAM roles. So the results allow you to determine if an unintended user is allowed, making it easier for administrators to monitor least privileges access. Access Analyzer analyzes only policies that are applied to resources in the same AWS Region.
🛡️ IAM Password Policy minimum password length is 14 characters or less🟢
Password policies are, in part, used to enforce password complexity requirements. IAM password policies can be used to ensure password are at least a given length. It is recommended that the password policy require a minimum password length 14.
🛡️ IAM Password Policy Number of passwords to remember is not set to 24🟢
IAM password policies can prevent the reuse of a given password by the same user. It is recommended that the password policy prevent the reuse of passwords.
🛡️ IAM Policy Changes Monitoring is not enabled🟢⚪
Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs, or an external Security information and event management (SIEM) environment, and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established changes made to Identity and Access Management (IAM) policies.
🛡️ IAM Role Unused🟢
IAM provides last used information to help you identify unused roles so that you can remove them. An IAM role is considered unused if there has been no usage/activity for this role in the past 90 days. This helps you to better adhere to the best practice of least privilege.
🛡️ IAM Users are assigned the Service Account User or Service Account Token Creator roles at Project level🟢
It is recommended to assign the Service Account User (iam.serviceAccountUser) and Service Account Token Creator (iam.serviceAccountTokenCreator) roles to a user for a specific service account rather than assigning the role to a user at project level.
🛡️ Identity Aware Proxy (IAP) is not used to enforce access controls🟢⚪
IAP authenticates the user requests to your apps via a Google single sign in. You can then manage these users with permissions to control access. It is recommended to use both IAP permissions and firewalls to restrict this access to your apps with sensitive information.
🛡️ Instance allows public access to all ports🟢
Identify Azure VM Scale Set Instances that are associated with Network Interfaces linked to NSGs containing inbound rules that allow unrestricted traffic from the public internet(0.0.0.0/0, ::/0, Internet, Any, or *) to all destination ports (*, 0-65535, or unspecified). Restrict access to only the specific destination port and/or IP address ranges that require connectivity.
🛡️ Instance allows public access to CIFS port🟢
Ensure that Azure VM Scale Set Instances do not allow unrestricted public access to the CIFS port 445. Unrestricted access to CIFS from the public internet poses a significant security risk, potentially exposing file shares and sensitive data to unauthorized access and ransomware attacks.
🛡️ Instance allows public access to DNS port🟢
Ensure that Azure VM Scale Set Instances do not allow unrestricted public access to the DNS port 53. Exposing DNS to the internet from a VM can pose security risks, such as participation in DNS amplification attacks or unauthorized DNS resolution.
🛡️ Instance allows public access to FTP ports🟢
Ensure that Azure VM Scale Set Instances do not allow unrestricted public access to the FTP traffic (ports 20 and 21), which can expose systems to unauthorized access and potential attacks.
🛡️ Instance allows public access to HTTP(S) ports🟢
Ensure that Azure VM Scale Set Instances do not allow unrestricted public access to the HTTP/HTTPS ports 80 and 443. Where certain ports and protocols may be exposed to the Internet, they should be evaluated for necessity and restricted wherever they are not explicitly required.
🛡️ Instance allows public access to MongoDB ports🟢
Ensure that Azure VM Scale Set Instances are not exposed to unrestricted public access on MongoDB ports (27017-27020) and only accessible by authorized IP address ranges or internal networks.
🛡️ Instance allows public access to MSSQL port🟢
Ensure that Azure VM Scale Set Instances are not exposed to unrestricted public access on MSSQL ports (1433) and only accessible by authorized IP address ranges or internal networks.
🛡️ Instance allows public access to MySQL port🟢
Ensure that Azure VM Scale Set Instances are not exposed to unrestricted public access on MySQL ports (3306) and only accessible by authorized IP address ranges or internal networks.
🛡️ Instance allows public access to NetBIOS ports🟢
Ensure that Azure VM Scale Set Instances do not allow unrestricted public NetBIOS traffic (TCP/UDP 137, 138, 139).
🛡️ Instance allows public access to Oracle DBMS ports🟢
Ensure that Azure VM Scale Set Instances do not allow unrestricted public access to the Oracle DBMS (ports 1521, 1830, 2483 and 2484) by limiting access to trusted IP addresses or internal networks.
🛡️ Instance allows public access to PostgreSQL port🟢
Ensure that Azure VM Scale Set Instances do not allow unrestricted public access to the PostgreSQL port 5432 and only accessible by authorized IP address ranges or internal networks.
🛡️ Instance allows public access to RDP port🟢
Ensure that Azure VM Scale Set Instances do not allow unrestricted public RDP (port 3389) traffic.
🛡️ Instance allows public access to RPC port🟢
Ensure that Azure VM Scale Set Instances do not allow unrestricted public access to RPC port (135/TCP and 135/UDP). RPC protocol enables inter-process communication and, if improperly secured, can expose VMs to unauthorized access.
🛡️ Instance allows public access to SMTP port🟢
Ensure Azure VM Scale Set Instances do not allow unrestricted public access to the SMTP port 25.
🛡️ Instance allows public access to SSH port🟢
Ensure that Azure VM Scale Set Instances do not allow unrestricted public SSH (port 22) traffic.
🛡️ Instance allows public access to Telnet port🟢
Ensure Azure VM Scale Set Instances do not allow unrestricted public access to the Telnet port 23. Telnet is an insecure protocol that transmits data, including credentials, in plaintext, making it vulnerable to eavesdropping and unauthorized access.
🛡️ Instance allows public UDP access🟢
Ensure that Azure VM Scale Set Instances do not allow unrestricted public UDP protocol.
🛡️ Instance Auto Minor Version Upgrade is not enabled🟠🟢
Ensure that RDS database instances have the Auto Minor Version Upgrade flag enabled in order to receive automatically minor engine upgrades during the specified maintenance window. So, RDS instances can get the new features, bug fixes, and security patches for their database engines.
🛡️ Instance Automated Backups are not configured🟢
It is recommended to have all SQL database instances set to enable automated backups.
🛡️ Instance automated backups are not enabled🟢
Ensure that automated backups are enabled for AWS RDS DB instances. Automated backups allow you to recover your database to any point in time within your retention period.
🛡️ Instance Block Project-Wide SSH Keys is not enabled🟢
It is recommended to use Instance specific SSH key(s) instead of using common/shared project-wide SSH key(s) to access Instances.
🛡️ Instance Confidential Compute is not enabled🟢
Google Cloud encrypts data at-rest and in-transit, but customer data must be decrypted for processing. Confidential Computing is a breakthrough technology which encrypts data in-use, while it is being processed. Confidential Computing environments keep data encrypted in memory and elsewhere outside the central processing unit (CPU). Confidential VMs leverage the Secure Encrypted Virtualization (SEV) feature of AMD EPYC™ CPUs. Customer data will stay encrypted while it is used, indexed, queried, or trained on. Encryption keys are generated in hardware, per VM, and not exportable. Thanks to built-in hardware optimizations of both performance and security, there is no significant performance penalty to Confidential Computing workloads.
🛡️ Instance Detailed Monitoring is not enabled🟢
Ensure that detailed monitoring is enabled for Amazon EC2 instances. This configuration improves the granularity of monitoring data from AWS CloudWatch, enabling 1-minute data points instead of the default 5-minute intervals.
🛡️ Instance doesn't have the latest operating system updates installed🟢⚪
Google Cloud Virtual Machines have the ability via an OS Config agent API to periodically (about every 10 minutes) report OS inventory data. A patch compliance API periodically reads this data, and cross references metadata to determine if the latest updates are installed. This is not the only Patch Management solution available to your organization and you should weigh your needs before committing to using this method.
🛡️ Instance Enable Connecting to Serial Ports is not disabled🟢
Interacting with a serial port is often referred to as the serial console, which is similar to using a terminal window, in that input and output is entirely in text mode and there is no graphical interface or mouse support. If you enable the interactive serial console on an instance, clients can attempt to connect to that instance from any IP address. Therefore interactive serial console support should be disabled.
🛡️ Instance Encryption is not enabled🟢
Amazon RDS encrypted DB instances use the industry standard AES-256 encryption algorithm to encrypt your data on the server that hosts your Amazon RDS DB instances. After your data is encrypted, Amazon RDS handles authentication of access and decryption of your data transparently with a minimal impact on performance.
🛡️ Instance External Authorized Networks whitelists all public IP addresses🟢
Database Server should accept connections only from trusted Network(s)/IP(s) and restrict access from public IP addresses.
🛡️ Instance flow logs are not enabled🟢
Ensure that Amazon Connect Instances have CloudWatch logging enabled to capture contact flow logs.
🛡️ Instance has a public IP address🟢
Compute instances should not be configured to have external IP addresses.
🛡️ Instance has public IP addresses🟢
It is recommended to configure Second Generation Sql instance to use private IPs instead of public IPs.
🛡️ Instance IAM role is not attached🟢
AWS access from within AWS instances can be done by either encoding AWS keys into AWS API calls or by assigning the instance to a role which has an appropriate permissions policy for the required access. 'AWS Access' means accessing the APIs of AWS in order to access AWS resources or manage AWS account resources.
🛡️ Instance IMDSv2 is not enabled🟢
When enabling the Metadata Service on AWS EC2 instances, users have the option of using either Instance Metadata Service Version 1 (IMDSv1; a request/response method) or Instance Metadata Service Version 2 (IMDSv2; a session-oriented method).
🛡️ Instance IP Forwarding is not disabled.🟢
Compute Engine instance cannot forward a packet unless the source IP address of the packet matches the IP address of the instance. Similarly, GCP won't deliver a packet whose destination IP address is different than the IP address of the instance receiving the packet. However, both capabilities are required if you want to use instances to help route packets. Forwarding of data packets should be disabled to prevent data loss or information disclosure.
🛡️ Instance is configured to use the Default Service Account with full access to all Cloud APIs🟢
To support principle of least privileges and prevent potential privilege escalation it is recommended that instances are not assigned to default service account Compute Engine default service account with Scope Allow full access to all Cloud APIs.
🛡️ Instance is configured to use the Default Service Account🟢
It is recommended to configure your instance to not use the default Compute Engine service account because it has the Editor role on the project.
🛡️ Instance is idle🟢
Identify and address idle Amazon EC2 instances to optimize costs by stopping, terminating, or downscaling instances with low utilization. Instances are considered idle if their average CPU utilization is below 5%, maximum CPU utilization is below 15%, and average network I/O is below 100 MB over a 14-day period.
🛡️ Instance is idle🟢
Identify AWS RDS Instances that appear to be idle and take action to stop or terminate them. By default, an RDS instance is considered idle when it satisfies the following criteria over the past 30 days: 1) Average CPU utilization has been below 5%; and 2) The total number of database connections has been zero.
🛡️ Instance is idle🟢
Identify idle GCE Instances to optimize costs by stopping, terminating, or downscaling instances with low utilization. Instances are considered idle if their average CPU utilization is below 5%, maximum CPU utilization is below 15%, and average network I/O is below 100 MB over a 14-day period.
🛡️ Instance is idle🟢
Identify idle Google Cloud SQL Instances to optimize costs by stopping, terminating, or downscaling instances with low utilization. Instances are considered idle if their average CPU utilization is below 5% and they have an average of zero connections over a 30-day period.
🛡️ Instance is launched without Shielded VM enabled🟢
To defend against advanced threats and ensure that the boot loader and firmware on your VMs are signed and untampered, it is recommended that Compute instances are launched with Shielded VM enabled.
🛡️ Instance is located in a less cost-effective region🟢
This policy flags EC2 Instances that are running in AWS regions with higher pricing and could potentially be migrated to more cost-effective regions.
🛡️ Instance is located in a less cost-effective region🟢
This policy flags RDS Instances that are running in AWS regions with higher pricing and could potentially be migrated to more cost-effective regions.
🛡️ Instance is located in a less cost-effective region🟢
This policy flags SQL Instances that are running in Google regions with higher pricing and could potentially be migrated to more cost-effective regions.
🛡️ Instance is overutilized🟢
Identify and address overutilized Amazon EC2 instances to prevent performance degradation and optimize resource allocation. Instances are considered overutilized if their average CPU utilization exceeds 80% and maximum CPU utilization consistently spikes above 95% over a 14-day period.
🛡️ Instance is overutilized🟢
Identify any AWS RDS Instances that appear to be overutilized. Instances are considered overutilized if its average CPU utilization is consistently above 90% over a 30-day period.
🛡️ Instance is publicly accessible and in an unrestricted public subnet🟢
Ensure and verify that RDS database instances provisioned in your AWS account do restrict unauthorized access in order to minimize security risks. To restrict access to any publicly accessible RDS database instance, you must disable the database Publicly Accessible flag and update the VPC security group associated with the instance.
🛡️ Instance is underutilized🟢
Identify and address underutilized Amazon EC2 instances to optimize costs and improve efficiency. Instances are considered underutilized if their average CPU utilization is consistently below 40% and maximum CPU utilization does not spike above 50% over a 14-day period. These instances might be oversized for their workload.
🛡️ Instance is underutilized🟢
Instances are considered underutilized if their average CPU utilization is consistently below 20% and their disk I/O is below 50 IOPS over a 30-day period. Such instances might be oversized for their workload.
🛡️ Instance is underutilized🟢
GCE Instances are considered underutilized if their average CPU utilization is consistently below 40% and maximum CPU utilization does not spike above 50% over a 14-day period. These instances might be oversized for their workload.
🛡️ Instance is underutilized🟢
This policy checks Cloud SQL Instances that appear to be underutilized and downsize (resize) them to optimize cloud expenditure. By default, a SQL Instance is considered underutilized if its average CPU utilization is below 20%, Memory utilization is below 40%, and Disk I/O < 50 IOPS over a 30-day period.
🛡️ Instance Multi-AZ Deployment is not enabled🟢
Amazon RDS offers Multi-AZ deployments that provide enhanced availability and durability for your databases, using synchronous replication to replicate data to a standby instance in a different Availability Zone (AZ). In the event of an infrastructure failure, Amazon RDS automatically fails over to the standby to minimize downtime and ensure business continuity.
🛡️ Instance OS Login is not enabled🟢
Enabling OS login binds SSH certificates to IAM users and facilitates effective SSH certificate management.
🛡️ Instance SSL Connections are not enforced🟢
It is recommended to enforce all incoming connections to SQL database instance to use SSL.
🛡️ Instance uses default endpoint port🟢
Ensure that your Amazon RDS databases instances are not using their default endpoint ports (i.e. MySQL/Aurora port 3306, SQL Server port 1433, PostgreSQL port 5432, etc) in order to promote port obfuscation as an additional layer of defense against non-targeted attacks.
🛡️ Instance uses paravirtual Virtualization Type🟢
Ensure that Amazon EC2 instances are using Hardware Virtual Machine (HVM) virtualization instead of the legacy paravirtual (PV) type to take advantage of enhanced performance and access to the latest AWS features and instance types.
🛡️ Instance with an auto-assigned public IP address is in a default subnet🟢
EC2 instances launched into a default subnet are automatically assigned both public and private IPv4 addresses, which may result in unintended public exposure.
🛡️ Instance without a public IP address is in a public subnet🟢
Migrate EC2 instances that don't need internet access to a private subnet, or remove the direct route to an Internet Gateway within the subnet. EC2 Instances without a public IPv4/IPv6 address are unable to connect to the internet thus making it a potential misconfiguration that can lead to security breaches, convoluted network architecture, and unnecessary management overhead. Consider using a bastion host or NAT device to provide internet access to EC2 instances that do not require to be public.
🛡️ Integration With Microsoft Defender For Cloud Apps is not enabled🟢
This integration setting enables Microsoft Defender for Cloud Apps (formerly 'Microsoft Cloud App Security' or 'MCAS' - see additional info) to communicate with Microsoft Defender for Cloud.
🛡️ Integration With Microsoft Defender For Endpoint is not enabled🟢
This integration setting enables Microsoft Defender for Endpoint (formerly 'Advanced Threat Protection' or 'ATP' or 'WDATP' - see additional info) to communicate with Microsoft Defender for Cloud.
🛡️ Intune logs are not captured and sent to Log Analytics🟢⚪
Ensure that Intune logs are captured and fed into a central log analytics workspace.
🛡️ IS_AFTER_TODAY🟢
🛡️ IS_BEFORE_TODAY🟢
🛡️ IS_BEYOND_LAST_DAYS🟢
🛡️ IS_BEYOND_NEXT_DAYS🟢
🛡️ IS_WITHIN_LAST_DAYS🟢
🛡️ IS_WITHIN_NEXT_DAYS🟢
🛡️ JsonType🟢
🛡️ JsonType🟢
🛡️ Key Vault Managed HSM is used🟢⚪
Azure Key Vault Managed HSM is a fully managed, highly available, single-tenant cloud service that safeguards cryptographic keys using FIPS 140-2 Level 3 validated HSMs.
🛡️ LESS_THAN_EQUAL🟢
🛡️ LESS_THAN🟢
🛡️ Load Balancer Cross-Zone Load Balancing is not enabled🟢
Ensures that AWS ELB Load Balancers have cross-zone load balancing enabled to distribute traffic evenly across all registered instances in all enabled Availability Zones.
🛡️ Load Balancer is not registered to multiple Availability Zones🟢
Ensures that AWS ELB Load Balancers are configured for high availability by being registered in more than one Availability Zone.
🛡️ Load Balancer is unused🟢
Ensure that AWS Elastic Load Balancers are actively serving traffic. A load balancer is considered unused if it has no listeners configured or no healthy instances or targets registered. Unused load balancers can incur costs without providing any benefit and may represent a misconfiguration in the environment.
🛡️ Log Analytics Agent is not auto provisioned🟢
Enable automatic provisioning of the monitoring agent to collect security data.
🛡️ Log File Validation is not enabled🟢
CloudTrail log file validation creates a digitally signed digest file containing a hash of each log that CloudTrail writes to S3. These digest files can be used to determine whether a log file was changed, deleted, or unchanged after CloudTrail delivered the log. It is recommended that file validation be enabled on all CloudTrails.
🛡️ Log Metric Filter and Alerts Cloud Storage IAM Permission Changes do not exist🟢
It is recommended that a metric filter and alarm be established for Cloud Storage Bucket IAM changes.
🛡️ Log Metric Filter and Alerts for Audit Configuration Changes do not exist🟢
Google Cloud Platform (GCP) services write audit log entries to the Admin Activity and Data Access logs to help answer the questions of, 'who did what, where, and when?' within GCP projects.
🛡️ Log Metric Filter and Alerts for Custom Role Changes do not exist🟢
It is recommended that a metric filter and alarm be established for changes to Identity and Access Management (IAM) role creation, deletion and updating activities.
🛡️ Log Metric Filter and Alerts for Project Ownership Assignments Changes do not exist🟢
In order to prevent unnecessary project ownership assignments to users/service-accounts and further misuses of projects and resources, all roles/Owner assignments should be monitored.
🛡️ Log Metric Filter and Alerts for SQL Instance Configuration Changes do not exist🟢
It is recommended that a metric filter and alarm be established for SQL instance configuration changes.
🛡️ Log Metric Filter and Alerts for VPC Network Changes do not exist🟢
It is recommended that a metric filter and alarm be established for Virtual Private Cloud (VPC) network changes.
🛡️ Log Metric Filter and Alerts for VPC Network Firewall Rule Changes do not exist🟢
It is recommended that a metric filter and alarm be established for Virtual Private Cloud (VPC) Network Firewall rule changes.
🛡️ Log Metric Filter and Alerts for VPC Network Route Changes do not exist🟢
It is recommended that a metric filter and alarm be established for Virtual Private Cloud (VPC) network route changes.
🛡️ Log Sink for All Log Entries is not configured🟢
It is recommended to create a sink that will export copies of all the log entries. This can help aggregate logs from multiple projects and export them to a Security Information and Event Management (SIEM).
🛡️ Managed Disk Data Access Auth Mode is not set to Azure Active Directory🟢
Enabling data access authentication mode adds a layer of protection using an Entra ID role to further restrict users from creating and using Secure Access Signature (SAS) tokens for exporting a detached managed disk or virtual machine state.
🛡️ Managed Disk is not attached to any Virtual Machine🟢
Consider deleting or archiving a managed disk that is not attached to any virtual machine for more than 30 days.
🛡️ Managed Disk Public Network Access is not disabled🟢
The setting 'Enable public access from all networks' is, in many cases, an overly permissive setting on Virtual Machine Disks that presents atypical attack, data infiltration, and data exfiltration vectors. If a disk to network connection is required, the preferred setup is to disable public access and enable private access.
🛡️ Managed Disk Snapshot is 90 days old or more🟢
Consider deleting or archiving Azure Managed Disk Snapshots that are 90 days old or more.
🛡️ Managed Disk Snapshot is stored on Premium SSDs Managed Disk storage🟢
Ensure Azure Managed Disk snapshots are stored on Standard storage instead of Premium SSDs Managed Disk storage.
🛡️ Managed Instance is located in a less cost-effective region🟢
This policy flags SQL Managed Instance that are running in Azure regions with higher pricing and could potentially be migrated to more cost-effective regions.
🛡️ Managed Instance is underutilized🟢
Identify underutilized Azure SQL Managed Instances to optimize costs by downscaling instances with low utilization. Instances are considered underutilized if their average CPU utilization is below 20%, and average disk I/O is below 50 MB over a 30-day period.
🛡️ Managed Zone DNSSEC is not enabled🟢
Cloud Domain Name System (DNS) is a fast, reliable and cost-effective domain name system that powers millions of domains on the internet. Domain Name System Security Extensions (DNSSEC) in Cloud DNS enables domain owners to take easy steps to protect their domains against DNS hijacking and man-in-the-middle and other attacks.
🛡️ Managed Zone DNSSEC Key-Signing Algorithm is RSASHA1🟢
DNSSEC algorithm numbers in this registry may be used in CERT RRs. Zone signing (DNSSEC) and transaction security mechanisms (SIG(0) and TSIG) make use of particular subsets of these algorithms. The algorithm used for key signing should be a recommended one and it should be strong.
🛡️ Managed Zone DNSSEC Zone-Signing Algorithm is RSASHA1🟢
DNSSEC algorithm numbers in this registry may be used in CERT RRs. Zone signing (DNSSEC) and transaction security mechanisms (SIG(0) and TSIG) make use of particular subsets of these algorithms. The algorithm used for key signing should be a recommended one and it should be strong.
🛡️ Management Console Authentication Failures Monitoring is not enabled🟢⚪
Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs, or an external Security information and event management (SIEM) environment, and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for failed console authentication attempts.
🛡️ Management Console Sign-In without MFA Monitoring is not enabled🟢⚪
Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs, or an external Security information and event management (SIEM) environment, and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for console logins that are not protected by multi-factor authentication (MFA).
🛡️ Memcached Cluster is underutilized🟢
Memcached Clusters are considered underutilized if their average CPU utilization is consistently below 40% over a 30-day period. These clusters might be oversized for their workload.
🛡️ Metric Alarm does not have any actions configured🟢
Ensure that Amazon CloudWatch alarms are configured with at least one action for the ALARM, INSUFFICIENT_DATA, or OK states. Actions are essential for notifying personnel or triggering automated responses when an alarm changes state, ensuring that operational or security events are not missed.
🛡️ MFA For Administrators is not required🟢⚪
For designated users, they will be prompted to use their multi-factor authentication (MFA) process on login.
🛡️ MFA For All Users is not required🟢⚪
For designated users, they will be prompted to use their multi-factor authentication (MFA) process on logins.
🛡️ MFA For Risky Sign-Ins is not required🟢⚪
For designated users, they will be prompted to use their multi-factor authentication (MFA) process on login.
🛡️ MFA For Windows Azure Service Management API is not required🟢⚪
This recommendation ensures that users accessing the Windows Azure Service Management API (i.e. Azure Powershell, Azure CLI, Azure Resource Manager API, etc.) are required to use multifactor authentication (MFA) credentials when accessing resources through the Windows Azure Service Management API.
🛡️ MFA is not enabled🟢
Ensure that Multi-Factor Authentication (MFA) is enabled for Snowflake Users to provide an additional layer of security. MFA support is provided as an integrated Snowflake feature, powered by the Duo Security service, which is managed completely by Snowflake.
🛡️ MFA To Access Microsoft Admin Portals is not required🟢⚪
This recommendation ensures that users accessing Microsoft Admin Portals (i.e. Microsoft 365 Admin, Microsoft 365 Defender, Exchange Admin Center, Azure Portal, etc.) are required to use multifactor authentication (MFA) credentials when logging into an Admin Portal.
🛡️ Microsoft Cloud Security Benchmark policies are disabled🟢⚪
The Microsoft Cloud Security Benchmark (or 'MCSB') is an Azure Policy Initiative containing many security policies to evaluate resource configuration against best practice recommendations. If a policy in the MCSB is set with effect type Disabled, it is not evaluated and may prevent administrators from being informed of valuable security recommendations.
🛡️ Microsoft Defender For (Managed Instance) Azure SQL Databases is not set to On🟢
Turning on Microsoft Defender for Azure SQL Databases enables threat detection for Managed Instance Azure SQL databases, providing threat intelligence, anomaly detection, and behavior analytics in Microsoft Defender for Cloud.
🛡️ Microsoft Defender For App Services is not set to On🟢
Turning on Microsoft Defender for App Service enables threat detection for App Service, providing threat intelligence, anomaly detection, and behavior analytics in the Microsoft Defender for Cloud.
🛡️ Microsoft Defender For Azure Cosmos DB is not set to On🟢
Microsoft Defender for Azure Cosmos DB scans all incoming network requests for threats to your Azure Cosmos DB resources.
🛡️ Microsoft Defender For Containers is not set to On🟢
Turning on Microsoft Defender for Containers enables threat detection for Container Registries including Kubernetes, providing threat intelligence, anomaly detection, and behavior analytics in the Microsoft Defender for Cloud.
🛡️ Microsoft Defender For IoT Hub is not set to On🟢⚪
Microsoft Defender for IoT acts as a central security hub for IoT devices within your organization.
🛡️ Microsoft Defender For Key Vault is not set to On🟢
Turning on Microsoft Defender for Key Vault enables threat detection for Key Vault, providing threat intelligence, anomaly detection, and behavior analytics in the Microsoft Defender for Cloud.
🛡️ Microsoft Defender For Open-Source Relational Databases is not set to On🟢
Turning on Microsoft Defender for Open-source relational databases enables threat detection for Open-source relational databases, providing threat intelligence, anomaly detection, and behavior analytics in the Microsoft Defender for Cloud.
🛡️ Microsoft Defender For Resource Manager is not set to On🟢
Microsoft Defender for Resource Manager scans incoming administrative requests to change your infrastructure from both CLI and the Azure portal.
🛡️ Microsoft Defender For Servers is not set to On🟢
Turning on Microsoft Defender for Servers enables threat detection for Servers, providing threat intelligence, anomaly detection, and behavior analytics in the Microsoft Defender for Cloud.
🛡️ Microsoft Defender For SQL Servers On Machines is not set to On🟢
Turning on Microsoft Defender for SQL Servers on Machines enables threat detection for SQL Servers on Machines, providing threat intelligence, anomaly detection, and behavior analytics in Microsoft Defender for Cloud.
🛡️ Microsoft Defender For Storage is not set to On🟢
Turning on Microsoft Defender for Storage enables threat detection for Storage, providing threat intelligence, anomaly detection, and behavior analytics in the Microsoft Defender for Cloud.
🛡️ Migration Task Logging is not enabled🟢
Ensure that CloudWatch logging is enabled for AWS DMS Replication Tasks.
🛡️ Minimum TLS Version is not set to TLS 1.2 or higher🟢
The TLS (Transport Layer Security) protocol secures transmission of data over the internet using standard encryption technology. Encryption should be set with the latest version of TLS. App service allows TLS 1.2 by default, which is the recommended TLS level by industry standards such as PCI DSS.
🛡️ Minimum TLS Version is not set to TLS 1.2 or higher🟢
In some cases, Azure Storage sets the minimum TLS version to be version 1.0 by default. TLS 1.0 is a legacy version and has known vulnerabilities. This minimum TLS version can be configured to be later protocols such as TLS 1.2.
🛡️ Multi-AZ Cluster Auto Minor Version Upgrade is not enabled🟢
Ensure that RDS Multi-AZ database clusters have the Auto Minor Version Upgrade flag enabled in order to receive automatically minor engine upgrades, including security patches and bug fixes.
🛡️ Multi-Region CloudTrail is not enabled🟢
AWS CloudTrail is a web service that records AWS API calls for your account and delivers log files to you. The recorded information includes the identity of the API caller, the time of the API call, the source IP address of the API caller, the request parameters, and the response elements returned by the AWS service.
🛡️ MySQL Instance allows anyone to connect with administrative privileges🟢⚪
It is recommended to set a password for the administrative user (root by default) to prevent unauthorized access to the SQL database instances. This recommendation is applicable only for MySQL Instances. PostgreSQL does not offer any setting for No Password from the cloud console.
🛡️ MySQL Instance Local_infile Database Flag is not set to off🟢
It is recommended to set the `local_infile` database flag for a Cloud SQL MySQL instance to `off`.
🛡️ MySQL Instance Skip_show_database Database Flag is not set to on🟢
It is recommended to set skip_show_database database flag for Cloud SQL Mysql instance to on
🛡️ Named Locations are not defined🟢⚪
Microsoft Entra ID Conditional Access allows an organization to configure Named locations and configure whether those locations are trusted or untrusted. These settings provide organizations the means to specify Geographical locations for use in conditional access policies, or define actual IP addresses and IP ranges and whether or not those IP addresses and/or ranges are trusted by the organization.
🛡️ Network Access Control Lists Changes Monitoring is not enabled🟢⚪
Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs, or an external Security information and event management (SIEM) environment, and establishing corresponding metric filters and alarms. NACLs are used as a stateless packet filter to control ingress and egress traffic for subnets within a VPC. It is recommended that a metric filter and alarm be established for changes made to NACLs.
🛡️ Network ACL exposes admin ports to public internet🟢
The Network Access Control List (NACL) function provide stateless filtering of ingress and egress network traffic to AWS resources. It is recommended that no NACL allows unrestricted ingress access to remote server administration ports, such as SSH to port 22 and RDP to port 3389, using either the TCP (6), UDP (17) or ALL (-1) protocols.
🛡️ Network ACL is unused🟢
Network NACLs that are not associated with any subnets are considered unused. While unused NACLs do not incur direct costs, they can represent a security risk if they contain misconfigured rules and are later associated with a subnet.
🛡️ Network Gateways Changes Monitoring is not enabled🟢⚪
Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs, or an external Security information and event management (SIEM) environment, and establishing corresponding metric filters and alarms. Network gateways are required to send/receive traffic to a destination outside of a VPC. It is recommended that a metric filter and alarm be established for changes to network gateways.
🛡️ Network Security Group Flow Logs are not captured and sent to Log Analytics Workspace🟢⚪
Ensure that network flow logs are captured and fed into a central log analytics workspace.
🛡️ Network Watcher is not enabled in every available region🟢
Network diagnostic and visualization tools available with Network Watcher help users understand, diagnose, and gain insights to the network in Azure.
🛡️ Non-RBAC Key Vault stores Keys without expiration date🟢
Ensure that all Keys in Non Role Based Access Control (RBAC) Azure Key Vaults have an expiration date set.
🛡️ Non-RBAC Key Vault stores Secrets without expiration date🟢
Ensure that all Secrets in Non Role Based Access Control (RBAC) Azure Key Vaults have an expiration date set.
🛡️ Notify All Admins When Other Admins Reset Their Password is set No🟢⚪
Ensure that all Global Administrators are notified if any other administrator resets their password.
🛡️ Notify Users On Password Resets is set to No🟢⚪
Ensure that users are notified on their primary and secondary emails on password resets.
🛡️ NumberType🟢
🛡️ NumberType🟢
🛡️ Object-level CloudTrail Logging for Read Events for S3 Buckets is not enabled🟢
S3 object-level API operations such as GetObject, DeleteObject, and PutObject are called data events. By default, CloudTrail trails don't log data events and so it is recommended to enable Object-level logging for S3 buckets.
🛡️ Object-level CloudTrail Logging for Write Events for S3 Buckets is not enabled🟢
S3 object-level API operations such as GetObject, DeleteObject, and PutObject are called data events. By default, CloudTrail trails don't log data events and so it is recommended to enable Object-level logging for S3 buckets.
🛡️ og Sink exports logs to a Storage Bucket without Bucket Lock🟢
Enabling retention policies on log buckets will protect logs stored in cloud storage buckets from being overwritten or accidentally deleted. It is recommended to set up retention policies and configure Bucket Lock on all storage buckets that are used as log sinks.
🛡️ OR🟢
🛡️ Organization Administrator Security Key Enforcement is not enabled🟢⚪
Setup Security Key Enforcement for Google Cloud Platform admin accounts.
🛡️ Organization Essential Contacts is not configured🟢
It is recommended that Essential Contacts is configured to designate email addresses for Google Cloud services to notify of important technical or security information.
🛡️ Organization has a Redis IAM role assigned🟢
Ensure that predefined Redis IAM roles are not assigned at the organization level. These roles should be scoped to individual projects where Redis is used.
🛡️ OS and Data disks are not encrypted with Customer-managed key🟢
Ensure that OS disks (boot volumes) and data disks (non-boot volumes) are encrypted with CMK (Customer Managed Keys). Customer Managed keys can be either ADE or Server Side Encryption (SSE).
🛡️ Owners Can Manage Group Membership Requests In The Access Panel is set to Yes🟢⚪
Restrict security group management to administrators only.
🛡️ Password is not rotated every 90 days🟢
Ensure that Snowflake User passwords are rotated at regular intervals.
🛡️ Physical Server Should Have Breeze Agent Installed🟢
Ensure that Breeze Agent is installed on the Physical Server. The Breeze Agent streams OS-level data into Cloudaware CMDB and seamlessly enables other Cloudaware modules such as Intrusion Detection (IDS), Vulnerability Scanning, Patch Management, CIS Benchmarking, and Event Monitoring.
🛡️ Policy (Customer Managed) Contains Potential Credentials Exposure🔴🟠
Policies with Credentials Exposure potential allow certain IAM actions without resource constraints. Policy will produce a violation if it detects a statement that contains any of the following action with Effect: Allow, Resource: *. Conditions are not being checked. Actions: chime:CreateApiKey, codepipeline:PollForJobs, cognito-identity:GetOpenIdToken, cognito-identity:GetOpenIdTokenForDeveloperIdentity, cognito-identity:GetCredentialsForIdentity, connect:GetFederationToken, ecr:GetAuthorizationToken, gamelift:RequestUploadCredentials, iam:CreateAccessKey, iam:CreateLoginProfile, iam:CreateServiceSpecificCredential, iam:ResetServiceSpecificCredential, iam:UpdateAccessKey, lightsail:GetInstanceAccessDetails, lightsail:GetRelationalDatabaseMasterUserPassword, rds-db:connect, redshift:GetClusterCredentials, sso:GetRoleCredentials, mediapackage:RotateChannelCredentials, mediapackage:RotateIngestEndpointCredentials, sts:AssumeRole, sts:AssumeRoleWithSAML, sts:AssumeRoleWithWebIdentity, sts:GetFederationToken, sts:GetSessionToken
🛡️ Policy allows full administrative privileges🟢
IAM policies are the means by which privileges are granted to users, groups, or roles. It is recommended and considered a standard security advice to grant least privilege -that is, granting only the permissions required to perform a task. Determine what users need to do and then craft policies for them that let the users perform only those tasks, instead of allowing full administrative privileges.
🛡️ PostgreSQL Instance `Log_error_verbosity` Database Flag is not set to DEFAULT or stricter🟢
The log_error_verbosity flag controls the verbosity/details of messages logged. Valid values are: TERSE, DEFAULT, VERBOSE. TERSE excludes the logging of DETAIL, HINT, QUERY, and CONTEXT error information. VERBOSE output includes the SQLSTATE error code, source code file name, function name, and line number that generated the error. Ensure an appropriate value is set to 'DEFAULT' or stricter.
🛡️ PostgreSQL Instance cloudsql.enable_pgaudit Database Flag is not set to on🟢
Ensure cloudsql.enable_pgaudit database flag for Cloud SQL PostgreSQL instance is set to on to allow for centralized logging.
🛡️ PostgreSQL Instance Log_checkpoints Database Flag is not set to On🟢
Ensure that the `log_checkpoints` database flag for the Cloud SQL PostgreSQL instance is set to `on`.
🛡️ PostgreSQL Instance Log_connections Database Flag is not set to On🟢
Enabling the log_connections setting causes each attempted connection to the server to be logged, along with successful completion of client authentication. This parameter cannot be changed after the session starts.
🛡️ PostgreSQL Instance Log_disconnections Database Flag is not set to On🟢
Enabling the log_disconnections setting logs the end of each session, including the session duration.
🛡️ PostgreSQL Instance Log_min_duration_statement Database Flag is not set to `-1` (Disabled)🟢
The log_min_duration_statement flag defines the minimum amount of execution time of a statement in milliseconds where the total duration of the statement is logged. Ensure that log_min_duration_statement is disabled, i.e., a value of -1 is set.
🛡️ PostgreSQL Instance Log_min_error_statement Database Flag is not set to Error or stricter🟢
The log_min_error_statement flag defines the minimum message severity level that are considered as an error statement. Messages for error statements are logged with the SQL statement. Valid values include (from lowest to highest severity) DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, and PANIC. Each severity level includes the subsequent levels mentioned above. Ensure a value of ERROR or stricter is set.
🛡️ PostgreSQL Instance Log_min_messages Database Flag is not set at minimum to Warning🟢
The log_min_messages flag defines the minimum message severity level that is considered as an error statement. Messages for error statements are logged with the SQL statement. Valid values include (from lowest to highest severity) DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, and PANIC. Each severity level includes the subsequent levels mentioned above. WARNING is considered the best practice setting. Changes should only be made in accordance with the organization's logging policy.
🛡️ PostgreSQL Instance Log_statement Database Flag is not set appropriately🟢
The value of log_statement flag determined the SQL statements that are logged. Valid values are: none, ddl, mod, all. The value ddl logs all data definition statements. The value mod logs all ddl statements, plus data-modifying statements. The statements are logged after a basic parsing is done and statement type is determined, thus this does not logs statements with errors. When using extended query protocol, logging occurs after an Execute message is received and values of the Bind parameters are included. A value of 'ddl' is recommended unless otherwise directed by your organization's logging policy.
🛡️ PostgreSQL Instance log_temp_files Database Flag is not set to 0🟢
Ensure that the `log_temp_files` database flag for the Cloud SQL PostgreSQL instance is set to `0`.
🛡️ Primary Contact information is not current🔴🟢⚪
Ensure contact email and telephone details for AWS accounts are current and map to more than one individual in your organization. An AWS account supports a number of contact details, and AWS will use these to contact the account owner if activity judged to be in breach of Acceptable Use Policy or indicative of likely security compromise is observed by the AWS Abuse team. Contact details should not be for a single individual, as circumstances may arise where that individual is unavailable. Email contact details should point to a mail alias which forwards email to multiple individuals within the organization; where feasible, phone contact details should point to a PABX hunt group or other call-forwarding system.
🛡️ Private Endpoints are not used🟢
Private endpoints limit network traffic to approved sources.
🛡️ Private Endpoints are not used🟢
Private endpoints will secure network traffic from Azure Key Vault to the resources requesting secrets and keys.
🛡️ Private Endpoints are not used🟢
Use private endpoints for your Azure Storage accounts to allow clients and services to securely access data located over a network via an encrypted Private Link. Securing traffic between services through encryption protects the data from easy interception and reading.
🛡️ Privileged Role Assignments are not periodically reviewed🟢⚪
Periodic review of privileged role assignments is performed to ensure that the privileged roles assigned to users are accurate and appropriate.
🛡️ Privileged Virtual Machine is accessed by identities without MFA🟢⚪
Verify identities without MFA that can log in to a privileged virtual machine using separate login credentials. An adversary can leverage the access to move laterally and perform actions with the virtual machine's managed identity. Make sure the virtual machine only has necessary permissions, and revoke the admin-level permissions according to the least privileges principal.
🛡️ Project Bitbucket Source Location URL contains credentials🟢
Ensures that AWS CodeBuild Project Bitbucket source repository URLs do not contain user credentials.
🛡️ Project has a default network🟢
To prevent use of default network, a project should not have a default network.
🛡️ Project has a legacy network🟢
In order to prevent use of legacy networks, a project should not have a legacy network configured. As of now, Legacy Networks are gradually being phased out, and you can no longer create projects with them. This recommendation is to check older projects to ensure that they are not using Legacy Networks.
🛡️ Project with KMS keys has a principal with Owner role🟢
Ensure that projects containing cryptographic keys do not grant the primitive Owner role to any principal, in order to enforce the principle of least privilege and separation of duties. Assigning the Owner role provides unrestricted access to all resources within the project, including the ability to manage and use sensitive cryptographic keys, which creates a significant security risk.
🛡️ Provisioned Table Auto Scaling is not configured🟢
Ensure that Amazon DynamoDB tables are configured to automatically scale read and write capacity to meet demand. This can be achieved by using On-Demand capacity mode or by configuring Auto Scaling for provisioned throughput. This helps maintain performance during traffic spikes and can optimize costs during periods of low activity.
🛡️ Public IP Address is not associated with any resource🟢
Consider deleting public IP addresses that are not attached to a virtual machine, network interface, internet-facing load balancer, VPN gateway, or application gateway.
🛡️ Public IP Addresses are not evaluated periodically🟢⚪
Public IP Addresses provide tenant accounts with Internet connectivity for resources contained within the tenant. During the creation of certain resources in Azure, a Public IP Address may be created. All Public IP Addresses within the tenant should be periodically reviewed for accuracy and necessity.
🛡️ Public Network Access is enabled🟢
When a Private Endpoint is configured on a Key Vault, traffic from resources within the same subnet routes through the Vault's private IP. However, the public endpoint (mykeyvault.vault.azure.net) remains accessible unless Public network access is explicitly set to Disabled. Disabling public network access removes the public DNS entry, ensuring all traffic is routed through the private endpoint (mykeyvault.vault.privatelink.azure.net), thereby reducing exposure to the public internet.
🛡️ Public Network Access is not disabled🟢
Disallowing public network access for a storage account overrides the public access settings for individual containers in that storage account for Azure Resource Manager Deployment Model storage accounts.
🛡️ Queue Logging is not enabled for Read, Write, and Delete requests🟢
The Storage Queue service stores messages that may be read by any client who has access to the storage account. Storage Logging happens server-side and allows details for both successful and failed requests to be recorded in the storage account. These logs allow users to see the details of read, write, and delete operations against the queues.
🛡️ RBAC Key Vault stores Keys without expiration date🟢
Ensure that all Keys in Role Based Access Control (RBAC) Azure Key Vaults have an expiration date set.
🛡️ RBAC Key Vault stores Secrets without expiration date🟢
Ensure that all Secrets in Role Based Access Control (RBAC) Azure Key Vaults have an expiration date set.
🛡️ Recommendations for Apply System Updates are not completed🟢⚪
Ensure that the latest OS patches for all virtual machines are applied.
🛡️ Reconfirm Authentication Information is set to 0🟢⚪
Ensure that the number of days before users are asked to re-confirm their authentication information is not set to 0.
🛡️ Recovery Point is expired and failed to delete🟢
Ensures that expired AWS Backup Recovery Points did not fail to delete. This is indicated by recovery points being past their calculated deletion date, or having no calculated deletion date. This can lead to unnecessary costs and data retention issues.
🛡️ Redis Cluster Auto Minor Version Upgrade is not enabled🟢
Ensure that ElastiCache Redis clusters have the Auto Minor Version Upgrade flag enabled in order to receive automatically minor engine upgrades during the specified maintenance window.
🛡️ Redis Cluster automatic backups are not enabled🟢
Ensure that AWS ElastiCache clusters for Valkey and Redis OSS have automatic backups enabled to facilitate point-in-time recovery and protect against data loss.
🛡️ Remember MFA devices setting is disabled🟢⚪
Do not allow users to remember multi-factor authentication on devices.
🛡️ Remote Debugging is not disabled🟢
Remote Debugging allows Azure App Service to be debugged in real-time directly on the Azure environment. When remote debugging is enabled, it opens a communication channel that could potentially be exploited by unauthorized users if not properly secured.
🛡️ Replication Instance Auto Minor Version Upgrade is not enabled🟢
Ensure that AWS DMS Replication Instances have the Auto Minor Version Upgrade feature enabled to automatically receive the latest minor engine upgrades, which include security patches, bug fixes, and new features.
🛡️ Replication Instance is publicly accessible🟢
Ensure that AWS Database Migration Service (DMS) replication instances are not publicly accessible to minimize security risks such as unauthorized access, denial-of-service attacks, and data exfiltration.
🛡️ Repository Image Tag Mutability is set to Mutable🟢
Ensure that AWS ECR Repositories are configured with image tag immutability. Setting tags to immutable prevents image tags from being overwritten.
🛡️ Repository Lifecycle Policy is not configured🟢
Ensure that Amazon ECR repositories have a lifecycle policy configured to automatically manage and clean up unused container images, which helps reduce storage costs and maintain repository hygiene.
🛡️ Repository Manual Scanning is enabled🟢
AWS ECR Repository can be configured to automatically scan container images for software vulnerabilities. It is recommended to enable Scan On Push or Enhanced Scanning to ensure vulnerabilities are identified as soon as an image is pushed to the registry, rather than relying on manual scans.
🛡️ Require Infrastructure Encryption is not enabled🟢
Make sure to enable encryption at the hardware level on top of the default software encryption for Storage Accounts accessing Azure storage solutions.
🛡️ Require MFA to register or join devices with Microsoft Entra ID is set to No🟢⚪
Joining or registering devices to Microsoft Entra ID should require Multi-factor authentication.
🛡️ Reservation expired in the last 30 days🟢
Identify Azure Reservations that have expired within the last 30 days. and ensure that these expirations were intentional.
🛡️ Reservation expires in the next 60 days🟢
Ensure that expiring Azure Reservations are tracked renewed or addressed beforehand to avoid service disruptions or loss of discounts. Proactive renewal maintains cost efficiency and ensures resources remain covered by reservations.
🛡️ Resource Lock Administrator Custom Role does not exist🟢⚪
Resource locking is a powerful protection mechanism that can prevent inadvertent modification/deletion of resources within Azure subscriptions/Resource Groups and is a recommended NIST configuration.
🛡️ Resource Lock is not enabled for mission-critical resources🟢⚪
Resource Manager Locks provide a way for administrators to lock down Azure resources to prevent deletion of, or modifications to, a resource. These locks sit outside of the Role Based Access Controls (RBAC) hierarchy and, when applied, will place restrictions on the resource for all users.
🛡️ Resources Basic SKU is used for production workloads🟢⚪
The use of Basic or Free SKUs in Azure whilst cost effective have significant limitations in terms of what can be monitored and what support can be realized from Microsoft. Typically, these SKU's do not have a service SLA and Microsoft may refuse to provide support for them. Consequently Basic/Free SKUs should never be used for production workloads.
🛡️ REST API Stage is not associated with a WAF Web ACL🟢
Ensure that each AWS API Gateway REST API stage is associated with a WAF Web ACL to enhance its protection against malicious web traffic. AWS WAF enables configuration of rules to block, allow, or count web requests based on custom security criteria.
🛡️ REST API Stage is not configured to use an SSL certificate for authentication🟢
Ensure that the REST API Stage in AWS API Gateway is configured to use an SSL certificate for authentication. This ensures secure communication between backend systems and the API Gateway.
🛡️ REST API Stage X-Ray Tracing is not enabled🟢
Ensure AWS X-Ray active tracing is enabled for API Gateway REST API Stages. This functionality captures real-time metrics and insights into API request flows, helping monitor and optimize performance.
🛡️ Restrict Access To Microsoft Entra Admin Center is set to No🟢⚪
Restrict access to the Microsoft Entra ID administration center to administrators only.
🛡️ Restrict User Ability To Access Groups Features In The Access Pane is set to No🟢⚪
Restrict access to group web interface in the Access Panel portal.
🛡️ Role Based Access Control is not enabled🟢
The new RBAC permissions model for Key Vaults enables a much finer grained access control for key vault secrets, keys, certificates, etc., than the vault access policy. This in turn will permit the use of privileged identity management over these roles, thus securing the key vaults with JIT Access management.
🛡️ Roles related to KMS are not assigned to separate users🟢
It is recommended that the principle of 'Separation of Duties' is enforced while assigning KMS related roles to users.
🛡️ Root Account Usage Monitoring is not enabled🟢⚪
Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs, or an external Security information and event management (SIEM) environment, and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for 'root' login attempts to detect the unauthorized use, or attempts to use the root account.
🛡️ Root User credentials were used is the last 30 days🟢
Ensure that the AWS root account credentials have not been used within the past 30 days. Minimize the usage of root account credentials to reduce the risk of unauthorized access or accidental changes to your AWS account.
🛡️ Route Table Changes Monitoring is not enabled🟢⚪
Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs, or an external Security information and event management (SIEM) environment, and establishing corresponding metric filters and alarms. Routing tables are used to route network traffic between subnets and to network gateways. It is recommended that a metric filter and alarm be established for changes to route tables.
🛡️ Route Table for VPC Peering does not follow the least privilege principle🟢⚪
Once a VPC peering connection is established, routing tables must be updated to establish any connections between the peered VPCs. These routes can be as specific as desired - even peering a VPC to only a single host on the other side of the connection.
🛡️ RSA Certificate key length is less than 2048 bits🟢
Ensure that RSA certificates managed by AWS Certificate Manager (ACM) have a key length of at least 2,048 bits since the strength of encryption directly correlates with key size.
🛡️ Rule Group has no WAF Rules🟢
Ensure that AWS WAF Rule Groups contain at least one rule. An empty rule group provides no traffic filtering and may indicate an incomplete configuration or an unused resource.
🛡️ S3 Bucket Access Logging is not enabled.🟢
S3 Bucket Access Logging generates a log that contains access records for each request made to your S3 bucket. An access log record contains details about the request, such as the request type, the resources specified in the request worked, and the time and date the request was processed. It is recommended that bucket access logging be enabled on the CloudTrail S3 bucket.
🛡️ S3 Bucket Policy Changes Monitoring is not enabled🟢⚪
Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs, or an external Security information and event management (SIEM) environment, and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for changes to S3 bucket policies.
🛡️ Secret Automatic Rotation is not enabled🟢
Ensure that secrets stored in AWS Secrets Manager are configured for automatic rotation to minimize the risk associated with long-lived credentials
🛡️ Secure Transfer Required is not enabled🟢
Ensure that data encryption in transit is enabled. The secure transfer option enhances the security of a storage account by only allowing requests to the storage account by a secure connection.
🛡️ Security Alert Notifications additional email address is not configured🟢
Microsoft Defender for Cloud emails the subscription owners whenever a high-severity alert is triggered for their subscription. You should provide a security contact email address as an additional email address.
🛡️ Security Alert Notifications for alerts with High or Critical severity is not configured🟢
Enables emailing security alerts to the subscription owner or other designated security contact.
🛡️ Security Alert Notifications for attack path with Critical severity is not configured🟢⚪
Enables emailing attack paths to the subscription owner or other designated security contact.
🛡️ Security Alert Notifications to subscription owners are not configured🟢
Enable security alert emails to subscription owners.
🛡️ Security Defaults are not enabled🟢⚪
Security defaults in Microsoft Entra ID make it easier to be secure and help protect your organization. Security defaults contain preconfigured security settings for common attacks.
🛡️ Security Group allows allows public access to DNS port🟢
Ensure that Azure Network Security Groups do not allow unrestricted public access to the DNS port 53. Exposing DNS to the internet from a VM can pose security risks, such as participation in DNS amplification attacks or unauthorized DNS resolution.
🛡️ Security Group allows public access to all ports🟢
Identify Azure Network Security Groups that are associated with Network Interfaces linked to NSGs containing inbound rules that allow unrestricted traffic from the public internet(0.0.0.0/0, ::/0, Internet, Any, or *) to all destination ports (*, 0-65535, or unspecified). Restrict access to only the specific destination port and/or IP address ranges that require connectivity.
🛡️ Security Group allows public access to CIFS port🟢
Ensure that Azure Network Security Groups do not allow unrestricted public access to the CIFS port 445. Unrestricted access to CIFS from the public internet poses a significant security risk, potentially exposing file shares and sensitive data to unauthorized access and ransomware attacks.
🛡️ Security Group allows public access to FTP ports🟢
Ensure that Azure Network Security Groups do not allow unrestricted public access to the FTP traffic (ports 20 and 21), which can expose systems to unauthorized access and potential attacks.
🛡️ Security Group allows public access to HTTP(S) ports🟢
Ensure that Azure Network Security Groups do not allow unrestricted public access to the HTTP/HTTPS ports 80 and 443. Where certain ports and protocols may be exposed to the Internet, they should be evaluated for necessity and restricted wherever they are not explicitly required.
🛡️ Security Group allows public access to MongoDB ports🟢
Ensure that Azure Network Security Groups are not exposed to unrestricted public access on MongoDB ports (27017-27020) and only accessible by authorized IP address ranges or internal networks.
🛡️ Security Group allows public access to MSSQL port🟢
Ensure that Azure Network Security Groups are not exposed to unrestricted public access on MSSQL ports (1433) and only accessible by authorized IP address ranges or internal networks.
🛡️ Security Group allows public access to MySQL port🟢
Ensure that Azure Network Security Groups are not exposed to unrestricted public access on MySQL port (3306) and only accessible by authorized IP address ranges or internal networks.
🛡️ Security Group allows public access to NetBIOS ports🟢
Ensure that Azure Network Security Groups do not allow unrestricted public NetBIOS traffic (TCP/UDP 137, 138, 139).
🛡️ Security Group allows public access to Oracle DBMS ports🟢
Ensure that Azure Network Security Groups do not allow unrestricted public access to the Oracle DBMS (ports 1521, 1830, 2483 and 2484) by limiting access to trusted IP addresses or internal networks.
🛡️ Security Group allows public access to PostgreSQL port🟢
Ensure that Azure Network Security Groups do not allow unrestricted public access to the PostgreSQL port 5432 and only accessible by authorized IP address ranges or internal networks.
🛡️ Security Group allows public access to RDP port🟢
Ensure that Azure Network Security Groups do not allow unrestricted public RDP (port 3389) traffic.
🛡️ Security Group allows public access to RPC port🟢
Ensure that Azure Network Security Groups do not allow unrestricted public access to RPC port (135/TCP and 135/UDP). RPC protocol enables inter-process communication and, if improperly secured, can expose VMs to unauthorized access.
🛡️ Security Group allows public access to SMTP port🟢
Ensure Azure Network Security Groups do not allow unrestricted public access to the SMTP port 25.
🛡️ Security Group allows public access to SSH port🟢
Ensure that Azure Network Security Groups do not allow unrestricted public SSH (port 22) traffic.
🛡️ Security Group allows public access to Telnet port🟢
Ensure Azure Network Security Groups do not allow unrestricted public access to the Telnet port 23. Telnet is an insecure protocol that transmits data, including credentials, in plaintext, making it vulnerable to eavesdropping and unauthorized access.
🛡️ Security Group allows public IPv4 (0.0.0.0/0) access to admin ports🟢
Security groups provide stateful filtering of ingress and egress network traffic to AWS resources. It is recommended that no security group allows unrestricted ingress access to remote server administration ports, such as SSH to port 22 and RDP to port 3389, using either the TCP (6), UDP (17) or ALL (-1) protocols.
🛡️ Security Group allows public IPv6 (::/0) access to admin ports🟢
Security groups provide stateful filtering of ingress and egress network traffic to AWS resources. It is recommended that no security group allows unrestricted ingress access to remote server administration ports, such as SSH to port 22 and RDP to port 3389.
🛡️ Security Group allows public UDP access🟢
Ensure that Azure Network Security Groups do not allow unrestricted public UDP protocol.
🛡️ Security Group allows unrestricted CIFS traffic🟢
Common Internet File System (CIFS) is a network file-sharing protocol that allows systems to share files over a network. However, unrestricted CIFS access can expose your data to unauthorized users, leading to potential security risks. It is important to restrict CIFS access to only trusted networks and users to prevent unauthorized access and data breaches.
🛡️ Security Group allows unrestricted DNS traffic🟢
Ensure that AWS EC2 Security Groups do not allow unrestricted DNS traffic. Review and update security group rules to restrict DNS traffic to only trusted sources and destinations to enhance network security and prevent potential misuse.
🛡️ Security Group allows unrestricted FTP traffic🟢
Ensure that FTP traffic (ports 20 and 21) is restricted to trusted IP ranges or disable it entirely. Evaluate the security group settings in AWS EC2 to ensure they do not permit unrestricted access to these ports, which can expose systems to unauthorized access and potential attacks.
🛡️ Security Group allows unrestricted ICMP traffic🟢
Ensure that unrestricted ICMP access (including ping requests) is blocked or limited to trusted IP addresses. This ensures that only necessary network diagnostics can occur, mitigating potential security risks associated with exposing ICMP to the public internet.
🛡️ Security Group allows unrestricted NetBIOS traffic🟢
Ensure that AWS EC2 security groups do not allow unrestricted NetBIOS traffic (TCP: 137, 139; UDP: 137, 138).
🛡️ Security Group allows unrestricted RPC traffic🟢
Ensure that AWS EC2 Security Groups are configured to restrict inbound RPC traffic to only trusted IP ranges or instances. RPC protocol enables inter-process communication and, if improperly secured, can expose EC2 instances to unauthorized access.
🛡️ Security Group allows unrestricted SMTP traffic🟢
Ensure that AWS EC2 Security Groups are configured to restrict inbound SMTP traffic (port 25) to trusted IP addresses.
🛡️ Security Group allows unrestricted Telnet traffic🟢
Ensure that AWS EC2 Security Groups do not allow unrestricted Telnet traffic. This involves reviewing and modifying Security Group rules to restrict access to port 23, typically used for Telnet, to prevent unauthorized or insecure access.
🛡️ Security Group allows unrestricted traffic to all ports🟢
Ensure that AWS EC2 Security Groups are configured to avoid unrestricted traffic to all ports. This involves reviewing and limiting overly permissive inbound rules that expose all ports (0-65535) to unrestricted IP ranges (0.0.0.0/0).
🛡️ Security Group allows unrestricted traffic to MongoDB🟢
Ensure that AWS EC2 Security Groups are configured to restrict access to MongoDB. This involves reviewing the Security Group rules to prevent unrestricted access (0.0.0.0/0) to MongoDB on ports 27017-27020 and ensuring that it is only accessible by trusted sources.
🛡️ Security Group allows unrestricted traffic to MSSQL🟢
Ensure that AWS EC2 Security Groups are configured to restrict access to Microsoft SQL Server (MSSQL) on port 1433 by limiting inbound traffic to trusted IP addresses.
🛡️ Security Group allows unrestricted traffic to MySQL🟢
Ensure that AWS EC2 Security Groups are configured to restrict inbound access to MySQL instances on port 3306 by limiting access to trusted IP addresses or internal networks.
🛡️ Security Group allows unrestricted traffic to Oracle DBMS🟢
Ensure that AWS EC2 Security Groups are configured to restrict inbound traffic to Oracle DBMS (ports 1521, 1830, 2483 and 2484) by limiting access to trusted IP addresses or internal networks.
🛡️ Security Group allows unrestricted traffic to PostgreSQL🟢
Ensure that AWS EC2 Security Groups restrict inbound access to PostgreSQL on port 5432 by limiting traffic to trusted IP addresses or internal networks.
🛡️ Security Group Changes Monitoring is not enabled🟢⚪
Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs, or an external Security information and event management (SIEM) environment, and establishing corresponding metric filters and alarms. Security Groups are a stateful packet filter that controls ingress and egress traffic within a VPC. It is recommended that a metric filter and alarm be established for detecting changes to Security Groups.
🛡️ Security Group Flow Logs retention period is less than 90 days🟢
Flow logs enable capturing information about IP traffic flowing in and out of network security groups. Logs can be used to check for anomalies and give insight into suspected breaches.
🛡️ Security Hub is not enabled🟢
Security Hub collects security data from across AWS accounts, services, and supported third-party partner products and helps you analyze your security trends and identify the highest priority security issues. When you enable Security Hub, it begins to consume, aggregate, organize, and prioritize findings from AWS services that you have enabled, such as Amazon GuardDuty, Amazon Inspector, and Amazon Macie.
🛡️ Self-Service Password Reset does not require 2 authentication methods🟢⚪
Ensures that two alternate forms of identification are provided before allowing a password reset.
🛡️ Sensitive Data Protection is not in use🟢⚪
BigQuery tables can contain sensitive data that for security purposes should be discovered, monitored, classified, and protected. Google Cloud's Sensitive Data Protection tools can automatically provide data classification of all BigQuery data across an organization.
🛡️ Server Auditing is not enabled🟢
Auditing tracks database events and writes them to an audit log in the Azure storage account. Enabling auditing at the server level ensures that all existing and newly created databases on the SQL server instance are audited.
🛡️ Server Auditing Retention is less than 90 days🟢
SQL Server Audit Retention should be configured to be greater than 90 days. Audit Logs can be used to check for anomalies and give insight into suspected breaches or misuse of information and access.
🛡️ Server Certificate is expired🟢
To enable HTTPS connections to your website or application in AWS, you need an SSL/TLS server certificate. You can use ACM or IAM to store and deploy server certificates. Use IAM as a certificate manager only when you must support HTTPS connections in a region that is not supported by ACM. IAM securely encrypts your private keys and stores the encrypted version in IAM SSL certificate storage. IAM supports deploying server certificates in all regions, but you must obtain your certificate from an external provider for use with AWS. You cannot upload an ACM certificate to IAM. Additionally, you cannot manage your certificates from the IAM Console.
🛡️ Server is idle🟢
Identify idle Azure PostgreSQL Servers to optimize costs and improve efficiency. Servers are considered idle if their average CPU is below 5% and I/O utilization is 0% over a 30-day period.
🛡️ Server is located in a less cost-effective region🟢
This policy flags MySQL Server that are running in Azure regions with higher pricing and could potentially be migrated to more cost-effective regions.
🛡️ Server is located in a less cost-effective region🟢
This policy flags PostgreSQL Server that are running in Azure regions with higher pricing and could potentially be migrated to more cost-effective regions.
🛡️ Server is underutilized🟢
Identify underutilized Azure MySQL Servers to optimize costs and improve efficiency. Servers are considered underutilized if their average CPU and I/O utilization are consistently below 20% and memory below is 40% over a 30-day period.
🛡️ Server is underutilized🟢
Identify underutilized Azure PostgreSQL Servers to optimize costs and improve efficiency. Servers are considered underutilized if their average CPU and I/O utilization are consistently below 20% and memory is below 40% over a 30-day period.
🛡️ Server Microsoft Entra authentication is not configured🟢
Use Microsoft Entra authentication for authentication with SQL Database to manage credentials in a single place.
🛡️ Server Public Network Access is not disabled🟢
Public Network Access tends to be overly permissive and introduces unintended vectors for threat activity.
🛡️ Server Transparent Data Encryption Protector is not encrypted with Customer-managed key🟢
Transparent Data Encryption (TDE) with Customer-managed key support provides increased transparency and control over the TDE Protector, increased security with an HSM-backed external service, and promotion of separation of duties.
🛡️ Service Account has admin privileges🟢
A service account is a special Google account that belongs to an application or a VM, instead of to an individual end-user. The application uses the service account to call the service's Google API so that users aren't directly involved. It's recommended not to use admin access for ServiceAccount.
🛡️ Service Account has User-Managed Keys🟢
User-managed service accounts should not have user-managed keys.
🛡️ Service Account User-Managed Key is not rotated every 90 days🟢
Service Account keys consist of a key ID (Private_key_Id) and Private key, which are used to sign programmatic requests users make to Google Cloud services accessible to that particular service account. It is recommended that all Service Account keys are regularly rotated.
🛡️ SetType🟢
🛡️ Shared Access Signature Tokens do not expire within 1 hour🟢⚪
Expire shared access signature tokens within an hour.
🛡️ Shared Key Access is not disabled🟢
Every secure request to an Azure Storage account must be authorized. By default, requests can be authorized with either Microsoft Entra credentials or by using the account access key for Shared Key authorization.
🛡️ Single Server Enforce SSL Connection is not set enabled🟢
SSL connectivity helps to provide a new layer of security by connecting database server to client applications using Secure Sockets Layer (SSL). Enforcing SSL connections between database server and client applications helps protect against 'man in the middle' attacks by encrypting the data stream between the server and application.
🛡️ Single Server Infrastructure Double Encryption is not enabled🟢
Azure Database for PostgreSQL servers should be created with 'infrastructure double encryption' enabled. If Double Encryption is enabled, another layer of encryption is implemented at the hardware level before the storage or network level.
🛡️ Single Server log_connections Parameter is not set to ON🟢
Enable log_connections on PostgreSQL Single Servers.
🛡️ Single Server log_disconnections Parameter is not set to ON🟢
Enable log_disconnections on PostgreSQL Servers.
🛡️ Snapshot is 90 days old or more🟢
Consider deleting or archiving AWS RDS Snapshots that are 90 days old or more to reduce storage costs and manage data lifecycle.
🛡️ Snapshot is 90 days old or more🟢
Consider deleting or archiving Google GCE Snapshots that are 90 days old or more.
🛡️ Snapshot is publicly accessible🟢
Ensure that your AWS Relational Database Service (RDS) database snapshots are not publicly accessible (i.e. shared with all AWS accounts and users) in order to avoid exposing your private data.
🛡️ Soft Delete and Purge Protection functions are not enabled🟢
It is recommended the Key Vault be made recoverable by enabling the 'Do Not Purge' and 'Soft Delete' functions. This is in order to prevent loss of encrypted data, including storage accounts, SQL databases, and/or dependent services provided by Key Vault objects (Keys, Secrets, Certificates) etc.
🛡️ SQL Server Instance 3625 (trace flag) Database Flag is not set to on🟢
It is recommended to set 3625 (trace flag) database flag for Cloud SQL SQL Server instance to 'on'.
🛡️ SQL Server Instance contained database authentication Database Flag is set to on🟢
It is recommended not to set contained database authentication database flag for Cloud SQL on the SQL Server instance to 'on'.
🛡️ SQL Server Instance cross db ownership chaining Database Flag is not set to off🟢
It is recommended to set cross db ownership chaining database flag for Cloud SQL SQL Server instance to 'off'.
🛡️ SQL Server Instance external scripts enabled Database Flag is not set to off🟢
It is recommended to set `external scripts enabled` database flag for Cloud SQL SQL Server instance to `off`
🛡️ SQL Server Instance remote access Database Flag is not set to off🟢
It is recommended to set remote access database flag for Cloud SQL SQL Server instance to 'off'.
🛡️ SQL Server Instance user connections Database Flag is set to a limiting (other than 0) value🟢
It is recommended to check the user connections for a Cloud SQL SQL Server instance to ensure that it is not artificially limiting connections.
🛡️ SQL Server Instance user options Database Flag is configured🟢
It is recommended that, user options database flag for Cloud SQL SQL Server instance should not be configured.
🛡️ STARTS_WITH🟢
🛡️ Storage Account is located in a less cost-effective region🟢
This policy flags Storage Accounts that are running in Azure regions with higher pricing and could potentially be migrated to more cost-effective regions.
🛡️ Storage Account uses Delete lock🟢⚪
Azure Resource Manager CannotDelete (Delete) locks can prevent users from accidentally or maliciously deleting a storage account. This feature ensures that while the Storage account can still be modified or used, deletion of the Storage account resource requires removal of the lock by a user with appropriate permissions. This feature is a protective control for the availability of data. By ensuring that a storage account or its parent resource group cannot be deleted without first removing the lock, the risk of data loss is reduced.
🛡️ Storage Account uses Locally Redundant Storage replication option🟢
Consider switching Storage Account SKU to the recommended zone-redundant storage (ZRS), geo-redundant storage (GRS), or geo-zone-redundant storage (GZRS). LRS is the lowest-cost redundancy option and offers the least durability compared to other options.
🛡️ Storage Account uses ReadOnly lock🟢⚪
Adding an Azure Resource Manager ReadOnly lock can prevent users from accidentally or maliciously deleting a storage account, modifying its properties and containers, or creating access assignments. The lock must be removed before the storage account can be deleted or updated. It provides more protection than a CannotDelete-type of resource manager lock. This feature prevents POST operations on a storage account and containers to the Azure Resource Manager control plane, management.azure.com. Blocked operations include listKeys which prevents clients from obtaining the account shared access keys. Microsoft does not recommend ReadOnly locks for storage accounts with Azure Files and Table service containers. This Azure Resource Manager REST API documentation (spec) provides information about the control plane POST operations for Microsoft.Storage resources.
🛡️ Subnet Map Public IP On Launch is enabled🟢
Ensure that AWS VPC Subnets are not configured to automatically assign public IP addresses to EC2 Instances launched within them.
🛡️ Subscription Leaving Microsoft Entra ID Directory and Subscription Entering Microsoft Entra ID Directory is not set to Permit No One🟢⚪
Users who are set as subscription owners are able to make administrative changes to the subscriptions and move them into and out of Microsoft Entra ID.
🛡️ Symmetric CMK Rotation is not enabled🟢
AWS KMS allows customers to rotate the backing key which is key material stored within the KMS which is tied to the key ID of the customer-created CMK. It is the backing key that is used to perform cryptographic operations such as encryption and decryption. Automated key rotation currently retains all prior backing keys so that decryption of encrypted data can take place transparently. It is recommended that CMK key rotation be enabled for symmetric keys.
🛡️ Table is located in a less cost-effective region🟢
This policy flags DynamoDB Tables that are running in AWS regions with higher pricing and could potentially be migrated to more cost-effective regions.
🛡️ Table is not encrypted with Customer-Managed Encryption Key (CMEK)🟢
BigQuery by default encrypts the data as rest by employing Envelope Encryption using Google managed cryptographic keys. The data is encrypted using the data encryption keys and data encryption keys themselves are further encrypted using key encryption keys. This is seamless and do not require any additional input from the user. However, if you want to have greater control, Customer-managed encryption keys (CMEK) can be used as encryption key management solution for BigQuery Data Sets. If CMEK is used, the CMEK is used to encrypt the data encryption keys instead of using google-managed encryption keys.
🛡️ Table Logging is not enabled for Read, Write, and Delete requests🟢
Azure Table storage is a service that stores structured NoSQL data in the cloud, providing a key/attribute store with a schema-less design. Storage Logging happens server-side and allows details for both successful and failed requests to be recorded in the storage account. These logs allow users to see the details of read, write, and delete operations against the tables.
🛡️ Table Point In Time Recovery is not enabled🟢
Ensure that Point-in-Time Recovery (PITR) is enabled for your Amazon DynamoDB tables to protect against accidental writes or deletes. PITR provides continuous backups, allowing you to restore your table to any point in time during the last 35 days.
🛡️ TAG_EXISTS🟢
🛡️ TAG_VALUE🟢
🛡️ Task logging is not enabled🟢
Ensure that AWS DataSync task logging is enabled to capture detailed information about task executions, data transfers, and potential errors in Amazon CloudWatch Logs.
🛡️ Text Items🟢
🛡️ Text Items🟢
🛡️ Text Items🟢
🛡️ Text Items🟢
🛡️ TextType🟢
🛡️ TextType🟢
🛡️ TextType🟢
🛡️ TextType🟢
🛡️ Transit Gateway Auto Accept Shared Attachments is enabled🟢
Ensure that VPC Transit Gateways are not configured to automatically accept shared attachments. Disabling this feature ensures that all cross-account attachment requests are manually reviewed and approved.
🛡️ Trusted Azure Services are not enabled as networking exceptions🟢
Some Azure services that interact with storage accounts operate from networks that can't be granted access through network rules. To help this type of service work as intended, allow the set of trusted Azure services to bypass the network rules.
🛡️ Trusted Launch is not enabled🟢
When Secure Boot and vTPM are enabled together, they provide a strong foundation for protecting your VM from boot attacks. For example, if an attacker attempts to replace the bootloader with a malicious version, Secure Boot will prevent the VM from booting. If the attacker is able to bypass Secure Boot and install a malicious bootloader, vTPM can be used to detect the intrusion and alert you.
🛡️ Unapproved Extensions are installed🟢⚪
For added security, only install organization-approved extensions on VMs.
🛡️ Unattached Managed Disk is not encrypted with Customer-managed key🟢
Ensure that unattached disks in a subscription are encrypted with a Customer Managed Key (CMK).
🛡️ Unauthorized API Calls Monitoring is not enabled🟢⚪
Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs, or an external Security information and event management (SIEM) environment, and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for unauthorized API calls.
🛡️ Use of the 'User Access Administrator' role is not restricted🟢
The User Access Administrator role grants the ability to view all resources and manage access assignments at any subscription or management group level within the tenant. Due to its broad privileges, this role should be assigned only for the duration of the necessary changes at the root scope and then removed immediately. For ongoing operations, define and use custom roles that grant only the minimum permissions required.
🛡️ User Access Keys are not rotated every 90 days or less🟢
Access keys consist of an access key ID and secret access key, which are used to sign programmatic requests that you make to AWS. AWS users need their own access keys to make programmatic calls to AWS from the AWS Command Line Interface (AWS CLI), Tools for Windows PowerShell, the AWS SDKs, or direct HTTP calls using the APIs for individual AWS services. It is recommended that all access keys be regularly rotated.
🛡️ User Consent For Applications is not set to Allow From Verified Publishers🟢⚪
Allow users to provide consent for selected permissions when a request is coming from a verified publisher.
🛡️ User Consent For Applications is not set to Do Not Allow User Consent🟢⚪
Require administrators to provide consent for applications before use.
🛡️ User has both Service Account Admin and Service Account User roles assigned🟢
It is recommended that the principle of 'Separation of Duties' is enforced while assigning service-account related roles to users.
🛡️ User has inline or directly attached policies🟢
IAM users are granted access to services, functions, and data through IAM policies. There are four ways to define policies for a user:
1) Edit the user policy directly, aka an inline, or user, policy.
2) attach a policy directly to a user.
3) add the user to an IAM group that has an attached policy.
4) add the user to an IAM group that has an inline policy.
Only the third implementation is recommended.
🛡️ User has more than one active access key🟢
Access keys are long-term credentials for an IAM user or the AWS account 'root' user. You can use access keys to sign programmatic requests to the AWS CLI or AWS API (directly or using the AWS SDK)
🛡️ User is assigned a basic role🟢
A user has one of the following IAM basic roles: roles/owner, roles/editor, or roles/viewer. These roles are too permissive and shouldn't be used.
🛡️ User MFA is not enabled for all users with console password🟢
Multi-Factor Authentication (MFA) adds an extra layer of authentication assurance beyond traditional credentials. With MFA enabled, when a user signs in to the AWS Console, they will be prompted for their user name and password as well as for an authentication code from their physical or virtual MFA token. It is recommended that MFA be enabled for all accounts that have a console password.
🛡️ User with console and programmatic access set during the initial creation🟢⚪
AWS console defaults to no check boxes selected when creating a new IAM user. When creating the IAM User credentials you have to determine what type of access they require. Programmatic access: The IAM user might need to make API calls, use the AWS CLI, or use the Tools for Windows PowerShell. In that case, create an access key (access key ID and a secret access key) for that user. AWS Management Console access: If the user needs to access the AWS Management Console, create a password for the user.
🛡️ User with credentials unused for 45 days or more is not disabled🟢
AWS IAM users can access AWS resources using different types of credentials, such as passwords or access keys. It is recommended that all credentials that have been unused in 45 or greater days be deactivated or removed.
🛡️ Users Can Create Microsoft 365 Groups In Azure Portals, API Or PowerShell is set to Yes🟢⚪
Restrict Microsoft 365 group creation to administrators only.
🛡️ Users Can Create Security Groups In Azure Portals, API Or PowerShell is set to Yes🟢⚪
Restrict security group creation to administrators only.
🛡️ Users Can Register Applications is set to Yes🟢
Require administrators or appropriately delegated users to register third-party applications.
🛡️ Users Multi-Factor Auth Status is not enabled🟢⚪
Enable multi-factor authentication for all roles, groups, and users that have write access or permissions to Azure resources. These include custom created objects or built-in roles such as: Service Co-Administrators, Subscription Owners Contributors
🛡️ Vault contains unencrypted Recovery Points🟢
Ensure that all Recovery Points within an AWS Backup Vault are encrypted. Unencrypted recovery points can expose sensitive backup data to unauthorized access.
🛡️ vCenter Virtual Machine Should Have Breeze Agent Installed🟢
Ensure that Breeze Agent is installed on the vCenter Virtual Machine. The Breeze Agent streams OS-level data into Cloudaware CMDB and seamlessly enables other Cloudaware modules such as Intrusion Detection (IDS), Vulnerability Scanning, Patch Management, CIS Benchmarking, and Event Monitoring.
🛡️ Virtual Machine allows public access to all ports🟢
Identify Azure Virtual Machines that are associated with Network Interfaces linked to NSGs containing inbound rules that allow unrestricted traffic from the public internet(0.0.0.0/0, ::/0, Internet, Any, or *) to all destination ports (*, 0-65535, or unspecified). Restrict access to only the specific destination port and/or IP address ranges that require connectivity.
🛡️ Virtual Machine allows public access to CIFS port🟢
Ensure that Azure Virtual Machines do not allow unrestricted public access to the CIFS port 445. Unrestricted access to CIFS from the public internet poses a significant security risk, potentially exposing file shares and sensitive data to unauthorized access and ransomware attacks.
🛡️ Virtual Machine allows public access to DNS port🟢
Ensure that Azure Virtual Machines do not allow unrestricted public access to the DNS port 53. Exposing DNS to the internet from a VM can pose security risks, such as participation in DNS amplification attacks or unauthorized DNS resolution.
🛡️ Virtual Machine allows public access to FTP ports🟢
Ensure that Azure Virtual Machines do not allow unrestricted public access to the FTP traffic (ports 20 and 21), which can expose systems to unauthorized access and potential attacks.
🛡️ Virtual Machine allows public access to HTTP(S) ports🟢
Ensure that Azure Virtual Machines do not allow unrestricted public access to the HTTP/HTTPS ports 80 and 443. Where certain ports and protocols may be exposed to the Internet, they should be evaluated for necessity and restricted wherever they are not explicitly required.
🛡️ Virtual Machine allows public access to MongoDB ports🟢
Ensure that Azure Virtual Machines are not exposed to unrestricted public access on MongoDB ports (27017-27020) and only accessible by authorized IP address ranges or internal networks.
🛡️ Virtual Machine allows public access to MSSQL port🟢
Ensure that Azure Virtual Machines are not exposed to unrestricted public access on MSSQL ports (1433) and only accessible by authorized IP address ranges or internal networks.
🛡️ Virtual Machine allows public access to MySQL port🟢
Ensure that Azure Virtual Machines are not exposed to unrestricted public access on MySQL port (3306) and only accessible by authorized IP address ranges or internal networks.
🛡️ Virtual Machine allows public access to NetBIOS ports🟢
Ensure that Azure Virtual Machines do not allow unrestricted public NetBIOS traffic (TCP/UDP 137, 138, 139).
🛡️ Virtual Machine allows public access to Oracle DBMS ports🟢
Ensure that Azure Virtual Machines do not allow unrestricted public access to the Oracle DBMS (ports 1521, 1830, 2483 and 2484) by limiting access to trusted IP addresses or internal networks.
🛡️ Virtual Machine allows public access to PostgreSQL port🟢
Ensure that Azure Virtual Machines do not allow unrestricted public access to the PostgreSQL port 5432 and only accessible by authorized IP address ranges or internal networks.
🛡️ Virtual Machine allows public access to RDP port🟢
Ensure that Azure Virtual Machines do not allow unrestricted public RDP (port 3389) traffic.
🛡️ Virtual Machine allows public access to RPC port🟢
Ensure that Azure Virtual Machines do not allow unrestricted public access to RPC port (135/TCP and 135/UDP). RPC protocol enables inter-process communication and, if improperly secured, can expose VMs to unauthorized access.
🛡️ Virtual Machine allows public access to SMTP port🟢
Ensure Azure Virtual Machines do not allow unrestricted public access to the SMTP port 25.
🛡️ Virtual Machine allows public access to SSH port🟢
Ensure that Azure Virtual Machines do not allow unrestricted public SSH (port 22) traffic.
🛡️ Virtual Machine allows public access to Telnet port🟢
Ensure Azure Virtual Machines do not allow unrestricted public access to the Telnet port 23. Telnet is an insecure protocol that transmits data, including credentials, in plaintext, making it vulnerable to eavesdropping and unauthorized access.
🛡️ Virtual Machine allows public UDP access🟢
Ensure that Azure Virtual Machines do not allow unrestricted public UDP protocol.
🛡️ Virtual Machine is idle🟢
Identify and address idle Azure Virtual Machines to optimize costs by stopping, terminating, or downscaling VMs with low utilization. VMs are considered idle if their average CPU utilization is below 5%, maximum CPU utilization is below 15%, and average network I/O is below 100 MB over a 14-day period.
🛡️ Virtual Machine is located in a less cost-effective region🟢
This policy flags SQL Virtual Machines that are running in Azure regions with higher pricing and could potentially be migrated to more cost-effective regions.
🛡️ Virtual Machine is located in a less cost-effective region🟢
This policy flags Virtual Machines that are running in Azure regions with higher pricing and could potentially be migrated to more cost-effective regions.
🛡️ Virtual Machine is not utilizing Managed Disks🟢
Migrate blob-based VHDs to Managed Disks on Virtual Machines toexploit the default features of this configuration. The features include: 1. Default Disk Encryption 2. Resilience, as Microsoft will managed the disk storage and move around if underlying hardware goes faulty 3. Reduction of costs over storage accounts
🛡️ Virtual Machine is overutilized🟢
Identify Azure Virtual Machines that appear to be overutilized and upgrade (resize) them in order to help your Azure-hosted applications to handle the workload better and improve the response time. By default, an Azure Virtual Machine is considered overutilized if their average CPU utilization exceeds 80% and maximum CPU utilization consistently spikes above 95% over a 14-day period
🛡️ Virtual Machine is underutilized🟢
Identify Azure Virtual Machines that appear to be underutilized and downsize (resize) them to optimize cloud expenditure. By default, a Virtual Machine is considered underutilized if their average CPU utilization is consistently below 40% and maximum CPU utilization does not spike above 50% over a 14-day period.
🛡️ Virtual Network Filter is not enabled🟢
Limiting your Cosmos DB to only communicate on whitelisted networks lowers its attack footprint.
🛡️ Virtual Network Flow Logs are not captured and sent to Log Analytics Workspace🟢⚪
Ensure that virtual network flow logs are captured and fed into a central log analytics workspace.
🛡️ Virtual Network Flow Logs retention period is less than 90 days🟢
Ensure that virtual network flow logs are retained for greater than or equal to 90 days.
🛡️ Virtual Network Gateway has no connections🟢
Consider deleting Network Gateways that do not have any active connections configured. Unused gateways incur unnecessary costs.
🛡️ VPC Changes Monitoring is not enabled🟢⚪
Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs, or an external Security information and event management (SIEM) environment, and establishing corresponding metric filters and alarms. It is possible to have more than 1 VPC within an account, in addition it is also possible to create a peer connection between 2 VPCs enabling network traffic to route between VPCs. It is recommended that a metric filter and alarm be established for changes made to VPCs.
🛡️ VPC is not configured with a VPC Endpoint for Amazon EC2 service🟢
Ensures that Amazon VPCs have a VPC Endpoint configured for the EC2 service to establish private connection between your VPC and an AWS service using a network interface.
🛡️ VPN Connection does not have both Tunnels up🟢
Ensure both tunnels for an AWS Site-to-Site VPN Connection are in the UP state. AWS provides two tunnels for each VPN connection to ensure high availability and redundancy. If one tunnel is down, the VPN connection becomes a single point of failure, risking connectivity loss during maintenance or an unexpected failure of the active tunnel.
🛡️ Vulnerability Assessment is not auto provisioned🟢⚪
Enable automatic provisioning of vulnerability assessment for machines on both Azure and hybrid (Arc enabled) machines.
🛡️ Web ACL has no WAF Rules or WAF Rule Groups🟢
Ensure that AWS WAF web ACLs have at least one rule or rule group to provide protection against common web exploits and malicious traffic.
🛡️ Web Distribution Cache Behaviors allow unencrypted traffic🟢
Ensures that CloudFront distribution cache behaviors are configured to enforce encrypted connections (HTTPS) by redirecting or allowing only HTTPS traffic. This prevents unencrypted HTTP communication between viewers and CloudFront.
🛡️ Web Distribution Default Root Object is not configured🟢
Ensure that CloudFront Web Distributions have a default root object configured to serve a specific file (e.g., index.html) when a user requests the root URL of the distribution.
🛡️ Web Distribution does not encrypt traffic to Custom Origins🟢
Ensure that CloudFront Distributions are configured to use connections over HTTPS when communicating with custom origins.
🛡️ Web Distribution uses Dedicated IP for SSL🟢
Ensure that AWS CloudFront Distributions are configured to use Server Name Indication (SNI) for serving SSL/TLS-protected content. Using dedicated IP addresses is a legacy method that incurs additional costs and is generally unnecessary as almost all modern clients support SNI.
🛡️ Web Distribution uses default SSL/TLS certificate🟢
Ensure that AWS CloudFront Distributions are configured with a custom SSL/TLS certificate from AWS Certificate Manager (ACM) or IAM, instead of the default CloudFront certificate.
🛡️ Web Distribution uses outdated SSL protocols with Custom Origins🟢
Ensure that AWS CloudFront Web Distributions are configured to use TLSv1.2 or later SSL/TLS protocols to protect data in transit. Older protocols like SSLv3 and early TLS versions have known vulnerabilities and should be disabled.
🛡️ Workgroup CloudWatch Metrics are not enabled🟢
Ensure that AWS Athena Workgroup has CloudWatch Metrics enabled.
🛡️ Workspace is not deployed in a customer-managed virtual network (VNet)🟢
Deploy Azure Databricks Workspaces using customer-managed Virtual Network injection so that compute clusters and control-plane components reside securely within your organization's network perimeter. The default Databricks-managed VNet offers only limited control over network security policies, firewall configurations and routing.
🛡️ Workspace is not encrypted using customer-managed key (CMK)🟢
Ensure that Azure Databricks Workspaces are encrypted with a customer-managed key. By default, data at rest is encrypted using Microsoft-managed keys. Azure Databricks encrypts data in transit using TLS 1.2+ to secure API, workspace, and cluster communications.
🛡️ WorkSpace is unused🟢
This policy identifies AWS WorkSpaces that have not been used for an extended period. A WorkSpace is considered unused if it is running and there has been no user connections for the last 30 days.
🛡️ Workspace traffic is not encrypted between cluster worker nodes🟢⚪
By default, data exchanged between worker nodes in an Azure Databricks cluster is not encrypted. To ensure that data is encrypted at all times, whether at rest or in transit, you can create an initialization script that configures your clusters to encrypt traffic between worker nodes using AES 256-bit encryption over a TLS 1.3 connection.