{"templateId":"markdown","versions":[{"version":"v1.40","label":"v1.40 STS","link":"/products/custody/v1.40/get-started/design/policies/overview","default":true,"active":false,"folderId":"c15a2701"},{"version":"v1.39","label":"v1.39 STS","link":"/products/custody/v1.39/get-started/design/policies/overview","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.38","label":"v1.38 STS","link":"/products/custody/v1.38/get-started/design/policies/overview","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.34","label":"v1.34 LTS","link":"/products/custody/v1.34/get-started/design/policies/overview","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.26","label":"v1.26 LTS","link":"/products/custody/v1.26/get-started/design/policies/overview","default":false,"active":true,"folderId":"c15a2701"},{"version":"v1.19","label":"v1.19 LTS","link":"/products/custody/v1.19/get-started/design/policies/overview","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.15","label":"v1.15 LTS","link":"/products/custody/v1.15/get-started/design/policies/overview","default":false,"active":false,"folderId":"c15a2701"}],"sharedDataIds":{"sidebar":"sidebar-products/custody/@v1.15/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Overview","description":"User guides, API reference, and support resources.","siteUrl":"https://docs.ripple.com","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"overview","__idx":0},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To design the policies for your environment, you need to identify all business workflows in your organization and create a framework of policies to match."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You need to consider the following:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The intent types to which the policy applies."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The condition, used to further filter and adapt the policy to a dedicated business use-case."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The approval workflows, which detail the roles and the number of approvals for the request to be approved."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The first step of any policy workflow must be an approval by the user role that creates the intent, as the intent creator counts as the first approver."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Without a suitable maker role assigned to the first step of an approval workflow for the relevant intent, the request cannot be executed."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"central-principles-of-the-policy-framework","__idx":1},"children":["Central principles of the policy framework"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The central principles of the policy framework are as follows:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Segregation of roles into makers and checkers:",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Maker"]}," roles create intents."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Checker"]}," roles review intents and provide approvals or rejections."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Dedicated operators by operation type (users in charge of creating transactions are different from users creating policies)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Segregation of policies by business flow."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Conditions defined to precisely filter a defined use case."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Approvals defined according to the level of risk (more complex approvals for riskier operations)."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"scope-of-a-policy","__idx":2},"children":["Scope of a policy"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ripple Custody"," includes settings to define the scope of a policy within a domain or domain hierarchy. You can use these to supervise intent execution in subdomains from a parent, and also to implement a breakglass policy."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For more information, see also ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/v1.26/get-started/design/policies/breakglass"},"children":["Breakglass policy"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The scope of a policy is defined by the following two settings:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The policy ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scope"]}," setting: Whether the policy applies to the current domain (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Self"]},"), to the subdomains (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Descendants"]},"), or to both (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SelfAndDescendants"]},")."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The domain ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["governingStrategy"]}," setting: Whether a parent domain forces its subdomains to use the parent domain's policies (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CoerceDescendants"]},") or not (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ConsiderDescendants"]},")."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For examples of the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["governingStrategy"]}," domain setting and the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scope"]}," policy setting, see the request body example in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/v1.26/get-started/deployment/system-setup/setup#request-body-example"},"children":["Run system setup"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example","__idx":3},"children":["Example"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This example shows how policy selection occurs in a hierarchical domain setup based on scope settings."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This example specifically applies to policy selection, not to intent execution: all selected policies must be valid and complete the associated workflow before the intent is executed."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the following parent-child setup:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/policy-scope.acd0e5a8fdb3f4ac33810deb3a8913cdd2030654565ff8ba55ec26cf4dc8e200.6c4d45f5.png","alt":""},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ripple Custody"," applies policies, as long as they meet other requirements, such as intent and role type, to intents as follows:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Scenario"},"children":["Scenario"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Domain governing strategy"},"children":["Domain governing strategy"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Policies applied"},"children":["Policies applied"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Operator 1"]}," submits intent in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Domain 1"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Any"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Domain 1"]},": Policy with scope ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Self"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SelfAndDescendants"]},".",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Domain 2"]},": No policy."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Operator 1"]}," submits intent in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Domain 2"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Domain 1"]},": Governing strategy of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CoerceDescendants"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Domain 1"]},": Policy with scope ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Descendants"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SelfAndDescendants"]},".",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Domain 2"]},": No policy."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Operator 1"]}," submits intent in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Domain 2"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Domain 1"]},": Governing strategy of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ConsiderDescendants"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Domain 1"]},": Policy with scope ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Descendants"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SelfAndDescendants"]},".",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Domain 2"]},": Policy with scope ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Self"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SelfAndDescendants"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Operator 2"]}," submits intent in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Domain 1"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Any"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["N/A, cannot submit intent from a child domain to a parent domain."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Operator 2"]}," submits intent in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Domain 2"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Any"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Domain 1"]},": If policy with scope ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Descendants"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SelfAndDescendants"]}," exists, it's also applied.",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Domain 2"]},": Policy with scope ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Self"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SelfAndDescendants"]},"."]}]}]}]}]}]},"headings":[{"value":"Overview","id":"overview","depth":1},{"value":"Central principles of the policy framework","id":"central-principles-of-the-policy-framework","depth":2},{"value":"Scope of a policy","id":"scope-of-a-policy","depth":2},{"value":"Example","id":"example","depth":3}],"frontmatter":{"seo":{"title":"Overview"}},"lastModified":"2025-11-04T23:32:34.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/custody/v1.26/get-started/design/policies/overview","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}