text: (self.webpackChunkdocusaurus_template=self.webpackChunkdocusaurus_template||[]).push([[9113],{3905:function(e,t,n){"use strict";n.d(t,{Zo:function(){return u},kt:function(){return f}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},s=Object.keys(e);for(r=0;r<s.length;r++)n=s[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r<s.length;r++)n=s[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a=r.createContext({}),l=function(e){var t=r.useContext(a),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=l(e.components);return r.createElement(a.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,s=e.originalType,a=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),d=l(n),f=o,m=d["".concat(a,".").concat(f)]||d[f]||p[f]||s;return n?r.createElement(m,i(i({ref:t},u),{},{components:n})):r.createElement(m,i({ref:t},u))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var s=n.length,i=new Array(s);i[0]=d;var c={};for(var a in t)hasOwnProperty.call(t,a)&&(c[a]=t[a]);c.originalType=e,c.mdxType="string"==typeof e?e:o,i[1]=c;for(var l=2;l<s;l++)i[l]=n[l];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},918:function(e,t,n){"use strict";n.r(t),n.d(t,{frontMatter:function(){return i},metadata:function(){return c},toc:function(){return a},default:function(){return u}});var r=n(22122),o=n(19756),s=(n(67294),n(3905)),i={id:"index",title:"Access Control Engines - Introduction"},c={unversionedId:"engines/index",id:"version-v0.5/engines/index",isDocsHomePage:!1,title:"Access Control Engines - Introduction",description:"Whatever your system looks like, you probably have a concept of permissions",source:"@site/versioned_docs/version-v0.5/engines/index.md",sourceDirName:"engines",slug:"/engines/index",permalink:"/keto/docs/v0.5/engines/index",editUrl:"https://github.com/ory/keto/edit/master/docs/versioned_docs/version-v0.5/engines/index.md",version:"v0.5",lastUpdatedBy:"hackerman",lastUpdatedAt:1586170560,formattedLastUpdatedAt:"4/6/2020",frontMatter:{id:"index",title:"Access Control Engines - Introduction"},sidebar:"version-v0.5/docs",previous:{title:"Secure",permalink:"/keto/docs/v0.5/secure"},next:{title:"Access Control Lists (ACL)",permalink:"/keto/docs/v0.5/engines/acl"}},a=[],l={toc:a};function u(e){var t=e.components,n=(0,o.Z)(e,["components"]);return(0,s.kt)("wrapper",(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,'Whatever your system looks like, you probably have a concept of permissions\nwhich models who is allowed to do what (access control). ORY Keto provides you\nwith battle-tested, best practice access control concepts. Please note that ORY\nKeto doesn\'t support all access control mechanisms while in "sandbox" mode.'),(0,s.kt)("p",null,"This chapter introduces the most widely used Access Control Policies. Before we\ndo that, let's cover some of the basics."),(0,s.kt)("p",null,'Every app that has users usually assigns permissions to these users ("Bob and\nAlice are allowed to write blog posts"). There are various established best\npractices for assigning one or more permissions to one or more users. In the\ncontext of access control, you\'ll often encounter ',(0,s.kt)("strong",{parentName:"p"},"users"),", ",(0,s.kt)("strong",{parentName:"p"},"identities")," or\n",(0,s.kt)("strong",{parentName:"p"},"subjects"),". They typically include users, robots, cronjobs, services, etc."))}u.isMDXComponent=!0}}]);