{"id":15373,"date":"2021-12-07T11:55:00","date_gmt":"2021-12-07T16:55:00","guid":{"rendered":"http:\/\/www.iri.com\/blog\/?p=15373"},"modified":"2021-12-07T11:55:00","modified_gmt":"2021-12-07T16:55:00","slug":"finding-and-masking-pii-in-couchbase-redis-and-solr","status":"publish","type":"post","link":"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/","title":{"rendered":"Finding and Masking PII in Couchbase, Redis and Solr NoSQL DBs"},"content":{"rendered":"<p><b><i>Abstract: <\/i><\/b><i><span style=\"font-weight: 400;\">This article discusses the use of the <\/span><\/i><a href=\"https:\/\/www.iri.com\/blog\/data-protection\/darkshield-files-rpc-api\/\"><i><span style=\"font-weight: 400;\">IRI DarkShield-Files API<\/span><\/i><\/a><i><span style=\"font-weight: 400;\"> for finding and masking PII and other sensitive data in Couchbase, Redis, and Solr NoSQL databases. The two previous articles on NoSQL database masking via DarkShield discussed <\/span><\/i><a href=\"https:\/\/www.iri.com\/blog\/data-protection\/mongodb-cassandra-darkshield\/\"><i><span style=\"font-weight: 400;\">Cassandra, ElasticSearch, MongoDB<\/span><\/i><\/a><i><span style=\"font-weight: 400;\">, and <\/span><\/i><a href=\"https:\/\/www.iri.com\/blog\/data-protection\/find-mask-pii-in-bigtable-cosmos-and-dynamo\/\"><i><span style=\"font-weight: 400;\">BigTable, CosmosDB, and DynamoDB<\/span><\/i><\/a><i><span style=\"font-weight: 400;\">.<\/span><\/i><\/p>\n<h6><b>About Couchbase<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">Couchbase is a multi-model NoSQL database. Not to be confused with CouchDB, the Couchbase server was originally named Membase but later changed after the merger of CouchOne and Membase. In contrast to CouchDB, Couchbase is different in several ways including the lack of ability to attach files in documents and the implementation of a SQL-like language, referred to as N1QL (pronounced Nickel).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In Couchbase, documents will have an ID (key) and an associated value where the actual application data resides. Couchbase uses Key Value operations to retrieve or mutate values where the key is present.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15388 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-couchUI.png\" alt=\"\" width=\"649\" height=\"262\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-couchUI.png 1008w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-couchUI-300x121.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-couchUI-768x310.png 768w\" sizes=\"(max-width: 649px) 100vw, 649px\" \/><i><span style=\"font-weight: 400;\">Couchbase UI<\/span><\/i><\/p>\n<h6><b>Couchbase Security Concerns<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">Couchbase (like many database service providers) supports features like authentication, authorization, and encryption in transit. Similarly, Couchbase servers are vulnerable to the same kind of attacks as the rest of the database service providers out there. These include injection attacks, cross site request forgery attacks, credential leaks, and code exploits.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Furthermore, in regards to any sensitive data stored on Couchbase servers, Couchbase highly advises<\/span> <i><span style=\"font-weight: 400;\">\u201cto secure such data, encrypt all important data and index storage-locations, using transparent data encryption, provided by 3rd party on-disk encryption software-vendors; which denies data-access to anyone who either does not possess an appropriate encryption-key, or is otherwise non-compliant with the configured security policy\u201d.<\/span><\/i><span style=\"font-weight: 400;\"><span id='easy-footnote-1-15373' class='easy-footnote-margin-adjust'><\/span><span class='easy-footnote'><a href='https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#easy-footnote-bottom-1-15373' title='\u201cManage Connections and Disks.\u201d &lt;i&gt;Manage Connections and Disks | Couchbase Docs&lt;\/i&gt;, &lt;a href=&quot;https:\/\/docs.couchbase.com\/server\/current\/manage\/manage-security\/manage-connections-and-disks.html#securing-on-disk-data&quot;&gt;https:\/\/docs.couchbase.com\/server\/current\/manage\/manage-security\/manage-connections-and-disks.html#securing-on-disk-data&lt;\/a&gt;.'><sup>1<\/sup><\/a><\/span><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Encrypting stored data is often referred to as encryption at rest and in an event where the server is compromised, the data residing in storage will remain secure. The purpose of DarkShield is to find and protect that data in a granular, consistent way.<\/span><\/p>\n<h6><b>About Redis<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">Redis is an open source BSD license, in-memory NoSQL key-value data structure store. An in-memory database is when data is stored in a system\u2019s main memory, usually RAM.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">By placing data on RAM the access to and processing of data is faster than disk I\/O. The disadvantage of in-memory storage is durability because data is stored in volatile memory by default.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">As a result of its speed, Redis has gained a large amount of popularity. According to Amazon\u00a0<\/span><i><span style=\"font-weight: 400;\">\u201cBecause of its fast performance, Redis is a popular choice for caching, session management, gaming, leaderboards, real-time analytics, geospatial, ride-hailing, chat\/messaging, media streaming, and pub\/sub apps\u201d.<\/span><\/i><span style=\"font-weight: 400;\"><span id='easy-footnote-2-15373' class='easy-footnote-margin-adjust'><\/span><span class='easy-footnote'><a href='https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#easy-footnote-bottom-2-15373' title='\u201cRedis.\u201d &lt;i&gt;AWS&lt;\/i&gt;, &lt;a href=&quot;https:\/\/aws.amazon.com\/redis\/&quot;&gt;https:\/\/aws.amazon.com\/redis\/&lt;\/a&gt;'><sup>2<\/sup><\/a><\/span><\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15389 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redisGUI.png\" alt=\"\" width=\"649\" height=\"207\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redisGUI.png 984w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redisGUI-300x96.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redisGUI-768x245.png 768w\" sizes=\"(max-width: 649px) 100vw, 649px\" \/><i><span style=\"font-weight: 400;\">RedisInsight UI<\/span><\/i><\/p>\n<h6><b>Redis Security Concerns<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">Redis has been designed to be used in a trusted environment by trusted clients and as such it is not recommended to <span id='easy-footnote-3-15373' class='easy-footnote-margin-adjust'><\/span><span class='easy-footnote'><a href='https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#easy-footnote-bottom-3-15373' title='\u201cRedis Security.\u201d &lt;i&gt;Redis&lt;\/i&gt;, &lt;a href=&quot;https:\/\/redis.io\/topics\/security&quot;&gt;https:\/\/redis.io\/topics\/security&lt;\/a&gt;.'><sup>3<\/sup><\/a><\/span><\/span><span style=\"font-weight: 400;\">\u201c<\/span><span style=\"font-weight: 400;\">expose the Redis instance directly to the internet or, in general, to an environment where untrusted clients can directly access the Redis TCP port or UNIX socket\u201d.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Also, authentication is not enabled by default but can be turned on in the <\/span><i><span style=\"font-weight: 400;\">redis.conf<\/span><\/i><span style=\"font-weight: 400;\"> file. The <\/span><i><span style=\"font-weight: 400;\">redis.conf<\/span><\/i><span style=\"font-weight: 400;\"> file is also where the password is stored in clear text.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Redis does not allow for string escaping so under normal circumstances injection attacks should not occur. That said, currently the CONFIG command allows clients to change the working directory and the name of the dump file.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">According to Redis, <\/span><i><span style=\"font-weight: 400;\">\u201cthis allows clients to write RDB Redis files at random paths, that is a security issue that may easily lead to the ability to compromise the system and\/or run untrusted code as the same user as Redis is running.\u201d<\/span><\/i><\/p>\n<h6><b>About Solr<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">Solr is an open-source search engine based on the Apache Lucene library and is written in Java. <\/span><span style=\"font-weight: 400;\">Its features include full text search, hit highlighting, faceted, real-time indexing, dynamic clustering, database integration, and NoSQL features.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Although Solr is known for its search functionality, it can<\/span><span style=\"font-weight: 400;\"> also be used as a NoSQL document based database. Furthermore, Solr can ingest data from various sources such as JSON, XML, PDFs, and CSV files and index into JSON collections.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15391 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-solr_admin_3-1024x479.png\" alt=\"\" width=\"650\" height=\"304\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-solr_admin_3-1024x479.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-solr_admin_3-300x140.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-solr_admin_3-768x359.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-solr_admin_3.png 1139w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><i><span style=\"font-weight: 400;\">Solr Admin user interface<\/span><\/i><\/p>\n<h6><b>Solr Security Concerns<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">Solr security supports encryption with TLS to provide encryption in transit. As a result, traffic to and from Solr and between Solr nodes has measures that will prevent data leaks. Solr\u2019s framework also supports authentication, authorization, and audit logging of users to identify users and restrict access to resources.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Currently, Solr does not support at rest encryption. Because at rest encryption is not supported by Solr, any individual who gains illegal access will be able to view sensitive data.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In addition, over the past several years many vulnerabilities using exploited code have been published. Those gaps could have ultimately resulted in the <\/span><a href=\"https:\/\/www.zdnet.com\/article\/exploit-code-published-for-two-dangerous-apache-solr-remote-code-execution-flaws\/\"><span style=\"font-weight: 400;\">hijacking of the entire server<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h6><b>About IRI DarkShield<\/b><\/h6>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15392 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/black-knight-1024x594.jpg\" alt=\"\" width=\"600\" height=\"348\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/black-knight-1024x594.jpg 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/black-knight-300x174.jpg 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/black-knight-768x446.jpg 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/black-knight.jpg 1110w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/p>\n<p><a href=\"https:\/\/www.iri.com\/products\/darkshield\"><span style=\"font-weight: 400;\">IRI DarkShield<\/span><\/a><span style=\"font-weight: 400;\"> is a data discovery and masking package for finding and de-identifying sensitive data in semi-structured and unstructured files and databases, including the NoSQL platforms in this article. DarkShield is one of three core data masking products in the <\/span><a href=\"https:\/\/www.iri.com\/products\/iri-data-protector\"><span style=\"font-weight: 400;\">IRI Data Protector Suite<\/span><\/a><span style=\"font-weight: 400;\"> which leverage graphical data classification, searching, and masking job design models in the <\/span><a href=\"https:\/\/www.iri.com\/products\/workbench\"><span style=\"font-weight: 400;\">IRI Workbench<\/span><\/a><span style=\"font-weight: 400;\"> IDE, built on Eclipse.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Two powerful Remote Procedure Call (RPC) Application Programming Interface (API) versions are also provided: the\u00a0<\/span><a href=\"http:\/\/www.iri.com\/blog\/data-protection\/darkshield-rpc-api\/\"><span style=\"font-weight: 400;\">\u201cBase\u201d DarkShield API<\/span><\/a><span style=\"font-weight: 400;\"> and the <\/span><a href=\"https:\/\/www.iri.com\/blog\/data-protection\/darkshield-files-rpc-api\/\"><span style=\"font-weight: 400;\">DarkShield-Files API<\/span><\/a><span style=\"font-weight: 400;\">. The DarkShield APIs extend the use of DarkShield functionality outside of Workbench and leverage a plugin on top of an IRI Web Services platform named Plankton.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">To find and protect sensitive data in a wide range of sources, the DarkShield APIs use specified search matchers and masking rules that follow business rules. For more information on creating search matchers and masking rules, please refer to this <\/span><a href=\"https:\/\/www.iri.com\/blog\/data-protection\/darkshield-rpc-api\/\"><span style=\"font-weight: 400;\">article<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The \u201cBase\u201d DarkShield API is used to search and mask unstructured text outside the context of files. Alternatively, the DarkShield-Files API provides the ability to search and mask PII in files.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">With the assistance of the DarkShield-Files API, semi-structured and unstructured data like plain text files, CSV\/TSV, HL7\/X12, Word, Excel, PDF, JSON, XML, Parquet, BMP, GIF, JPG, PNG, TIF, and DICOM images can be searched and masked.<\/span><\/p>\n<h6><b>How the DarkShield-Files API Can Bolster Data Security<\/b><\/h6>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-15393 alignleft\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/data-2548657_1280-1024x886.png\" alt=\"\" width=\"200\" height=\"173\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/data-2548657_1280-1024x886.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/data-2548657_1280-300x260.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/data-2548657_1280-768x665.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/data-2548657_1280.png 1280w\" sizes=\"(max-width: 200px) 100vw, 200px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Most modern databases support in-transit encryption to protect data as it travels and at rest encryption for data inside the database. The issue with in transit and at rest encryption is that data encrypted by service providers is undone by the time the data is in front of the individual.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This means as long they have the proper access rights to see the data, neither encryption method will remain in place. This by itself is not an issue, but what happens if there are improper access controls or an employee\u2019s credentials are misused? This is where client-side encryption comes into play.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Client-side encryption is a method by which data is encrypted locally before it is placed in a database. If client-side encryption is implemented then data will still be encrypted when viewed by individuals in the event of illegal access to the data.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The DarkShield-Files API can implement client-side encryption by extracting data stored in the database, search and mask sensitive data, and then place the newly sanitized data back into the database.<\/span><\/p>\n<h6><b>DarkShield Search and Mask Contexts<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">The DarkShield-Files API is structured around using search contexts and mask contexts<\/span><span style=\"font-weight: 400;\"> to perform search and masking operations on text parsed from the different file formats. The Files API also handles additional matchers, filters, and configuration options for specific file formats by configuring file search contexts and file mask contexts.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A search context designates the PII that will be annotated in the files read through matchers. There are a variety of matcher types for search matchers. The DarkShield-File API supports using search matchers based on regular expressions, named entity recognition (NER) models, and \u2018set\u2019 files, which is a text file with a list of entries separated by newlines.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For the API to know what to do with PII that has been discovered during search operations, a mask context must be defined. The first part of a mask context contains a list of rules that we want to apply. Each rule has an expression that dictates what masking function will be used.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">These expressions are also documented in the IRI FieldShield manual and IRI Workbench, and because the functions are compatible with DarkShield, enterprise data integrity can be preserved post-masking regardless of source. The list of available <\/span><a href=\"https:\/\/www.iri.com\/solutions\/data-masking\/static-data-masking\"><span style=\"font-weight: 400;\">masking functions<\/span><\/a><span style=\"font-weight: 400;\"> include:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Expressions<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Blurring (random noise)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Deletion\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Encoding\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Scrambling<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Encryption (AES, 3DES, FPE, GPG, etc.) with multiple key management options<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Hashing<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Pseudonymization<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Redaction\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">String Manipulation<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-15394 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-searchContext.png\" alt=\"\" width=\"405\" height=\"442\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-searchContext.png 405w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-searchContext-275x300.png 275w\" sizes=\"(max-width: 405px) 100vw, 405px\" \/><em>Search Context<\/em><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-15396 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-maskContext.png\" alt=\"\" width=\"416\" height=\"680\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-maskContext.png 416w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-maskContext-184x300.png 184w\" sizes=\"(max-width: 416px) 100vw, 416px\" \/><em>Mask Context<\/em><\/p>\n<h6><b>File-Specific Search and Mask Contexts<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">In addition to the contexts mentioned above there are also file search contexts and file mask contexts. File search contexts and file mask contexts are required when using the DarkShield-Files API. When accessing a NoSQL database, files may be stored in the documents that are accessed. As such the DarkShield-Files API should be used instead of the \u201cbase\u201d DarkShield API that only handles text. The file search context has <\/span><span style=\"font-weight: 400;\">a <\/span><i><span style=\"font-weight: 400;\">name <\/span><\/i><span style=\"font-weight: 400;\">attribute that is used to identify the context that will be used in search operations and a <\/span><i><span style=\"font-weight: 400;\">matchers <\/span><\/i><span style=\"font-weight: 400;\">array that contains a list of the matchers.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Similarly, the file mask context has a <\/span><i><span style=\"font-weight: 400;\">name <\/span><\/i><span style=\"font-weight: 400;\">attribute that is used to uniquely identify the context when performing masking operations and a <\/span><i><span style=\"font-weight: 400;\">rules <\/span><\/i><span style=\"font-weight: 400;\">array that contains a list of rules which will be used to mask PII that were found during search operations.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Both the file search context and the file mask context allow for configuration options to be included. There are configuration options available based on the specific file format. The screenshot below displays the file mask context config object for JSON after setting the pretty print feature to true.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-15397 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-fileSearchContext.png\" alt=\"\" width=\"257\" height=\"388\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-fileSearchContext.png 257w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-fileSearchContext-199x300.png 199w\" sizes=\"(max-width: 257px) 100vw, 257px\" \/><i><span style=\"font-weight: 400;\">File Search Context<\/span><\/i><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-15398 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-fileMaskContext.png\" alt=\"\" width=\"247\" height=\"286\" \/><i><span style=\"font-weight: 400;\">File Mask Context<\/span><\/i><\/p>\n<h6><b>Calls to the DarkShield-Files API<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">In the IRI <\/span><a href=\"https:\/\/github.com\/TeamIRI\/darkshield-api-demos\"><span style=\"font-weight: 400;\">darkshield-api-demos<\/span><\/a><span style=\"font-weight: 400;\"> repository located on GitHub, the majority of the projects use Python code referred to as \u201cglue code\u201d to access the data source and feed the data through to the DarkShield-File API.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In the Couchbase demo, the Python program uses a <\/span><a href=\"https:\/\/pypi.org\/project\/couchbase\/\"><span style=\"font-weight: 400;\">Couchbase Python client<\/span><\/a><span style=\"font-weight: 400;\"> that is used to programmatically connect to a Couchbase server and manipulate the data. Similarly, Redis uses a <\/span><a href=\"https:\/\/pypi.org\/project\/redis\/\"><span style=\"font-weight: 400;\">Python interface<\/span><\/a><span style=\"font-weight: 400;\"> to interact with the Redis key-value store. Each Python library provides different methods to easily connect and access their respective databases.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In contrast, the Solr demo uses http requests to communicate with the Solr database and allows the user to supply the program with parameters like the host, port, target collection, query to use, and row limit. That said, Solr has Python client libraries that allow for similar implementation like Couchbase and Redis.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">At least nine API calls need to be made to the DarkShield-Files API in the following order, to the:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">searchContext.create endpoint to create a search context<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">maskContext.create endpoint to create a mask context<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">fileSearchContext.create endpoint to create a file search context<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">fileMaskContext.create endpoint to create a file mask context.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">fileSearchContext.mask endpoint to use the active search and mask contexts to find and mask any PII in a file (can be executed multiple times)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">fileMaskContext.destroy endpoint to destroy the current active file mask context<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">fileSearchContext.destroy endpoint to destroy the current active file search context<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">maskContext.destroy endpoint to destroy the current active mask context.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">searchContext.destroy endpoint to destroy the current active search context<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">In the <\/span><a href=\"https:\/\/github.com\/TeamIRI\/darkshield-api-demos\"><span style=\"font-weight: 400;\">darkshield-api-demos<\/span><\/a><span style=\"font-weight: 400;\"> located on GitHub, the API calls to these DarkShield-Files endpoints are made through Python glue code, but the same can be demonstrated using other methods like Postman, curl commands, etc. Here is a <\/span><a href=\"https:\/\/github.com\/TeamIRI\/darkshield-api-demos\/tree\/master\/curl-example\"><span style=\"font-weight: 400;\">link<\/span><\/a><span style=\"font-weight: 400;\"> to a simple demo on how to make curl commands to the DarkShield-Files API to perform file search and mask operations on a text file.<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<h6><b>Before and After Masking Operations on Couchbase, Redis, and Solr<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">Below is a list of links to DarkShield demos on GitHub along with before and after screenshots of performing masking operations on Couchbase, Redis, and Solr.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Couchbase <\/span><a href=\"https:\/\/github.com\/TeamIRI\/darkshield-api-demos\/tree\/master\/couchbase\"><span style=\"font-weight: 400;\">demo<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Redis <\/span><a href=\"https:\/\/github.com\/TeamIRI\/darkshield-api-demos\/tree\/master\/redis\"><span style=\"font-weight: 400;\">demo<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Solr <\/span><a href=\"https:\/\/github.com\/TeamIRI\/darkshield-api-demos\/tree\/master\/solr\"><span style=\"font-weight: 400;\">demo<\/span><\/a><\/li>\n<\/ul>\n<h6><b>Couchbase<\/b><\/h6>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15400 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-conchbase1.png\" alt=\"\" width=\"650\" height=\"135\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-conchbase1.png 876w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-conchbase1-300x62.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-conchbase1-768x160.png 768w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><i><span style=\"font-weight: 400;\">Original documents in a Couchbase collection<\/span><\/i><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15399 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-couchbase2.png\" alt=\"\" width=\"666\" height=\"159\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-couchbase2.png 666w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-couchbase2-300x72.png 300w\" sizes=\"(max-width: 666px) 100vw, 666px\" \/><i><span style=\"font-weight: 400;\">The same documents after DarkShield masking<\/span><\/i><\/p>\n<h6><b>Redis<\/b><\/h6>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15401 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redisorg1.png\" alt=\"\" width=\"651\" height=\"256\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redisorg1.png 892w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redisorg1-300x118.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redisorg1-768x302.png 768w\" sizes=\"(max-width: 651px) 100vw, 651px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15402 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redisorg2.png\" alt=\"\" width=\"651\" height=\"244\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redisorg2.png 894w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redisorg2-300x112.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redisorg2-768x288.png 768w\" sizes=\"(max-width: 651px) 100vw, 651px\" \/><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15403 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redisorg3.png\" alt=\"\" width=\"651\" height=\"246\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redisorg3.png 889w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redisorg3-300x113.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redisorg3-768x290.png 768w\" sizes=\"(max-width: 651px) 100vw, 651px\" \/><i><span style=\"font-weight: 400;\">Customer fields with unprotected PII values in Redis<\/span><\/i><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-15405 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redM1.png\" alt=\"\" width=\"520\" height=\"175\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redM1.png 520w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redM1-300x101.png 300w\" sizes=\"(max-width: 520px) 100vw, 520px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-15406 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redM2.png\" alt=\"\" width=\"526\" height=\"177\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redM2.png 526w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redM2-300x101.png 300w\" sizes=\"(max-width: 526px) 100vw, 526px\" \/><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-15404 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redM3.png\" alt=\"\" width=\"525\" height=\"172\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redM3.png 525w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-redM3-300x98.png 300w\" sizes=\"(max-width: 525px) 100vw, 525px\" \/><i><span style=\"font-weight: 400;\">Customers fields masked and output written to JSON files<\/span><\/i><\/p>\n<h6><b>Solr<\/b><\/h6>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15407 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-original_collection_2.png\" alt=\"\" width=\"550\" height=\"463\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-original_collection_2.png 986w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-original_collection_2-300x253.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-original_collection_2-768x646.png 768w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><i><span style=\"font-weight: 400;\">Original collection in Solr<\/span><\/i><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15408 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-masked_collection_2.png\" alt=\"\" width=\"550\" height=\"515\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-masked_collection_2.png 935w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-masked_collection_2-300x281.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/darkshield-couchbase-redis-solr-masked_collection_2-768x719.png 768w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><i><span style=\"font-weight: 400;\">DarkShield&#8211;masked collection in Solr<\/span><\/i><\/p>\n<h6><b>In Closing<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">Through the use of programmable solutions the DarkShield-Files API has the flexibility to access and mask sensitive data in a variety of data sources. In this article we discussed Couchbase, Redis, and Solr databases and demonstrated the ability of the DarkShield-Files API to handle search and masking operations in these data sources.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Through the use of the DarkShield-Files API we are able to implement client-side encryption on these NoSQL databases. If you have any questions about finding or masking PII in NoSQL databases, please contact <\/span><a href=\"mailto:darkshield@iri.com\"><span style=\"font-weight: 400;\">darkshield@iri.com<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Abstract: This article discusses the use of the IRI DarkShield-Files API for finding and masking PII and other sensitive data in Couchbase, Redis, and Solr NoSQL databases. The two previous articles on NoSQL database masking via DarkShield discussed Cassandra, ElasticSearch, MongoDB, and BigTable, CosmosDB, and DynamoDB. About Couchbase Couchbase is a multi-model NoSQL database. Not<\/p>\n<div><a class=\"btn-filled btn\" href=\"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/\" title=\"Finding and Masking PII in Couchbase, Redis and Solr NoSQL DBs\">Read More<\/a><\/div>\n","protected":false},"author":152,"featured_media":15387,"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],"tags":[1631,1494,1634,14,1388,369,1306,1635,1632,1490,1633],"class_list":["post-15373","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-protection","tag-couchbase","tag-darkshield-api","tag-darkshield-files-api","tag-data-masking","tag-iri-darkshield","tag-nosql","tag-pii-masking","tag-python","tag-redis","tag-search-matcher","tag-solr"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Finding and Masking PII in Couchbase, Redis and Solr NoSQL DBs - IRI<\/title>\n<meta name=\"description\" content=\"This article discusses the use of the IRI DarkShield-Files API for finding and masking PII and other sensitive data in Couchbase, Redis, and Solr NoSQL\" \/>\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\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Finding and Masking PII in Couchbase, Redis and Solr NoSQL DBs - IRI\" \/>\n<meta property=\"og:description\" content=\"This article discusses the use of the IRI DarkShield-Files API for finding and masking PII and other sensitive data in Couchbase, Redis, and Solr NoSQL\" \/>\n<meta property=\"og:url\" content=\"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/\" \/>\n<meta property=\"og:site_name\" content=\"IRI\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-07T16:55:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/crunchbase-solr-redis-icons.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1110\" \/>\n\t<meta property=\"og:image:height\" content=\"624\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Adam Lewis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adam Lewis\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/\"},\"author\":{\"name\":\"Adam Lewis\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/37c0e5beab094bd61cc521902df2876e\"},\"headline\":\"Finding and Masking PII in Couchbase, Redis and Solr NoSQL DBs\",\"datePublished\":\"2021-12-07T16:55:00+00:00\",\"dateModified\":\"2021-12-07T16:55:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/\"},\"wordCount\":2157,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/crunchbase-solr-redis-icons.jpg\",\"keywords\":[\"Couchbase\",\"Darkshield API\",\"Darkshield Files API\",\"data masking\",\"IRI DarkShield\",\"NoSQL\",\"pii masking\",\"Python\",\"Redis\",\"search matcher\",\"Solr\"],\"articleSection\":[\"Data Masking\/Protection\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/\",\"url\":\"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/\",\"name\":\"Finding and Masking PII in Couchbase, Redis and Solr NoSQL DBs - IRI\",\"isPartOf\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/crunchbase-solr-redis-icons.jpg\",\"datePublished\":\"2021-12-07T16:55:00+00:00\",\"dateModified\":\"2021-12-07T16:55:00+00:00\",\"description\":\"This article discusses the use of the IRI DarkShield-Files API for finding and masking PII and other sensitive data in Couchbase, Redis, and Solr NoSQL\",\"breadcrumb\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#primaryimage\",\"url\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/crunchbase-solr-redis-icons.jpg\",\"contentUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/crunchbase-solr-redis-icons.jpg\",\"width\":1110,\"height\":624},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/beta.iri.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Finding and Masking PII in Couchbase, Redis and Solr NoSQL DBs\"}]},{\"@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\/37c0e5beab094bd61cc521902df2876e\",\"name\":\"Adam Lewis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/087667d0c75d33bb6fab6e734bd89333?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/087667d0c75d33bb6fab6e734bd89333?s=96&d=blank&r=g\",\"caption\":\"Adam Lewis\"},\"url\":\"https:\/\/beta.iri.com\/blog\/author\/adaml\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Finding and Masking PII in Couchbase, Redis and Solr NoSQL DBs - IRI","description":"This article discusses the use of the IRI DarkShield-Files API for finding and masking PII and other sensitive data in Couchbase, Redis, and Solr NoSQL","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\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/","og_locale":"en_US","og_type":"article","og_title":"Finding and Masking PII in Couchbase, Redis and Solr NoSQL DBs - IRI","og_description":"This article discusses the use of the IRI DarkShield-Files API for finding and masking PII and other sensitive data in Couchbase, Redis, and Solr NoSQL","og_url":"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/","og_site_name":"IRI","article_published_time":"2021-12-07T16:55:00+00:00","og_image":[{"width":1110,"height":624,"url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/crunchbase-solr-redis-icons.jpg","type":"image\/jpeg"}],"author":"Adam Lewis","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Adam Lewis","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#article","isPartOf":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/"},"author":{"name":"Adam Lewis","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/37c0e5beab094bd61cc521902df2876e"},"headline":"Finding and Masking PII in Couchbase, Redis and Solr NoSQL DBs","datePublished":"2021-12-07T16:55:00+00:00","dateModified":"2021-12-07T16:55:00+00:00","mainEntityOfPage":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/"},"wordCount":2157,"commentCount":0,"publisher":{"@id":"https:\/\/beta.iri.com\/blog\/#organization"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#primaryimage"},"thumbnailUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/crunchbase-solr-redis-icons.jpg","keywords":["Couchbase","Darkshield API","Darkshield Files API","data masking","IRI DarkShield","NoSQL","pii masking","Python","Redis","search matcher","Solr"],"articleSection":["Data Masking\/Protection"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/","url":"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/","name":"Finding and Masking PII in Couchbase, Redis and Solr NoSQL DBs - IRI","isPartOf":{"@id":"https:\/\/beta.iri.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#primaryimage"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#primaryimage"},"thumbnailUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/crunchbase-solr-redis-icons.jpg","datePublished":"2021-12-07T16:55:00+00:00","dateModified":"2021-12-07T16:55:00+00:00","description":"This article discusses the use of the IRI DarkShield-Files API for finding and masking PII and other sensitive data in Couchbase, Redis, and Solr NoSQL","breadcrumb":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#primaryimage","url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/crunchbase-solr-redis-icons.jpg","contentUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/crunchbase-solr-redis-icons.jpg","width":1110,"height":624},{"@type":"BreadcrumbList","@id":"https:\/\/beta.iri.com\/blog\/data-protection\/finding-and-masking-pii-in-couchbase-redis-and-solr\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/beta.iri.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Finding and Masking PII in Couchbase, Redis and Solr NoSQL DBs"}]},{"@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\/37c0e5beab094bd61cc521902df2876e","name":"Adam Lewis","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/087667d0c75d33bb6fab6e734bd89333?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/087667d0c75d33bb6fab6e734bd89333?s=96&d=blank&r=g","caption":"Adam Lewis"},"url":"https:\/\/beta.iri.com\/blog\/author\/adaml\/"}]}},"jetpack_featured_media_url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/12\/crunchbase-solr-redis-icons.jpg","_links":{"self":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/15373"}],"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\/152"}],"replies":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/comments?post=15373"}],"version-history":[{"count":11,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/15373\/revisions"}],"predecessor-version":[{"id":15672,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/15373\/revisions\/15672"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/media\/15387"}],"wp:attachment":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/media?parent=15373"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/categories?post=15373"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/tags?post=15373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}