Research what it takes to scan Amazon Bedrock, and record it as a Later item - #116
Open
kiwifellows wants to merge 1 commit into
Open
Research what it takes to scan Amazon Bedrock, and record it as a Later item#116kiwifellows wants to merge 1 commit into
kiwifellows wants to merge 1 commit into
Conversation
Answers what it takes to secure an Amazon Bedrock environment and what TOPS would have to do to check it. No commitment: Later, with a named trigger. The framing that matters is that "Bedrock security" is two problems. A config scanner can check that logging, guardrails and encryption are on; it cannot see prompt injection or exfiltration through completions. The published research is all about the second, but the enabling conditions are nearly all in the first — and Bedrock ships with those off by default. The fit is better than expected, and this was verified rather than assumed: every call needed resolves through GenericAwsScanner on the installed SDK, so no PHP; and ReadOnlyAccess on the onboarding role already grants each read action, so it would work against every account already onboarded with no CloudFormation change. It is two tasks.json files, since bedrock and bedrock-agent are separate SDK clients. The obstacle is not Bedrock. Model invocation logging is the highest-value check, and it is account-level on a regional service — a combination TOPS has not had. That surfaces a latent defect in D-11: ScanResult::identityHash() does not include region and createFinding() falls back to 'unknown' for id-less tasks, so the same check across ~17 regions collapses to one identity hash and the last region job to finish wins. Separating them per region then produces sixteen findings about regions the account does not use, which is the exact unactionable-coverage failure this product is meant to be the opposite of. Hence the recommended first ship is resource-scoped rules only, which fire only where a resource exists and need no engine change. The identity-hash collision is worth recording as a known limitation of D-11 regardless of whether Bedrock is ever scanned. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Signed-off-by: Ben Fellows <kiwifellows@gmail.com>
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.
EOF2
What and why
Research only. This does not add Bedrock scanning — it establishes what securing a Bedrock environment involves, what TOPS would have to do to check it, and what would have to be true before it is worth doing. Recorded so the decision is made once and the research is not redone.
New:
docs/features/bedrock-scanning.md. Roadmap gains a Later row with a named trigger, plus a section summarising the finding.User story
Not a feature. Documentation for a prospective scanner-coverage item, filed under Later — real, but waiting on a trigger.
What is in the doc
basic.json, notcis.json. Recorded so nobody invents control numbers.The finding that outlives the Bedrock question
Model invocation logging is the highest-value check and is account-level on a regional service — a combination TOPS has not had (IAM's
getAccountPasswordPolicyis account-level but global).ScanResult::identityHash()does not include region, andcreateFinding()falls back to'unknown'for id-less tasks. So the same check across ~17 regions produces one identity hash, one row under the unique index, and with five concurrent region workers since PERF-6, the last region to finish wins — a finding that appears and disappears between scans with nothing changing.This is a latent property of D-11's identity key, not a Bedrock quirk; Bedrock is just the first service that would hit it. Worth recording as a known limitation of D-11 whether or not Bedrock is ever scanned, so the next regional account-level check does not rediscover it in production. Flagged in the doc and the roadmap; not filed as an issue, since that is a call for the maintainer.
How it was tested
Documentation only — no code paths changed, so no tests were added or run. Claims were verified against the repo and the SDK rather than from memory:
GenericAwsScanner::supportsOperation()against the installed SDK (3.369.9), which ships all eight Bedrock clients. All pass, so no custom scanner is needed.scan:validate-rulescannot catch.ReadOnlyAccessconfirmed to grant each of the 11 requiredbedrock:actions individually.ScanResult.php:98andFindingsEngine.php:244.regional: true, not guessed.bedrock:actions inReadOnlyAccess. Two reads of the AWS reference page disagreed (54 vs 51), so the doc quotes no figure and rests on the per-action confirmations instead. Noted in the doc.Quality gate
docs/practices/Practices check
Multi-tenancy, Database, Testing and Scan definitions are untouched.
Out of scope
tasks.json. Nothing is added toapp/rules/.🤖 Generated with Claude Code