Skip to content

Update access tokens docs to reflect RBAC permission model#18102

Open
djgrove wants to merge 12 commits intomasterfrom
devon/access-tokens-rbac-update
Open

Update access tokens docs to reflect RBAC permission model#18102
djgrove wants to merge 12 commits intomasterfrom
devon/access-tokens-rbac-update

Conversation

@djgrove
Copy link
Copy Markdown
Member

@djgrove djgrove commented Mar 20, 2026

Summary

  • Removes the outdated static permissions matrix, which was based on a fixed member/admin binary model that no longer reflects how token permissions work
  • Replaces it with prose explanations of how each token type derives its permissions from the RBAC role system
  • Restructures the org and team token sections to focus on what tokens can do, who can manage them, and how permissions are inherited — rather than enumerating creation steps
  • Fixes the incorrect claim that "all access tokens can create stacks"; stack creation now correctly depends on org-wide access settings or the token's assigned role including stack:create
  • Frames admin org tokens as a legacy type and steers new automation toward custom roles for least-privilege access

Related issues

Fixes #11590

🤖 Generated with Claude Code claude --resume 6ffbf5a6-c22c-40e4-839f-93df2afc42cd

Replace the outdated static permissions matrix and fixed member/admin
binary model with accurate descriptions of how token permissions are
now driven by RBAC role assignments. Clarifies that stack creation
depends on org-wide access settings or the token's assigned role
rather than being universally available.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
@claude
Copy link
Copy Markdown
Contributor

claude bot commented Mar 20, 2026

Docs Review

File reviewed: content/docs/administration/access-identity/access-tokens.md

This is a solid rewrite that replaces an outdated static permissions matrix with prose explanations tied to the RBAC model. The content is clearer and more accurate. A few issues to address:

Issues:

  1. Duplicate Admin organization tokens section (lines 49-57 and lines 106-114): The admin org token information appears twice with nearly the same content but slightly different wording. Pick one location and remove the other. I would suggest keeping it only under the Organization access tokens section (line 106) since that is the operational section, and condensing the permissions section (line 49) to a brief sentence pointing there.

  2. Orphaned audit log sentence (line 59): The sentence about both organization and team token activities producing audit log events is at the end of the Organization tokens subsection under Access token permissions, but covers both org and team tokens. Consider moving it to its own brief subsection, or mentioning audit logs separately in each token type section (which you already do at lines 104 and 134).

  3. Long bullet point (line 35): The stack-creation bullet packs multiple conditions, an exception, and a cross-reference into one sentence. Consider breaking it into separate bullets for readability.

  4. Missing step-by-step instructions for creating org and team tokens: The old doc had explicit numbered steps for creating, viewing, and deleting org and team tokens. The new version removes all of these in favor of prose summaries (lines 116 to 120, 136 to 140). Users looking for a quick how-to may struggle. Consider adding back at least a brief numbered list for token creation under each section.

  5. Legacy framing for admin tokens (lines 55, 112): Calling admin tokens a legacy token type is a strong editorial claim. If Pulumi has not officially deprecated admin tokens, this could confuse users. Consider softening to something like a broad-access token type that predates custom roles unless deprecation is planned.

Minor:

  • Line 45: Uses an em-dash. Fine in isolation, but check that em-dash usage stays moderate per style guidance.
  • Line 47: The link text default member role points to the general roles page. If there is a specific anchor about the default role, linking directly to it would be more helpful.

What looks good:

  • Correctly fixes the inaccurate claim about all tokens being able to create stacks.
  • RBAC links all resolve to valid pages.
  • Good use of the notes shortcode for warnings and info boxes.
  • Typo fix on line 80 (up of up to changed to of up to) is correct.
  • Clean, scannable structure with clear H3 headings.

Mention me (@claude) if you would like additional reviews or want me to help fix any of these issues.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Updates the Pulumi Cloud access tokens documentation to reflect the current RBAC-based permission model (roles/scopes and org-wide access toggles), replacing the legacy member/admin permission matrix and restructuring org/team token guidance around effective permissions and management.

Changes:

  • Replaces the static token-permissions matrix with RBAC-based prose explaining how permissions are derived for each token type.
  • Corrects stack-creation guidance to depend on org-wide access settings or RBAC scopes (rather than “all tokens can create stacks”).
  • Reworks organization/team token sections to focus on capabilities, audit logging, and who can manage tokens; frames admin org tokens as legacy.

@pulumi-bot
Copy link
Copy Markdown
Collaborator

- Fix ambiguous "Admin tokens" → "Admin organization tokens" in the
  stack creation security note
- Remove duplicate admin org tokens subsection from the permissions
  overview; replace with a cross-reference to the operational section
