{"id":4699,"date":"2018-03-14T18:42:01","date_gmt":"2018-03-15T01:42:01","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4699"},"modified":"2025-06-13T22:39:52","modified_gmt":"2025-06-14T05:39:52","slug":"detect-sensitive-information-nosql-documents-automatically-couchbase-functions","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/","title":{"rendered":"Detectar dados confidenciais automaticamente com o Couchbase Functions"},"content":{"rendered":"<p>Armazenar informa\u00e7\u00f5es confidenciais em um banco de dados sem criptografia n\u00e3o \u00e9 bom, mas voc\u00ea j\u00e1 fez isso por acidente devido a erros no c\u00f3digo do aplicativo ou a uma configura\u00e7\u00e3o incorreta no banco de dados? E se houvesse uma maneira de receber notifica\u00e7\u00f5es sempre que algo sens\u00edvel fosse detectado, para que uma a\u00e7\u00e3o imediata pudesse ser tomada?<\/p>\n<p>Veremos como aproveitar o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/eventing\/\">Eventos do Couchbase<\/a> para escrever fun\u00e7\u00f5es JavaScript que detectar\u00e3o altera\u00e7\u00f5es em documentos \u00e0 medida que elas ocorrerem. Em particular, veremos se os n\u00fameros de previd\u00eancia social est\u00e3o aparecendo nos documentos, quando n\u00e3o deveriam estar.<\/p>\n<p><!--more--><\/p>\n<p>No futuro, \u00e9 importante observar que esse \u00e9 apenas um dos muitos casos de uso poss\u00edveis quando se trata de eventos em <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/\" target=\"_blank\" rel=\"noopener noreferrer\">Couchbase<\/a>. O servi\u00e7o Eventing est\u00e1 dispon\u00edvel a partir de <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-server-5-5-beta-3\/\">Servidor Couchbase 5.5<\/a> que acaba de ser lan\u00e7ado.<\/p>\n<p><strong>Observe que a constru\u00e7\u00e3o N1QL ainda est\u00e1 em desenvolvimento. Esse recurso destina-se apenas a fins de desenvolvimento e n\u00e3o deve ser usado em ambientes de produ\u00e7\u00e3o.<\/strong><\/p>\n<h2>Cria\u00e7\u00e3o de uma API RESTful com Node.js e Express Framework<\/h2>\n<p>Neste exemplo, n\u00e3o enviaremos notifica\u00e7\u00f5es de fato. Essa \u00e9 uma nova lata de vermes. Em vez disso, criaremos uma API de amostra para que o banco de dados fa\u00e7a ping sempre que uma fun\u00e7\u00e3o for acionada. Essa API imprimir\u00e1 uma mensagem, mas, na realidade, voc\u00ea faria com que ela enviasse uma notifica\u00e7\u00e3o push ou um e-mail.<\/p>\n<p>Crie um novo diret\u00f3rio em algum lugar em seu computador e execute o seguinte a partir desse diret\u00f3rio:<\/p>\n<pre class=\"lang:default decode:true\">npm init -y<\/pre>\n<p>O comando acima criar\u00e1 um novo projeto Node.js, mais especificamente um projeto\u00a0<strong>package.json<\/strong> arquivo. Nossa API n\u00e3o precisar\u00e1 usar o Couchbase para este exemplo, mas precisaremos de uma estrutura para receber solicita\u00e7\u00f5es HTTP.<\/p>\n<p>No projeto, execute o seguinte comando:<\/p>\n<pre class=\"lang:default decode:true\">npm install express body-parser --save<\/pre>\n<p>O comando acima instalar\u00e1 o Express, bem como um middleware para aceitar corpos de solicita\u00e7\u00e3o no formato JSON.<\/p>\n<p>Agora crie um\u00a0<strong>app.js<\/strong> em seu projeto e inclua o seguinte c\u00f3digo JavaScript:<\/p>\n<pre class=\"lang:default decode:true\">const Express = require(\"express\");\r\nconst BodyParser = require(\"body-parser\");\r\n\r\nvar app = Express();\r\n\r\napp.use(BodyParser.json());\r\napp.use(BodyParser.urlencoded({ extended: true }));\r\n\r\napp.post(\"\/notify\", (request, response) =&gt; {\r\n    console.log(\"POST \/notify\");\r\n    for(key in request.body) {\r\n        if(request.body.hasOwnProperty(key)) {\r\n            console.log(JSON.parse(key));\r\n        }\r\n    }\r\n    response.send(\"sent\");\r\n});\r\n\r\nvar server = app.listen(3000, () =&gt; {\r\n    console.log(\"Listening...\");\r\n});<\/pre>\n<p>A \u00eanfase deste tutorial n\u00e3o \u00e9 criar uma API com o Node.js, portanto, n\u00e3o vou me aprofundar muito nisso. Basicamente, estamos configurando um \u00fanico endpoint de API, analisando os dados que chegam e imprimindo-os no console. Isso pode ser feito com qualquer tecnologia, n\u00e3o \u00e9 espec\u00edfico do Node.js e, na realidade, voc\u00ea provavelmente enviaria algum tipo de mensagem quando o endpoint fosse acionado.<\/p>\n<p>Agora podemos nos concentrar no que importa, as fun\u00e7\u00f5es do Couchbase Server.<\/p>\n<h2>Cria\u00e7\u00e3o de uma fun\u00e7\u00e3o para ouvir altera\u00e7\u00f5es em documentos NoSQL<\/h2>\n<p>Como eu disse anteriormente, o servi\u00e7o Eventing est\u00e1 dispon\u00edvel a partir do Couchbase 5.5, que acaba de ser lan\u00e7ado.<\/p>\n<p>Para ter sucesso com o servi\u00e7o Eventing, no momento, voc\u00ea precisar\u00e1 de dois Buckets.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4701 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/couchbase-5-5-eventing-buckets.png\" alt=\"Couchbase Eventing Buckets\" width=\"1100\" height=\"372\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-5-5-eventing-buckets.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-5-5-eventing-buckets-300x101.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-5-5-eventing-buckets-1024x346.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-5-5-eventing-buckets-768x260.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-5-5-eventing-buckets-20x7.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>Em meu exemplo, tenho um\u00a0<strong>exemplo<\/strong> Balde e um\u00a0<strong>exemplo de evento<\/strong> Bucket. Ambos s\u00e3o Buckets padr\u00e3o, mas um ser\u00e1 usado para armazenar metadados.<\/p>\n<p>Como faremos solicita\u00e7\u00f5es do Couchbase Server para nossa API de notifica\u00e7\u00e3o, precisamos configurar uma lista de permiss\u00f5es porque, por padr\u00e3o, nenhuma solicita\u00e7\u00e3o pode sair do Couchbase Server por motivos de seguran\u00e7a.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4702 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/couchbase-n1ql-curl-whitelist.png\" alt=\"Couchbase N1QL Whitelist for cURL\" width=\"1100\" height=\"440\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-n1ql-curl-whitelist.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-n1ql-curl-whitelist-300x120.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-n1ql-curl-whitelist-1024x410.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-n1ql-curl-whitelist-768x307.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-n1ql-curl-whitelist-20x8.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>No\u00a0<strong>Configura\u00e7\u00f5es<\/strong> do painel do Couchbase, procure a tag\u00a0<strong>Configura\u00e7\u00f5es avan\u00e7adas do N1QL<\/strong> se\u00e7\u00e3o. Estou executando o Couchbase e a API localmente, portanto, s\u00f3 preciso adicionar o host e a porta. Suas configura\u00e7\u00f5es podem ser ligeiramente diferentes.<\/p>\n<p>Agora podemos criar a fun\u00e7\u00e3o que ficar\u00e1 atenta aos dados confidenciais.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4703 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/couchbase-example-function.png\" alt=\"Couchbase Function\" width=\"1100\" height=\"469\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-example-function.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-example-function-300x128.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-example-function-1024x437.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-example-function-768x327.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-example-function-20x9.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>Ao adicionar uma nova fun\u00e7\u00e3o, preencha as informa\u00e7\u00f5es para que correspondam aos detalhes do Bucket. A l\u00f3gica para conduzir a fun\u00e7\u00e3o vir\u00e1 em seguida.<\/p>\n<p>Com a fun\u00e7\u00e3o dispon\u00edvel, queremos editar o JavaScript. Por padr\u00e3o, voc\u00ea deve ver algo semelhante ao seguinte:<\/p>\n<pre class=\"lang:default decode:true\">function OnUpdate(doc, meta) {\r\n    log('document', doc);\r\n}\r\nfunction OnDelete(meta) {\r\n}<\/pre>\n<p>Nosso objetivo \u00e9 acionar uma fun\u00e7\u00e3o quando um documento for atualizado, em vez de exclu\u00eddo. V\u00e1rias coisas precisar\u00e3o acontecer.<\/p>\n<ol>\n<li>Verificar se criamos ou alteramos um <code>pessoa<\/code> documento.<\/li>\n<li>Veja o <code>ssn<\/code> do documento e verifique se uma express\u00e3o regular pode valid\u00e1-la como um n\u00famero de previd\u00eancia social.<\/li>\n<li>Enviar uma solicita\u00e7\u00e3o cURL para uma API.<\/li>\n<\/ol>\n<p>O c\u00f3digo que explica as etapas acima pode ser visto abaixo:<\/p>\n<pre class=\"lang:default decode:true\">function OnUpdate(doc, meta) {\r\n    log('document', doc);\r\n    if(doc.type == 'person') {\r\n        var isSSN = \/^(?:\\d{3}-\\d{2}-\\d{4}|\\d{2}-\\d{7})$\/;\r\n        if(isSSN.test(doc.ssn)) {\r\n            var http = SELECT CURL(\r\n                \"https:\/\/localhost:3000\/notify\", \r\n                { \r\n                    \"request\": \"POST\", \r\n                    \"header\": \"application\/json\", \r\n                    \"data\": $meta\r\n                }\r\n            );\r\n            http.execQuery();\r\n            log('ssn', 'sending notification for raw ssn')\r\n        }\r\n    }\r\n}<\/pre>\n<p>Observe que estamos usando uma consulta N1QL para emitir a solicita\u00e7\u00e3o cURL. Essa n\u00e3o \u00e9 a \u00fanica maneira, mas \u00e9 uma op\u00e7\u00e3o que pode ser lida na se\u00e7\u00e3o <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/n1ql\/n1ql-language-reference\/curl.html\" target=\"_blank\" rel=\"noopener noreferrer\">Documenta\u00e7\u00e3o do N1QL<\/a>.<\/p>\n<p>Em nosso exemplo, em vez de enviar o pr\u00f3prio documento \u00e0 nossa API e expor ainda mais o n\u00famero do seguro social, enviamos as meta informa\u00e7\u00f5es que incluem a chave do documento. Assim, o destinat\u00e1rio pode simplesmente procurar o documento com base na chave.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Voc\u00ea acabou de ver como usar o servi\u00e7o Eventing do Couchbase para criar fun\u00e7\u00f5es e detectar informa\u00e7\u00f5es confidenciais, como n\u00fameros de previd\u00eancia social. Voc\u00ea pode criar fun\u00e7\u00f5es para alterar dados no banco de dados ou para enviar notifica\u00e7\u00f5es, como demonstrado neste exemplo.<\/p>\n<p>Se voc\u00ea tiver interesse em saber mais sobre o servi\u00e7o Eventing, consulte a documenta\u00e7\u00e3o por meio da p\u00e1gina\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/pt\/developers\/\" target=\"_blank\" rel=\"noopener noreferrer\">Portal do desenvolvedor do Couchbase<\/a>\u00a0ou leia o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/eventing\/\">novo an\u00fancio de servi\u00e7o aqui<\/a>.  Saiba mais sobre outros recursos dispon\u00edveis no <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-server-5-5-beta-3\/\">Lan\u00e7amento do Couchbase Server 5.5.<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Storing sensitive information in a database without encryption is not a good thing, but have you ever done in on accident due to bugs in your application code or a misconfiguration in your database? What if there was a way [&hellip;]<\/p>","protected":false},"author":63,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,1815,1816,2273,9327],"tags":[2258,2182,2133,1543,1725],"ppma_author":[9032],"class_list":["post-4699","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-best-practices-and-tutorials","category-couchbase-server","category-eventing","category-javascript","tag-5-5","tag-devbuild","tag-functions","tag-javascript","tag-nosql-database"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Detect Sensitive Data Automatically With Couchbase Functions<\/title>\n<meta name=\"description\" content=\"Learn to use the Couchbase Eventing service to write functions to detect and alert you when sensitive data appears in NoSQL documents.\" \/>\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.couchbase.com\/blog\/pt\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Detect Sensitive Data Automatically With Couchbase Functions\" \/>\n<meta property=\"og:description\" content=\"Learn to use the Couchbase Eventing service to write functions to detect and alert you when sensitive data appears in NoSQL documents.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2018-03-15T01:42:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T05:39:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-5-5-eventing-buckets.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1100\" \/>\n\t<meta property=\"og:image:height\" content=\"372\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nraboy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Detect Sensitive Data Automatically With Couchbase Functions\",\"datePublished\":\"2018-03-15T01:42:01+00:00\",\"dateModified\":\"2025-06-14T05:39:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/\"},\"wordCount\":849,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"5.5\",\"devbuild\",\"functions\",\"javascript\",\"NoSQL Database\"],\"articleSection\":[\"Application Design\",\"Best Practices and Tutorials\",\"Couchbase Server\",\"Eventing\",\"JavaScript\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/\",\"name\":\"Detect Sensitive Data Automatically With Couchbase Functions\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2018-03-15T01:42:01+00:00\",\"dateModified\":\"2025-06-14T05:39:52+00:00\",\"description\":\"Learn to use the Couchbase Eventing service to write functions to detect and alert you when sensitive data appears in NoSQL documents.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Detect Sensitive Data Automatically With Couchbase Functions\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"caption\":\"Nic Raboy, Developer Advocate, Couchbase\"},\"description\":\"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.\",\"sameAs\":[\"https:\/\/www.thepolyglotdeveloper.com\",\"https:\/\/www.facebook.com\/thepolyglotdeveloper\",\"https:\/\/x.com\/nraboy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Detectar dados confidenciais automaticamente com o Couchbase Functions","description":"Aprenda a usar o servi\u00e7o Couchbase Eventing para escrever fun\u00e7\u00f5es que detectam e alertam voc\u00ea quando dados confidenciais aparecem em documentos 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:\/\/www.couchbase.com\/blog\/pt\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/","og_locale":"pt_BR","og_type":"article","og_title":"Detect Sensitive Data Automatically With Couchbase Functions","og_description":"Learn to use the Couchbase Eventing service to write functions to detect and alert you when sensitive data appears in NoSQL documents.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2018-03-15T01:42:01+00:00","article_modified_time":"2025-06-14T05:39:52+00:00","og_image":[{"width":1100,"height":372,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/couchbase-5-5-eventing-buckets.png","type":"image\/png"}],"author":"Nic Raboy, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@nraboy","twitter_misc":{"Written by":"Nic Raboy, Developer Advocate, Couchbase","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Detect Sensitive Data Automatically With Couchbase Functions","datePublished":"2018-03-15T01:42:01+00:00","dateModified":"2025-06-14T05:39:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/"},"wordCount":849,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["5.5","devbuild","functions","javascript","NoSQL Database"],"articleSection":["Application Design","Best Practices and Tutorials","Couchbase Server","Eventing","JavaScript"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/","url":"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/","name":"Detectar dados confidenciais automaticamente com o Couchbase Functions","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2018-03-15T01:42:01+00:00","dateModified":"2025-06-14T05:39:52+00:00","description":"Aprenda a usar o servi\u00e7o Couchbase Eventing para escrever fun\u00e7\u00f5es que detectam e alertam voc\u00ea quando dados confidenciais aparecem em documentos NoSQL.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/detect-sensitive-information-nosql-documents-automatically-couchbase-functions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Detect Sensitive Data Automatically With Couchbase Functions"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, defensor dos desenvolvedores, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354","url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","caption":"Nic Raboy, Developer Advocate, Couchbase"},"description":"Nic Raboy \u00e9 um defensor das modernas tecnologias de desenvolvimento m\u00f3vel e da Web. Ele tem experi\u00eancia em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experi\u00eancias de desenvolvimento relacionadas a tornar o desenvolvimento m\u00f3vel e da Web mais f\u00e1cil de entender.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/nic-raboy-2\/"}]}},"authors":[{"term_id":9032,"user_id":63,"is_guest":0,"slug":"nic-raboy-2","display_name":"Nic Raboy, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","author_category":"","last_name":"Raboy","first_name":"Nic","job_title":"","user_url":"https:\/\/www.thepolyglotdeveloper.com","description":"Nic Raboy \u00e9 um defensor das modernas tecnologias de desenvolvimento m\u00f3vel e da Web. Ele tem experi\u00eancia em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experi\u00eancias de desenvolvimento relacionadas a tornar o desenvolvimento m\u00f3vel e da Web mais f\u00e1cil de entender."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/4699","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=4699"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/4699\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=4699"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=4699"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=4699"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=4699"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}