{"componentChunkName":"component---src-templates-doc-tsx","path":"/product/relay/","result":{"data":{"file":{"id":"e61883d3-e5d7-5926-8a3c-b0f4c3a9fa0e","relativePath":"product/relay/index.mdx","sourceInstanceName":"docs","childMarkdownRemark":null,"childMdx":{"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Relay\",\n  \"description\": \"Learn more about Relay, Sentry's data security solution.\",\n  \"sidebar_order\": 3000,\n  \"redirect_from\": [\"/meta/relay/\"]\n};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar Alert = makeShortcode(\"Alert\");\nvar PageGrid = makeShortcode(\"PageGrid\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Sentry Relay offers enterprise-grade data security by providing a standalone service that acts as a middle layer between your application and sentry.io.\"), mdx(\"p\", null, \"Relay is specifically designed to:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Scrub personally identifiable information (PII) in a central place prior to sending it to Sentry\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Improve event response time in regions with low bandwidth or limited connectivity\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Act as an opaque proxy for organizations that restrict all HTTP communication to a custom domain name\")), mdx(Alert, {\n    level: \"info\",\n    title: \"Note\",\n    mdxType: \"Alert\"\n  }, mdx(\"p\", null, \"Relay is a work in progress. The default Relay mode is currently supported\\nonly for on-premise installations and beta testers. If you are using Relay to\\nconnect to Sentry and are not a beta tester, you need to use \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"proxy\"), \" or \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"static\"), \"\\nmode.\"), mdx(\"p\", null, \"If you want to beta test the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"managed\"), \" mode while connecting to Sentry, please\\ncontact us. See \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/product/relay/modes/\"\n  }), \"Relay Modes\"), \" for more information.\")), mdx(\"h2\", {\n    \"id\": \"use-cases-for-relay\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#use-cases-for-relay\",\n    \"aria-label\": \"use cases for relay permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"Use Cases for Relay\"), mdx(\"p\", null, \"Relay is designed to support organizations that have specific enterprise security requirements for data scrubbing of personally identifiable information (PII), response time, and enterprise domain management.\"), mdx(\"h3\", {\n    \"id\": \"pii-data-scrubbing\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h3\"\n  }, {\n    \"href\": \"#pii-data-scrubbing\",\n    \"aria-label\": \"pii data scrubbing permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"PII Data Scrubbing\"), mdx(\"p\", null, \"Sentry already scrubs PII in two places:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"In the SDK before sending the event\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Upon arrival on Sentry's infrastructure\")), mdx(\"p\", null, \"Relay adds a third option that scrubs data in a central place prior to sending\\nit to Sentry.\"), mdx(\"p\", null, \"To choose the right place for data scrubbing, consider:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"If you prefer to configure data scrubbing in a central place, you can let\\nSentry handle data scrubbing. Upon arrival, Sentry immediately applies\\n\", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/platform-redirect/?next=/data-management/sensitive-data/%23server-side-scrubbing\"\n  }), \"server-side scrubbing\"), \" and guarantees that personal information is never\\nstored.\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"If you cannot send PII outside your infrastructure, but you still prefer to\\nconfigure data scrubbing in a centralized place, configure your SDK to send events to Relay. Relay uses the privacy settings configured in Sentry, and scrubs PII before forwarding data to Sentry.\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"If you must enforce strict data privacy requirements, you can configure SDKs to\\nscrub PII using the \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/platform-redirect/?next=configuration/options/%23hooks\"\n  }), mdx(\"inlineCode\", {\n    parentName: \"a\"\n  }, \"before-send\"), \" hooks\"), \", which prevents data from being\\ncollected on the device. This may require you to replicate the same logic across\\nyour applications, but may impact performance.\"))), mdx(\"h3\", {\n    \"id\": \"response-time\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h3\"\n  }, {\n    \"href\": \"#response-time\",\n    \"aria-label\": \"response time permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"Response Time\"), mdx(\"p\", null, \"Relay responds very quickly to requests. Installing Relay close to your infrastructure will further improve the response time when sending events. This installation approach can particularly reduce the roundtrip time in remote locations.\"), mdx(\"h3\", {\n    \"id\": \"enterprise-domain-management\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h3\"\n  }, {\n    \"href\": \"#enterprise-domain-management\",\n    \"aria-label\": \"enterprise domain management permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"Enterprise Domain Management\"), mdx(\"p\", null, \"By default, SDKs need to be configured with a Data Source Name (DSN) that points to \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"sentry.io\"), \". If you need to restrict all HTTP communication to a custom domain name, Relay can act as an opaque proxy that reliably forwards events to Sentry.\"), mdx(\"h2\", {\n    \"id\": \"next-steps\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#next-steps\",\n    \"aria-label\": \"next steps permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"Next Steps\"), mdx(PageGrid, {\n    mdxType: \"PageGrid\"\n  }));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#use-cases-for-relay","title":"Use Cases for Relay","items":[{"url":"#pii-data-scrubbing","title":"PII Data Scrubbing"},{"url":"#response-time","title":"Response Time"},{"url":"#enterprise-domain-management","title":"Enterprise Domain Management"}]},{"url":"#next-steps","title":"Next Steps"}]},"internal":{"type":"Mdx"}}}},"pageContext":{"excerpt":"Sentry Relay offers enterprise-grade data security by providing a standalone service that acts as a middle layer between your application and sentry.io. Relay is specifically designed to: Scrub personally identifiable information (PII) in a central place prior to sending it to Sentry Improve event response time in regions with low bandwidth or limited connectivity Act as an opaque proxy for organizations that restrict all HTTP communication to a custom domain name Relay is a work in progress. The default Relay mode is currently supported\nonly for on-premise installations and beta testers. If you are using Relay to\nconnect to Sentry and are not a beta tester, you need to use  proxy  or  static \nmode. If you want to beta test the  managed  mode while connecting to Sentry, please\ncontact us. See  Relay Modes  for more information. Use Cases for Relay Relay is designed to support organizations that have specific enterprise security requirements for data scrubbing of personally identifiable information (PII), response time, and enterprise domain management. PII Data Scrubbing Sentry already scrubs PII in two places: In the SDK before sending the event Upon arrival on Sentry's infrastructure Relay adds a third option that scrubs data in a central place prior to sending\nit to Sentry. To choose the right place for data scrubbing, consider: If you prefer to configure data scrubbing in a central place, you can let\nSentry handle data scrubbing. Upon arrival, Sentry immediately applies\n server-side scrubbing  and guarantees that personal information is never\nstored. If you cannot send PII outside your infrastructure, but you still prefer to\nconfigure data scrubbing in a centralized place, configure your SDK to send events to Relay. Relay uses the privacy settings configured in Sentry, and scrubs PII before forwarding data to Sentry. If you must enforce strict data privacy requirements, you can configure SDKs to\nscrub PII using the  before-send  hooks , which prevents data from being\ncollected on the device. This may require you to replicate the same logic across\nyour applications, but may impact performance. Response Time Relay responds very quickly to requests. Installing Relay close to your infrastructure will further improve the response time when sending events. This installation approach can particularly reduce the roundtrip time in remote locations. Enterprise Domain Management By default, SDKs need to be configured with a Data Source Name (DSN) that points to  sentry.io . If you need to restrict all HTTP communication to a custom domain name, Relay can act as an opaque proxy that reliably forwards events to Sentry. Next Steps","title":"Relay","description":"Learn more about Relay, Sentry's data security solution.","draft":null,"noindex":null,"notoc":null,"sidebar_order":3000,"redirect_from":["/meta/relay/"],"keywords":null,"id":"e61883d3-e5d7-5926-8a3c-b0f4c3a9fa0e","legacy":false}},"staticQueryHashes":["1218203755","1222113826","1222113826","1766336459","2158593473","2764967025","3345802723","3818502851","3990806462","4015007367","4192517163","4264099332","518019976"]}