Learn how to connect Opal to Teleport to manage access to Teleport roles.
Opal natively supports an integration with Teleport. This integration enables organizations to manage access to roles in Teleport.With Opal’s Teleport integration, you can:
Give specific roles via birthright access
Grant just-in-time short-lived access to roles
Audit who has access specific roles and why
Review roles in user access reviews
Supported resources
Resource
Read
Grant and revoke access
Available in Risk Center
Teleport Roles
✔️
✔️
✔️
Configuration steps
In Teleport, you will need to set up a service account for Opal to perform operations.
Create an opal-service role.
In the Teleport Dashboard, go to Team > Roles, then Create New Role. Use the following YAML:
The opal-service role is used by Opal to make changes to your system. Note that we use a max session TTL of 8760 hours (1 year). The credentials you generate in a subsequent step will be bound by this TTL, and you will need to reissue the credentials at this interval. You may want to set this value higher to avoid needing to reissue the credentials.
Next, create an opal-impersonator role on the same page. Use the following YAML:
kind: roleversion: v5metadata: name: opal-impersonatorspec: # SSH options used for user sessions options: # max_session_ttl defines the TTL (time to live) of SSH certificates # issued to the users with this role. max_session_ttl: 10h # The allow section declares a list of resource/verb combinations that are # allowed for the users of this role. By default, nothing is allowed. allow: impersonate: users: ["opal-service"] roles: ["opal-service"] # The deny section uses the identical format as the 'allow' section. # Deny rules always override allow rules. deny: node_labels: "*": "*"
This role allows you to sign a credential on behalf of the opal-service service user.
Attach this role to yourself in the Teleport dashboard by finding your user and going to Options > Edit, and adding opal-impersonator to your User Roles.
Create the opal-service service user. Go to Team > Users > Create New User. Use opal-service as the name and add the opal-service role.
In your terminal, use tsh login to log in to your account (not the opal-service account). If you were already logged in, you must tsh logout and log in again to pick up the new opal-impersonator role.
Note that this step is possible because you attached the opal-impersonator role to your Teleport user. The TTL in this step should match the value you configured in step 1.
In Opal, go to Inventory, click on the + App icon, and select the Teleport App. Fill out the details for the integration, using the contents of opal-service.pem generated in the previous step as the Opal service account credentials file.
Link Teleport users to Opal users
Teleport does not expose user emails. Therefore, Opal is not able to associate Teleport users with Opal users by default. To use the integration, you need to import the mapping via a custom attribute from your IDP.
Make sure that users in your IDP have a field with their Teleport username.
In Opal, go to Settings > IDP & HR Integrations select the Importing X custom user attributes link on your IDP tile.
Enter the attribute name from your IDP that has the Teleport username, select Teleport username as the Use as value from the dropdown and click Add attribute.
The mappings from Opal user to Teleport username are now imported from your IDP and you can start using the integration.
Last modified on October 27, 2026
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Opal Security Docs","colors":{"primary":"#0C7997","light":"#EDFCFC","dark":"#074055"},"logo":{"light":"https://mintcdn.com/opalsecurity/FBbZyeMPZrA69UcV/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=FBbZyeMPZrA69UcV\u0026q=85\u0026s=93a4bd75f157f9f0ab43cdf4d715b5cd","dark":"https://mintcdn.com/opalsecurity/FBbZyeMPZrA69UcV/logo/logo-light.svg?fit=max\u0026auto=format\u0026n=FBbZyeMPZrA69UcV\u0026q=85\u0026s=1774b545e4f1c5cad647f5194f7b26d9"},"favicon":{"light":"https://mintcdn.com/opalsecurity/DRAwGKUXMxLRQouh/logo/icon-opal-black.svg?fit=max\u0026auto=format\u0026n=DRAwGKUXMxLRQouh\u0026q=85\u0026s=9c8bd1204b6b5b83542c2ab5be549858","dark":"https://mintcdn.com/opalsecurity/DRAwGKUXMxLRQouh/logo/icon-opal-white.svg?fit=max\u0026auto=format\u0026n=DRAwGKUXMxLRQouh\u0026q=85\u0026s=73b53b4ceab6ae0b00e30b2042a6020a"},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","latex":false},"integrations":{"ga4":{"measurementId":"G-1PPPM1WF6D"}},"errors":{"404":{"redirect":false,"title":"Page can't be found","description":"Sorry! This page might have been moved, or the link might be broken. Go back to our documentation via https://docs.opal.dev/docs/welcome."}},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"opalsecurity","hasAudioNarration":false,"actualSubdomain":"opalsecurity","customDomains":["docs.opal.dev"],"gitSource":{"type":"github","owner":"opalsecurity","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af7bc9ca5d707e66c231413","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"API Reference","count":218},{"language":"default","tag":"Opal API","count":213},{"language":"default","tag":"Documentation","count":104},{"language":"default","tag":"Integrations","count":103},{"language":"default","tag":"Entitlement Management","count":69},{"language":"default","tag":"resources","count":34},{"language":"default","tag":"groups","count":32},{"language":"default","tag":"Getting Started","count":25},{"language":"default","tag":"Access Management","count":22},{"language":"default","tag":"Infrastructure","count":22}]},"assistantConfig":{"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"deflection":{"enabled":true,"email":"support@opal.dev","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"integrations/teleport","slug":"/integrations/teleport","pageMetadata":{"title":"Teleport","description":"Learn how to connect Opal to Teleport to manage access to Teleport roles.","href":"/integrations/teleport"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Learn how to connect Opal to Teleport to manage access to Teleport roles.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading,OptimizedImage,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Opal natively supports an integration with Teleport. This integration enables organizations to manage access to roles in Teleport.`}),`\n`,_jsx(_components.p,{children:`With Opal’s Teleport integration, you can:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Give specific roles via birthright access`}),`\n`,_jsx(_components.li,{children:`Grant just-in-time short-lived access to roles`}),`\n`,_jsx(_components.li,{children:`Audit who has access specific roles and why`}),`\n`,_jsx(_components.li,{children:`Review roles in user access reviews`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`supported-resources`,children:`Supported resources`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Resource`}),_jsx(_components.th,{children:`Read`}),_jsx(_components.th,{children:`Grant and revoke access`}),_jsx(_components.th,{children:`Available in Risk Center`})]})}),_jsx(_components.tbody,{children:_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Teleport Roles`}),_jsx(_components.td,{children:`✔️`}),_jsx(_components.td,{children:`✔️`}),_jsx(_components.td,{children:`✔️`})]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`configuration-steps`,children:`Configuration steps`}),`\n`,_jsx(_components.p,{children:`In Teleport, you will need to set up a service account for Opal to perform operations.`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Create an `,_jsx(_components.code,{children:`opal-service`}),` role.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`In the Teleport Dashboard, go to `,_jsx(_components.strong,{children:`Team`}),` > `,_jsx(_components.strong,{children:`Roles`}),`, then `,_jsx(_components.strong,{children:`Create New Role`}),`. Use the following YAML:`]}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`yaml`,numberOfLines:`17`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`17`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`kind`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`role`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`metadata`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`opal-service`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`spec`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` allow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` db_labels`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"*\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"*\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` app_labels`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"*\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"*\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` rules`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`resources`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`role`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`user`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` verbs`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"list\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"create\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"read\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"update\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"delete\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` options`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` max_session_ttl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`8760h`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`version`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`v5`})]}),`\n`]})})})}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`opal-service`}),` role is used by Opal to make changes to your system. Note that we use a max session TTL of 8760 hours (1 year). The credentials you generate in a subsequent step will be bound by this TTL, and you will need to reissue the credentials at this interval. You may want to set this value higher to avoid needing to reissue the credentials.`]}),`\n`,_jsxs(_components.ol,{start:`2`,children:[`\n`,_jsxs(_components.li,{children:[`Next, create an `,_jsx(_components.code,{children:`opal-impersonator`}),` role on the same page. Use the following YAML:`]}),`\n`]}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`yaml`,numberOfLines:`23`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`23`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`kind`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`role`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`version`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`v5`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`metadata`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`opal-impersonator`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`spec`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # SSH options used for user sessions`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` options`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # max_session_ttl defines the TTL (time to live) of SSH certificates`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # issued to the users with this role.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` max_session_ttl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`10h`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # The allow section declares a list of resource/verb combinations that are`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # allowed for the users of this role. By default, nothing is allowed.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` allow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` impersonate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` users`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"opal-service\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` roles`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"opal-service\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # The deny section uses the identical format as the 'allow' section.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Deny rules always override allow rules.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` deny`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` node_labels`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"*\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"*\"`})]}),`\n`]})})})}),`\n`,_jsxs(_components.p,{children:[`This role allows you to sign a credential on behalf of the `,_jsx(_components.code,{children:`opal-service`}),` service user.`]}),`\n`,_jsxs(_components.ol,{start:`3`,children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Attach this role to yourself in the Teleport dashboard by finding your user and going to `,_jsx(_components.strong,{children:`Options`}),` > `,_jsx(_components.strong,{children:`Edit`}),`, and adding `,_jsx(_components.code,{children:`opal-impersonator`}),` to your `,_jsx(_components.strong,{children:`User Roles`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Create the `,_jsx(_components.code,{children:`opal-service`}),` service user. Go to `,_jsx(_components.strong,{children:`Team`}),` > `,_jsx(_components.strong,{children:`Users`}),` > `,_jsx(_components.strong,{children:`Create New User`}),`. Use `,_jsx(_components.code,{children:`opal-service`}),` as the name and add the `,_jsx(_components.code,{children:`opal-service`}),` role.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`In your terminal, use `,_jsx(_components.code,{children:`tsh login`}),` to log in to your account (not the `,_jsx(_components.code,{children:`opal-service`}),` account). If you were already logged in, you must `,_jsx(_components.code,{children:`tsh logout`}),` and log in again to pick up the new `,_jsx(_components.code,{children:`opal-impersonator`}),` role.`]}),`\n`]}),`\n`]}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`text`,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`tsh login --proxy=myorg.teleport.sh [email\\xA0protected]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})}),`\n`,_jsxs(_components.ol,{start:`6`,children:[`\n`,_jsxs(_components.li,{children:[`Sign a new credential for the `,_jsx(_components.code,{children:`opal-service`}),` service account.`]}),`\n`]}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`text`,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`tctl auth sign --user=opal-service --out=opal-service.pem --ttl=8760h`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})}),`\n`,_jsxs(_components.p,{children:[`Note that this step is possible because you attached the `,_jsx(_components.code,{children:`opal-impersonator`}),` role to your Teleport user. The TTL in this step should match the value you configured in step 1.`]}),`\n`,_jsxs(_components.ol,{start:`7`,children:[`\n`,_jsxs(_components.li,{children:[`In Opal, go to `,_jsx(_components.strong,{children:`Inventory`}),`, click on the `,_jsx(_components.strong,{children:`+ App`}),` icon, and select the Teleport App. Fill out the details for the integration, using the contents of `,_jsx(_components.code,{children:`opal-service.pem`}),` generated in the previous step as the `,_jsx(_components.strong,{children:`Opal service account credentials file`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`link-teleport-users-to-opal-users`,children:`Link Teleport users to Opal users`}),`\n`,_jsx(_components.p,{children:`Teleport does not expose user emails. Therefore, Opal is not able to associate Teleport users with Opal users by default. To use the integration, you need to import the mapping via a custom attribute from your IDP.`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Make sure that users in your IDP have a field with their Teleport username.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`In Opal, make sure that you have `,_jsx(_components.a,{href:`/docs/connect-your-identity-provider-idp`,children:`connected your IDP`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`In Opal, go to `,_jsx(_components.strong,{children:`Settings`}),` > `,_jsx(_components.strong,{children:`IDP \u0026 HR Integrations`}),` select the `,_jsx(_components.strong,{children:`Importing X custom user attributes`}),` link on your IDP tile.`]}),`\n`]}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/E-CmJXh0QNjZUl4g/images/docs/5886938190d8fe6558d44c2fa3f7c9547e03cd166234e4105a30ee21ff07662c-import-user-attribute.png?fit=max\u0026auto=format\u0026n=E-CmJXh0QNjZUl4g\u0026q=85\u0026s=9a7925f1839c04847279ef8dd3466fd9`,alt:`2372`,\"data-og-width\":`3055`,width:`3055`,\"data-og-height\":`1382`,height:`1382`,\"data-path\":`images/docs/5886938190d8fe6558d44c2fa3f7c9547e03cd166234e4105a30ee21ff07662c-import-user-attribute.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/E-CmJXh0QNjZUl4g/images/docs/5886938190d8fe6558d44c2fa3f7c9547e03cd166234e4105a30ee21ff07662c-import-user-attribute.png?w=280\u0026fit=max\u0026auto=format\u0026n=E-CmJXh0QNjZUl4g\u0026q=85\u0026s=a4361c03e865c7f944c7c41d45330918 280w, https://mintcdn.com/opalsecurity/E-CmJXh0QNjZUl4g/images/docs/5886938190d8fe6558d44c2fa3f7c9547e03cd166234e4105a30ee21ff07662c-import-user-attribute.png?w=560\u0026fit=max\u0026auto=format\u0026n=E-CmJXh0QNjZUl4g\u0026q=85\u0026s=2f32bcfed1fb289dbd680874d726a38a 560w, https://mintcdn.com/opalsecurity/E-CmJXh0QNjZUl4g/images/docs/5886938190d8fe6558d44c2fa3f7c9547e03cd166234e4105a30ee21ff07662c-import-user-attribute.png?w=840\u0026fit=max\u0026auto=format\u0026n=E-CmJXh0QNjZUl4g\u0026q=85\u0026s=79a4152e33a4b453ec6de204963d739b 840w, https://mintcdn.com/opalsecurity/E-CmJXh0QNjZUl4g/images/docs/5886938190d8fe6558d44c2fa3f7c9547e03cd166234e4105a30ee21ff07662c-import-user-attribute.png?w=1100\u0026fit=max\u0026auto=format\u0026n=E-CmJXh0QNjZUl4g\u0026q=85\u0026s=34106db6bd2c1081db158f7a5723d68c 1100w, https://mintcdn.com/opalsecurity/E-CmJXh0QNjZUl4g/images/docs/5886938190d8fe6558d44c2fa3f7c9547e03cd166234e4105a30ee21ff07662c-import-user-attribute.png?w=1650\u0026fit=max\u0026auto=format\u0026n=E-CmJXh0QNjZUl4g\u0026q=85\u0026s=e6db1395911fb36c759d3e422609db45 1650w, https://mintcdn.com/opalsecurity/E-CmJXh0QNjZUl4g/images/docs/5886938190d8fe6558d44c2fa3f7c9547e03cd166234e4105a30ee21ff07662c-import-user-attribute.png?w=2500\u0026fit=max\u0026auto=format\u0026n=E-CmJXh0QNjZUl4g\u0026q=85\u0026s=746f775574112e12a673c3cde4d94ad7 2500w`}),`\n`,_jsxs(_components.ol,{start:`4`,children:[`\n`,_jsxs(_components.li,{children:[`Enter the attribute name from your IDP that has the Teleport username, select `,_jsx(_components.strong,{children:`Teleport username`}),` as the `,_jsx(_components.strong,{children:`Use as`}),` value from the dropdown and click `,_jsx(_components.strong,{children:`Add attribute`}),`.`]}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/faa7b40452cd7227138d0e6454e199cd366ee85262528b030abbd5453f15a819-teleport-username.png?fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=463bf9768e255827c5cabc0d123a81e1`,alt:`2312`,\"data-og-width\":`3406`,width:`3406`,\"data-og-height\":`1646`,height:`1646`,\"data-path\":`images/docs/faa7b40452cd7227138d0e6454e199cd366ee85262528b030abbd5453f15a819-teleport-username.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/faa7b40452cd7227138d0e6454e199cd366ee85262528b030abbd5453f15a819-teleport-username.png?w=280\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=0d5fe4509233b2a5477bba55acf033b9 280w, https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/faa7b40452cd7227138d0e6454e199cd366ee85262528b030abbd5453f15a819-teleport-username.png?w=560\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=52da5df5b03f9d8bd952a49f84b28baa 560w, https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/faa7b40452cd7227138d0e6454e199cd366ee85262528b030abbd5453f15a819-teleport-username.png?w=840\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=335e9fc7662e3b6f03dee0b6f2a5946b 840w, https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/faa7b40452cd7227138d0e6454e199cd366ee85262528b030abbd5453f15a819-teleport-username.png?w=1100\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=90bc0194c47f5b31b4322684c4478d34 1100w, https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/faa7b40452cd7227138d0e6454e199cd366ee85262528b030abbd5453f15a819-teleport-username.png?w=1650\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=2ee8a4390df77f3aab0f8d7f7709e85f 1650w, https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/faa7b40452cd7227138d0e6454e199cd366ee85262528b030abbd5453f15a819-teleport-username.png?w=2500\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=dbf81d95c72a458c3313fcf5fbea2794 2500w`}),`\n`,_jsxs(_components.ol,{start:`5`,children:[`\n`,_jsx(_components.li,{children:`The mappings from Opal user to Teleport username are now imported from your IDP and you can start using the integration.`}),`\n`]}),`\n`,_jsx(_components.hr,{})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Teleport","description":"Learn how to connect Opal to Teleport to manage access to Teleport roles.","href":"/integrations/teleport"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Supported resources","slug":"supported-resources","depth":2,"children":[]},{"title":"Configuration steps","slug":"configuration-steps","depth":2,"children":[]},{"title":"Link Teleport users to Opal users","slug":"link-teleport-users-to-opal-users","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/opalsecurity/d0e14c3cf9bbd682/changelog-scraper.js"],"subdomain":"opalsecurity","siteName":"Opal Security Docs","title":"Teleport - Opal Security Docs","contextualStarterQuestions":[{"_id":"6ae0ff2ac878fa74d974b59e","deploymentId":"68ddaa9a3f8b7de5bc3a7b47","questionText":"How do I configure service accounts?","status":"active","generatedBy":"contextual","path":"integrations/teleport","createdAt":"2026-10-27T19:44:42.256Z","updatedAt":"2026-10-27T19:44:42.256Z","__v":0},{"_id":"6ae0ff2ac878fa74d974b59c","deploymentId":"68ddaa9a3f8b7de5bc3a7b47","questionText":"How do I set up Teleport roles?","status":"active","generatedBy":"contextual","path":"integrations/teleport","createdAt":"2026-10-27T19:44:42.256Z","updatedAt":"2026-10-27T19:44:42.256Z","__v":0},{"_id":"6ae0ff2ac878fa74d974b59d","deploymentId":"68ddaa9a3f8b7de5bc3a7b47","questionText":"What can Opal manage in Teleport?","status":"active","generatedBy":"contextual","path":"integrations/teleport","createdAt":"2026-10-27T19:44:42.256Z","updatedAt":"2026-10-27T19:44:42.256Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-27T19:44:25.035Z","gitLastModified":"2026-10-27T19:42:45.000Z","originalFileLocation":"integrations/teleport.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Learn how to connect Opal to Teleport to manage access to Teleport roles.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Opal Security Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Teleport - Opal Security Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn how to connect Opal to Teleport to manage access to Teleport roles.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Opal Security Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.opal.dev/integrations/teleport\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://opalsecurity.mintlify.site/_mintlify/api/og/v2?division=Entitlement+Management\u0026amp;title=Teleport\u0026amp;description=Learn+how+to+connect+Opal+to+Teleport+to+manage+access+to+Teleport+roles.\u0026amp;theme=156eb1ba223f12a303f95077\u0026amp;signature=0083f84179df9dcae32c67c3bc0ea690e8b406a8e3d9225b941df0c4b9671be7\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Teleport - Opal Security Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn how to connect Opal to Teleport to manage access to Teleport roles.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://opalsecurity.mintlify.site/_mintlify/api/og/v2?division=Entitlement+Management\u0026amp;title=Teleport\u0026amp;description=Learn+how+to+connect+Opal+to+Teleport+to+manage+access+to+Teleport+roles.\u0026amp;theme=156eb1ba223f12a303f95077\u0026amp;signature=0083f84179df9dcae32c67c3bc0ea690e8b406a8e3d9225b941df0c4b9671be7\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Opal Security Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0C7997\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.opal.dev/integrations/teleport\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/integrations/teleport.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.opal.dev/#organization\",\"name\":\"Opal Security Docs\",\"url\":\"https://docs.opal.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/opalsecurity/FBbZyeMPZrA69UcV/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=FBbZyeMPZrA69UcV\u0026q=85\u0026s=93a4bd75f157f9f0ab43cdf4d715b5cd\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.opal.dev#website\",\"name\":\"Opal Security Docs\",\"url\":\"https://docs.opal.dev\",\"publisher\":{\"@id\":\"https://docs.opal.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.opal.dev/integrations/teleport#webpage\",\"url\":\"https://docs.opal.dev/integrations/teleport\",\"name\":\"Teleport\",\"description\":\"Learn how to connect Opal to Teleport to manage access to Teleport roles.\",\"dateModified\":\"2026-10-27T19:42:45.000Z\",\"isPartOf\":{\"@id\":\"https://docs.opal.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.opal.dev/integrations/teleport#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.opal.dev/integrations/teleport#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Entitlement Management\",\"item\":\"https://docs.opal.dev/integrations/setting-up-your-aws-organization-in-opal\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Teleport\",\"item\":\"https://docs.opal.dev/integrations/teleport\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.opal.dev/integrations/teleport#article\",\"headline\":\"Teleport\",\"name\":\"Teleport\",\"description\":\"Learn how to connect Opal to Teleport to manage access to Teleport roles.\",\"url\":\"https://docs.opal.dev/integrations/teleport\",\"mainEntityOfPage\":{\"@id\":\"https://docs.opal.dev/integrations/teleport#webpage\"},\"dateModified\":\"2026-10-27T19:42:45.000Z\",\"publisher\":{\"@id\":\"https://docs.opal.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.opal.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Opal Security Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Opal Security Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/integrations/teleport.md","siteName":"Opal Security Docs","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/welcome"}]},{"tab":"Integrations","pages":[{"title":"Integrations","sidebarTitle":"Overview","mode":"wide","href":"/integrations/overview"},{"group":"IDP \u0026 HRIDP","pages":[{"group":"Okta","pages":[{"title":"Okta","sidebarTitle":"Connect to Okta","href":"/integrations/okta"},{"title":"Okta IDP/HRIS Integration","href":"/integrations/okta-idphris-integration"},{"title":"Import Okta apps","href":"/integrations/okta-apps"},{"title":"Okta rate limits","href":"/integrations/okta-rate-limits"}]},{"group":"OneLogin","pages":[{"title":"OneLogin IDP/HRIS Integration","tag":"NEW","href":"/integrations/onelogin-idphris-integration"}]},{"group":"Google","pages":[{"title":"Google","sidebarTitle":"Connect to Google","href":"/integrations/google"},{"title":"Google IDP/HRIS Integration","href":"/integrations/google-idphris-integration"},{"title":"Google Groups","href":"/integrations/google-groups"},{"title":"Google Shared Drive","tag":"NEW","href":"/integrations/google-shared-drive"},{"title":"Google Workspace","href":"/integrations/google-workspace"}]},{"group":"Azure","pages":[{"title":"Azure","sidebarTitle":"Connect to Azure","href":"/integrations/azure"},{"title":"Azure Entra IDP/HRIS Integration","href":"/integrations/azure-entra-idphris-integration"},{"title":"Azure Infrastructure Setup","href":"/integrations/azure-infrastructure-setup"},{"title":"Add Azure Databases","href":"/integrations/adding-azure-sql-databases"},{"title":"Azure Real Time Sync Setup","href":"/integrations/azure-real-time-sync"}]},{"group":"Active Directory","pages":[{"title":"Overview","sidebarTitle":"Connect to Active Directory","href":"/integrations/active-directory"},{"title":"Active Directory IDP/HRIS Integration","href":"/integrations/active-directory-idphris-integration"}]},{"group":"Workday","pages":[{"title":"Overview","sidebarTitle":"Connect to Workday","href":"/integrations/workday"},{"title":"Workday IDP/HRIS Integration","href":"/integrations/workday-idphris-integration"}]},{"group":"Rippling","pages":[{"title":"Rippling IDP/HRIS Integration","tag":"NEW","href":"/integrations/rippling-idphris-integration"}]}]},{"group":"Entitlement Management","pages":[{"group":"Infrastructure","expanded":true,"pages":[{"group":"Amazon Web Services (AWS)","expanded":false,"pages":[{"title":"Amazon Web Services (AWS)","href":"/integrations/setting-up-your-aws-organization-in-opal"},{"title":"Configure AWS for self-hosted Opal","href":"/integrations/aws-integration-on-prem-setup"},{"title":"Configure additional AWS accounts to manage in Opal","href":"/integrations/configure-additional-aws-accounts-to-manage-in-opal"},{"title":"AWS IAM Identity Center Workflows","href":"/integrations/aws-iam-identity-center-formerly-aws-sso"},{"title":"Add an IAM role","href":"/integrations/adding-an-iam-role"},{"title":"Add an RDS database","href":"/integrations/adding-an-rds-database"},{"title":"Add an EC2 instance","href":"/integrations/adding-an-ec2-instance"},{"title":"Add an EKS cluster","href":"/integrations/adding-an-eks-cluster"},{"title":"Adding AWS Resources to Opal Groups via AWS Tags","href":"/integrations/adding-aws-resources-to-opal-groups-via-aws-tags"},{"title":"AWS Real Time Sync Setup","href":"/integrations/aws-real-time-sync"}]},{"group":"Google Cloud Platform (GCP)","expanded":false,"pages":[{"title":"Google Cloud Platform (GCP)","sidebarTitle":"Connect to GCP","href":"/integrations/google-cloud-platform"},{"title":"Add an organization","href":"/integrations/adding-gcp-organization"},{"title":"Add a project","href":"/integrations/adding-gcp-project"},{"title":"Add a folder","href":"/integrations/adding-gcp-folder"},{"title":"Add a BigQuery Dataset","href":"/integrations/adding-bigquery-dataset"},{"title":"Add a Cloud Storage bucket","href":"/integrations/adding-gcp-bucket"},{"title":"Add a Cloud SQL Instance","href":"/integrations/adding-sql-instance"},{"title":"Add a Compute Engine Instance","href":"/integrations/adding-compute-instance"},{"title":"Google Kubernetes Engine (GKE)","href":"/integrations/google-kubernetes-engine-getting-started"},{"title":"GCP Service Accounts","href":"/integrations/gcp-service-accounts"}]},{"group":"Snowflake","expanded":false,"pages":[{"title":"Snowflake","sidebarTitle":"Connect to Snowflake","href":"/integrations/snowflake"},{"title":"Snowflake User Provisioning","href":"/integrations/snowflake-user-provisioning"}]}]},{"title":"1Password","tag":"NEW","href":"/integrations/1password"},{"title":"Anthropic Platform","href":"/integrations/anthropic"},{"title":"Astra","href":"/integrations/astra"},{"title":"Axiom","href":"/integrations/axiom"},{"title":"Box","tag":"NEW","href":"/integrations/box"},{"title":"Clickhouse","href":"/integrations/clickhouse"},{"title":"Atlassian Confluence","sidebarTitle":"Atlassian Confluence","href":"/integrations/confluence"},{"title":"Coupa","href":"/integrations/coupa"},{"title":"Cursor","href":"/integrations/cursor"},{"title":"Databricks","href":"/integrations/databricks"},{"title":"Datadog","href":"/integrations/datadog"},{"title":"Devin AI","href":"/integrations/devin"},{"title":"Docusign","href":"/integrations/docusign"},{"title":"Duo","href":"/integrations/duo"},{"title":"GitGuardian","tag":"NEW","href":"/integrations/gitguardian"},{"title":"GitHub","href":"/integrations/github"},{"title":"GitHub Enterprise","href":"/integrations/github-enterprise"},{"title":"GitLab","href":"/integrations/gitlab"},{"title":"Grafana","href":"/integrations/grafana"},{"title":"Hubspot","href":"/integrations/hubspot"},{"title":"Incident.io","href":"/integrations/incidentio"},{"title":"Atlassian Jira","sidebarTitle":"Atlassian Jira","href":"/integrations/jira"},{"title":"LDAP","href":"/integrations/ldap"},{"title":"Linear","sidebarTitle":"Linear","href":"/integrations/linear"},{"title":"NetSuite","href":"/integrations/netsuite"},{"title":"Okta CIAM","href":"/integrations/okta-ciam"},{"title":"OneLogin","tag":"NEW","href":"/integrations/onelogin"},{"title":"OpenAI Platform","href":"/integrations/openai"},{"title":"Oracle Fusion Cloud","href":"/integrations/oracle-fusion-cloud"},{"title":"PagerDuty","href":"/integrations/pagerduty-entitlements"},{"title":"Ramp","href":"/integrations/ramp"},{"title":"Rippling","href":"/integrations/rippling"},{"title":"Rootly","href":"/integrations/rootly"},{"title":"Salesforce","href":"/integrations/salesforce"},{"title":"Sentry","tag":"NEW","href":"/integrations/sentry"},{"title":"Slack users, groups, and roles","href":"/integrations/slack-user-groups"},{"title":"Square","tag":"NEW","href":"/integrations/square"},{"title":"Salesforce Tableau","href":"/integrations/tableau"},{"title":"Tailscale","description":"Learn how to connect Opal to Tailscale to manage SSH access within your tailnet.","href":"/integrations/tailscale"},{"title":"Teleport","href":"/integrations/teleport"},{"title":"Twingate","description":"Learn how to connect Opal to Twingate to manage access to Twingate groups and resources.","href":"/integrations/twingate"},{"title":"Vercel","href":"/integrations/vercel"},{"title":"Workato","tag":"NEW","href":"/integrations/workato"},{"title":"Workday groups and roles","href":"/integrations/workday-groups-and-roles"},{"title":"Wrike","href":"/integrations/wrike"},{"title":"Zendesk","href":"/integrations/zendesk"},{"title":"Zoom","href":"/integrations/zoom"}]},{"group":"Productivity Tools","pages":[{"group":"Communication","expanded":true,"pages":[{"title":"Google Chat","href":"/integrations/google-chat"},{"title":"Lark","href":"/integrations/lark"},{"title":"Microsoft Teams","href":"/integrations/microsoft-teams"},{"title":"Slack","href":"/integrations/slack"}]},{"group":"Ticketing","expanded":true,"pages":[{"title":"Freshservice","href":"/integrations/freshservice"},{"title":"Jira","href":"/integrations/jira-ticketing"},{"title":"Linear","href":"/integrations/linear-ticketing"},{"title":"Notion","href":"/integrations/notion"},{"title":"Risotto","tag":"BETA","href":"/integrations/risotto"},{"title":"ServiceNow","href":"/integrations/servicenow"},{"title":"Shortcut","href":"/integrations/shortcut"}]},{"group":"On-call","expanded":true,"pages":[{"title":"Opsgenie","deprecated":true,"href":"/integrations/opsgenie"},{"title":"PagerDuty","deprecated":true,"href":"/integrations/pagerduty-oncall"}]}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/reference/authentication"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/changelog"}]}]},"basePath":"","title":"Teleport - Opal Security Docs","buildId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","deploymentId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-BbK2OBGL.js","lightbox-handle-r17bVUz3.js"]}