Security & Data Protection

CrimeGrade's reporting portal runs entirely on Amazon Web Services in the United States. This page explains how we protect user accounts, organization data, and report content.

Last updated October 2026

Infrastructure Overview

Application services and stored data are located in the AWS US East (Ohio) region

CrimeGrade does not operate its own servers, password stores, or session databases. Sign-in, authorization, storage, email, and server-side processing all run on AWS managed services, which AWS operates under its SOC 2, ISO 27001, and FedRAMP compliance programs.

Function Service Purpose
User Authentication AWS Amazon Cognito User Pools Registration, sign-in, password management, and two-step verification. Cognito verifies and stores credentials; CrimeGrade never handles them.
Authorization AWS Amazon Cognito Identity Pools + IAM Exchanges a signed-in session for short-lived AWS credentials limited to the user's own organization.
Data Storage AWS Amazon S3 + Amazon DynamoDB Locations and reports in per-organization S3 paths; each user's display preferences in DynamoDB, readable only by that user. All encrypted at rest.
Server-Side Logic AWS AWS Lambda Account setup, branded email, report generation, and user management. Functions that accept outside requests authenticate them first, and there are no long-running servers to patch.
Email Delivery AWS Amazon SES Verification codes, password resets, and invitations from no-reply@crimegrade.org, signed with DKIM.
Content Delivery AWS Amazon CloudFront HTTPS-only delivery with TLS 1.2 or higher and security headers on every response.
Traffic Filtering AWS AWS WAF Screens traffic to the portal and to sign-in: blocks known-malicious sources and common exploit attempts, and limits how quickly any one address can attempt to sign in.
Map Data AWS Amazon CloudFront + AWS Lambda Delivers the crime map layers, which show the same published statistics as CrimeGrade.org and contain no customer data.
Monitoring AWS Amazon CloudWatch Alerts the CrimeGrade team to unusual sign-in failures and to unusual sign-up, invitation, or email volume. Keeps an audit log of user-management actions for one year.

Outside AWS, two features use third-party services: address suggestions while adding a location (Google Maps Platform, which receives the address being typed) and the background street map (OpenFreeMap, which receives requests for the map area on screen). Neither receives account details such as names, email addresses, or organization identifiers.

Authentication & Credential Security

How sign-in is protected

Amazon Cognito manages all user credentials. Passwords travel only from the user's browser to Cognito over an encrypted connection; CrimeGrade's systems never receive or store them.

Password Policy

At least 8 characters, with uppercase, lowercase, numeric, and special characters, enforced by Cognito. Temporary passwords issued with an invitation expire after 7 days.

Two-Step Verification

Users of the reporting portal can turn on two-step verification with an authenticator app such as Microsoft Authenticator or Google Authenticator, and administrators must turn it on before they can manage users. Once it is on, every sign-in also requires a one-time code from that app.

Short-Lived Sessions

Sign-in tokens expire after 60 minutes and are held in the browser tab's session storage, which clears when the tab closes. A user who chooses "Keep Me Signed In" keeps a refresh token on that device for up to 5 days. Signing out revokes the session with Cognito immediately.

Brute-Force Protection

Cognito temporarily locks an account after repeated failed sign-in attempts, AWS WAF limits how quickly any one address can try to sign in, and the CrimeGrade team is alerted to unusual spikes. Sign-in and password-reset responses do not reveal whether an email address has an account.

Organization Data Isolation

How each organization's data is kept separate

Every organization receives a randomly generated identifier when it is created. A server-side process assigns it to each member's account, and neither users nor the portal's browser code can change it.

This identifier governs all data access through a chain of controls enforced by AWS:

StepControlMechanism
1 Signed token carries the organization Cognito embeds the organization identifier (custom:organization) in a signed token. Any change to the token invalidates its signature.
2 Identity pool tags the session The Cognito identity pool copies the identifier into an IAM session tag (organization) on the user's temporary AWS credentials.
3 IAM limits access to that organization's path The S3 access policy uses ${aws:PrincipalTag/organization} to restrict reads to reports/{organization}/*. A user in organization A cannot request organization B's data.
4 Storage blocks public access All four S3 Block Public Access settings are on. No customer object can be read anonymously.
5 Administration stays inside the organization Inviting users and changing permissions run in a CrimeGrade server function that acts only within the administrator's own organization. Browser credentials carry no user-administration rights.

The result is isolation that AWS enforces on every request, not code in the browser. A user who modifies the portal's JavaScript still receives credentials that reach only their own organization's data. We verify this with test accounts in separate organizations.

Encryption

Data protection in transit and at rest

In Transit

