You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: add Backstage Pro connector reference (#15223)
* docs: add Backstage Pro connector reference
Document the new Backstage asset connector: what it maps (System ->
Product Type, Component -> Product, owning Group -> Product ownership,
tags/annotations), the Backstage-side static externalAccess token setup
with catalog-only accessRestrictions, the connector configuration
reference, sync semantics (uid-keyed renames in place, MISSING on
removal/orphan), v1 limitations, and a note that a Backstage frontend
plugin showing DefectDojo findings on entity pages is a deliberate
out-of-scope follow-on. Also add Backstage to the supported-tools list.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* docs: clarify that Backstage-mapped Product names track the catalog
E2E-verified behavior worth stating explicitly: the connector reconciles
the Product name to the catalog name on every sync, so renames belong in
Backstage, and custom names given at manual-mapping time do not stick.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: devGregA <greg-agent-2@defectdojo.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/content/import_data/pro/connectors/connectors_tool_reference.md
+60Lines changed: 60 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -97,6 +97,66 @@ Once you have created your IAM user and assigned it the necessary permissions us
97
97
98
98
DefectDojo can pull Findings from more than one region using Security Hub's **cross\-region aggregation** feature. If [cross\-region aggregation](https://docs.aws.amazon.com/securityhub/latest/userguide/finding-aggregation.html) is enabled, you should supply the API endpoint for your "**Aggregation Region**". Additional linked regions will have ProductRecords created for them in DefectDojo based on your AWS account ID and the region name.
99
99
100
+
## **Backstage**
101
+
102
+
The Backstage connector is an **asset connector**: instead of importing Findings, it pulls your [Backstage](https://backstage.io) Software Catalog into DefectDojo and keeps your Product hierarchy and team ownership in sync with it. It is designed for organizations that maintain their service inventory and org structure in Backstage and want DefectDojo to mirror that structure instead of maintaining it by hand.
103
+
104
+
#### What gets mapped
105
+
106
+
| Backstage | DefectDojo |
107
+
|---|---|
108
+
|**System**| Product Type (Components with no System are grouped under a configurable "Backstage / Uncategorized" Product Type) |
109
+
|**Component**| Product — named from the entity `title` (falling back to `name`), with the catalog description |
110
+
|**Owning Group** (`ownedBy` relation) | A DefectDojo Group linked to the Product (default role: Maintainer, configurable) |
111
+
|**Owner email** (Group profile email, or a User owner's email) | A Product Member, when a DefectDojo user with that email already exists (users are never created) |
112
+
|`metadata.tags`, `spec.type`, `spec.lifecycle`, namespace, domain | Product tags under a `backstage:` prefix |
113
+
|`metadata.annotations`| Stored on the Record (bounded); selected annotations can be promoted to first-class attributes or tags via **Annotation Mappings**|
114
+
115
+
Records are keyed by the entity's server\-assigned `metadata.uid`, so renames in Backstage update the mapped Product **in place** on the next sync — no duplicates. The Product name always tracks the catalog: to rename a Product managed by this connector, rename the Component in Backstage (a DefectDojo\-side rename, or a custom name given during manual mapping, is reconciled back to the catalog name on the next sync unless it would collide with another Product). Ownership changes move the Product's group assignment. Components that disappear from the catalog (or are flagged with the `backstage.io/orphan` annotation) are marked **MISSING** — DefectDojo never deletes a Product on its own. Domain and Group hierarchy (parent teams) are recorded as tags/metadata only; they do not create extra hierarchy levels.
116
+
117
+
#### Prerequisites
118
+
119
+
The connector authenticates with a **static external access token** against the Backstage backend. In your Backstage app config, define a token and (recommended) restrict it to the catalog plugin:
120
+
121
+
```yaml
122
+
backend:
123
+
auth:
124
+
externalAccess:
125
+
- type: static
126
+
options:
127
+
token: ${DEFECTDOJO_BACKSTAGE_TOKEN}
128
+
subject: defectdojo-connector
129
+
accessRestrictions:
130
+
- plugin: catalog
131
+
```
132
+
133
+
Generate a strong random token (for example `openssl rand -hex 32`) and store it in your Backstage deployment's environment. See the [Backstage service-to-service auth documentation](https://backstage.io/docs/auth/service-to-service-auth) for details.
134
+
135
+
#### Connector Mappings
136
+
137
+
1. Enter your **Backstage backend root URL** in the **Location** field: for example `https://backstage.example.com` (the connector appends `/api/catalog`). This must be the **backend** URL, not the frontend web UI.
138
+
2. Enter the static external access token in the **Secret** field.
139
+
140
+
Optional fields (leave blank for the defaults):
141
+
142
+
* **Namespaces** — comma\-separated catalog namespaces to import; blank imports every namespace.
* **TLS Verification** — set to `false` only if Backstage serves a certificate DefectDojo cannot verify (internal CA); not recommended.
146
+
* **Uncategorized Product Type** — the Product Type used for Components with no System (default `Backstage / Uncategorized`).
147
+
* **Owner Group Role** — the role granted to the owning team on mapped Products (default `Maintainer`).
148
+
* **Annotation Mappings** — a JSON object mapping annotation keys to Record attribute names, or to `"tag"` to import an annotation as a Product tag, e.g. `{"github.com/project-slug": "GITHUB_PROJECT", "example.com/tier": "tag"}`.
149
+
150
+
With **Auto\-Map** enabled, a single Discover \+ Sync builds the complete Product Type / Product / ownership structure with no manual steps. With Auto\-Map disabled, discovered Components appear as Records awaiting your mapping decision.
151
+
152
+
#### Limitations (v1)
153
+
154
+
* Backstage **Group membership is not synchronized**: the connector creates/links the owning team as a DefectDojo Group, but populating that group's users is left to your identity provider or admins.
155
+
* Only Components become Products; APIs, Resources, and Domains are not imported as assets (domains surface as tags).
156
+
* Tags and annotations are normalized and bounded to fit DefectDojo field limits (oversized values are truncated).
157
+
158
+
**A note on the reverse direction:** displaying DefectDojo findings and grades *inside* Backstage (on entity pages) is a natural follow\-on that would be built as a Backstage frontend plugin consuming the DefectDojo REST API — it is deliberately out of scope for this connector, which only pulls catalog data into DefectDojo.
159
+
100
160
## **BurpSuite**
101
161
102
162
DefectDojo’s Burp connector calls Burp’s GraphQL API to fetch data.
0 commit comments