SAML role management is available on the Enterprise plan and builds on SAML SSO. Before you begin, configure SSO with Okta and enforce SSO for your organization.
How it works
When SAML role management is enabled, Pinecone reconciles each user’s roles on every SSO login:- Pinecone reads the roles your IdP sends in the SAML
rolesattribute. - It replaces the user’s organization and project roles with exactly the roles in that attribute. Roles for projects not included in the attribute are removed, and values that don’t match a known role are ignored.
- Because roles come entirely from your IdP, while this mode is enabled you can no longer invite members or edit roles in the Pinecone console or through the Admin API, and the SSO Default role is not applied.
- To revoke a member’s access, remove their roles in your IdP. At their next sign-in, Pinecone clears all of their organization and project roles and blocks the login. Active members are re-authenticated at least every 24 hours, so the change applies within a day.
Because SSO is enforced, deactivating or removing a member in your IdP blocks them from signing in to Pinecone right away, so their access ends immediately. Their role assignments stay in Pinecone until their next sign-in—which a removed member never reaches—so the assignments remain but grant no access on their own. To clear them, or to have Pinecone remove members automatically, use SCIM provisioning. You can also switch to Manage roles in Pinecone to remove the member manually, then switch back.
roles attribute in Okta before you enable SAML role management in Pinecone. The steps below are in that order.
Role attribute values
Pinecone reads roles from theroles attribute. Each value uses one of the following formats:
- Organization role:
pinecone:<OrgRole> - Project role:
pinecone:project:<projectID>:<ProjectRole>
<projectID> is the project’s unique ID. To find it, go to the project list in the Pinecone console. For more information, see Project IDs.
A user can hold multiple roles by sending multiple values in the roles attribute.
Organization roles
For details on what each organization role grants, see Understanding organizations.Project roles
For details on what each project role grants, see Understanding projects.
For example, to make a user an organization owner who is also an editor on one project, send these two values in the
roles attribute:
1. Send roles from Okta
Configure Okta to send each user’s roles in a SAML attribute namedroles, where each value is one of the role attribute values above. You can populate that attribute in a few ways; choose whichever fits how you already manage users in Okta.
In newer versions of Okta, attribute and group statements are configured on the app’s Sign On tab after the app is created, rather than in the app creation wizard. If you don’t see the Attribute Statements (SAML) section, expand Show legacy configuration within it.
Option A: From a user profile attribute
Use this option to set roles directly on each user’s Okta profile.- In Okta, go to Directory > Profile Editor and edit the Okta user profile.
-
Add an attribute named
pineconeRoleswith data type string array. -
For each user, set
pineconeRolesto theirpinecone:*values (directly, or through a profile mapping). -
In Applications > Pinecone > Sign On, add an Attribute Statement:
- Name:
roles - Name format:
Unspecified - Value:
user.pineconeRoles
- Name:
Option B: From group membership
Use this option to assign roles by adding users to Okta groups.-
In Okta, create a group for each Pinecone role you want to assign, naming each group exactly as the role’s attribute value (for example,
pinecone:OrgOwnerorpinecone:project:<projectID>:ProjectEditor), and add the appropriate users to each group. -
In Applications > Pinecone > Sign On, send those group names in the
rolesattribute using either:- A Group Attribute Statement with Name
roles, Name formatUnspecified, and Filter Starts withpinecone:. - Or an Attribute Statement with Name
rolesand the expressionuser.getGroups({'group.profile.name': 'pinecone:', 'operator': 'STARTS_WITH'}).![profile.name].
- A Group Attribute Statement with Name
The
user.getGroups(...).![profile.name] expression is for an app-level attribute statement on the Sign On tab, and it returns every matching group, so no limit argument is required. (Only the Groups.startsWith, Groups.endsWith, and Groups.contains functions require a limit.) If you configure this claim on a custom authorization server instead, use the .![name] projection.roles attribute resolves to the role attribute values.
2. Verify the roles in the SAML assertion
Before you hand role management to Okta, confirm theroles attribute contains what you expect.
- In Applications > Pinecone > Sign On, click Preview the SAML Assertion.
- Select a user who should be an organization owner and generate the preview.
- Confirm the assertion includes a
rolesattribute containingpinecone:OrgOwner(and any project roles you assigned).
3. Enable SAML role management in Pinecone
You must be an organization owner on the Enterprise plan, and SSO must be enforced for your organization.
- In the Pinecone console, go to Settings > Access > Identity provider.
- Confirm that single sign-on shows the Enforced status. If it does not, edit your SSO configuration to enforce SSO before continuing.
- In the User management section, select Manage roles with SAML attributes.
- In the Enable SAML role management dialog, review the Before you enable prerequisites, then click Enable SAML role management.