Investigate a blocked install
Trace a failed install back to the firewall rule that caused it, and decide what to do about it.
A developer or a CI job reports a failed install. This guide takes you from the error message to the responsible rule to a resolution.
1. Recognize the two failure shapes
Download blocked. The client got an explicit block: an error response from the firewall naming the package and a request ID. The rule behind it can sit on either the download or the versions phase, since an artifact request is evaluated against both. With npm, for example:
lodash@4.17.20 is blocked. Check firewall log entries for request <request-id> for detailsThe request ID in the message identifies the matching log entry. The named package is the one that was blocked, which is often a transitive dependency rather than the package that was installed. Each ecosystem page shows the exact error per package manager.
Version filtered. The client reports a version as not found even though it exists on the public registry. A rule on the versions phase filtered it out of the metadata the client resolved against, most commonly a delay rule. There is no request ID in the client error; search the logs by package name.
2. Find the log entry
In the dashboard, open Logs on the firewall and search for the package.
Select a likely row and compare its request field with the ID from the client
error. From the terminal, list the firewall's compact log summaries:
bsfw logs --firewall <firewall-id>If the report came from CI, filter by that pipeline's interaction ID or the Service Access Token user.
3. Read the entry
The log entry tells you:
- Rule. Which rule matched, and its description.
- Rule output. Selector-function details, for example the CVEs, CVSS, and EPSS values behind a vulnerabilities match.
- Blocked. Whether the request was actually blocked or only logged.
- User, timestamp, upstream. Who hit it, when, and where the package would have come from.
4. Resolve
Three options, in order of preference:
- Change the dependency. If the block is legitimate (real vulnerability, malware, too-new release), the right fix is usually a different version. Often the version range already permits an older, allowed release.
- Add an exception. The package is needed as-is and the risk is understood. Create an exception scoped to the exact package and version, with reason and expiry. This unblocks one case and leaves the rule intact.
- Adjust the rule. Only when the log shows a pattern of false positives, not for one blocked install. Consider switching the rule to log-only while retuning.
If there is no log entry
A missing entry does not mean nothing happened. Work through these:
- The rule blocks without logging.
blockandlogare independent effects, so a rule with{ "block": true, "log": false }fails the install and records nothing. Check the firewall's rules for blocking rules with logging off; this is the one case where the client fails and the log stays empty by design. - The request never reached the firewall. Check the client's registry config and the lockfile's
resolvedURLs. - Authentication failed. A 401 happens before rule evaluation and creates no rule log entry. Check the token.
Related
- How-to: View logs, Manage exceptions
- Concept: Rule evaluation
Integrate with repository managers
Deploy the firewall together with Artifactory, Nexus, GitLab, GitHub Packages, Azure Artifacts, or AWS CodeArtifact, between them and the public registries, between developers and them, or on both sides.
Manage access
Organize users into teams, set namespace permissions, and grant teams access to specific firewalls.