# Create Automated Checks

This feature allows you to define your own logic-driven compliance checks using entity data available through your integrations or native platform entities. These checks are evaluated regularly, generate evidence for audits, and can be mapped to specific controls to fulfil compliance requirements.

This is especially useful when:

* The existing Sprinto check library doesn’t cover your checks as per you compliance requirements.
* You want to enforce custom logic on integrated systems (e.g., AWS, GitHub, Google Workspace).
* You need to monitor native entities like Risks, Vendors, or Users with specific evaluation rules.

While workflow checks operate on fixed cycles and rely on manual evidence uploads, automated checks use real-time entity data and generate evidence programmatically.

{% hint style="info" %}
This feature is only available for Advanced and Enterprise plans.&#x20;
{% endhint %}

***

### Before You Begin

To create an automated check, ensure:

* Your integration is complete — only integrated or native entities appear in the entity list.
* You are an Admin or have permission to access the Monitoring page.
* Clearly identify the data field or compliance logic you intend to validate to ensure accurate and auditable checks

***

### Steps to Create an Automated Check

#### 1. Open the Check Creation Panel

1. Log into the **Sprinto Dashboard**.
2. Navigate to **Monitoring** from the left nav.
3. Click **Create check** in the top-right corner.
4. Select **Create automated check** from the list.

<figure><img src="https://3220032727-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEsyn5VMU6e0OyGjRtKgx%2Fuploads%2FOZ3Dz1yitio921wkGLXB%2FScreenshot%202025-08-28%20at%2014.37.26.png?alt=media&#x26;token=73c5f54b-e1aa-455c-a101-49059aa1152d" alt="" width="563"><figcaption></figcaption></figure>

This opens a three-step drawer: **Configure check evaluation → Check details → Configure check SLA**.

***

#### 2. Configure Check Evaluation

In Step 1, define the logic and entity scope.

**a. Select Entity to Monitor**

* Choose an entity that is either **integrated** (for example, AWS Redshift Cluster, IAM User and so on) or **native** (for example, Vendor and Risk).
* Only entities with data available for your org are shown.

<figure><img src="https://3220032727-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEsyn5VMU6e0OyGjRtKgx%2Fuploads%2FeTwxhjlAwmJIcOzcpgG1%2FScreenshot%202025-08-28%20at%2014.40.32.png?alt=media&#x26;token=454f6bb5-e0aa-42ff-bd5f-8d4e224c9265" alt="" width="563"><figcaption></figcaption></figure>

{% hint style="warning" %}
Prerequisite: The integration must be active. If no entities are found, it likely means the source is not integrated yet.
{% endhint %}

**b. View Schema**

* Click **Entity schema** to see a full list of available attributes and their data types.
* This is your reference guide to build the check logic.

<figure><img src="https://3220032727-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEsyn5VMU6e0OyGjRtKgx%2Fuploads%2F93LvlYAd1i1IbSD1u7ad%2FScreenshot%202025-08-28%20at%2014.40.58.png?alt=media&#x26;token=9e7c33cc-c41e-45ff-a6ff-8c068e07f38a" alt="" width="563"><figcaption></figcaption></figure>

**c. Define Evaluation Rules**

Use the rule builder to specify logic:

* Each rule consists of: **Field**, **Operator** (for example, is, is not, contains), and **Value**.
* Add multiple rules or **nested rule groups** using logical operators (AND/OR).

<figure><img src="https://3220032727-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEsyn5VMU6e0OyGjRtKgx%2Fuploads%2FLGVd0ylwCusoKMsqb8A5%2FScreenshot%202025-08-28%20at%2014.42.13.png?alt=media&#x26;token=69cab88d-0704-4871-9e9b-7fff968ada9b" alt="" width="563"><figcaption></figcaption></figure>

**Examples:**

