{"id":4124,"date":"2017-10-30T08:03:07","date_gmt":"2017-10-30T15:03:07","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4124"},"modified":"2025-06-13T23:14:59","modified_gmt":"2025-06-14T06:14:59","slug":"secure-nosql-data-couchbase-role-based-access-control","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/","title":{"rendered":"Secure Your NoSQL Data with Couchbase Role-Based Access Control"},"content":{"rendered":"<p>In a world where data leaks are becoming increasingly common, the need to harden the database and web applications becomes ever so important. I, like many other developers, came from working with relational databases such as MySQL and Oracle, where access control permissions could be placed on databases and the tables within them. Now with <a href=\"https:\/\/www.couchbase.com\" target=\"_blank\" rel=\"noopener\">Couchbase<\/a> 5.0, this same fine grain control can be applied on clusters, buckets, and so much more.<\/p>\n<p>We&#8217;re going to see some examples of how Couchbase Server&#8217;s role-based access control (RBAC) can be used to lock down the database and better protect it from the malicious users trying to exploit it.<\/p>\n<p><!--more--><\/p>\n<p>Let&#8217;s be clear up front, having accounts with access control in your database is not going to be a fix-all when it comes to protecting your data. You must still follow best practices when it comes to designing your web application, but having the access control at a database level will significantly help your cause.<\/p>\n<p>With Couchbase Server&#8217;s RBAC, you can have any number of accounts that can be used to access your database.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4125 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/10\/couchbase-rbac-accounts-1024x336.png\" alt=\"Couchbase Role-Based Access Control Accounts\" width=\"900\" height=\"295\" \/><\/p>\n<p>These accounts will have privileges such as read, write, execute, manage, and flush.<\/p>\n<p>Let&#8217;s play around with creating an account, and finding out what happens when we do and don&#8217;t have the correct privileges to do certain tasks.<\/p>\n<h2>Creating a New User for Couchbase Server<\/h2>\n<p>Assuming you&#8217;ve already obtained a copy of Couchbase Server 5.0 or newer, sign into the cluster or instance using your administrator username and password.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4126 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/10\/couchbase-admin-login-1024x189.png\" alt=\"Couchbase Server Admin Login\" width=\"900\" height=\"166\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/couchbase-admin-login-1024x189.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/couchbase-admin-login-300x55.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/couchbase-admin-login-768x142.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/couchbase-admin-login-1536x284.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/couchbase-admin-login-20x4.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/couchbase-admin-login-1320x244.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/couchbase-admin-login.png 2048w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p>The administrative username and password is not going away now that role-based access control is available. Think of it as your root user for the database cluster.<\/p>\n<p>When you&#8217;ve signed in, find the <strong>Security<\/strong> tab and select <strong>ADD USER<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4127 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/10\/couchbase-rbac-new-user.gif\" alt=\"Couchbase Create New RBAC User\" width=\"1425\" height=\"649\" \/><\/p>\n<p>When adding a user, make sure to choose a strong username and password combination.<\/p>\n<p>There are quite a few roles to choose from when creating a new user. For now, choose the <strong>Data Reader<\/strong> role from the <strong>Data Roles<\/strong> section. We&#8217;re doing this because we want to see what happens when we try to use a user account with too few permissions. For maximum security, make sure to only assign the Buckets you need to the user, and not use the <strong>all [*]<\/strong> option.<\/p>\n<p>Now let&#8217;s take a look at trying to use this new account with Couchbase.<\/p>\n<h2>Performing Tasks with the Couchbase Shell<\/h2>\n<p>When installing Couchbase you are given the Couchbase Shell which is a CLI tool that can do quite a few things against the database.<\/p>\n<p>If you&#8217;re using a Mac, execute the following command:<\/p>\n<pre class=\"lang:default decode:true\">\/Applications\/Couchbase Server.app\/Contents\/Resources\/couchbase-core\/bin\/cbq -u username -p password<\/pre>\n<p>The above command will launch the Couchase Shell (CBQ) using the username and password specified. Make sure to use the username and password to the RBAC user that you had previously created.<\/p>\n<p>If you&#8217;re using Microsoft Windows, CBQ should be located at the following:<\/p>\n<pre class=\"lang:default decode:true\">C:\\Program Files\\Couchbase\\Server\\bin\\cbq.exe -u username -p password<\/pre>\n<p>Likewise, if you&#8217;re using Linux, check for CBQ here:<\/p>\n<pre class=\"lang:default decode:true \">\/opt\/couchbase\/bin\/cbq -u username -p password<\/pre>\n<p>If you&#8217;d like to learn more about the Couchbase Shell, check it out in the <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/n1ql\/n1ql-intro\/cbq.html\" target=\"_blank\" rel=\"noopener\">official documentation<\/a>.<\/p>\n<p>With a successful connection to Couchbase Server using CBQ, let&#8217;s try to execute a query:<\/p>\n<pre class=\"lang:default decode:true \">SELECT * FROM `default`;<\/pre>\n<p>Of course, we&#8217;re assuming that you have a Bucket called\u00a0<strong>default<\/strong> and your user has access to it. Remember, we only have the\u00a0<strong>Data Reader<\/strong> role on our user, not one of the <strong>Query Roles<\/strong>. This means that you&#8217;ll likely receive an error that looks like the following:<\/p>\n<pre class=\"lang:default decode:true \">{\r\n    \"requestID\": \"aca002c6-58d5-4754-9e33-325eef47f46b\",\r\n    \"signature\": {\r\n        \"*\": \"*\"\r\n    },\r\n    \"results\": [\r\n    ],\r\n    \"errors\": [\r\n        {\r\n            \"code\": 13014,\r\n            \"msg\": \"User does not have credentials to run SELECT queries on the default bucket. Add role query_select on default to allow the query to run.\"\r\n        }\r\n    ],\r\n    \"status\": \"stopped\",\r\n    \"metrics\": {\r\n        \"elapsedTime\": \"1.703462ms\",\r\n        \"executionTime\": \"1.690334ms\",\r\n        \"resultCount\": 0,\r\n        \"resultSize\": 0,\r\n        \"errorCount\": 1\r\n    }\r\n}<\/pre>\n<p>This is great because won&#8217;t don&#8217;t want our user to be able to execute queries. The <strong>Data Roles<\/strong> privileges are for key-value operations only, not N1QL.<\/p>\n<p>Go back into the Couchbase Administrative Dashboard, and alter the roles for your user. This time give the user the\u00a0<strong>Query Select<\/strong> role from\u00a0<strong>Query Roles<\/strong>. If you try to run the query again from CBQ it should succeed.<\/p>\n<h2>Including Role-Based Access Controls in an Application<\/h2>\n<p>At some point you&#8217;re going to need to build a web application that communicates with Couchbase using one of the many Couchbase SDKs. As of Couchbase 5.0, an RBAC user must be available and the SDK must authenticate with it, otherwise there will be an error when trying to open a Bucket.<\/p>\n<p>If you&#8217;re a Node.js developer, you might do something like this:<\/p>\n<pre class=\"lang:default decode:true \">var cluster = new Couchbase.Cluster(\"couchbase:\/\/host\");\r\ncluster.authenticate(\"username\", \"password\");\r\nvar bucket = cluster.openBucket(\"default\");<\/pre>\n<p>Notice that the <code>openBucket<\/code> function no longer takes a Bucket password. Instead we&#8217;re relying on the <code>authenticate<\/code> method and our access controls.<\/p>\n<p>Each of the SDKs follow a very similar approach to authentication. For more information, check out the SDK documentation in the <a href=\"https:\/\/www.couchbase.com\/developers\/\" target=\"_blank\" rel=\"noopener\">Couchbase Developer Portal<\/a>.<\/p>\n<h2>Conclusion<\/h2>\n<p>Being able to define privileges based on clusters, Buckets, and even services is a huge win when it comes to securing your NoSQL database. By giving users the bare minimum to what they need to function, you&#8217;re helping to remove the possibility of a data leak or some other malicious activity.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In a world where data leaks are becoming increasingly common, the need to harden the database and web applications becomes ever so important. I, like many other developers, came from working with relational databases such as MySQL and Oracle, where [&hellip;]<\/p>\n","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":[1815,1816,1813],"tags":[1903,1962],"ppma_author":[9032],"class_list":["post-4124","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","category-security","tag-rbac","tag-role-based-access-control"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Secure Your NoSQL Data with Couchbase Role-Based Access Control<\/title>\n<meta name=\"description\" content=\"Learn how to define an access control configuration in Couchbase Server to protect your cluster, buckets, and data from being accessed without permission.\" \/>\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\/secure-nosql-data-couchbase-role-based-access-control\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Secure Your NoSQL Data with Couchbase Role-Based Access Control\" \/>\n<meta property=\"og:description\" content=\"Learn how to define an access control configuration in Couchbase Server to protect your cluster, buckets, and data from being accessed without permission.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/\" \/>\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=\"2017-10-30T15:03:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:14:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/couchbase-rbac-accounts.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2048\" \/>\n\t<meta property=\"og:image:height\" content=\"673\" \/>\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 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Secure Your NoSQL Data with Couchbase Role-Based Access Control\",\"datePublished\":\"2017-10-30T15:03:07+00:00\",\"dateModified\":\"2025-06-14T06:14:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/\"},\"wordCount\":819,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"RBAC\",\"Role Based Access Control (RBAC)\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\",\"Security\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/\",\"name\":\"Secure Your NoSQL Data with Couchbase Role-Based Access Control\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-10-30T15:03:07+00:00\",\"dateModified\":\"2025-06-14T06:14:59+00:00\",\"description\":\"Learn how to define an access control configuration in Couchbase Server to protect your cluster, buckets, and data from being accessed without permission.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/#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\/secure-nosql-data-couchbase-role-based-access-control\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Secure Your NoSQL Data with Couchbase Role-Based Access Control\"}]},{\"@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\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@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\":\"en-US\",\"@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\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Secure Your NoSQL Data with Couchbase Role-Based Access Control","description":"Learn how to define an access control configuration in Couchbase Server to protect your cluster, buckets, and data from being accessed without permission.","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\/secure-nosql-data-couchbase-role-based-access-control\/","og_locale":"en_US","og_type":"article","og_title":"Secure Your NoSQL Data with Couchbase Role-Based Access Control","og_description":"Learn how to define an access control configuration in Couchbase Server to protect your cluster, buckets, and data from being accessed without permission.","og_url":"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2017-10-30T15:03:07+00:00","article_modified_time":"2025-06-14T06:14:59+00:00","og_image":[{"width":2048,"height":673,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/couchbase-rbac-accounts.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 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Secure Your NoSQL Data with Couchbase Role-Based Access Control","datePublished":"2017-10-30T15:03:07+00:00","dateModified":"2025-06-14T06:14:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/"},"wordCount":819,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["RBAC","Role Based Access Control (RBAC)"],"articleSection":["Best Practices and Tutorials","Couchbase Server","Security"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/","url":"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/","name":"Secure Your NoSQL Data with Couchbase Role-Based Access Control","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-10-30T15:03:07+00:00","dateModified":"2025-06-14T06:14:59+00:00","description":"Learn how to define an access control configuration in Couchbase Server to protect your cluster, buckets, and data from being accessed without permission.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/secure-nosql-data-couchbase-role-based-access-control\/#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\/secure-nosql-data-couchbase-role-based-access-control\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Secure Your NoSQL Data with Couchbase Role-Based Access Control"}]},{"@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":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@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":"en-US","@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\/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 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."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=4124"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4124\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=4124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=4124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=4124"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=4124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}