Skip to content

Releases: aman-agarwal6/AccessOps

AccessOps v0.4.0 — Live Microsoft Entra containment

Choose a tag to compare

@aman-agarwal6 aman-agarwal6 released this 05 Oct 22:04
380e42c

AccessOps v0.4 adds live Microsoft Entra containment to the signed source. Everything in v0.3.0 is included.

  • Microsoft Entra, contained for real. An opt-in connector disables an enrolled Entra test user, removes its group membership and revokes its sign-in sessions through Microsoft Graph, then reads all three back before the case counts them. Measured in a free test tenant with synthetic users: 11/11 checks, with the Graph evidence on the case 19.8 s after the containment request.
  • The connector is its own scope boundary. Graph application permissions are tenant-wide on Entra ID Free, so it acts only on listed test users and groups, refuses configured protected accounts such as the tenant administrator and any user Graph lists as a direct, tenant-wide member of a directory role, will not run before admin consent is recorded, and never enables an account or adds a membership. It signs in with a certificate; the private key never leaves the lab's protected folder.
  • Local live results (5 October 2026): the live Entra suite passed 11/11, and the full lab suite passed on the same code (policy 32, protocols 18, sign-in 14, offboarding 11, departure cases 18, sessions 22, HR intake 10, leaver assurance 7, HTTPS 5). The published index holds 49 recorded runs, including 13 retained failed attempts.
  • CI for this commit: the signed run passed 401 of 401 backend and integration cases on PostgreSQL 17, and the frontend, policy and secret-scan jobs passed. Deployed-demo check: 17 of 17 checks passed against the deployed site.
  • Signed evidence: provenance and CycloneDX SBOM attestations over the frozen archive for 380e42c659ed2505d76fbc3947f9de969e1ababf. Expected repository aman-agarwal6/AccessOps; signer .github/workflows/release-evidence.yml; source ref refs/heads/main.

The signed archive covers its own CI report. recorded-local-checks.json and published-demo-checks.json have separate origins; local hashes are not signatures. See the verification ledger and verification instructions.

Limits: synthetic data only. Microsoft Entra was tested only in a free test tenant; Microsoft 365 and GitHub appear as offline fixtures and owner statements. Entra sign-in logs need a paid plan, so access after departure is still watched in Keycloak only, and an access token an app already holds lasts until it expires. Samba results do not prove Microsoft AD interoperability. This is a reference system, not a certification or production deployment.

AccessOps v0.3.0 — Closing what disabling leaves behind

Choose a tag to compare

@aman-agarwal6 aman-agarwal6 released this 05 Oct 17:30
d924b4c

AccessOps v0.3 makes containment reach what a departing person still holds after their account is disabled, and measures what it cannot reach.

  • Signed HR intake. A Standard Webhooks-signed HR event opens the departure case and contains access without waiting for a person: 2.6 s from the event to case, containment, zero Keycloak sessions, sign-out from an app and refusal of the person's still-unexpired access token.
  • Sessions and tokens. Containment ends the person's Keycloak sessions and sends back-channel logout. Apps that check tokens themselves follow their own Shared Signals stream (CAEP session-revoked, RISC account-disabled) and refuse earlier tokens: 3.0 s after containment in the lab, with 114 s of the token's lifetime left.
  • Access after departure. Sign-ins after the departure were detected 32 seconds after they happened, block closure until investigated, and reach the SOC as signed Security Event Tokens that SignalBridge turns into a case.
  • Operator MFA. The people who can disable anyone sign in with a password and a one-time code (Keycloak step-up flow); the backend refuses any session not at the mfa level. A wrong code and a request rewritten to password-only were both refused.
  • Signing-key rotation drill. Publish-first rotation in both realms refused no valid token. A rehearsed leaked key showed that Keycloak's introspection also accepts a token forged with a published key, so removal is the only remedy; apps that check tokens themselves now drop a removed key within 60 s instead of five minutes.
  • Directory sessions. On Samba, new Kerberos service tickets are refused after offboarding, but connections and tickets held from before keep the removed group's rights until they expire (10 hours). Kerberos has no per-user revocation, so the case states that time.
  • Local live results (5 October 2026): the full lab suite passed (policy 32, protocols 18, sign-in 14, offboarding 11, departure cases 18, sessions 22, HR intake 10, leaver assurance 7, HTTPS 5); key-rotation drill 13/13; Samba directory case 28/28 with held sessions 6/6; the console journey passed in real Firefox. Thirteen failed attempts are retained in the published index of 48 runs.
  • CI for this commit: the signed run passed 372 of 372 backend and integration cases on PostgreSQL 17, and the frontend, policy and secret-scan jobs passed. Deployed-demo check: 17 of 17 checks passed against the deployed site.
  • Signed evidence: provenance and CycloneDX SBOM attestations over the frozen archive for d924b4c3762224860ba865526085c50cc8826c79. Expected repository aman-agarwal6/AccessOps; signer .github/workflows/release-evidence.yml; source ref refs/heads/main.

