1. What's new
Until now, GuardDuty RDS Protection monitored logins to a database. The new data activity monitoring looks at what happens after the login.
| Login activity monitoring | Data activity monitoring | |
|---|---|---|
| Console name | RDS Login Activity Monitoring | RDS Data Activity Monitoring |
| API name | RDS_LOGIN_EVENTS (features) | RDS_DATA_RISK (AdditionalConfiguration) |
| What it watches | Successful and failed logins | Query patterns (volume read or deleted, source, and so on) |
| Example findings | Successful brute-force login, login from a malicious IP | SELECTs returning far more rows than usual, DELETE and DROP, queries from Tor |
| Supported engines | Aurora (MySQL / PostgreSQL), RDS for PostgreSQL, MySQL and MariaDB | Aurora PostgreSQL, RDS for PostgreSQL |
If a password has leaked, the login itself may come from "the usual user, from the usual place," and login monitoring alone won't notice. Data activity monitoring detects when the volume of reads or deletes after login differs from normal, so it covers what happens next.
No agent, no parameter group change and no database reboot are needed. Monitoring starts as soon as you enable it in GuardDuty.
2. New finding types
Data activity monitoring adds seven finding types. The severities are the defaults listed in the AWS documentation.
| Finding type | Description | Severity |
|---|---|---|
| Exfiltration:RDS/AnomalousBehavior | Unusual extraction of a large volume of data | LOW–HIGH |
| Impact:RDS/AnomalousBehavior.Delete | Unusual DELETE activity | LOW–HIGH |
| Impact:RDS/AnomalousBehavior.Drop | Unusual DROP activity | MEDIUM–HIGH |
| Exfiltration:RDS/MaliciousIPCaller | Data extraction from a known malicious IP | HIGH |
| Exfiltration:RDS/TorIPCaller | Data extraction from a Tor exit node | HIGH |
| Impact:RDS/MaliciousIPCaller | Destructive statements from a known malicious IP | HIGH |
| Impact:RDS/TorIPCaller | Destructive statements from a Tor exit node | HIGH |
For the three AnomalousBehavior types, severity depends on the source and the user who ran the statements.
- LOW: run from an IP address in a private network (except Drop)
- MEDIUM: run from a public IP address (Drop is MEDIUM as soon as anomalous DROPs occur)
- HIGH: the volume is far above normal, and the activity came from a previously unseen public network or was performed by a high-privilege role or administrative client
If the credentials of an application server inside the VPC are used, the source is a private IP, so Exfiltration and Delete findings may come in as LOW. Decide how to handle them in your alert rules (section 7).
3. Supported databases and versions
| Engine | Versions supported by data activity monitoring |
|---|---|
| Aurora PostgreSQL | 11.19 / 12.14 / 13.10 / 14.7 / 15.2 or later, and subsequent major versions |
| RDS for PostgreSQL | 11.20 / 12.15 / 13.11 / 14.8 / 15.3 or later, and subsequent major versions |
| Aurora MySQL, RDS for MySQL, RDS for MariaDB | Not supported (login activity monitoring only) |
| Aurora PostgreSQL Limitless Database | Not supported (login activity monitoring only) |
RDS for PostgreSQL read replicas require the primary instance to be on a supported version and to be replicating successfully. In an account with only MySQL-family databases, data activity monitoring will not produce findings.
4. Enable it in the console
With AWS Organizations, only the delegated GuardDuty administrator account can change this setting (member accounts cannot). We use our dedicated security account as the delegated administrator, so we worked from there.
- Open the GuardDuty console in the delegated administrator account
- In the left menu, choose "Protection Plans" → "Configure all enablements"
- Under "RDS Protection", you'll see "RDS Login Activity Monitoring" and "RDS Data Activity Monitoring"
- For "RDS Data Activity Monitoring", set "This account" to Enabled and "Auto enable for organization accounts" to "Enable for all accounts"
- Choose "Save all" → "Confirm and save"
The screen shows "RDS Protection for login activity is required for RDS Protection for data activity to function." In accounts where login activity monitoring is off, enable it first.
"Enable for all accounts" applies to both existing member accounts and accounts that join the organization later. To cover only new accounts, choose "Configure accounts manually" → "Automatically enable for new member accounts".
5. Enable it with the AWS CLI
Data activity monitoring is specified as RDS_DATA_RISK in the AdditionalConfiguration of RDS_LOGIN_EVENTS. All of the following runs in the delegated administrator account (profile example-security).
The delegated administrator account itself
DET=$(aws guardduty list-detectors --query 'DetectorIds[0]' --output text \
--profile example-security)
aws guardduty update-detector \
--detector-id $DET \
--features '[{
"Name": "RDS_LOGIN_EVENTS",
"Status": "ENABLED",
"AdditionalConfiguration": [
{ "Name": "RDS_DATA_RISK", "Status": "ENABLED" }
]
}]' \
--profile example-securityAll accounts in the organization (existing + new)
aws guardduty update-organization-configuration \
--detector-id $DET \
--auto-enable-organization-members ALL \
--features '[{
"Name": "RDS_LOGIN_EVENTS",
"AutoEnable": "ALL",
"AdditionalConfiguration": [
{ "Name": "RDS_DATA_RISK", "AutoEnable": "ALL" }
]
}]' \
--profile example-securitySet AutoEnable to NEW to cover only new accounts, or NONE to stop auto-enabling.
Specific member accounts only
aws guardduty update-member-detectors \
--detector-id $DET \
--account-ids <ACCOUNT_ID_1> <ACCOUNT_ID_2> \
--features '[{
"Name": "RDS_LOGIN_EVENTS",
"Status": "ENABLED",
"AdditionalConfiguration": [
{ "Name": "RDS_DATA_RISK", "Status": "ENABLED" }
]
}]' \
--profile example-securityOn success, UnprocessedAccounts is returned as an empty array. To keep login activity monitoring on and turn off only data activity monitoring, set the Status of RDS_DATA_RISK to DISABLED.
Apply to every region at once
for r in $(aws ec2 describe-regions --query 'Regions[].RegionName' --output text \
--profile example-security); do
DET=$(aws guardduty list-detectors --region $r \
--query 'DetectorIds[0]' --output text --profile example-security)
aws guardduty update-organization-configuration --region $r \
--detector-id $DET \
--auto-enable-organization-members ALL \
--features '[{"Name":"RDS_LOGIN_EVENTS","AutoEnable":"ALL",
"AdditionalConfiguration":[{"Name":"RDS_DATA_RISK","AutoEnable":"ALL"}]}]' \
--profile example-security
done6. Check that it's enabled
Right after enabling it, the console showed the delegated administrator account itself as Enabled (Free trial: 30 days), but "Active organization member accounts" stayed at 0/3. As the AWS documentation notes, it can take up to 24 hours for the configuration to reach member accounts.
# status of the delegated administrator account itself aws guardduty get-detector --detector-id $DET --profile example-security \ --query 'Features[?Name==`RDS_LOGIN_EVENTS`]' # status of each member account aws guardduty get-member-detectors --detector-id $DET \ --account-ids <ACCOUNT_ID_1> <ACCOUNT_ID_2> --profile example-security \ --query 'MemberDataSourceConfigurations[].[AccountId, Features[?Name==`RDS_LOGIN_EVENTS`].AdditionalConfiguration[]]'
You're done when the Status of RDS_DATA_RISK is ENABLED. In the console, the "Accounts" page in the left menu has an "RDS data activity" column showing the status of each account.
7. Review your alert rules
The alert rule from our previous article (GuardDuty findings aggregated in Security Hub with severity MEDIUM or higher and not yet handled) doesn't filter by finding type, so it alerts on the new findings with no extra setup.
However, as noted in section 2, reads and deletes from inside the VPC may be reported as LOW and won't be caught by this rule. Review LOW findings regularly in the Security Hub console, or, where the database is critical, consider a separate rule that alerts on LOW findings for RDS only.
You can test alerts with GuardDuty sample findings. Specifying a HIGH-severity finding type lets you check whether a MEDIUM-or-higher rule sends an alert.
aws guardduty create-sample-findings \ --detector-id $DET --finding-types "Impact:RDS/MaliciousIPCaller" \ --profile example-security
Archive the sample findings once you've checked.
8. Costs and caveats
- There is a 30-day free trial. Even accounts already using login activity monitoring get a 30-day free trial per account and region when they enable data activity monitoring for the first time. It is not disabled automatically when the trial ends, so check the monthly estimate on the "Usage" page of the GuardDuty console during the trial.
- Cost scales with database size. It is billed separately from login activity monitoring, based on the vCPUs of your database instances (ACUs for Aurora Serverless v2). Prices vary by region, so check the GuardDuty pricing page.
- You can't see the query logs. GuardDuty doesn't make data activity logs available to you. To find out which rows of which tables were read when a finding appears, you need database-side audit logs, for example with pgAudit.
- Detection is a starting point, not a fix. The response AWS recommends is to change the database user's password, check the scope in the audit logs, restore from backups if needed, and keep the database in a private subnet with security groups limiting the sources. Before any finding appears, check that the database isn't exposed to the internet and that application users don't have DROP privileges.
Related links
We review AWS security settings through our free security assessment, and handle multi-account operations including GuardDuty and Security Hub through our AWS Operations Service.
References
- AWS What's New: Amazon GuardDuty RDS Protection data activity (October 2026)
- Amazon GuardDuty User Guide: GuardDuty RDS Protection
- Amazon GuardDuty User Guide: Enabling RDS Protection in multiple-account environments
- Amazon GuardDuty User Guide: GuardDuty RDS Protection finding types
- Amazon GuardDuty pricing
Frequently Asked Questions
QDoes data activity monitoring work with MySQL or MariaDB?
Not as of October 2026. It covers Aurora PostgreSQL and RDS for PostgreSQL. Aurora MySQL, RDS for MySQL and RDS for MariaDB support login activity monitoring only.
QDo I need to change database settings or reboot?
No. There is no agent to install, no parameter group change, and no need to turn on Database Activity Streams. You only enable it in GuardDuty. AWS designed it not to affect database performance.
QCan I use data activity monitoring without login activity monitoring?
No. Data activity monitoring is an additional configuration (AdditionalConfiguration) of RDS Protection (login activity monitoring), and can only be enabled in accounts where login activity monitoring is on.
QWill findings appear right after enabling it?
There is a learning period of up to two weeks to baseline normal activity. During that time, behavior-based findings (AnomalousBehavior) may not appear. Findings based on known malicious IPs or Tor are generated regardless of the learning period.
QCan I see the executed SQL in GuardDuty when a finding appears?
GuardDuty doesn't make data activity logs available to you. Findings include the user name, source IP and target database, but to investigate which data was read or deleted you need database-side audit logs, for example with pgAudit.
