Skip to content

Iris docs: Identity Service self-managed guide for the redis-iris suite chart - #4469

Open
rbs333 wants to merge 3 commits into
mainfrom
docs/iris-ids-operator-guide
Open

rbs333 wants to merge 3 commits into
mainfrom
docs/iris-ids-operator-guide

Conversation

@rbs333

@rbs333 rbs333 commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

This PR updates the public Identity Service docs to match the on-prem operator guide in redislabsdev/iris (docs/iris-onprem-identity-service-operator-guide.md, main as of 2026-11-04). The guide now targets the redis-iris 1.0 suite chart.

Source of truth: the redis-iris 1.0 suite chart and Teodor's guide. Where older published pages disagree, this PR follows the newer content and updates the older pages to match.

Release timing: this PR doesn't depend on the 1.0.0 chart release. The suite pages already describe the 1.0 install. Release-specific operations (upgrade, rollback, recovery, uninstall) are in #4470, which stays in draft until 1.0.0 is cut.

Structure

The section now has the same layout as the other Iris services:

  • identity-service/_index.md: a short overview with Redis Cloud and self-managed options, like Lens.
  • identity-service/self-managed/:
    • _index
    • prerequisites (new)
    • configuration
    • deploy
    • authentication
    • operations
    • multi-tenant (new, preview)

The four existing pages moved under self-managed/. Each has an alias for its old URL. Inbound links from the suite page, Agent Playbooks, and Context Gateway now point to the new paths.

Content changes

  • Suite chart first:
    • release iris and Service iris-identity-service;
    • global.iris.auth instead of controlAuth;
    • derived service registration;
    • generated credentials, and credentials you supply for GitOps.
  • Removed the standalone-chart reference: values-ids.yaml, runtime.serviceCredentials, productValidation, and workload identity. The standalone chart isn't a supported install path any more.
  • Added from the guide:
    • the tenant lifecycle;
    • how the caller's role is resolved;
    • the console API Keys page;
    • adding or removing a service;
    • the restart order for rotating the metadata Redis credential;
    • rollback rules;
    • limits;
    • the multi-tenant Agent Memory preview.
  • Internal links: the guide's links to internal chart READMEs and runbooks became links to public suite pages, or inline steps.

Where older pages changed to match

Topic Before Now
Subject grants Context Gateway read them, so you could limit signed-in MCP users to selected Gateways No effect in redis-iris. The suite gives the Context Gateway data-plane credential only api-key-introspect, so signed-in users get access through gateway_user. To limit access to selected Gateways, use an agent key.
Key list Paginated (maxResults/nextToken, CLI --limit/--cursor/--all) One response with no pages
Tenant ID 1 to 256 characters 1 to 64 characters
FIPS Supported on the standalone chart The suite chart fails with fips, as the suite page already says
Upgrade order Control planes before the Identity Service The suite upgrades every component together
Identity Service OIDC (Agent Playbooks page) controlAuth.oidc on the Identity Service release global.iris.auth

Context Gateway edits:

  • context-gateway/self-managed/authentication.md: the credentials table row and "Grant signed-in users access".
  • context-gateway/self-managed/deploy.md: dropped "add subject-grant-lookup".

Nitin confirmed the Context Gateway subject-grant change against iris d027b6ed1. The suite wires only api-key-introspect (identity-service/helm/templates/_helpers.tpl:134), and the suite render test asserts that subject-grant-lookup is absent. CG falls back to roles both when IdS refuses the lookup and when IdS is down (common/infrastructure/identity/subject_access_resolver.go). So while IdS is down, gateway_user users keep working but agent keys fail.

Follow-ups outside this PR:

  • The Agent Memory pages (self-managed/prerequisites.md, configuration.md) still describe a separate values-ids.yaml with subjectGrants.
  • MOD-20066 says the CG credential "also needs subject-grant-lookup". That's standalone-only, so it should be scoped or dropped.

🤖 Generated with Claude Code


Note

Low Risk
Documentation-only changes with no runtime or configuration code paths affected.

