TELCOMA Global  /  Secret & Personal Data Scanner for Confluence  /  Documentation

Find secrets and personal data in Confluence, and work through them.

Secret & Personal Data Scanner reads the current version of every page and blog post on your Confluence Cloud site and lists the passwords, keys and personal data written into them, by space and page. The app only reads. It has no permission to change a page, and it never stores a full value.

Install

Two steps, both inside Confluence.

STEP 1

Find the app

In Confluence go to Settings → Find new apps and search for Secret & Personal Data Scanner. Approve its permissions: read permissions only.

STEP 2

Start the free trial

The app is paid per user through the Atlassian Marketplace, with a free trial. While the trial runs, the admin page shows how many days are left.

Confluence administrators open the app under Confluence administration → Secret & Personal Data Scanner. Nobody else can use it: the app asks Confluence on every request whether the person is a Confluence administrator, and refuses if it can't confirm it.

Scans

A full scan, a weekly scan, and a check on every edit.

Click Scan all pages. The app lists every space, then reads the current version of every page and blog post in each space, with its title and text, and checks them against its rules. A progress line shows the step: Listing spaces, Scanning pages and blog posts (with the space it is on and how many pages it has scanned), and Removing findings from pages that are gone. You can leave the page; the scan carries on.

  • Stop scan asks first. Findings saved so far are kept, and the next full scan starts again from the first space.
  • If a scan makes no progress for 20 minutes, the page says The scan has stopped moving and offers Start again. Findings saved so far are kept.
  • The line next to the button shows the last full scan: when it finished, whether it was started from the page (and by whom) or was the weekly scan, how many pages it scanned and how many had findings.
  • Weekly scan. A full scan also starts once a week by itself. It is skipped if a scan is already running.
  • On every edit. When a page or blog post is created, edited or restored from the trash, or a page is moved, the app scans that one page again.
  • At the end of a full scan, findings on pages the scan did not see (trashed, deleted, archived, or no longer visible to the app) are removed.
  • If the app can't read a space, it skips it, says so in a warning after the scan, and keeps that space's earlier findings.

What it looks for

Twenty types, in two groups.

These are the names you see in the Type column and filter.

SecretsPrivate key, AWS access key ID, AWS secret access key, GitHub token, GitLab token, Slack token, Slack webhook URL, Atlassian API token, Stripe API key, Google API key, Password, Random-looking string.
Personal dataEmail address, Phone number, Payment card number, IBAN, US Social Security number, UK National Insurance number, Indian PAN, Aadhaar number.
  • Passwords are found after a word like password: or pwd =, on the line after a line that ends in Password:, in a table cell under a Password column heading, and inside a connection string such as postgres://user:password@host. Placeholders such as ********, <password>, ${VAR} or see vault are not reported.
  • Card numbers must pass the Luhn check and start like a real card (Visa, Mastercard, American Express, Discover, JCB, Diners Club, UnionPay, Maestro, RuPay or Mir). IBANs must have the right length for their country and pass the mod 97 check. Aadhaar numbers must pass the Verhoeff check.
  • Phone numbers without a +, brackets or dashes, bare 9-digit SSNs and bare 12-digit Aadhaar numbers are only reported with a word like phone, SSN or Aadhaar on the same line, on the line before, or in the heading of their table column.
  • Random-looking strings of 32 characters or more are not reported inside web addresses, because page links are full of ids, unless they follow a parameter named like a secret (?api_key=, &token=, &sig=).
  • Well-known sample values are skipped, such as AWS's own example keys, addresses at example.com and no-reply senders, and SSNs that are never issued.
  • The title is scanned as well as the text. Tables are read row by row, with each value read against its column heading. Where two types match the same text, the more specific one wins: a GitHub token is not also listed as a random-looking string.

Findings

Every finding, by space and page.

The line above the table counts open findings and the pages they are on, and how many are resolved or marked as false positives. On a large site the counts cover the first 2,000 pages with findings, and the line says so.

  • Filters. Space (each with its number of open findings), Type (All, All secrets, All personal data, or one type with its open count) and Status (Open, which is the default, Resolved, False positive or All).
  • Space and Page. The page title links to the page in Confluence. Blog posts are marked Blog post. A value found in a title is masked in the title too.
  • Type and Value. The value shows its first and last 2 characters, for example ab****yz. Values shorter than 10 characters are fully masked, and so are SSNs.
  • Line. The line around the value, with every value on that line masked, then Line 12 or In the title, and 3 times on this page when the same value appears more than once. A note says when a page was so long that only its first part was scanned, or holds more findings than are listed.
  • Last edited. Who last edited the page, and when.
  • Status. Open, Resolved or False positive, with who marked it and when.