<table><thead><tr><th width="93.53515625">Source</th><th width="166.046875">Check Description</th><th width="207.3984375">Specific Entity/Resource</th><th width="162.75390625">Check Evaluation</th><th>Reference Source</th></tr></thead><tbody><tr><td>GCP</td><td>Prohibit Use of Long-Lived User-Managed Service Account Keys</td><td>GCP Service Account Key</td><td>keyType does not contain user-managed</td><td>CIS GCP Foundation Benchmark v1.0, v1.2 - 1.4</td></tr><tr><td>GCP</td><td>Use Appropriate Storage Class for Data Sensitivity</td><td>GCP Cloud storage bucket</td><td>metaData.storageClass contains STANDARD<br>OR<br>metaData.storageClass contains NEARLINE<br>OR<br>metaData.storageClass contains COLDLINE<br>OR<br>metaData.storageClass contains ARCHIVE<br></td><td>CIS GCP Foundations v1.0: 2.6, 2.9</td></tr><tr><td>GCP</td><td>Ensure Bucket Has Etag for Change Tracking</td><td>GCP Cloud storage bucket</td><td>metaData.etag is not empty<br><br><br></td><td>CIS GCP Foundations v1.0: 2.5</td></tr><tr><td>AWS</td><td>Key Must Be Enabled</td><td>AWS KMS Key</td><td>enabled is True</td><td>CIS AWS Foundations v1.4 - 2.6</td></tr><tr><td>AWS</td><td>ARN Format Must Be Valid</td><td>AWS KMS Key</td><td>arn matches pattern ^arn:aws:kms:[^:]+:[0-9]{12}:key/[a-f0-9-]+$</td><td>Recommended best practice</td></tr><tr><td>AWS</td><td>GuardDuty Should Cover All Regions</td><td>AWS Guard Duty</td><td>detectorStatuses[].region contains us-east-1<br>AND<br>detectorStatuses[].region contains us-east-2<br></td><td>CIS AWS Foundations Benchmark v1.4 - 3.5</td></tr><tr><td>Azure</td><td>Set Backup Retention to Minimum Required Days</td><td>AzureCosmoDBBackupPolicy</td><td>retentionPolicy.days is greater than or equal to 30<br><br></td><td>CIS Microsoft Azure Foundations Benchmark v3.0.0, Section 4.1.6</td></tr><tr><td>AWS</td><td>Enable Instance Deletion Protection</td><td>AWS RDS</td><td>metaData.DeletionProtection equals true</td><td>CIS AWS Foundations v1.4 - 2.8</td></tr><tr><td>AWS</td><td>Multi-AZ Deployment for High Availability</td><td>AWS RDS</td><td>metaData.MultiAZ equals true</td><td>CIS AWS Foundations v1.4 - 2.9</td></tr><tr><td>AWS</td><td>Restrict Master Username</td><td>AWS RDS</td><td>metaData.MasterUsername doesnot contain root<br>OR<br>metaData.MasterUsername doesnot contain admin</td><td>CIS AWS Foundations v1.4 - 1.2/2.6</td></tr><tr><td>AWS</td><td>Attach Instance to Security Groups</td><td>AWS RDS</td><td>metaData.DBSecurityGroups is not empty</td><td>CIS AWS Foundations v1.4 - 4.1</td></tr><tr><td>AWS</td><td>Copy Tags to Snapshots</td><td>AWS RDS</td><td>metaData.CopyTagsToSnapshot is True</td><td>CIS AWS Foundations v1.4 - 2.10</td></tr><tr><td>AWS</td><td>Enable IAM Database Authentication (if needed)</td><td>AWS RDS</td><td>metaData.IAMDatabaseAuthenticationEnabled is True</td><td>CIS AWS Foundations v1.4 - 1.1/2.11</td></tr></tbody></table>

**d. Run a Test**

Click **Test** to simulate the logic on a sample set of entity records.

* Entities that pass/fail the criteria will be shown.
* This evaluation isn’t considered in evidence, and a failed check here won’t generate any tasks

<figure><img src="https://3220032727-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEsyn5VMU6e0OyGjRtKgx%2Fuploads%2FRJS8JXvMPdoyQhw5fBp5%2FScreenshot%202025-08-28%20at%2014.42.49.png?alt=media&#x26;token=8cf17ded-d4f2-457b-a335-8094beb64572" alt="" width="563"><figcaption></figcaption></figure>

***

#### 3. Add Check Details

In Step 2, define metadata for the check:

