Repository navigation
chore(monitoring): tune GuardDuty and Security Hub to verified-benign patterns - #164
Open
Alexanderamiri wants to merge 2 commits into
Open
Alexanderamiri wants to merge 2 commits into
Alexanderamiri wants to merge 2 commits into
Conversation
… patterns Archive filters for the team-provisioner Cognito sync and team SSO roles reading their own SSM params; disable inapplicable CIS/FSBP controls with reasons; suppress accepted RDS.2/RDS.46 (dbmoresleep) and ELB.18 (redirect-only listener). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Terraform Plan🚧 Changes detected — Plan: 31 to add, 0 to change, 0 to destroy. Plan outputLLM ReviewRisk: 🟢 LOW Plan creates 31 monitoring/Security Hub/GuardDuty configuration resources in module.monitoring with no changes or destroys; it suppresses some findings and disables certain security controls, but none of the changes are dangerous on their own.
|
The team permission set does not limit SSM reads to the team's path, and the archived finding type is what stolen SSO credentials produce. One of the two live findings came from Hungary. Leave it alerting. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Terraform Plan🚧 Changes detected — Plan: 30 to add, 0 to change, 0 to destroy. Plan outputLLM ReviewRisk: 🟢 LOW Plan creates 30 Security Hub/GuardDuty monitoring resources (suppression rules, control disablements, and a GuardDuty archive filter) with no changes or destruction to existing infrastructure.
|
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Security Hub and GuardDuty keep sending findings to
javabin-securitythat the audit verified as benign or as accepted risk. They drown out the real signal:Impact:IAMUser/AnomalousBehavior(sev 8):javabin-team-provisionercallscognito-idp:UpdateGroupduring its scheduled group sync. CloudTrail confirms the caller is the Lambda.CredentialAccess:IAMUser/AnomalousBehavior(sev 5) on team SSOssm:GetParameteris deliberately NOT filtered. The team permission set isAction "*"scoped byStringEqualsIfExists aws:ResourceTag/team, so it does not limit reads to the team's path, and this is the finding a stolen SSO session produces. One of the two live findings (jzwatch) came from Hungary. A comment indetection-tuning.tfand the docs records why.aws_securityhub_accountdefaultsenable_default_standardsto true. Its 14 CloudWatch.* metric-filter controls need CloudTrail to send logs to CloudWatch Logs, which the platform does not do (cost).dbmoresleepis public on purpose (RDS.2, RDS.46). The platform ALB's port-80 listener only redirects to HTTPS (ELB.18).What
New
monitoring/detection-tuning.tf. Every entry states its reason in code.GuardDuty ARCHIVE filters
team-provisioner-cognito-sync: matches that finding type, that principal andcognito-idponly.Security Hub controls disabled, each with
updated_reasonSecurity Hub automation rules (set to SUPPRESSED with a note)
dbmoresleep. EC2.18 and EC2.19 on its security group stay open on purpose, because narrowing that group is still an open audit item.http_listener_arnis passed into monitoring for this.Docs: a new "Detection tuning" section in
docs/platform-modules.mdlists every suppression and its reason.The RDS
MaliciousIPCallerfindings on dbmoresleep are not suppressed. They are real signal.How verified
terraform fmt -recursive -checkandterraform validatepass. Pytest passes (107).list-security-control-definitionsfor both enabled standards.resource.accessKeyDetails.userName=javabin-team-provisioner, servicecognito-idp.amazonaws.com, apiUpdateGroup.Review fixes
team-sso-own-ssm-paramsfilter: its justification about the permission set was false, and it would archive the stolen-SSO-session signal regardless of source country.Follow-ups
Merge after feat(monitoring): enable account security guardrails #163 and rebase: both edit the monitoring section of
docs/platform-modules.md.GuardDuty filters only apply to new findings. After apply, archive the existing provisioner finding once in the console. Confirm the two team-SSO GetParameter findings with their users (jzwatch: Hungary, 2026-10-24 10:19 UTC) before archiving them.
Re-enable the matching controls if CloudTrail later goes to CloudWatch Logs, or if VPC endpoints or Macie are adopted.
🤖 Generated with Claude Code