- Remove orphaned audit log sentence (already covered per token section)
- Add {#creating-an-organization-access-token} anchor to preserve
  existing inbound links from other docs pages
- Add "Legacy organization token types" section explaining the pre-RBAC
  admin/standard token distinction and how each maps to the current
  built-in Admin and Member roles

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
@CamSoper
Copy link
Copy Markdown
Contributor

@claude the lint is failing, please fix.

Line 136: Unordered list style [Expected: asterisk; Actual: dash].
Line 138: Unordered list style [Expected: asterisk; Actual: dash].

@claude
Copy link
Copy Markdown
Contributor

claude bot commented Mar 20, 2026

Claude finished @CamSoper's task in 30s —— View job


Fixing lint errors

  • Analyze the request
  • Read the file and fix lines 136 and 138
  • Commit and push

Fixed the two unordered list items on lines 136 and 138 by replacing - dashes with * asterisks to match the expected list style.

github-actions bot and others added 2 commits March 20, 2026 18:57
Consolidate all admin/standard legacy token content into the
"Legacy organization token types" section, including the caution
warning and least-privilege guidance. Remove the now-redundant
subsection under "Organization access tokens".

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
@pulumi-bot
Copy link
Copy Markdown
Collaborator

Copy link
Copy Markdown
Member

@jkodroff jkodroff left a comment

Choose a reason for hiding this comment

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

Commenting to avoid annoying "request changes". Happy to re-review.

Comment on lines +45 to +47
Organization tokens act on behalf of the organization itself. Rather than mapping to a fixed set of capabilities, organization tokens derive their permissions from the [RBAC role](/docs/administration/access-identity/rbac/roles/) assigned to them at creation time. This means you can tailor the exact level of access an organization token has—from read-only access to a subset of stacks, to full administrative control—by assigning the appropriate role.

Organization tokens that are assigned no explicit role receive the organization's [default member role](/docs/administration/access-identity/rbac/roles/). The token's access is automatically limited to the single organization it was created in, unlike a personal token which spans all of a user's organizations.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
Organization tokens act on behalf of the organization itself. Rather than mapping to a fixed set of capabilities, organization tokens derive their permissions from the [RBAC role](/docs/administration/access-identity/rbac/roles/) assigned to them at creation time. This means you can tailor the exact level of access an organization token has—from read-only access to a subset of stacks, to full administrative control—by assigning the appropriate role.
Organization tokens that are assigned no explicit role receive the organization's [default member role](/docs/administration/access-identity/rbac/roles/). The token's access is automatically limited to the single organization it was created in, unlike a personal token which spans all of a user's organizations.
Organization tokens are scoped to a Pulumi Cloud organization. Organization tokens derive their permissions from the [RBAC role](/docs/administration/access-identity/rbac/roles/) assigned to them at creation time, or the organization's default member role if no role is specified.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We need to link to the default member role, but I don't think we've actually defined what this is or how it works.

@pulumi-bot
Copy link
Copy Markdown
Collaborator

@pulumi-bot
Copy link
Copy Markdown
Collaborator

@pulumi-bot
Copy link
Copy Markdown
Collaborator

Copy link
Copy Markdown
Contributor

@CamSoper CamSoper left a comment

Choose a reason for hiding this comment

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

Looks good — the RBAC rewrite is clear and well-structured. I also pushed a fix for a few pre-existing style issues (heading case, list numbering, shortcode syntax).

@jkodroff's suggestions are worth considering — particularly around clarifying "machine token" terminology, linking to the default member role docs, and being more prescriptive about when to use each token type. Those could be addressed in a follow-up.

@pulumi-bot
Copy link
Copy Markdown
Collaborator

Copy link
Copy Markdown
Contributor

@CamSoper CamSoper left a comment

Choose a reason for hiding this comment

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

@djgrove What's the status on this? Still WIP?

@djgrove
Copy link
Copy Markdown
Member Author

djgrove commented Mar 27, 2026

@CamSoper still WIP. Need to respond to some of the less straighforward items in @jkodroff's feedback, some of those require deeper thought that I haven't had the time with oncall. Will try to get to this today

djgrove and others added 4 commits March 27, 2026 14:15
Replace "machine tokens owned by the organization" with clearer
language about what these tokens actually do: authenticate as the
org/team itself and attribute actions in audit logs accordingly.

Addresses PR feedback about "machine tokens" being ambiguous and
"owned by the organization" being unclear.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Addresses PR feedback asking "For how long?" about token name
reservation after deletion. The service enforces permanent uniqueness
including soft-deleted tokens to guarantee audit log traceability.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Replaces generic "well-suited for CI/CD" language with concrete
use cases (CI/CD, drift detection, policy enforcement, reporting)
and recommends org tokens over personal tokens for automation.
Steers users toward custom roles for least-privilege access.

Addresses PR feedback requesting more prescriptive guidance.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
@pulumi-bot
Copy link
Copy Markdown
Collaborator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add PaC to access token docs

6 participants