{"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":"2025-02-12T13:09:05","modified_gmt":"2025-02-12T18:09:05","slug":"using-fieldshield-in-database-applications","status":"publish","type":"post","link":"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/","title":{"rendered":"Database data masking"},"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\/finding-and-masking-pii-in-relational-databases-with-the-darkshield-rdb-wizard\/\">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 run jobs 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>CDC-based <a href=\"https:\/\/www.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/\">incremental data masking<\/a> and replication to refresh test rows in real time<\/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, call from a database application 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 semi-structured and unstructured collections, too.<\/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.<\/p>\n<p>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 \/>\n<a href=\"https:\/\/www.iri.com\/solutions\/business-intelligence\/embedded-bi\/change-data-capture\">Change data capture (CDC)<\/a> jobs with FieldShield masking rules can run automatically and incrementally in IRI Ripcurrent, or be programmed in CoSort&#8217;s Sort Control Language (SortCL) jobs. Either way, selected inserts, updates, deletes or unchanged rows pass to tables or files with column protections applied on schedule, ad hoc, or in real-time. CoSort users have all FieldShield data masking functions at their disposal, so it is also possible mask only changed data in this bulk reporting paradigm.<\/p>\n<p><em>4) 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 with masking your database data. Please tell us your data sources and whatever you can about your use case and requirements so we can identify and present the most relevant database data masking solution for you as soon as possible.<\/p>\n<p>&nbsp;<\/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:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/\" title=\"Database data masking\">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 Premium plugin v23.4 (Yoast SEO v23.4) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Database data masking - IRI<\/title>\n<meta name=\"description\" content=\"Enhance your database security with data masking. Discover how you can secure sensitive data at rest and in motion using masking techniques.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.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=\"Database data masking\" \/>\n<meta property=\"og:description\" content=\"Enhance your database security with data masking. Discover how you can secure sensitive data at rest and in motion using masking techniques.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.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=\"2025-02-12T18:09:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.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:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/\"},\"author\":{\"name\":\"David Friedland\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/person\/cdb89f0c0a9c88810b8516d4b140734a\"},\"headline\":\"Database data masking\",\"datePublished\":\"2012-09-26T21:02:13+00:00\",\"dateModified\":\"2025-02-12T18:09:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/\"},\"wordCount\":755,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.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:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/\",\"url\":\"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/\",\"name\":\"Database data masking - IRI\",\"isPartOf\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg\",\"datePublished\":\"2012-09-26T21:02:13+00:00\",\"dateModified\":\"2025-02-12T18:09:05+00:00\",\"description\":\"Enhance your database security with data masking. Discover how you can secure sensitive data at rest and in motion using masking techniques.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#primaryimage\",\"url\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg\",\"contentUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg\",\"width\":738,\"height\":517},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.iri.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Database data masking\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.iri.com\/blog\/#website\",\"url\":\"https:\/\/www.iri.com\/blog\/\",\"name\":\"IRI\",\"description\":\"Total Data Management Blog\",\"publisher\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.iri.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.iri.com\/blog\/#organization\",\"name\":\"IRI\",\"url\":\"https:\/\/www.iri.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"contentUrl\":\"https:\/\/www.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:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/person\/cdb89f0c0a9c88810b8516d4b140734a\",\"name\":\"David Friedland\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.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:\/\/www.iri.com\/blog\/author\/davidf\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Database data masking - IRI","description":"Enhance your database security with data masking. Discover how you can secure sensitive data at rest and in motion using masking techniques.","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:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/","og_locale":"en_US","og_type":"article","og_title":"Database data masking","og_description":"Enhance your database security with data masking. Discover how you can secure sensitive data at rest and in motion using masking techniques.","og_url":"https:\/\/www.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":"2025-02-12T18:09:05+00:00","og_image":[{"width":738,"height":517,"url":"https:\/\/www.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:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#article","isPartOf":{"@id":"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/"},"author":{"name":"David Friedland","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/person\/cdb89f0c0a9c88810b8516d4b140734a"},"headline":"Database data masking","datePublished":"2012-09-26T21:02:13+00:00","dateModified":"2025-02-12T18:09:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/"},"wordCount":755,"commentCount":0,"publisher":{"@id":"https:\/\/www.iri.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#primaryimage"},"thumbnailUrl":"https:\/\/www.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:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/","url":"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/","name":"Database data masking - IRI","isPartOf":{"@id":"https:\/\/www.iri.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#primaryimage"},"image":{"@id":"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg","datePublished":"2012-09-26T21:02:13+00:00","dateModified":"2025-02-12T18:09:05+00:00","description":"Enhance your database security with data masking. Discover how you can secure sensitive data at rest and in motion using masking techniques.","breadcrumb":{"@id":"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#primaryimage","url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg","contentUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg","width":738,"height":517},{"@type":"BreadcrumbList","@id":"https:\/\/www.iri.com\/blog\/vldb-operations\/using-fieldshield-in-database-applications\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.iri.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Database data masking"}]},{"@type":"WebSite","@id":"https:\/\/www.iri.com\/blog\/#website","url":"https:\/\/www.iri.com\/blog\/","name":"IRI","description":"Total Data Management Blog","publisher":{"@id":"https:\/\/www.iri.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.iri.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.iri.com\/blog\/#organization","name":"IRI","url":"https:\/\/www.iri.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","contentUrl":"https:\/\/www.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:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/person\/cdb89f0c0a9c88810b8516d4b140734a","name":"David Friedland","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.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:\/\/www.iri.com\/blog\/author\/davidf\/"}]}},"jetpack_featured_media_url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2012\/09\/server-room.jpg","_links":{"self":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts\/2639"}],"collection":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/comments?post=2639"}],"version-history":[{"count":71,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts\/2639\/revisions"}],"predecessor-version":[{"id":18251,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts\/2639\/revisions\/18251"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/media\/11736"}],"wp:attachment":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/media?parent=2639"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/categories?post=2639"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/tags?post=2639"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}