When there are more rows, Load more fetches the next set. How it works at the top of the page gives a short summary of what the app does and doesn't scan.

Marks and rescans

Marks stay in place after the next scan.

  • Resolved and False positive mark an open finding. Reopen sets it back to open. Each mark records who made it and when.
  • A mark belongs to one value on one page. The app recognises the value on the next scan by its keyed hash, so the mark stays. The same value on another page is a separate finding. If the value on the page changes, it shows as a new open finding.
  • Rescan page scans that one page again now. Use it after someone has removed a value. If the page no longer exists, or the app can no longer see it, its findings are removed.

To remove a finding for good, edit the page in Confluence. The old value stays in the page history until that version is deleted in Confluence. The app is read-only, so it cannot do that for you.

Pages you can't open

An admin sees no more than Confluence would show them.

The app scans every page as itself, so before a row is shown it asks Confluence, as you, whether you can open that page or blog post. If you can't, the row shows only the type of finding, the space, A page you cannot open (id …) and the dates. There is no title, value, line, editor or status, and you can't mark the finding or scan the page again. These findings are still counted at the top, and the page says when some rows are hidden.

If Confluence doesn't answer the check (for example when it is busy), the row is hidden in the same way and the page asks you to refresh and try again. The export follows the same rules.

Export

Take the findings to Excel. Values stay masked.

Under Export, choose Findings: All or Open only. The file is built in your browser and named secret-scanner- with the date.

Download Excel

Two sheets. Summary: when it was exported, all or open only, the number of rows and open findings, and a note that values are masked. Findings: one row per finding.

Download CSV

The Findings sheet as a plain file, for tools that don't open Excel.

Columns

Space, Space key, Page, Page type, Link, Type, Category, Masked value, Where, Line, Line text (masked), Times on page, Last edited by, Last edited, Status, Marked by, Marked on.

Safe files

Cells that a spreadsheet would read as a formula are written as plain text, so a page title can never run anything. Rows on pages you can't open hold only the type, the space and the date.

What it can't see

What the scan does not cover.

  • Comments, attachments, older versions, drafts and archived pages. Only the current version of each page and blog post is scanned. Whiteboards, databases and text inside images or diagrams are not scanned either.
  • Pages and spaces the app can't read. A page restricted so the app can't read it is not scanned. A space the app can't read is skipped, with a warning.
  • Very long pages. Only the first 1,000,000 characters are scanned. A page keeps at most 200 findings. The table says when either happens.
  • Deleted and trashed pages. Their findings go at the end of the next full scan, or straight away with Rescan page if Confluence still lets you open the page.
  • Values the rules don't know. The rules are patterns and checks, not a guarantee. Some formats need a nearby word, as described above, to keep false positives down.

Your data

Nothing leaves Atlassian.

What it reads

Spaces, and the current version of every page and blog post with its title and text. Whether you are a Confluence admin and whether you can open a page. Names of editors, shown on the page and in the export.

What it changes

Nothing. The app has no write permission.

What it stores

For each page with findings: masked values, masked lines, line numbers and keyed hashes, the masked title, and the last editor as an account ID. Marks, scan progress and the last 8 scans. Never a full value, a page body, or a user's display name or email.

Where it goes

Nowhere. No servers of our own, no requests outside Atlassian. Exports are built in your browser and saved to your device.

Full details in the privacy policy.

Frequently asked

The questions admins ask first.

How is it priced?

Per user, billed through Atlassian, with a free trial. The price will be on the Atlassian Marketplace listing.

Can I see the full value?

Not in the app. It never stores a full value, so it can't show one. Open the page from the link in the table to see it in Confluence.

Does it remove secrets from pages?

No. It has no write permission. Edit the page in Confluence, rotate the key if it was real, and delete the old page version if it must go from the history too.

I removed a value. Why is it still listed?

Editing a page makes the app scan it again, so the finding normally goes by itself. If it is still there, click Rescan page on the row.

What is a false positive?

Something that matches a rule but isn't a secret or personal data, such as a sample value in a how-to page. Mark it False positive and it stays marked after the next scan.

Can other people use it?

Only Confluence administrators. Each admin sees full details only on pages they can open in Confluence.

Support

Ask the people who built it.

When reporting a problem, include your site URL and what you expected to happen. Never send us a real password, key or piece of personal data; describe it, or make up a value in the same format. We never need passwords or tokens.

Get help

One business day, usually much less.

Email
[email protected]
Support page
Known limits, what to include, status
Response time
Within one business day
Email support