* **Name**: Descriptive title for the check (for example, "S3 Buckets Must Be Encrypted").
* **Description**: What the check evaluates
* **Instructions**: Guidance on how to resolve failures. This information would be shown in task drawers for anyone whom the check is assigned to.
* **Owner**: Person responsible for fixing failed tasks

Once the check is created, Sprinto will automatically assign any failed entities to the owner.

<figure><img src="https://3220032727-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEsyn5VMU6e0OyGjRtKgx%2Fuploads%2FAXfhlO34f2jocHFCGTBm%2FScreenshot%202025-08-28%20at%2014.44.22.png?alt=media&#x26;token=5887c455-e84c-418c-9d50-5f2e3160c4b6" alt="" width="563"><figcaption></figcaption></figure>

***

#### 4. Configure SLA and Escalations

In Step 3, define how Sprinto should track and escalate failed tasks:

* **Due**: The number of days the check will remain in the **Due** state, indicating that action is needed.
* **Critical**: The number of days the check will remain in the **Critical** state before failing. During this time, it can be escalated to a specific user (for example, InfoSec Officer) after X days.
* **Failing**: The number of days after which the check will be marked as **Failing**.

{% hint style="info" %}
These timelines help stakeholders prioritise issues and reduce resolution time.
{% endhint %}

<figure><img src="https://3220032727-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEsyn5VMU6e0OyGjRtKgx%2Fuploads%2FMqBB9G5WlHg8v3uLtywM%2FScreenshot%202025-08-28%20at%2014.46.00.png?alt=media&#x26;token=905d2591-fa3e-4550-ad05-fdf61f87c2ab" alt="" width="563"><figcaption></figcaption></figure>

***

#### 5. Click "Create Check"

Once saved:

* The check is **Active**.
* It immediately evaluates all relevant entities.
* Tasks are created if failures are detected.
* The check appears under **Automated** in the Monitoring tab.

<figure><img src="https://3220032727-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEsyn5VMU6e0OyGjRtKgx%2Fuploads%2FQBwKwURdBLUOHzo5fSMY%2FScreenshot%202025-08-28%20at%2014.47.42.png?alt=media&#x26;token=06d3c265-e1c3-4624-8b74-1a99b3034667" alt="" width="563"><figcaption></figcaption></figure>

***

### Understand What Happens After

Once automated checks are created they work like other pre-built checks within the system and are evaluated regularly:

* Appears in the **Monitoring** table under "Automated Checks".
* Triggers **pending tasks** for failing entities.
* Tasks are routed through the full lifecycle: Due → Critical → Failing.
* Tasks appear on the **Tasks Dashboard** and can be fixed via **Fix It drawers.**
* The check is visible across:
  * **Monitoring page**
  * **Control Health Dashboard**
  * **CHDB** and audit reports (when mapped to a control)
  * **Entity Detail pages**, **Overview pages**, and **Data Library.**

{% hint style="warning" %}
Evidence begins collecting from the moment a check is created and evaluated. However, for this evidence to be included in an audit, the check must be mapped to a control, and that control must be linked to an audit.

For example, if a check is created on 2nd September and mapped to a control on 20th September—while the control is already part of an audit spanning August to December—the audit will reflect evidence from 2nd September onwards, not just from the mapping date.
{% endhint %}

***

### Supported Entities

You can write checks against:

* **Integrated entities** (for example, EC2 instances, GitHub repos, GWorkspace users and so on)
* **Native Sprinto entities** (for example, Risks, Vendors, Users, Policies and so on)

The supported entities table contains:

* A list of all entity types
* Attributes and data types for each

