> For the complete documentation index, see [llms.txt](https://support.attackforge.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.attackforge.com/app/data-concepts-and-access.md).

# Data Concepts & Access

## Data Concepts Overview

The following diagram illustrates the data concepts of AttackForge:

<figure><img src="https://372186556-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8s1QY2Q6YTHB4a6DMu%2Fuploads%2FxMfKgRcS1WP7pwiIKceb%2FAF%20Data%20Concepts.png?alt=media&amp;token=09ee168e-d602-4153-8524-56ee90d80be5" alt=""><figcaption></figcaption></figure>

## Access Control Overview

Access Controls in AttackForge can be configured for the following:

* Custom Field-Level Access Control
* Portfolios
* Streams
* Project Requests
* Projects (which controls access to Vulnerabilities)
* Asset Libraries
* Writeup Libraries
* Report Templates
* Groups
* Test Suites
* Flows
* Actions
* Workspace
* Reports
* Pages
* Project Test Cases
* Retests
* Attack Chains
* Self-Service RESTful APIs - access per API Endpoint
* Self-Service Events APIs - access per API Event
* AI Model Context Protocol (MCP) - access per Tool

## Onboarding External Testing Vendors

If you're an internal/enterprise security team - there are many reasons you may consider to bring your external vendors (consultants / MSSPs) into your AttackForge environment:

<table data-header-hidden><thead><tr><th width="206.09375" valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><strong>Direct </strong><em><strong>benefits</strong></em></td><td valign="top"><strong>Rationale</strong></td></tr><tr><td valign="top"><strong>No import pipeline to maintain</strong></td><td valign="top">No building custom scripts per vendor to import their findings and evidence. No format drift when they change their export. No rejected rows to chase. No reconciliation QA against the source report during the reporting crunch.</td></tr><tr><td valign="top"><strong>Findings land as they're discovered</strong></td><td valign="top">Critical findings surface immediately, so remediation runs in parallel with testing rather than after it. For anything approaching a Continuous Testing and Exposure Management (CTEM) model this is the whole point – the engagement stops being a report delivery and becomes a live feed.</td></tr><tr><td valign="top"><strong>Methodology and coverage are captured, not just outcomes</strong></td><td valign="top">Test cases get worked through and annotated in place, so you end up with evidence of what was tested and passed, not only what failed. There’s also standardised testing coverage which is aligned with your organizations risk appetite. That's the material that answers audit questions, justifies scope decisions, and lets you compare one vendor's thoroughness against another's or against your internal team on the same asset class.</td></tr><tr><td valign="top"><strong>Better prioritization, clearer reporting, faster response, less duplicates</strong></td><td valign="top">Findings link to Writeups, severities and CVSS vectors follow your scheme, and affected assets map to the asset records. Deduplication works, lineage across engagements holds, and Portfolio-level trending is built on clean data rather than reconciled data. Retests link back to the original finding instead of appearing as new entries.</td></tr><tr><td valign="top"><strong>Automation fires at the right time, in the right order</strong></td><td valign="top">Flows, Actions, Jira sync and notifications trigger per finding as it's raised, so tickets reach owners while the tester is still on site. SLA clocks start on genuine discovery dates, which means your time-to-remediate reporting is actually measuring what it claims to.</td></tr><tr><td valign="top"><strong>Evidence lands with the finding</strong></td><td valign="top">Screenshots, request/response pairs, PoC files and formatted reproduction steps go in at the moment of writing, when the tester has all the context. AttackForge ReportGen then produces a usable report straight from that data – no separate authoring pass, no reliance on a vendor PDF as the real artefact.</td></tr><tr><td valign="top"><strong>The retest loop closes inside the platform</strong></td><td valign="top">Request a retest, the tester who found it verifies it, status and evidence are recorded against the same record. No email round trips, no re-importing verification results, and the full remediation history stays on the finding.</td></tr><tr><td valign="top"><strong>Direct communication with the person who found it</strong></td><td valign="top">Comments and questions sit on the finding rather than in someone's inbox, so a developer's "I don't think this is exploitable in our config" gets answered by the tester, on the record, permanently – visible to the auditor.</td></tr><tr><td valign="top"><strong>Per-tester attribution and a real audit trail</strong></td><td valign="top">Every action is timestamped against an individual. That's better for accountability, better for demonstrating independence, and useful when you need to know who to ask about a two-year-old finding.</td></tr><tr><td valign="top"><strong>Vendor consistency at scale</strong></td><td valign="top">If you're using several consultancies or MSSPs, direct entry forces a common structure on all of them. Their output becomes comparable – coverage, finding quality, turnaround – which makes vendor performance measurable rather than anecdotal.</td></tr><tr><td valign="top"><strong>Data ownership and continuity</strong></td><td valign="top">The findings are yours from the moment they're written, independent of whether you renew with that vendor or whether their own platform still holds the history.</td></tr></tbody></table>

### Checklist for onboarding Vendors

* [x] Confirm that external Vendor users will be logging in with Local accounts, and give them the `Consultant` role. Otherwise, if logging in via SSO – check the [SSO Role Mapping](https://support.attackforge.com/app/modules/administration%22%20%5Cl%20%22users) to ensure they will receive the `Consultant` role.
* [x] Create a new [Group](https://support.attackforge.com/app/modules/groups) for each Vendor. Configure your point of contact at the Vendor as a [Group Membership Administrator](https://support.attackforge.com/app/modules/groups%22%20%5Cl%20%22group-membership-admins) so they can on-board and off-board their team as needed. This eliminates the burden for you having to manage their teams access to AttackForge.
* [x] Review all of your [existing access controls](https://support.attackforge.com/app/data-concepts-and-access%22%20%5Cl%20%22access-control-overview) – remove any assignments to the `Consultant` role – and replace with group-based access control for your `Internal Pentester` group. This ensures the internal pentesters maintain their access and can be differentiated from external vendors. If access controls are applied effectively – ***vendors will not be able to see each other or know of each other’s existence within AttackForge***.
* [x] If your intention is to allow your Vendors to be able to create their own [Writeups](https://support.attackforge.com/app/modules/vulnerability-library) – create a new [Writeups library](https://support.attackforge.com/app/modules/administration%22%20%5Cl%20%22writeups) for each Vendor and give them `Edit` access to their own library.
* [x] Give each Vendor Group `View` access to Writeups libraries you would like to share with them. This will allow them to reference those writeups but not change them when creating vulnerabilities.
* [x] When creating [Projects](https://support.attackforge.com/app/modules/projects) – [link the Vendor Group to the project](https://support.attackforge.com/app/getting-started/creating-and-managing-projects%22%20%5Cl%20%22linking-groups). This will ensure they can inherit access to the project they are working on. Alternatively, configure the Vendor point of contact as a [Project Membership Administrator](https://support.attackforge.com/app/getting-started/invite-user-to-project%22%20%5Cl%20%22member-admins) so they can selectively add their testers to the project as needed.
* [x] Create a `Consultant` test account which is representative of an external Vendor account. Log in  to confirm that this account is restricted to your requirements. This is an important step to validate your configuration is applied effectively, and to provide assurance that you are ready to start onboarding your vendors.

When it comes to whether external vendors should have access to [Asset Libraries](https://support.attackforge.com/app/modules/assets#grouping-and-managing-access-to-assets) - this is only required for [Importing Vulnerabilities](https://support.attackforge.com/app/getting-started/creating-vulnerabilities#importing-vulnerabilities). The external vendors will be able to see the asset data on the [Project Scope](https://support.attackforge.com/app/getting-started/project-scope) regardless.

If you do not need your external vendors importing vulnerabilities - we recommend ***not*** giving them access to any asset libraries.

If you do need your external vendors importing vulnerabilities - we recommend creating a dedicated asset library for them, and giving them `Edit` access to their own library. Any assets they create will be stored in their library only. You can then link or move those assets into your other asset libraries if you wish to do so.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://support.attackforge.com/app/data-concepts-and-access.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