The signed archive covers its own CI report. recorded-local-checks.json and published-demo-checks.json have separate origins; local hashes are not signatures. See the verification ledger and verification instructions.

Limits: synthetic data only. No Microsoft or GitHub tenant was contacted; those platforms appear as offline fixtures and owner statements. Samba results do not prove Microsoft AD interoperability. An app that checks tokens itself refuses a leaver's token early only if it follows the revocation signals. The operator authenticator is a software one-time-code secret, not a phishing-resistant key. This is a reference system, not a certification or production deployment.

AccessOps v0.2.0 — Departure cases, directory lab and console redesign

Choose a tag to compare

@aman-agarwal6 aman-agarwal6 released this 04 Oct 07:26
193d9ea

AccessOps v0.2 turns an employee or contractor departure into a case with an owner, a four-hour target and a required action for every system the person could still reach. Local access is contained immediately; the case closes only when an independent reviewer accepts the exact evidence packet.

  • Live demo, redesigned: dark and light themes, an urgency-ranked departure queue, one explicit next step per case and fixed labels for each kind of evidence. Synthetic data, no account or paid API.
  • Departure cases in the local lab: Keycloak account disable and removal of every known managed group membership, observed separately; owner statements for external work; independent closure; immutable packet.
  • Optional Samba AD-compatible directory: verified LDAPS, immutable GUID targets, atomic account-flag updates and object-scoped permissions.
  • Local live results (3–4 October 2026): departure cases 18/18; Samba directory case 28/28; new LDAPS and Kerberos logins allowed before (2/2) and denied after offboarding (2/2). Eight failed attempts are retained in the published index.
  • CI for this commit: the signed run passed 255 of 255 backend and integration cases on PostgreSQL 17, and the frontend, policy and secret-scan jobs passed. Deployed-demo check: 17 of 17 checks passed against the deployed site.
  • Signed evidence: provenance and CycloneDX SBOM attestations over the frozen archive for 193d9eab4bca89c34bebdd8f5042ab8d3bfe2f5f. Expected repository aman-agarwal6/AccessOps; signer .github/workflows/release-evidence.yml; source ref refs/heads/main.

The signed archive covers its own CI report. recorded-local-checks.json and published-demo-checks.json have separate origins; local hashes are not signatures. See the verification ledger and verification instructions.

Limits: synthetic data only. No Microsoft or GitHub tenant was contacted; those platforms appear as offline fixtures and owner statements. Samba results do not prove Microsoft AD interoperability. Existing sessions and tickets are not revoked, and MFA and live key rotation were not measured. This is a reference system, not a certification or production deployment.

AccessOps v0.1.0 — Access governance reference system

Choose a tag to compare

@aman-agarwal6 aman-agarwal6 released this 03 Oct 05:04

AccessOps tracks employee and sponsored-agent access from request through independent approval, application and observed verification. Offboarding revokes local grants and contains sponsored automation immediately; directory effects remain separately observable and retryable.

  • Live browser simulation — synthetic data, no account or paid API required.
  • Authenticated local Django/PostgreSQL/Keycloak/OPA lab with SCIM, OIDC/PKCE, AuthZEN, private-key client authentication and introspection.
  • Expiring approvals, exact-change binding, bounded deterministic assistant, direct-directory drift detection and audit evidence.
  • Verification: 85 backend/integration cases in PostgreSQL CI; 24 frontend unit cases, 15 browser cases, 19 OPA cases; 47 separate local live checks and 12 deployed-demo checks. Counts describe separate suites rather than unique requirements.
  • CycloneDX 1.6 dependency inventory and detached provenance/SBOM attestations for the exact frozen archive. Expected repository: aman-agarwal6/AccessOps; signer: .github/workflows/release-evidence.yml; source ref: refs/heads/main.

The signed archive covers its actual CI report. The public recorded local checks and deployed-demo report have separate origins; local hashes are not signatures. Consult the verification ledger, verification instructions and maintenance guide.

The assistant runs deterministically without an LLM. Delegated token exchange, DPoP and CAEP are future profiles. Native SCIM cannot observe the configured executor service account; reconciliation preserves unknown state without adopting access. Live IdP backchannel logout, signing-key rotation, old offboarded sessions/running-agent tokens and MFA were not measured. This is a reference system with synthetic data, not a certification or production deployment.