Integrations and automated evidence are typically managed by workspace admins.
See Evidence & audits for how automated evidence fits
alongside manual evidence.
What it’s used for
Keldyn uses the data it reads from Entra to keep identity and access-governance evidence current. Each refresh updates the evidence and freshness status shown in the integration’s Controls covered table. The integration contributes evidence to these ISO 27001 controls:
It also contributes evidence to these SOC 2 controls:
Full coverage means the data is the artifact the control asks for.
Partial coverage means the data usefully contributes but does not, on its
own, replace everything the control requires. For example, revocation evidence
shows who disabled or deleted an account and when — proving that happened on
time still needs the HR leaver date. Keldyn labels partial coverage so it
isn’t mistaken for complete coverage.
Before you begin
1
Use an Entra administrator who can consent
You need permission to create an app registration
(
Application Developer, Application Administrator, or Global
Administrator) and to grant admin consent for application permissions.
Application permissions do nothing until an admin consents.2
Create a dedicated, read-only app
Register a dedicated app (for example
KeldynEvidence) that exists only
for this integration. Do not reuse an app that already has write
permissions.3
Confirm the Entra licence you need
Directory audit logs and sign-in logs need Entra ID P1. Access reviews,
PIM activations, and Entitlement Management need Entra ID P2. A fetch
the licence does not cover is recorded as Access required so you can
evidence that control manually. The rest of the connection keeps working.
Set up the integration
1. Create the app registration
In the Entra admin center (or Azure portal app registrations):- Open Entra ID → App registrations → New registration.
- Name the app something stable, such as
KeldynEvidence. - Set Supported account types to Accounts in this organizational directory only (single tenant).
- Leave Redirect URI empty. This is a client-credentials (service principal) connection; there is no browser sign-in.
- Select Register.
Both values are GUIDs. Keldyn rejects anything that is not.
2. Create a client secret
On the same app, open Certificates & secrets → Client secrets → New client secret.- Give it a description such as
keldyn-evidence. - Choose an expiry (12 or 24 months) and set a reminder. An expired secret surfaces as Reauth required on the next refresh.
- Copy the secret Value immediately. You will not see it again. That is Client Secret.
3. Grant Microsoft Graph application permissions
On the same app, open API permissions → Add a permission → Microsoft Graph → Application permissions. Add all of the following, then select Grant admin consent for [your tenant].These are application permissions, not delegated user permissions. Keldyn
authenticates as the app itself with client credentials and never signs in as
a person.
4. Connect in Keldyn
1
Open Integrations
In the Keldyn web app, go to Integrations and select Microsoft Entra ID.
2
Paste the three values
Enter Tenant ID, Client (App) ID, and Client Secret, then select
Connect. Keldyn mints a short-lived Graph token and reads
/organization to confirm the app can see the tenant. The secret is stored
encrypted and is never shown again.3
Run the first sync
Select Sync now to pull evidence immediately, or wait for the next
scheduled refresh. The Controls covered and Evidence sources tables
then show what was collected and how fresh it is.
What data Keldyn collects and why
Keldyn requests read-only Graph access and never writes to your tenant. It collects only the data below, and only to build control evidence.Entra retains directory audit logs and sign-in logs for about 30 days. Keldyn
accumulates lifecycle, sign-in, access-review, PIM, and access-package
evidence rather than replacing it on each refresh, so a record captured while
it was live stays available for a longer audit period. The first sync after
connecting shows only what Entra still holds.
Licences
A blocked fetch never auto-completes its control. Directory users, Conditional Access policies, directory roles, and group memberships do not need P1/P2.
Troubleshooting “Access required”
A control shows Access required when Graph denies that data source. Common causes include:- Admin consent was not granted for the matching application permission.
- The tenant does not have Entra ID P1 (audit and sign-in logs) or P2 (access reviews, PIM, Entitlement Management).
- Access reviews, PIM, or Entitlement Management are licensed but not in use, so there is nothing to read yet.
- The app is missing
AuditLog.Read.All,AccessReview.Read.All,RoleManagement.Read.Directory, orEntitlementManagement.Read.All.
Rotate credentials
1
Create a new client secret
On the same app registration, create a new client secret and copy its value.
2
Update credentials in Keldyn
Open Integrations → Microsoft Entra ID, select Update credentials,
and paste the existing Tenant ID, Client (App) ID, and the new secret.
3
Delete the old secret
After Keldyn shows Connected, delete the previous secret in Entra so it
cannot be reused.
Keeping evidence current
Keldyn refreshes Entra evidence automatically each day. PIM activations also refresh hourly. Evidence that hasn’t refreshed within its expected cadence is marked stale, and failed pulls are marked failed so you can spot gaps. You can trigger an immediate refresh at any time with Sync now.Next steps
Evidence & audits
Learn how automated integration evidence works alongside manual evidence and
audits.