Overview
Reframes Identity Service docs around the supported redis-iris 1.0 install: a short top-level overview, a new identity-service/self-managed/ tree (prerequisites, configuration, deploy, authentication, operations, plus a multi-tenant Agent Memory preview), and aliases so old URLs still work. The former standalone-chart pages are removed; content now uses identityService: / global.iris (including global.iris.auth for operator OIDC), chart-derived service registration, generated vs GitOps credentials, tenant lifecycle, console API Keys, and updated limits (no FIPS on the suite, non-paginated key list, subject grants ineffective in suite installs).

Agent Playbooks and Context Gateway pages are aligned: Identity Service operator sign-in points at the new auth guide; Context Gateway documents IdP access via gateway_user only (not subject grants), drops subject-grant-lookup from suite deploy steps, and the suite install link for ids-metadata is updated.

Reviewed by Cursor Bugbot for commit 5182f7b. Bugbot is set up for automated code reviews on this repo. Configure here.

…e chart

Restructure the Identity Service section like the other Iris services
(overview + self-managed/ subsection) and rewrite it from the on-prem
operator guide for redis-iris 1.0. Old URLs keep aliases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

🧠 Redis Memory

Found 6 related items from repository history:

Memory updated at 5182f7b

@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

@rbs333
rbs333 marked this pull request as ready for review November 4, 2026 18:18
@dwdougherty dwdougherty added the iris Iris context engine docs label Nov 4, 2026
…hart