<table><thead><tr><th width="187.40625" valign="top">Category</th><th width="333.58203125" valign="top">Supported Entity</th></tr></thead><tbody><tr><td valign="top"><strong>Uncategorised</strong></td><td valign="top">AWS Security Hub</td></tr><tr><td valign="top"></td><td valign="top">Codacy</td></tr><tr><td valign="top"></td><td valign="top">Crowdstrike Spotlight</td></tr><tr><td valign="top"></td><td valign="top">Deepsource</td></tr><tr><td valign="top"></td><td valign="top">Intruder</td></tr><tr><td valign="top"></td><td valign="top">Jira Vuln Provider</td></tr><tr><td valign="top"></td><td valign="top">Microsoft Defender Endpoint</td></tr><tr><td valign="top"></td><td valign="top">Socket</td></tr><tr><td valign="top"></td><td valign="top">Tenable</td></tr><tr><td valign="top"></td><td valign="top">AWS Inspector (Finding)</td></tr><tr><td valign="top"></td><td valign="top">Azure Defender</td></tr><tr><td valign="top"></td><td valign="top">Dependabot (Vulnerability Alert)</td></tr><tr><td valign="top"></td><td valign="top">Google Security Center (Finding)</td></tr><tr><td valign="top"></td><td valign="top">Halo Security</td></tr><tr><td valign="top"></td><td valign="top">Qualys</td></tr><tr><td valign="top"></td><td valign="top">Rapid Fort</td></tr><tr><td valign="top"></td><td valign="top">Semgrep</td></tr><tr><td valign="top"></td><td valign="top">SL Scan</td></tr><tr><td valign="top"></td><td valign="top">Snyk</td></tr><tr><td valign="top"></td><td valign="top">Sonarcloud</td></tr><tr><td valign="top"></td><td valign="top">Sonarqube</td></tr><tr><td valign="top"><strong>Repositories</strong></td><td valign="top">GitLab Repo Group</td></tr><tr><td valign="top"></td><td valign="top">GitHub Repo Group</td></tr><tr><td valign="top"></td><td valign="top">Bitbucket Repo Group</td></tr><tr><td valign="top"></td><td valign="top">Azure DevOps Repo Group</td></tr><tr><td valign="top"></td><td valign="top">AWS CodeCommit Repo Group</td></tr><tr><td valign="top"></td><td valign="top">GitLab Repo</td></tr><tr><td valign="top"></td><td valign="top">GitHub Repo</td></tr><tr><td valign="top"></td><td valign="top">Bitbucket Repo</td></tr><tr><td valign="top"></td><td valign="top">Azure DevOps Repo</td></tr><tr><td valign="top"></td><td valign="top">AWS CodeCommit Repo</td></tr><tr><td valign="top"><strong>Access Management</strong></td><td valign="top">Azure DevOps User</td></tr><tr><td valign="top"></td><td valign="top">Azure User</td></tr><tr><td valign="top"></td><td valign="top">Bitbucket User</td></tr><tr><td valign="top"></td><td valign="top">AWS CodeCommit User</td></tr><tr><td valign="top"></td><td valign="top">GCP User</td></tr><tr><td valign="top"></td><td valign="top">GitHub User</td></tr><tr><td valign="top"></td><td valign="top">GitLab User</td></tr><tr><td valign="top"></td><td valign="top">GSuite User</td></tr><tr><td valign="top"></td><td valign="top">MongoAtlas User</td></tr><tr><td valign="top"></td><td valign="top">Office365 User</td></tr><tr><td valign="top"></td><td valign="top">Okta User</td></tr><tr><td valign="top"></td><td valign="top">Zoho User</td></tr><tr><td valign="top"></td><td valign="top">AWS User</td></tr><tr><td valign="top"></td><td valign="top">Bitbucket Access</td></tr><tr><td valign="top"></td><td valign="top">GitHub Access</td></tr><tr><td valign="top"></td><td valign="top">GitLab Access</td></tr><tr><td valign="top"><strong>CRM</strong></td><td valign="top">Accelo User</td></tr><tr><td valign="top"></td><td valign="top">Active Campaign User</td></tr><tr><td valign="top"></td><td valign="top">Asana Access User</td></tr><tr><td valign="top"><strong>Incident Management</strong></td><td valign="top">Azure Active Directory Access User</td></tr><tr><td valign="top"></td><td valign="top">BambooHR Access User</td></tr><tr><td valign="top"></td><td valign="top">Basecamp User</td></tr><tr><td valign="top"></td><td valign="top">Box User</td></tr><tr><td valign="top"><strong>HRMS</strong></td><td valign="top">Calendly User</td></tr><tr><td valign="top"><strong>MDM</strong></td><td valign="top">Cisco Meraki User</td></tr><tr><td valign="top"></td><td valign="top">ClickUp Access User</td></tr><tr><td valign="top"></td><td valign="top">Close User</td></tr><tr><td valign="top"><strong>Vulnerabilities</strong></td><td valign="top">Cloudflare User</td></tr><tr><td valign="top"><strong>Infra</strong></td><td valign="top">Confluence User</td></tr><tr><td valign="top"></td><td valign="top">Copper User</td></tr><tr><td valign="top"></td><td valign="top">Databricks Access User</td></tr><tr><td valign="top"></td><td valign="top">Datadog Access User</td></tr><tr><td valign="top"></td><td valign="top">DocuSign User</td></tr><tr><td valign="top"><strong>Assets</strong></td><td valign="top">Files.com User</td></tr><tr><td valign="top"><strong>Database</strong></td><td valign="top">Fireflies AI User</td></tr><tr><td valign="top"></td><td valign="top">FreeAgent User</td></tr><tr><td valign="top"></td><td valign="top">Freshdesk User</td></tr><tr><td valign="top"><strong>Storage</strong></td><td valign="top">Fresh Service User</td></tr><tr><td valign="top"><strong>IAM Roles</strong></td><td valign="top">Front User</td></tr><tr><td valign="top"></td><td valign="top">Google Analytics User</td></tr><tr><td valign="top"><strong>IAM Roles</strong></td><td valign="top">Grafana Access User</td></tr><tr><td valign="top"><strong>Security Groups</strong></td><td valign="top">HelpScout Access User</td></tr><tr><td valign="top"><strong>IAM Policies</strong></td><td valign="top">HubSpot User</td></tr><tr><td valign="top"></td><td valign="top">Intercom User</td></tr><tr><td valign="top"><strong>Firewall</strong></td><td valign="top">Jenkins User</td></tr><tr><td valign="top"><strong>VPN</strong></td><td valign="top">JetBrains User</td></tr><tr><td valign="top"><strong>Load Balancer</strong></td><td valign="top">Jira Access User</td></tr><tr><td valign="top"></td><td valign="top">Keap User</td></tr><tr><td valign="top"><strong>Logging</strong></td><td valign="top">Keeper Security User</td></tr><tr><td valign="top"><strong>Certs</strong></td><td valign="top">KnowBe4 User</td></tr><tr><td valign="top"></td><td valign="top">LastPass User</td></tr><tr><td valign="top"></td><td valign="top">Linear Access User</td></tr><tr><td valign="top"><strong>Container Services</strong></td><td valign="top">Metabase User</td></tr><tr><td valign="top"></td><td valign="top">Microsoft Teams User</td></tr><tr><td valign="top"></td><td valign="top">Miro User</td></tr><tr><td valign="top"><strong>Monitoring</strong></td><td valign="top">Monday User</td></tr><tr><td valign="top"></td><td valign="top">Moneybird User</td></tr><tr><td valign="top"></td><td valign="top">Netlify User</td></tr><tr><td valign="top"><strong>KMS</strong></td><td valign="top">New Relic Access User</td></tr><tr><td valign="top"><strong>Others</strong></td><td valign="top">Notion User</td></tr><tr><td valign="top"></td><td valign="top">OneLogin User</td></tr><tr><td valign="top"></td><td valign="top">OpenAI User</td></tr></tbody></table>

{% hint style="info" %}
Don’t see your entity listed? Reach out to the Sprinto team to request it.
{% endhint %}

***

### Best Practices

<table><thead><tr><th width="208.30859375">Tip</th><th>Why It Matters</th></tr></thead><tbody><tr><td>Use schema viewer</td><td>Understand available attributes before building logic</td></tr><tr><td>Always test the rule</td><td>Avoid false positives and unnecessary alerts</td></tr><tr><td>Assign a clear owner</td><td>Ensures accountability and faster remediation</td></tr><tr><td>Set escalation timelines</td><td>Keeps failing checks visible to stakeholders</td></tr><tr><td>Map to controls</td><td>Enables audit evidence generation</td></tr></tbody></table>