All connections use HTTPS with TLS 1.2 or higher, including every call to AWS services, and browsers are instructed to use HTTPS only (HSTS). Amazon SES sends email over TLS whenever the receiving mail server supports it.

At Rest

Customer data is encrypted at rest in every service that stores it: Amazon S3 (AES-256), Amazon DynamoDB, and Amazon Cognito, using AWS-managed encryption keys.

Permission Model & Access Control

Least-privilege access within each organization

Each user's permissions are part of their Cognito profile. Only an administrator of the same organization can change them, and only through CrimeGrade's server, which confirms that the administrator and the user belong to the same organization. AWS IAM, not the browser, enforces access to organization data and to user administration.

PermissionCapabilityDefault
readView reports, location data, and map visualizationsAll users
editModify location names, tags, and notesGranted by an administrator
generateGenerate new crime risk reports and add locationsGranted by an administrator
manageInvite users, adjust permissions, and view all organization membersOrganization creator; can be granted by an administrator

When an organization is created through self-registration, only its founding user receives administrative permissions, and administrators must use two-step verification to manage users. Invited users start with read access until an administrator grants more. Every invitation and permission change is recorded in an audit log.

Email Security

How we handle account email

The portal sends only transactional email (account verification, password resets, and invitations) through Amazon SES from no-reply@crimegrade.org. It sends no marketing email.

DKIM Signing

Every message is signed with a 2048-bit RSA DKIM key, so receiving servers can confirm that it came from CrimeGrade and was not altered in transit.

SPF and DMARC

SPF authorizes Amazon SES to send the portal's mail through a dedicated sending domain, and crimegrade.org publishes a DMARC policy that instructs receiving servers to quarantine mail that fails authentication.

Invitations

Only an organization's administrators can invite users into that organization. Self-registration always creates a new, separate organization and never grants access to an existing one.

Minimal Data in Email

Emails contain only what the recipient needs: a verification code or temporary password and, for invitations, the organization's name and who sent the invitation. Report data and locations are never sent by email.

Application-Level Protections

Protections built into the portal

Content Security Policy

Every page is served with a Content Security Policy that limits the portal to a named list of services, plus headers that block framing by other sites (clickjacking), MIME-type sniffing, and referrer leakage.

Output Encoding

Text that users supply, such as location names, tags, and notes, is HTML-encoded before it is displayed and is never placed inside script code.

Open Redirect Prevention

After sign-in, users are sent only to known portal pages; any other redirect target is ignored.

Cross-Origin Restrictions

Organization data accepts browser requests only from CrimeGrade's own web addresses, in addition to requiring the signed, organization-scoped AWS credentials described above.

What CrimeGrade Does Not Store

Sensitive data kept out of CrimeGrade's systems

The portal is designed so that sensitive material never reaches CrimeGrade's own systems:

PasswordsSent only to Amazon Cognito over an encrypted connection. CrimeGrade's systems never receive or store them.
Long-lived credentials in the browserThe portal receives only short-lived AWS credentials scoped to the user's organization. No secret keys or service passwords appear in its code; the only key it carries is a website-restricted Google Maps key for address suggestions.
Payment card dataThe portal does not collect or store payment card numbers.
Criminal justice informationCrimeGrade's crime statistics come from published public sources such as the FBI's Uniform Crime Reporting program and the U.S. Census Bureau. The portal holds no Criminal Justice Information (CJI) and no information about victims, suspects, or offenders.

AWS Compliance Foundations

Programs covering the AWS infrastructure CrimeGrade runs on

CrimeGrade runs on AWS managed services, including Amazon Cognito, S3, DynamoDB, IAM, SES, Lambda, CloudFront, CloudWatch, and AWS WAF, that participate in AWS's independently audited compliance programs, including:

SOC 1 / SOC 2 / SOC 3

Independent audits of AWS's security, availability, and confidentiality controls.

ISO 27001 / 27017 / 27018

Certified information security management, cloud-specific controls, and protection of personal data in the cloud.

FedRAMP

AWS's US East and US West regions hold a FedRAMP Moderate authorization, and AWS GovCloud (US) holds FedRAMP High.

Shared Responsibility

AWS secures the underlying data centers, hardware, and managed services. CrimeGrade is responsible for configuring and operating its application securely, as this page describes.

These programs cover the AWS infrastructure and services CrimeGrade builds on, not CrimeGrade's own application. For the current programs and the services each one covers, see AWS Services in Scope by Compliance Program.

Security Questions & Disclosure

For questions about CrimeGrade's security, or for documentation to support a procurement or security review, contact support@crimegrade.org.

To report a vulnerability, email the same address with the details. Please give us a reasonable time to fix the issue before disclosing it publicly.