CINXE.COM
<!doctype html> <html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-1.0.0 plugin-docs plugin-id-default docs-doc-id-features/projects-and-env" data-has-hydrated="false"> <head> <meta charset="UTF-8"> <meta name="generator" content="Docusaurus v2.4.3"> <title data-rh="true">Projects & Environments | Permit.io Documentation</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://docs.permit.io/1.0.0/features/projects-and-env"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="1.0.0"><meta data-rh="true" name="docusaurus_tag" content="docs-default-1.0.0"><meta data-rh="true" name="docsearch:version" content="1.0.0"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-1.0.0"><meta data-rh="true" property="og:title" content="Projects & Environments | Permit.io Documentation"><meta data-rh="true" name="description" content="In this section we will dife into details how Projects and Environments work within Permit.io."><meta data-rh="true" property="og:description" content="In this section we will dife into details how Projects and Environments work within Permit.io."><link data-rh="true" rel="icon" href="/logo/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.permit.io/1.0.0/features/projects-and-env"><link data-rh="true" rel="alternate" href="https://docs.permit.io/1.0.0/features/projects-and-env" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.permit.io/1.0.0/features/projects-and-env" hreflang="x-default"><link data-rh="true" rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"><link data-rh="true" href="https://cdn.jsdelivr.net/npm/remixicon@4.2.0/fonts/remixicon.css" rel="stylesheet"><link data-rh="true" rel="preconnect" href="https://MVBO9ANY91-dsn.algolia.net" crossorigin="anonymous"><link rel="preconnect" href="https://www.google-analytics.com"> <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-S2W3HZX9EZ"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-S2W3HZX9EZ",{anonymize_ip:!0})</script> <link rel="search" type="application/opensearchdescription+xml" title="Permit.io Documentation" href="/opensearch.xml"> <script>!function(t,h,e,j,s,n){t.hj=t.hj||function(){(t.hj.q=t.hj.q||[]).push(arguments)},t._hjSettings={hjid:3529378,hjsv:6},s=h.getElementsByTagName("head")[0],(n=h.createElement("script")).async=1,n.src="https://static.hotjar.com/c/hotjar-"+t._hjSettings.hjid+".js?sv="+t._hjSettings.hjsv,s.appendChild(n)}(window,document)</script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/remixicon@4.2.0/fonts/remixicon.css"><link rel="stylesheet" href="/assets/css/styles.ecbeac4c.css"> <link rel="preload" href="/assets/js/runtime~main.d64cc98d.js" as="script"> <link rel="preload" href="/assets/js/main.1e418128.js" as="script"> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-S2W3HZX9EZ"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-S2W3HZX9EZ'); </script><script src="https://cdn.lr-in.com/LogRocket.min.js" crossorigin="anonymous"></script> <script>window.LogRocket && window.LogRocket.init('s0szi1/permitio-docs');</script></head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus"> <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><div class="announcementBar_mb4j" style="background-color:#6851ff;color:#FFFFFF" role="banner"><div class="announcementBarPlaceholder_vyr4"></div><div class="content_knG7 announcementBarContent_xLdY">If you like Permit, give us a ⭐️ on <a href="https://www.github.com/permitio/opal" target="_blank" rel="noopener noreferrer">GitHub</a> and follow us on <a href="https://www.twitter.com/permit_io" target="_blank" rel="noopener noreferrer">Twitter</a></div><button type="button" aria-label="Close" class="clean-btn close closeButton_CVFx announcementBarClose_gvF7"><svg viewBox="0 0 15 15" width="14" height="14"><g stroke="currentColor" stroke-width="3.1"><path d="M.75.75l13.5 13.5M14.25.75L.75 14.25"></path></g></svg></button></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"></a><div class="algolia-search searchBox_ZlJk"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a aria-current="page" class="navbar__link active" aria-haspopup="true" aria-expanded="false" role="button" href="/1.0.0/">1.0.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/">2.0.0</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/1.0.0/features/projects-and-env">1.0.0</a></li></ul></div><a href="https://github.com/permitio" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link github-icon nav-icon" alt="twitter logo"></a><a href="https://twitter.com/permit_io" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link twitter-icon nav-icon" alt="github logo"></a><a href="https://io.permit.io/docs-to-slack" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link slack-icon nav-icon" alt="slack logo"></a><div class="navbar__item dashboard"><a target="_blank" href="https://io.permit.io/QoPSfh">Go to dashboard</a></div><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg class="dark-theme-toggle" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.48522 1.68164C8.26441 2.82232 7.5013 4.44667 7.5013 6.24925C7.5013 9.70101 10.2996 12.4993 13.7513 12.4993C15.5539 12.4993 17.1782 11.7362 18.3189 10.5153C18.0524 14.8773 14.4304 18.3326 10.0013 18.3326C5.39893 18.3326 1.66797 14.6016 1.66797 9.99926C1.66797 5.57021 5.12321 1.94817 9.48522 1.68164Z" fill="#846358"></path></svg><svg class="light-theme-toggle" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_10761_10952)"><path d="M9.9987 15.0007C8.67262 15.0007 7.40085 14.4739 6.46316 13.5362C5.52548 12.5985 4.9987 11.3267 4.9987 10.0007C4.9987 8.67457 5.52548 7.4028 6.46316 6.46512C7.40085 5.52744 8.67262 5.00065 9.9987 5.00065C11.3248 5.00065 12.5966 5.52744 13.5342 6.46512C14.4719 7.4028 14.9987 8.67457 14.9987 10.0007C14.9987 11.3267 14.4719 12.5985 13.5342 13.5362C12.5966 14.4739 11.3248 15.0007 9.9987 15.0007ZM9.9987 13.334C10.8828 13.334 11.7306 12.9828 12.3557 12.3577C12.9808 11.7326 13.332 10.8847 13.332 10.0007C13.332 9.1166 12.9808 8.26875 12.3557 7.64363C11.7306 7.01851 10.8828 6.66732 9.9987 6.66732C9.11464 6.66732 8.2668 7.01851 7.64168 7.64363C7.01655 8.26875 6.66536 9.1166 6.66536 10.0007C6.66536 10.8847 7.01655 11.7326 7.64168 12.3577C8.2668 12.9828 9.11464 13.334 9.9987 13.334V13.334ZM9.16536 0.833984H10.832V3.33398H9.16536V0.833984ZM9.16536 16.6673H10.832V19.1673H9.16536V16.6673ZM2.92786 4.10815L4.1062 2.92982L5.8737 4.69732L4.69536 5.87565L2.92786 4.10898V4.10815ZM14.1237 15.304L15.302 14.1257L17.0695 15.8932L15.8912 17.0715L14.1237 15.304ZM15.8912 2.92898L17.0695 4.10815L15.302 5.87565L14.1237 4.69732L15.8912 2.92982V2.92898ZM4.69536 14.1257L5.8737 15.304L4.1062 17.0715L2.92786 15.8932L4.69536 14.1257V14.1257ZM19.1654 9.16732V10.834H16.6654V9.16732H19.1654ZM3.33203 9.16732V10.834H0.832031V9.16732H3.33203Z" fill="#FFB381"></path></g><defs><clipPath id="clip0_10761_10952"><rect width="20" height="20" fill="white"></rect></clipPath></defs></svg></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><a href="/"></a><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG menuWithAnnouncementBar_GW3s"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/1.0.0/">WELCOME</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Get Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/1.0.0/tutorials/quickstart">Quickstart</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/1.0.0/tutorials/Introduction/what-is-permit">Introduction</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/1.0.0/tutorials/Onboarding/lets-begin">Onboarding</a></div></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Features</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/1.0.0/features/projects-and-env">Projects & Environments</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/1.0.0/features/policy-editor">Policy Editor</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/1.0.0/features/user-management">User Management</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/1.0.0/features/Audit Logs/types">Audit Logs</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/1.0.0/features/coming-soon">Coming Soon</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/1.0.0/concepts/authorization_concepts">Concepts</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Reference</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/1.0.0/reference/SDKs/Dotnet/quickstart_dotnet">SDKs</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/1.0.0/reference/api_reference">API Reference</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/1.0.0/reference/api_with_cli">Call API with CLI</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/1.0.0/security/Connectivity">Security</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/1.0.0/faq">FAQ</a></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_z5aJ"><div class="theme-doc-version-banner alert alert--warning margin-bottom--md" role="alert"><div>This is documentation for <!-- -->Permit.io Documentation<!-- --> <b>1.0.0</b>, which is no longer actively maintained.</div><div class="margin-top--md">For up-to-date documentation, see the <b><a href="/">latest version</a></b> (<!-- -->2.0.0<!-- -->).</div></div><div class="docItemContainer_c0TR"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Features</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Projects & Environments</span><meta itemprop="position" content="2"></li></ul></nav><span class="theme-doc-version-badge badge badge--secondary">Version: 1.0.0</span><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Projects & Environments</h1></header><p>In this section we will dife into details how <strong>Projects</strong> and <strong>Environments</strong> work within Permit.io.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="projects">Projects<a href="#projects" class="hash-link" aria-label="Direct link to Projects" title="Direct link to Projects"></a></h2><p>Projects are the highest level of encapsulation for your authorization. Every unique service or application that requires its own set of policies and roles is a project. In addition, each project can support multiple environments - allowing different policies for different deployments or configurations.</p><p>Within your organization, you can have <strong>multiple projects</strong>. Each project represents your offerings, where an offering can be a different <strong>product</strong>, <strong>software</strong> or <strong>tool</strong>. By default, we defined the "<strong><em>Default Project</em></strong>" for you.</p><p>You can manage projects from the <strong><a href="https://app.permit.io/project-management" target="_blank" rel="noopener noreferrer">Projects</a></strong> page.</p><p><img loading="lazy" alt="Project and Environment Page" src="/assets/images/projects-page-21622402065b1e60838fd08d71727a25.png" width="1933" height="1362" class="img_ev3q"></p><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><p>If you have one product line, you can ignore this hierarchy level. </p></div></div><p>If your organization needs to deal with <strong>multiple projects</strong>, you can add this project directly within the Projects page. We also provide the functionality for <strong>filtering</strong> through projects, to provide you with a more conrete view, and of course, you also get the ability to <strong>edit</strong> and <strong>delete</strong> projects as you wish.</p><p><img loading="lazy" alt="Project Creation" src="/assets/images/project-creation-ac4636c6fa1267e807b0927434666fdc.png" width="1928" height="831" class="img_ev3q"> <img loading="lazy" alt="Project Filtering, Editing &amp; Deleting" src="/assets/images/projects-edit-delete-3908857ae793eecb3a08e1a9340d6fc1.png" width="1929" height="591" class="img_ev3q"></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="environments">Environments<a href="#environments" class="hash-link" aria-label="Direct link to Environments" title="Direct link to Environments"></a></h2><p>Within your project, you create environments that suit your needs e.g. <strong>dev</strong>, <strong>staging</strong>, <strong>production</strong> etc. </p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>Notice when you switch environment the <strong>Policy Editor</strong> will be updated to reflect the new environment.</p></div></div><p>Every environment has a <strong>secret key</strong> that you use to check for permissions with the Permit's SDK and API. We offer simple functionality so that you can <strong>easily copy your keys</strong>, <strong>rotate</strong> them if you want to maintain your secuity to your desired standard, <strong>edit</strong> the environment to you liking, <strong>delete it</strong> if need be, and most importantly <strong>change environment</strong> which is as simple as a click of a button.</p><p>You can manage environments from the <strong><a href="https://app.permit.io/project-management" target="_blank" rel="noopener noreferrer">Project</a></strong> page.</p><p><img loading="lazy" alt="Environments" src="/assets/images/environments-61f820a03fd7b6e263b2ba02b4f5697a.png" width="1929" height="585" class="img_ev3q"></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="permit-object-model">Permit Object Model<a href="#permit-object-model" class="hash-link" aria-label="Direct link to Permit Object Model" title="Direct link to Permit Object Model"></a></h2><p>Your workspace, or in other words, your organization, is at the root of the Permit object model. Within your workspace you can have multiple projects, and each project can have multiple environments, each with their own set of policies and roles.</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>Think of a <strong>project</strong> as <em>different applications you would want different policies for</em>.</p><p>Think of an <strong>environment</strong> as <em>different deployments you would want different policies for</em>.</p></div></div><p><img loading="lazy" alt="Permit Object Model" src="/assets/images/api-model-f212cef178cf6984bd6009c26d0b62e8.svg" width="960" height="540" class="img_ev3q"></p><p>Under each environment you will find:</p><ul><li>your tenants <strong>(think: your customers)</strong></li><li>your users</li><li>your policy and roles</li><li>your resources and actions <strong>(think: the layout of your application and its enforcement points)</strong></li></ul><p>Within each environment - Users are linked to tenants via roles</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>generic example</div><div class="admonitionContent_S0QG"><p>In <strong>app-W</strong> that's deployed to production, <strong>user-X</strong> has the <strong>role-Y</strong> in <strong>tenant-Z</strong>.</p></div></div><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>real-life example</div><div class="admonitionContent_S0QG"><p>Let's assume we have <strong>e-learning</strong> platform deployed into production.</p><p>One of the customers named <strong>John Smith</strong>, has been enrolled as a <strong>student</strong> in the payed <strong>"Introduction to Web Development"</strong> course.</p></div></div><p>You can have the same user belong to multiple tenants in the same environment, and to multiple environments/projects.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/1.0.0/tutorials/Onboarding/connect-your-app"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Connect Your App</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/1.0.0/features/policy-editor"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Policy Editor</div></a></nav></div></div><div class="col col--3"><div class="toc-wrapper"><h2>Contents</h2><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#projects" class="table-of-contents__link toc-highlight">Projects</a></li><li><a href="#environments" class="table-of-contents__link toc-highlight">Environments</a></li><li><a href="#permit-object-model" class="table-of-contents__link toc-highlight">Permit Object Model</a></li></ul></div></div></div></div></div></main></div></div></div> <script src="/assets/js/runtime~main.d64cc98d.js"></script> <script src="/assets/js/main.1e418128.js"></script> <script> function getCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } var cookie = getCookie('_lr_id'); if (cookie && window.LogRocket){ lr_id = JSON.parse(atob(decodeURIComponent(escape(cookie)))); window.LogRocket.identify(lr_id.email, {name:lr_id.fullName, email:lr_id.email}); } </script></body> </html>