Subject grants have no effect under redis-iris, so signed-in MCP users get access through gateway_user. Identity Service OIDC is set with global.iris.auth.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@nkanu17 nkanu17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, this is right. I traced it through iris d027b6ed1 (main hasn't touched these files since): in the redis-iris chart nothing can read subject grants, so signed-in users get in through gateway_user, and agent keys are how you scope an agent to specific Gateways. Nothing blocking. I left a few small wording suggestions inline.

A few things outside the diff:

  • deploy.md:33 still says "see the Identity Service guide" for every IdS setting, but this PR takes those values out of that guide, so the link doesn't help anymore.
  • The Agent Memory pages (self-managed/prerequisites.md:291, configuration.md:33) still describe a separate values-ids.yaml with subjectGrants. Fine to leave for a follow-up, but they'll need the same treatment.
  • In the PR description, it's worth saying the role fallback also kicks in when IdS is down, not just when the lookup is refused.

And some things I ran into in the code that aren't for this PR, just so they're written down:

  • On a healthy suite install, every signed-in request does the subject-grant lookup, gets a 403 back, and logs a "failing closed" warning plus bumps the failure metrics, even though the user gets in fine. Operators are going to see that and worry. We should skip the lookup when the credential can't do it, or treat that 403 as "no grants".
  • Because of the same fallback, if IdS goes down, gateway_user users keep working while agent keys fail. Might be what we want, but we should decide and then document it.
  • A signed-in user without the role probably gets a 503 "retry" instead of a 403. I only traced this in code, haven't seen it on a real install.
  • The auth-docs ticket (MOD-20066) has a row saying the CG credential "also needs subject-grant-lookup". That's only true for the standalone chart, so it should be scoped or dropped, otherwise someone will "fix" these docs back.

| Identity Service control token | Operator → Identity Service (`:9200`) | Set on the Identity Service release. By default the Identity Service chart generates it (`control.autoGenerate: true`), so read it from the Secret the chart generates | Yes, by default | Creating, listing, rotating, and revoking agent keys |
| Agent key | Agent → Data Plane (`:8083`) | None. Returned once when minted or rotated | No | Listing and calling tools on the Gateways its grants name |
| Identity provider access token | Agent → Data Plane (`:8083`) | None. Issued by your identity provider | No | The Gateways its role or subject grants name |
| Identity provider access token | Agent → Data Plane (`:8083`) | None. Issued by your identity provider | No | Every Gateway in the tenant, with the `gateway_user` role |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small one: this row only covers people who have the role now. Worth adding what happens without it, since they get no Gateway at all.

Suggested change
| Identity provider access token | Agent → Data Plane (`:8083`) | None. Issued by your identity provider | No | Every Gateway in the tenant, with the `gateway_user` role |
| Identity provider access token | Agent → Data Plane (`:8083`) | None. Issued by your identity provider | No | With the `gateway_user` role, every Gateway in the tenant. Without it, none |

- Assign Identity Service subject grants to individual users for selected Gateways, with `POST /v1/subject-grants/apply` on the Identity Service. See [subject grants](/content/operate/iris/identity-service/authentication.md#subject-grants) for the request. A subject grant names the IdP's issuer, the user's `user_id_claim` value, and the same product, resource type, Gateway ID, and `use` action as an agent-key grant.

A specific subject grant cannot narrow the all-Gateway role, and removing a subject grant does not remove access that a role gives. To restrict a user to selected Gateways, don't map them to `gateway_user`.
Signed-in users can't be limited to selected Gateways: Identity Service [subject grants](/content/operate/iris/identity-service/self-managed/authentication.md#subject-grants) have no effect in a `redis-iris` installation. To give an agent access to selected Gateways only, give it an agent key with a grant for each one.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This reads fine, but anyone coming from the old page was told "don't map them to gateway_user, use subject grants instead". Now leaving them out of the role means they get nothing, so I'd spell that out, and say why.

Suggested change
Signed-in users can't be limited to selected Gateways: Identity Service [subject grants](/content/operate/iris/identity-service/self-managed/authentication.md#subject-grants) have no effect in a `redis-iris` installation. To give an agent access to selected Gateways only, give it an agent key with a grant for each one.
In a `redis-iris` installation the Data Plane can't read Identity Service [subject grants](/content/operate/iris/identity-service/self-managed/authentication.md#subject-grants), so they have no effect. Signed-in users can't be limited to selected Gateways, and a signed-in user without `gateway_user` can't use any Gateway. To give an agent access to selected Gateways only, give it an agent key with a grant for each one.

| Identity Service value | Setting |
| --- | --- |
| `runtime.serviceCredentials[]` | A credential for the Data Plane, `name: context-gateway-dp` and `subject: context-gateway-dataplane`, with `allowedOperations: [api-key-introspect]` and `allowedProducts: [context-gateway]`, from the same Secret as `dataplane.runtimeToken`. With Data Plane sign-in on, add `subject-grant-lookup` to `allowedOperations`. |
| `runtime.serviceCredentials[]` | A credential for the Data Plane, `name: context-gateway-dp` and `subject: context-gateway-dataplane`, with `allowedOperations: [api-key-introspect]` and `allowedProducts: [context-gateway]`, from the same Secret as `dataplane.runtimeToken`. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dropping subject-grant-lookup is right. This row is standalone-only though, so I'd mention that the suite sets this credential itself and fails the render if you try to set it.

Suggested change
| `runtime.serviceCredentials[]` | A credential for the Data Plane, `name: context-gateway-dp` and `subject: context-gateway-dataplane`, with `allowedOperations: [api-key-introspect]` and `allowedProducts: [context-gateway]`, from the same Secret as `dataplane.runtimeToken`. |
| `runtime.serviceCredentials[]` | A credential for the Data Plane, `name: context-gateway-dp` and `subject: context-gateway-dataplane`, with `allowedOperations: [api-key-introspect]` and `allowedProducts: [context-gateway]`, from the same Secret as `dataplane.runtimeToken`. The `redis-iris` suite sets this credential and fails the render if you set it. |


### Subject grants

The control API also has routes for subject grants, `/v1/subject-grants`. In a `redis-iris` installation, no data plane reads subject grants, so they have no effect. IdP users get access from their roles in each service, and agents use agent keys.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True as written, but if someone actually calls /v1/subject-grants/apply they'll get an error, not a quiet no-op, since the chart allows no grant shapes by default. Saying both halves makes that error less confusing.

Suggested change
The control API also has routes for subject grants, `/v1/subject-grants`. In a `redis-iris` installation, no data plane reads subject grants, so they have no effect. IdP users get access from their roles in each service, and agents use agent keys.
The control API also has routes for subject grants, `/v1/subject-grants`. They have no effect in a `redis-iris` installation. By default the chart allows no subject-grant shape, so the Identity Service refuses new subject grants. The chart also gives no data plane the `subject-grant-lookup` operation, so no data plane reads them. IdP users get access from their roles in each service, and agents use agent keys.

…tity Service values

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

iris Iris context engine docs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants