{"id":2639,"date":"2012-09-26T17:02:13","date_gmt":"2012-09-26T21:02:13","guid":{"rendered":"http:\/\/www.iri.com\/blog\/?p=2639"},"modified":"2020-08-06T11:40:17","modified_gmt":"2020-08-06T15:40:17","slug":"using-fieldshield-in-database-applications","status":"publish","type":"post","link":"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/","title":{"rendered":"Data Masking in DB Applications"},"content":{"rendered":"<p><em>Protecting Data at Rest and in Motion<\/em><\/p>\n<p>Database applications that update and query tables may need to secure data going into, or being retrieved from, those tables. Sensitive data must be protected on the way into the table, once in the table, or on the way out. In every case, the goal is to keep unauthorized people from accessing certain rows or column values considered sensitive.<\/p>\n<p>For normal form (structured) data in relational databases, the\u00a0<a title=\"FieldShield\" href=\"http:\/\/www.iri.com\/products\/fieldshield\" target=\"_blank\" rel=\"noopener\">IRI FieldShield<\/a> standalone data masking utility, or its compatible library of callable masking functions, can accommodate the scenarios above, providing many options for both static (persistent, at rest) and dynamic (in-transit) data masking options. If you also have PII\/PHI values floating randomly within semi- and unstructured RDB columns (like text, C\/BLOB, XML\/JSON), see <a href=\"https:\/\/www.iri.com\/blog\/data-protection\/darkshield-relational-databases\/\">this article<\/a> on the <a href=\"https:\/\/www.iri.com\/products\/darkshield\">IRI DarkShield<\/a> approach.<\/p>\n<p>This article will talk FieldShield options, however, since most RDB users are concerned with finding and masking fixed column vales. FieldShield users can classify, locate, and mask data in DB tables, and for application users, run via:<\/p>\n<ul>\n<li>a <a href=\"https:\/\/www.iri.com\/solutions\/data-masking\/static-data-masking\">static<\/a> data masking on production tables, and <a href=\"https:\/\/www.iri.com\/blog\/data-protection\/data-masking-in-fieldshield\/\">dynamic unmasking<\/a> by authorized app users<\/li>\n<li>masking functions <a href=\"https:\/\/www.iri.com\/solutions\/data-integration\/implement\">embedded<\/a> in metadata-compatible transform, cleansing, or reporting jobs<\/li>\n<li>a <a href=\"https:\/\/www.iri.com\/blog\/data-protection\/proxy-dynamic-masking-fieldshield\/\">proxy-based<\/a> dynamic data redaction system<\/li>\n<li>through a\u00a0<a href=\"http:\/\/www.iri.com\/blog\/data-protection\/fieldshield-sdk-2\/\" target=\"_blank\" rel=\"noopener\">SDK API<\/a>, or system,\u00a0call from a program<\/li>\n<li><a href=\"https:\/\/www.iri.com\/blog\/data-protection\/real-time-data-masking\/\">in-situ<\/a>, via SQL procedures using a custom library<\/li>\n<\/ul>\n<p>If your data are in NoSQL databases like MongoDB, Cassandra, Elasticsearch or MarkLogic, FieldShield would handle structured collections, while DarkShield would handle both structured and unstructured collections.<\/p>\n<p>By default\u00a0&#8212;\u00a0and the way the <a href=\"http:\/\/www.iri.com\/products\/workbench\/fieldshield-gui\" target=\"_blank\" rel=\"noopener\">IRI Workbench<\/a> GUI presents FieldShield to end-users and DBAs &#8212; one or more full tables are typically secured with static data masking\u00a0functions (like encryption, redaction, pseudonymization) according to the business rules. The choice of each &#8216;field (column) shield&#8217; should be based on security, realism, reversibility, and perhaps CPU or storage considerations.<\/p>\n<p>The static approach works fine when data are at rest. Either the source table can be protected, or a new target table or file with protections applied can be created. Applications which fetch the protected data need not be concerned about security because their data sources were pre-protected. FieldShield programs designed to protect data at rest can also be scheduled or called into batch jobs for regular updates.<\/p>\n<p>However, in a real-time environment where updated rows need dynamic protection, FieldShield functions must be integrated into the application&#8217;s data flow. There are several approaches to consider:<\/p>\n<p><em>1) Your Program Calls FieldShield<\/em><br \/>\nDatabase and other programs which fetch from, or send\u00a0new or changed data into,\u00a0tables can pass it into a\u00a0FieldShield encryption, hashing, encoding, or redaction <a href=\"http:\/\/www.iri.com\/blog\/data-protection\/fieldshield-sdk-2\/\" target=\"_blank\" rel=\"noopener\">API function<\/a> in C, Java, or .NET. You could also pass the data in motion into\u00a0a standalone FieldShield program\u00a0through\u00a0a pipe\u00a0or\u00a0input procedure. Any of these methods can populate targets\u00a0with column-level protect (or reveal) functions applied.<\/p>\n<p><em>2) FieldShield Protects Only Updates<\/em><br \/>\nFieldShield programs can also be customized via \/QUERY and \/UPDATE functions, or to <a title=\"Blog Article - Selecting PII for Secure Queries FieldShield Filters\" href=\"http:\/\/www.iri.com\/blog\/data-protection\/selecting-pii-for-secure-queries-fieldshield-filters\/\" target=\"_blank\" rel=\"noopener\">conditionally filter<\/a> only new records, where the rows to be protected meet specific criteria, like newness. API calls\u00a0would allows\u00a0for even more granular business logic and facilitate more data &#8216;velocity&#8217; (or latency) conditions\u00a0&#8212; for example,\u00a0more real-time data masking &#8212; because those needs can be expressed through the application and defined by its logic.\u00a0See <a href=\"https:\/\/www.iri.com\/blog\/data-protection\/real-time-data-masking\/\">this PL\/SQL example<\/a>\u00a0of real-time masking based on a trigger.<\/p>\n<p><em>3) Capture and Protect Deltas in CoSort (FieldShield Parent)<\/em><br \/>\nChange data capture (CDC) jobs can also be programmed in CoSort&#8217;s Sort Control Language (SortCL), whereupon only selected inserts, updates, deletes or unchanged rows can be passed to tables or files with column protections applied as this happens. CoSort users have all FieldShield protection functions at their disposal, so it is possible mask only changed data in this bulk reporting paradigm.<\/p>\n<p><em>4) Proxy-based Query Intercepts<\/em><br \/>\nIRI now provides a special &#8220;<a href=\"https:\/\/www.iri.com\/blog\/data-protection\/proxy-dynamic-masking-fieldshield\/\">JDBC SQL Trail<\/a>&#8221; driver for applications to use that filters DB queries for authorized users and particular tables and columns. Those not exempted to the DDM policy definition will only see fully or partially redacted values in flight to that specially connected application from the database, which remains unmasked at rest.<\/p>\n<p><em>5) Custom Integrations<\/em><br \/>\nIRI can work with your DBA or application programmer to design a <a title=\"IRI.com Professional Services Information Page\" href=\"http:\/\/www.iri.com\/blog\/miscellaneous\/iri-professional-services-open\/\" target=\"_blank\" rel=\"noopener\">bespoke solution<\/a> that involves elements of the above, or to provide FieldShield libraries your SQL procedures can invoke in-situ <a href=\"https:\/\/www.iri.com\/blog\/data-protection\/real-time-data-masking\/\">like these<\/a> to protect or reveal (encrypt or decrypt) query results, query tables, materialized views, and so on.<\/p>\n<p>Contact <a title=\"Email for more FieldShield Information\" href=\"mailto:fieldshield@iri.com\" target=\"_blank\" rel=\"noopener\">fieldshield@iri.com<\/a> for help integrating a dynamic data masking function like redaction or format preserving encryption into your application.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Protecting Data at Rest and in Motion Database applications that update and query tables may need to secure data going into, or being retrieved from, those tables. Sensitive data must be protected on the way into the table, once in the table, or on the way out. In every case, the goal is to keep<\/p>\n<div><a class=\"btn-filled btn\" href=\"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/\" title=\"Data Masking in DB Applications\">Read More<\/a><\/div>\n","protected":false},"author":3,"featured_media":11736,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[8,29,3],"tags":[82,14,147,145,1482,651,9,1483,1481,148,149,152],"class_list":["post-2639","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-protection","category-test-data","category-vldb-operations","tag-change-data-capture","tag-data-masking","tag-data-tables","tag-database-application","tag-database-security","tag-dynamic-data-masking","tag-fieldshield","tag-information-securityu","tag-mask-refresh","tag-personally-identifiable-information","tag-pii","tag-sensitive-data"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Data Masking in DB Applications - IRI<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Data Masking in DB Applications - IRI\" \/>\n<meta property=\"og:description\" content=\"Protecting Data at Rest and in Motion Database applications that update and query tables may need to secure data going into, or being retrieved from, those tables. Sensitive data must be protected on the way into the table, once in the table, or on the way out. In every case, the goal is to keepRead More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/\" \/>\n<meta property=\"og:site_name\" content=\"IRI\" \/>\n<meta property=\"article:published_time\" content=\"2012-09-26T21:02:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-08-06T15:40:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"738\" \/>\n\t<meta property=\"og:image:height\" content=\"517\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"David Friedland\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Friedland\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/\"},\"author\":{\"name\":\"David Friedland\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/cdb89f0c0a9c88810b8516d4b140734a\"},\"headline\":\"Data Masking in DB Applications\",\"datePublished\":\"2012-09-26T21:02:13+00:00\",\"dateModified\":\"2020-08-06T15:40:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/\"},\"wordCount\":766,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg\",\"keywords\":[\"Change Data Capture\",\"data masking\",\"data tables\",\"database application\",\"database security\",\"dynamic data masking\",\"FieldShield\",\"information securityu\",\"mask refresh\",\"personally identifiable information\",\"PII\",\"sensitive data\"],\"articleSection\":[\"Data Masking\/Protection\",\"Test Data\",\"VLDB\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/\",\"url\":\"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/\",\"name\":\"Data Masking in DB Applications - IRI\",\"isPartOf\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg\",\"datePublished\":\"2012-09-26T21:02:13+00:00\",\"dateModified\":\"2020-08-06T15:40:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#primaryimage\",\"url\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg\",\"contentUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg\",\"width\":738,\"height\":517},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/beta.iri.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Data Masking in DB Applications\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#website\",\"url\":\"https:\/\/beta.iri.com\/blog\/\",\"name\":\"IRI\",\"description\":\"Total Data Management Blog\",\"publisher\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/beta.iri.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\",\"name\":\"IRI\",\"url\":\"https:\/\/beta.iri.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"contentUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"width\":750,\"height\":206,\"caption\":\"IRI\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/cdb89f0c0a9c88810b8516d4b140734a\",\"name\":\"David Friedland\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/995ea08bc7d036da625671cb48a636eb?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/995ea08bc7d036da625671cb48a636eb?s=96&d=blank&r=g\",\"caption\":\"David Friedland\"},\"url\":\"https:\/\/beta.iri.com\/blog\/author\/davidf\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Data Masking in DB Applications - IRI","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/","og_locale":"en_US","og_type":"article","og_title":"Data Masking in DB Applications - IRI","og_description":"Protecting Data at Rest and in Motion Database applications that update and query tables may need to secure data going into, or being retrieved from, those tables. Sensitive data must be protected on the way into the table, once in the table, or on the way out. In every case, the goal is to keepRead More","og_url":"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/","og_site_name":"IRI","article_published_time":"2012-09-26T21:02:13+00:00","article_modified_time":"2020-08-06T15:40:17+00:00","og_image":[{"width":738,"height":517,"url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg","type":"image\/jpeg"}],"author":"David Friedland","twitter_card":"summary_large_image","twitter_misc":{"Written by":"David Friedland","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#article","isPartOf":{"@id":"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/"},"author":{"name":"David Friedland","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/cdb89f0c0a9c88810b8516d4b140734a"},"headline":"Data Masking in DB Applications","datePublished":"2012-09-26T21:02:13+00:00","dateModified":"2020-08-06T15:40:17+00:00","mainEntityOfPage":{"@id":"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/"},"wordCount":766,"commentCount":0,"publisher":{"@id":"https:\/\/beta.iri.com\/blog\/#organization"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#primaryimage"},"thumbnailUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg","keywords":["Change Data Capture","data masking","data tables","database application","database security","dynamic data masking","FieldShield","information securityu","mask refresh","personally identifiable information","PII","sensitive data"],"articleSection":["Data Masking\/Protection","Test Data","VLDB"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/","url":"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/","name":"Data Masking in DB Applications - IRI","isPartOf":{"@id":"https:\/\/beta.iri.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#primaryimage"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#primaryimage"},"thumbnailUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg","datePublished":"2012-09-26T21:02:13+00:00","dateModified":"2020-08-06T15:40:17+00:00","breadcrumb":{"@id":"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#primaryimage","url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg","contentUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg","width":738,"height":517},{"@type":"BreadcrumbList","@id":"https:\/\/beta.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/beta.iri.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Data Masking in DB Applications"}]},{"@type":"WebSite","@id":"https:\/\/beta.iri.com\/blog\/#website","url":"https:\/\/beta.iri.com\/blog\/","name":"IRI","description":"Total Data Management Blog","publisher":{"@id":"https:\/\/beta.iri.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/beta.iri.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/beta.iri.com\/blog\/#organization","name":"IRI","url":"https:\/\/beta.iri.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","contentUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","width":750,"height":206,"caption":"IRI"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/cdb89f0c0a9c88810b8516d4b140734a","name":"David Friedland","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/995ea08bc7d036da625671cb48a636eb?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/995ea08bc7d036da625671cb48a636eb?s=96&d=blank&r=g","caption":"David Friedland"},"url":"https:\/\/beta.iri.com\/blog\/author\/davidf\/"}]}},"jetpack_featured_media_url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg","_links":{"self":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/2639"}],"collection":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/comments?post=2639"}],"version-history":[{"count":69,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/2639\/revisions"}],"predecessor-version":[{"id":14005,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/2639\/revisions\/14005"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/media\/11736"}],"wp:attachment":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/media?parent=2639"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/categories?post=2639"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/tags?post=2639"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}