SimpleRisk
Overview
SimpleRisk is the widely used open source governance, risk and compliance (GRC) platform. It lets you capture and score risks using the CLASSIC, CVSS, DREAD or OWASP methodologies, plan and track mitigations and management reviews, run compliance audits against frameworks and controls, manage assets, and report on your whole organization's risk posture from one shared risk register.
The SecureAnyCloud image installs SimpleRisk from the official release bundle, fronted by nginx with PHP 8.3 and backed by a local MariaDB. Everything comes from the Ubuntu 24.04 noble archive, with no third-party APT repositories. The database schema is already loaded and the initial setup wizard is already completed and closed, so you land on the sign-in page rather than an exposed first-run wizard.
Because a GRC tool holds sensitive risk data, this image is hardened for that role. There is no default administrator login, a unique administrator password and a unique database password are generated on the first boot of every instance, and the MariaDB database is bound to the loopback interface only.
What you get:
- SimpleRisk 20260519-001 from the official release, served from
/var/www/simplerisk - nginx with the SimpleRisk vhost at
/etc/nginx/sites-available/sac-simplerisk - PHP 8.3 with the pdo_mysql, xml, mbstring, ldap, curl, gd, zip, intl, bcmath, apcu and opcache extensions
- MariaDB with the
simpleriskdatabase andsimpleriskapp user on loopback only simplerisk-firstboot.service, which rotates the MariaDB password and the administrator password per instance before nginx serves- The
includes/config.phpdatabase password, reset at capture and set per instance on first boot - nginx, php8.3-fpm and mariadb enabled and set to start automatically on boot
- 24/7 SecureAnyCloud support
Prerequisites
You need an active Azure subscription, an SSH key, and a VNet with a subnet.
Standard_B2s (2 vCPU, 4 GB RAM) suits a small risk program. Move up to a larger burstable size or a D-series size for busier deployments.
On the network security group, open port 80 (and 443 once you add TLS) and port 22 for SSH. Restrict the source ranges to trusted addresses, because a risk register should never be exposed to the whole internet.
Step 1 to 3: Deploy and connect
Deploy the image from the Azure Marketplace, then connect over SSH as azureuser:
ssh azureuser@<vm-ip>Verify the services
SimpleRisk runs as three services: nginx on port 80, php8.3-fpm behind it, and MariaDB on loopback. Check that all three are running:
sudo systemctl is-active nginx php8.3-fpm mariadb nginx -v php -r 'echo PHP_VERSION, "\n";'
sudo ss -tlnp | grep ':80 'All three services report active, and nginx is listening on port 80.
Retrieve your per-instance credentials
On the first boot of your instance, simplerisk-firstboot.service generated a unique administrator password and a unique MariaDB password and wrote them to a root-only file. Read the file:
sudo cat /root/simplerisk-credentials.txtThe file lists the sign-in URL, the administrator username (admin), the per-instance administrator password and the internal database credentials. Store the administrator password somewhere safe.
Sign in to SimpleRisk
Browse to http://<vm-ip>/ and sign in with the username admin and the password from the credentials file.
There is no default admin/admin login on this image. The shipped administrator credential is discarded at capture and replaced with your unique per-instance password on first boot. After your first sign-in, change the administrator password to one of your own choosing from the My Profile menu.
Capture and score a risk
The core of SimpleRisk is the risk register. From the Risk Management menu, choose Submit Risk, give the risk a subject, pick a scoring method, set the likelihood and impact, and submit the risk.
SimpleRisk scores each risk into an inherent and a residual risk level so that you can prioritize. Open any risk to see its full detail, scoring, mitigation plan and management review history.
Governance, compliance and assets
Beyond the risk register, SimpleRisk covers the wider GRC program. Define control frameworks and controls under Governance, run audits under Compliance, and track assets under Asset Management.
To unlock the framework catalog and the report catalog, register your instance for free from the Configure menu. SimpleRisk then downloads the Secure Controls Framework and the report templates from the SimpleRisk service.
Security posture
This image is built so that no shared or default secret ships. There is no default admin login: the shipped admin credential is rotated to a discarded random value at capture, and your unique password is set on first boot. You can confirm on your own instance that the default admin/admin login is refused:
CJ=$(mktemp)
TOKEN=$(curl -s -c "$CJ" http://127.0.0.1/index.php | grep -oE 'name="csrf_token" value="[^"]+"' | head -1 | sed 's/.*value="//;s/"//')
curl -s -o /dev/null -b "$CJ" -c "$CJ" \
--data-urlencode "csrf_token=$TOKEN" \
--data-urlencode "user=admin" --data-urlencode "pass=admin" \
--data-urlencode "submit=submit" http://127.0.0.1/index.php
curl -s -b "$CJ" -o /dev/null -w 'admin/admin -> HTTP %{http_code} (302 = refused)\n' \
http://127.0.0.1/management/index.php rm -f "$CJ"A 302 means the default login was refused and redirected back to the sign-in page.
The MariaDB database, where your risk register lives, is bound to loopback only and is never exposed to the network. The includes/config.php file that holds the database password is not readable from the web:
sudo ss -tlnp | grep ':3306' curl -s -o /dev/null -w 'GET /includes/config.php -> HTTP %{http_code} (403 = not web readable)\n' http://127.0.0.1/includes/config.phpMariaDB shows only 127.0.0.1:3306, and the config file returns 403.
Enabling HTTPS
Serve a risk register over TLS. Point a DNS name at the instance, open port 443 on the network security group, and install a Let's Encrypt certificate with Certbot:
sudo apt-get update
sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.example.comCertbot obtains the certificate, updates the nginx vhost to serve HTTPS, and sets up automatic renewal. Keep the network security group source ranges restricted to trusted addresses even with TLS enabled.
On-box database maintenance
MariaDB keeps root@localhost on socket authentication, so on-box maintenance needs no password:
sudo mariadb simplerisk -e "SELECT username FROM user WHERE admin=1;"Support
SecureAnyCloud supports this SimpleRisk image 24/7. Contact sales@secureanycloud.com for deployment guidance, TLS and reverse proxy setup, network access hardening, LDAP or SAML integration, version upgrades, and MariaDB database administration.
Deploy on Azure
Launch SimpleRisk on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.
View this image
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com
Overview
SimpleRisk is the widely used open source governance, risk and compliance (GRC) platform that organizations run their risk register on. Capture and score risks using the CLASSIC, CVSS, DREAD or OWASP methodologies, plan and track mitigations and management reviews, run compliance audits against frameworks and controls, manage assets, and report on the whole organization's risk posture from one shared system.
The SecureAnyCloud image ships SimpleRisk served by nginx and PHP 8.3 on a hardened, fully patched Ubuntu 24.04 LTS base, together with a bundled local MariaDB server so that the appliance is complete and useful on its own. The database schema is loaded and the browser setup wizard is completed and closed at build time, so the application shows a normal login page the moment the instance boots, rather than an open, unauthenticated create-administrator form.
The bundled MariaDB listens only on the loopback interface (127.0.0.1:3306) and keeps its data on a dedicated EBS data volume. No administrator password exists anywhere in the image: a unique one is generated on the first boot of every instance. The image is backed by 24/7 SecureAnyCloud support.
What you get:
- SimpleRisk 20260519-001, installed from the official upstream release bundle and database schema
- nginx with PHP 8.3, OPcache and every PHP extension SimpleRisk requires (pdo_mysql, xml, mbstring, ldap, curl, gd, zip, intl, bcmath, apcu)
- MariaDB bound to
127.0.0.1:3306, with its data directory on a dedicated 20 GiB EBS data volume - A first-boot service that generates a unique administrator password and a unique database password for every instance
- The setup wizard completed and closed, so no unauthenticated first-run form is exposed
- An unauthenticated
/healthzendpoint for load balancer health checks
Connecting to your instance
Connect over SSH as the default login user for your operating system variant, with the EC2 key pair you selected at launch:
OS variant SSH login user
Ubuntu 24.04 LTS ubuntu
ssh -i /path/to/your-key.pem ubuntu@<instance-public-ip>Prerequisites
You need an AWS account, an EC2 key pair in the target region, and a VPC with a subnet.
m5.large (2 vCPU / 8 GiB RAM) is the recommended size for most teams. Move up to m5.xlarge for large risk registers, many concurrent assessors or heavy reporting.
Configure the security group inbound rules to allow 22/tcp from your management network for SSH, 80/tcp for the application, and 443/tcp if you terminate TLS on the instance.
The bundled MariaDB is never exposed. It listens on 127.0.0.1 only, so port 3306 stays off the network. Because a GRC tool holds sensitive risk data, restrict the security group source ranges to trusted IPs and put TLS in front before you put the register into use.
Step 1 - Launch from AWS Marketplace
Subscribe to the listing in AWS Marketplace, then choose Continue to Configuration and Continue to Launch. Alternatively, launch the image directly from the EC2 console with Launch instance from AMI.
Pick the m5.large instance type, select your EC2 key pair, and choose or create a security group that allows inbound 22, 80 and 443. The image attaches its own 20 GiB EBS data volume for your risk register database, so you do not need to add one. Launch the instance and wait for its status checks to pass.
Step 2 - Confirm the services are running
SSH to the instance as ubuntu and confirm that nginx, PHP-FPM, MariaDB and the first-boot service are all active. MariaDB is bound to 127.0.0.1:3306 only, while nginx serves on port 80.
systemctl is-active nginx php8.3-fpm mariadb simplerisk-firstbootactive active active activess -tlnp | grep -E ':80 |:3306 ' | sed 's/ */ /g'LISTEN 0 511 0.0.0.0:80 0.0.0.0:* LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* LISTEN 0 511 [::]:80 [::]:*The unauthenticated health endpoint returns 200 for load balancer probes:
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1/healthz200Step 3 - Retrieve the per-instance administrator password
The first-boot service generates an administrator password that is unique to your instance and writes it, along with the address to browse to, to a root-only file. Read the file over SSH:
sudo cat /root/simplerisk-credentials.txtsimplerisk.url=http://<instance-public-ip>/ simplerisk.admin.user=admin simplerisk.admin.pass=<your-per-instance-password> simplerisk.db.name=simplerisk simplerisk.db.user=simplerisk simplerisk.db.pass=<your-per-instance-db-password>The admin.pass value is the web login password. The db.pass value is the internal application-to-database password, and you do not normally need it. Store this file safely, and change the administrator password after your first sign-in.
Step 4 - Sign in
Browse to http://<instance-public-ip>/ and sign in as the admin user with the password from the credentials file. SimpleRisk derives its address from the request, so it works on the public IP, a private IP or a DNS name that you point at it, with no reconfiguration.
Step 5 - Capture and score your first risk
Open Risk Management in the left menu and choose Submit Risk. Give the risk a subject, pick a category, source and site or location, and choose a scoring method. SimpleRisk supports the CLASSIC, CVSS, DREAD and OWASP methodologies, so you can score consistently with whichever framework your organization already uses. Save the risk, and it enters the register, ready for review, mitigation planning and management review.
Step 6 - Track your risk posture on the dashboard
Open Reporting and choose the risk dashboard to see your open risks broken down by risk level, status and site or location. This is the single shared view of the organization's risk posture that everyone works from.
Step 7 - Run reports from the reporting hub
The reporting hub under Reporting gives you a searchable catalog of reports grouped by Risk Management, Compliance, Governance and Asset Management, with a Favorites view for the reports you use most. Use it to produce the risk register, compliance and audit reports that your reviews and stakeholders need.
Step 8 - No known or default credentials
Because a GRC tool holds an organization's risk register, this image ships with no known credential. A fresh SimpleRisk install exposes an open, unauthenticated create-default-administrator form on first browse whenever the user table is empty. This image is built past that point: the administrator account exists, so the login page is shown rather than the open wizard, and the administrator password is rotated to a fresh random value on the first boot of every instance. There is no admin/admin and no shared password anywhere in the image.
You can verify this on your own instance. The user table holds a single administrator, and the web login rejects blank passwords and common weak passwords, including admin/admin:
sudo /usr/local/sbin/simplerisk-cred-roundtrip.shOK per-VM admin authenticates via the web login form; blank + weak guesses (incl. admin/admin) rejectedStep 9 - Verify the stack and where your data lives
Your entire risk register lives in MariaDB, and MariaDB keeps its data directory on a dedicated 20 GiB EBS data volume mounted at /data (bind-mounted onto /var/lib/mysql). The volume is separate from the operating system disk, so you can resize or snapshot it independently.
findmnt -no SOURCE,TARGET,FSTYPE /var/lib/mysql; df -h /data | sed 's/ */ /g'/dev/nvme1n1[/mysql] /var/lib/mysql ext4 Filesystem Size Used Avail Use% Mounted on /dev/nvme1n1 20G 202M 19G 2% /dataMariaDB is bound to the loopback interface only, so the database is never reachable from the network:
sudo grep -h bind-address /etc/mysql/mariadb.conf.d/*.cnf | grep -v '^#'bind-address = 127.0.0.1 bind-address = 127.0.0.1Adding a domain name and HTTPS
For production use, put SimpleRisk behind a DNS name and TLS. Point an A record at the instance, then install a certificate with Certbot. nginx is already the web server, so the Certbot nginx plugin configures TLS for you:
sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.example.comSimpleRisk reads the address from the request, so it starts answering on your new HTTPS name with no further changes. Restrict the security group so that ports 80 and 443 are reachable only from your users, and limit SSH to your management network.
Backing up
Your risk register, compliance data and audit trail all live in the MariaDB simplerisk database. Take a logical backup with mariadb-dump. For whole-disk backups, snapshot the EBS data volume mounted at /data:
sudo mariadb-dump --protocol=socket simplerisk > simplerisk-backup-$(date +%F).sqlStore backups off the instance, for example in Amazon S3, and test a restore periodically.
Security notes
- The administrator and database passwords are unique per instance and generated on first boot. There is no default or shared credential in the image.
- MariaDB listens on
127.0.0.1only and is never exposed to the network. - The
includesdirectory that holds the database configuration is denied from the web, so the database configuration file cannot be fetched over the web. - Restrict the security group source ranges to trusted IPs and enable HTTPS before you put the risk register into use.
- Keep the operating system patched with
sudo apt-get update && sudo apt-get upgrade.
Trademark
SimpleRisk is a trademark of its respective owner. SecureAnyCloud is not affiliated with or endorsed by the SimpleRisk project. This image packages the open source SimpleRisk software with additional configuration and 24/7 support from SecureAnyCloud.
Support
SecureAnyCloud provides 24/7 technical support for this SimpleRisk GRC AMI by email (sales@secureanycloud.com) and live chat, covering deployment and initial configuration, TLS and reverse proxy setup, network access hardening, LDAP and SAML integration, version upgrades, MariaDB database administration, and troubleshooting. Critical issues receive a one-hour average response time.
Deploy on AWS
Launch SimpleRisk GRC and Risk Management | Support by SecureAnyCloud with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com