{"id":9325,"date":"2020-09-10T08:38:59","date_gmt":"2020-09-10T15:38:59","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=9325"},"modified":"2021-01-31T13:04:38","modified_gmt":"2021-01-31T21:04:38","slug":"authentication-using-server-side-x-509-certificates-with-n1ql","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/authentication-using-server-side-x-509-certificates-with-n1ql\/","title":{"rendered":"Autentica\u00e7\u00e3o usando certificados X.509 do lado do servidor e N1QL"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">A autentica\u00e7\u00e3o e a autoriza\u00e7\u00e3o do servi\u00e7o de consulta N1QL no Couchbase funcionam de v\u00e1rias maneiras\u00a0<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Passagem de credenciais por meio de uma solicita\u00e7\u00e3o rest - curl https:\/\/localhost:8093\/query\/service?pretty=true -d \"statement=select * from system:keyspaces\" -u Admin:pwd<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Passagem de credenciais usando o par\u00e2metro nomeado creds e\/ou o par\u00e2metro de consulta -\u00a0<\/span>curl https:\/\/localhost:8093\/query\/service?pretty=true -d \"statement=select * from system:keyspaces&amp;creds=[{user: \"Administrator\", \"password\": \"pass\"}]\"<\/li>\n<li><span style=\"font-weight: 400;\">Usando a autentica\u00e7\u00e3o b\u00e1sica na solicita\u00e7\u00e3o\u00a0<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Solicita\u00e7\u00e3o do cbq (semelhante a 1,2) usando as op\u00e7\u00f5es -u -p -creds e o comando \\SET.\u00a0<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Certificados X.509 para TLS<\/span><\/li>\n<li>Criptografia de n\u00f3 para n\u00f3<\/li>\n<\/ol>\n<p>Com a adi\u00e7\u00e3o do RBAC, o par\u00e2metro de consulta creds se tornou redundante, mas ainda \u00e9 suportado para compatibilidade com vers\u00f5es anteriores.<\/p>\n<p>O objetivo de adicionar suporte a certificados X509 \u00e9 aprimorar a criptografia cliente-servidor usando um certificado confi\u00e1vel pela autoridade de certifica\u00e7\u00e3o.<\/p>\n<p><span style=\"font-weight: 400;\">Os certificados X.509 permitem a autentica\u00e7\u00e3o e a criptografia do servidor para comunica\u00e7\u00f5es cliente-servidor. O Couchbase oferece suporte \u00e0 autentica\u00e7\u00e3o de servidor e cliente usando certificados X509 e voc\u00ea precisa ser um administrador completo ou administrador de seguran\u00e7a para gerenciar certificados. Este artigo fala sobre o suporte a certificados X.509 no lado do servidor para autoriza\u00e7\u00e3o no Couchbase. Os clientes tamb\u00e9m podem verificar a identidade do Couchbase Server, mas isso ser\u00e1 discutido em outro artigo.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Os cen\u00e1rios mais comuns para os quais os certificados X509 s\u00e3o usados s\u00e3o quando os clientes precisam passar pela Internet, <\/span><span style=\"font-weight: 400;\">ao transferir dados confidenciais entre o aplicativo e o Couchbase Server, ou entre data centers (XDCR) ou quando exigido por normas de conformidade.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">O que \u00e9 um certificado X.509? <\/span><\/h2>\n<p><span style=\"font-weight: 400;\">\u00c9 um certificado de chave p\u00fablica usado para distribuir uma chave p\u00fablica, assinada por uma autoridade de certifica\u00e7\u00e3o confi\u00e1vel que verifica a identidade do servidor. Com ele, o cliente tem a garantia de que a solicita\u00e7\u00e3o n\u00e3o est\u00e1 sendo enviada a um servidor desconhecido. Esses certificados s\u00e3o assinados por um terceiro, tamb\u00e9m conhecido como autoridade de certifica\u00e7\u00e3o. <\/span><span style=\"font-weight: 400;\">As ACs s\u00e3o entidades que emitem certificados digitais. Na verdade, uma AC \u00e9 composta por uma s\u00e9rie de ACs denominada hierarquia de ACs. Essa hierarquia de CAs constr\u00f3i uma cadeia de confian\u00e7a na qual todos os certificados de n\u00f3s ou de entidades finais se baseiam. A cadeia n\u00e3o cont\u00e9m a chave p\u00fablica da CA raiz.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Em uma infraestrutura de chave p\u00fablica (PKI) hier\u00e1rquica, normalmente h\u00e1 tr\u00eas tipos de hierarquia. Uma camada, duas camadas e N camadas. A CA no topo dessa hierarquia \u00e9 conhecida como CA-raiz. Todas as CAs subsequentes s\u00e3o as CAs intermedi\u00e1rias, e a en\u00e9sima (\u00faltima) CA \u00e9 conhecida como CA de n\u00f3.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Um ponto importante a ser observado \u00e9 <\/span><span style=\"font-weight: 400;\">que, para confiar em um certificado usado para estabelecer uma conex\u00e3o segura, ele deve ter sido emitido por uma CA inclu\u00edda no reposit\u00f3rio confi\u00e1vel do dispositivo que est\u00e1 se conectando.<\/span><\/p>\n<h3><b>Autoridade de CA de uma ou \u00fanica camada <\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Essa \u00e9 a forma mais simples de hierarquia de ACs, mas geralmente n\u00e3o \u00e9 usada na produ\u00e7\u00e3o como uma hierarquia de ACs.<\/span><span style=\"font-weight: 400;\"> O comprometimento dessa CA raiz resulta em um comprometimento de toda a PKI. <\/span><span style=\"font-weight: 400;\">Aqui, a CA raiz tamb\u00e9m \u00e9 a CA emissora e <\/span><span style=\"font-weight: 400;\">todos os certificados imediatamente abaixo do certificado raiz herdam sua confiabilidade.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-9327 aligncenter\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.34-PM-300x206.png\" alt=\"\" width=\"129\" height=\"89\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.34-PM-300x206.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.34-PM-235x160.png 235w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.34-PM-20x14.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.34-PM.png 358w\" sizes=\"auto, (max-width: 129px) 100vw, 129px\" \/><\/p>\n<h3><b>Autoridade de CA de dois n\u00edveis<\/b><span style=\"font-weight: 400;\">\u00a0<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Consiste em uma CA raiz que emitiu um certificado para uma subordinada conhecida como CA intermedi\u00e1ria. A diferen\u00e7a aqui \u00e9 que os certificados emitidos s\u00e3o confi\u00e1veis, pois v\u00eam de uma autoridade confi\u00e1vel por meio da AC intermedi\u00e1ria.\u00a0<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9329\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.43-PM-1-1024x574.png\" alt=\"\" width=\"525\" height=\"294\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.43-PM-1-1024x574.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.43-PM-1-300x168.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.43-PM-1-768x430.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.43-PM-1-20x11.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.43-PM-1.png 1028w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Sinais de CA raiz-&gt;<\/span><span style=\"font-weight: 400;\"> Sinais de CA intermedi\u00e1rios<\/span><span style=\"font-weight: 400;\"> -&gt; CA emissora \/ CA de cluster<\/span><\/p>\n<h3><b>Autoridade de CA de N camadas <\/b><\/h3>\n<p><span style=\"font-weight: 400;\">\u00a0Na maioria das implementa\u00e7\u00f5es de produ\u00e7\u00e3o, uma hierarquia tem v\u00e1rias CAs.<\/span> <span style=\"font-weight: 400;\">A AC raiz emite certificados para as ACs intermedi\u00e1rias, que, por sua vez, geram <\/span><i><span style=\"font-weight: 400;\">certificados intermedi\u00e1rios<\/span><\/i><span style=\"font-weight: 400;\">: s\u00e3o usados para assinar certificados de clientes, como um certificado de cluster:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">CA raiz confi\u00e1vel &gt; CA intermedi\u00e1ria &gt; Certificado de cluster<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">CA raiz confi\u00e1vel &gt; CA intermedi\u00e1ria 1 &gt; CA intermedi\u00e1ria 2.... &gt; CA intermedi\u00e1ria <\/span><i><span style=\"font-weight: 400;\">n<\/span><\/i><span style=\"font-weight: 400;\"> &gt; Certificado de cluster<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">A hierarquia de duas camadas \u00e9 um subtipo da hierarquia de N camadas.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0<\/span><span style=\"font-weight: 400;\">Em todos os casos acima, a cadeia de certificados precisa ser verificada at\u00e9 a CA raiz. A cadeia de confian\u00e7a cont\u00e9m seu certificado, concatenado com todos os certificados intermedi\u00e1rios.<\/span><\/p>\n<p><b>Observe aqui -<\/b> <b>Todos os certificados intermedi\u00e1rios devem ser instalados em seu servidor: caso contr\u00e1rio, alguns clientes presumir\u00e3o que a conex\u00e3o n\u00e3o \u00e9 segura. Isso resulta em avisos de \"n\u00e3o confi\u00e1vel\".\u00a0<\/b><\/p>\n<h2><b>Configura\u00e7\u00e3o do X.509 em um cluster do couchbase<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Alguns pr\u00e9-requisitos antes de configurar os certificados\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">O certificado deve ser um certificado de chave RSA em um formato .pem v\u00e1lido<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">O certificado n\u00e3o deve ser inv\u00e1lido - A hora atual deve estar entre <\/span><span style=\"font-weight: 400;\">v\u00e1lido a partir de<\/span><span style=\"font-weight: 400;\"> e <\/span><span style=\"font-weight: 400;\">v\u00e1lido para <\/span><span style=\"font-weight: 400;\">conforme estabelecido no certificado.<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Use um comprimento de chave RSA de 2048 bits ou mais. (\u00c0 medida que os recursos de computa\u00e7\u00e3o aumentam, as chaves RSA mais longas proporcionam maior seguran\u00e7a).<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Em um cluster de n\u00f3 \u00fanico, voc\u00ea ter\u00e1 um diret\u00f3rio correspondente aos certificados dos n\u00f3s. Em um cluster de v\u00e1rios n\u00f3s, crie v\u00e1rios diret\u00f3rios correspondentes a cada n\u00f3 do cluster - node1, node2 etc.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Se voc\u00ea tiver v\u00e1rias ACs intermedi\u00e1rias, certifique-se de empilh\u00e1-las na ordem correta na cadeia de certificados.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">A chave privada do n\u00f3 e a cadeia precisam ser colocadas em ..\/<\/span><i><span style=\"font-weight: 400;\">var\/lib\/couchbase\/inbox <\/span><\/i><span style=\"font-weight: 400;\">relativo ao diret\u00f3rio bin do sistema operacional de onde os exes de servi\u00e7o\/cluster s\u00e3o implantados.\u00a0<\/span><\/li>\n<\/ul>\n<h3><b>Conven\u00e7\u00f5es de nomenclatura<\/b><\/h3>\n<p><b>ca.pem<\/b><span style=\"font-weight: 400;\"> - Chave p\u00fablica da CA raiz\u00a0<\/span><\/p>\n<p><b>int1.pem<\/b><span style=\"font-weight: 400;\"> - Chave p\u00fablica da AC intermedi\u00e1ria (no 1. Se voc\u00ea tiver v\u00e1rias CAs intermedi\u00e1rias, nomeie-as adequadamente para adicion\u00e1-las \u00e0 cadeia na ordem correta. Isso mostra qual CA intermedi\u00e1ria est\u00e1 mais pr\u00f3xima do n\u00f3)<\/span><\/p>\n<p><b>node1.pem<\/b><span style=\"font-weight: 400;\"> - Chave p\u00fablica da CA do n\u00f3 1 ( node2.pem - chave p\u00fablica da CA do n\u00f3 2 e assim por diante )<\/span><\/p>\n<p><b>node1.key<\/b><span style=\"font-weight: 400;\"> - Chave privada da CA do n\u00f3 1<\/span><\/p>\n<p><b>chain.pem<\/b><span style=\"font-weight: 400;\"> - Cadeia de certificados que cont\u00e9m a chave p\u00fablica dos n\u00f3s e as chaves p\u00fablicas intermedi\u00e1rias que assinaram a chave p\u00fablica do n\u00f3.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Usamos a ferramenta openssl para criar nossos certificados. Consulte sua documenta\u00e7\u00e3o para obter mais detalhes sobre os comandos em si.\u00a0<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Etapas para configurar certificados X.509<\/span><\/h3>\n<h4><span style=\"font-weight: 400;\"><strong>Etapa 1<\/strong> - Criar a chave privada raiz\u00a0<\/span><\/h4>\n<p><b>openssl genrsa -out ca.key 2048 2&gt;\/dev\/null<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Gerar uma chave privada RSA chamada <\/span><b>ca.key <\/b><span style=\"font-weight: 400;\">(-out nome de arquivo) que s\u00e3o os 2048 bits.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ao gerar a chave, o s\u00edmbolo . ou + ser\u00e1 exibido. Isso indica o progresso na gera\u00e7\u00e3o da chave. O . representa cada n\u00famero que passa no teste e + significa que um n\u00famero passou em uma \u00fanica rodada do teste de primalidade Miller-Rabin. Quando a nova linha \u00e9 vista, significa que a chave foi gerada com sucesso e que o n\u00famero (2 n\u00fameros primos) passou em todos os testes de primos. Consulte a documenta\u00e7\u00e3o do openssl-genrsa para obter mais detalhes.\u00a0<\/span><\/p>\n<h4><span style=\"font-weight: 400;\"><strong>Etapa 2<\/strong> - Gerar a chave p\u00fablica raiz usada como a CA do cluster<\/span><\/h4>\n<p><b>openssl req -new -x509 -days 365 -sha256 -key ca.key -out ca.pem -subj '\/C=US\/O=Couchbase\/CN=Couchbase Root CA' 2&gt;\/dev\/null<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Gerar uma nova solicita\u00e7\u00e3o de certificado raiz autoassinado (op\u00e7\u00e3o -x509) com uma assinatura sha256 (-sha256. Isso significa maior seguran\u00e7a) v\u00e1lida por 1 ano (-days 365 em dias). A chave p\u00fablica ca.pem (-out) \u00e9 derivada da chave privada usando a op\u00e7\u00e3o -key para especificar a chave privada.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Os certificados X.509 t\u00eam um campo DN (Subject Distinguished Name) e tamb\u00e9m podem ter v\u00e1rios nomes na extens\u00e3o Subject Alternative Name. Ele \u00e9 composto de DNs relativos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">CN = COmmon Name, O = Organization, C = Country Name<\/span><\/p>\n<p><span style=\"font-weight: 400;\">O emissor do certificado \u00e9 especificado para ter o CN (Common Name) de Couchbase Root CA: como esse nome indica, o certificado ser\u00e1 o certificado raiz para o Couchbase\u00a0<\/span><\/p>\n<h4><span style=\"font-weight: 400;\"><strong>Etapa 3<\/strong> - Gerar chave privada intermedi\u00e1ria (ou chaves, se estiver usando uma hierarquia de N n\u00edveis, conforme descrito acima)<\/span><\/h4>\n<p><b>openssl genrsa -out int1.key 2048 2&gt;\/dev\/null<\/b><\/p>\n<h4><span style=\"font-weight: 400;\"><strong>Etapa 4<\/strong> - Gerar a solicita\u00e7\u00e3o de assinatura de certificado intermedi\u00e1rio<\/span><\/h4>\n<p><b>openssl req -new -key int1.key -out int1.csr -subj '\/C=US\/O=Couchbase\/CN=Couchbase Intermediate CA' 2&gt;\/dev\/null<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Uma CSR ou solicita\u00e7\u00e3o de assinatura de certificado \u00e9 uma solicita\u00e7\u00e3o enviada por um solicitante a uma CA para solicitar um certificado.\u00a0<\/span><span style=\"font-weight: 400;\">Voc\u00ea pode personalizar: adicionar ou limitar os recursos do certificado X.509 usando um arquivo de extens\u00e3o. Essas informa\u00e7\u00f5es ser\u00e3o usadas em todos os n\u00f3s do cluster. Por exemplo\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">cat &gt; v3.ext &lt;&lt;EOF<\/span><\/p>\n<p><span style=\"font-weight: 400;\">basicConstraints = CA:FALSE<\/span><\/p>\n<p><span style=\"font-weight: 400;\">subjectKeyIdentifier = hash<\/span><\/p>\n<p><span style=\"font-weight: 400;\">authorityKeyIdentifier = keyid,issuer:always<\/span><\/p>\n<p><span style=\"font-weight: 400;\">EOF<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Para obter uma lista abrangente de todas as extens\u00f5es padr\u00e3o, consulte a se\u00e7\u00e3o 4.2 da RFC 5280 sobre o perfil X509 PKI e CRL. -<\/span><a href=\"https:\/\/tools.ietf.org\/html\/rfc5280\"> <span style=\"font-weight: 400;\">https:\/\/tools.ietf.org\/html\/rfc5280<\/span><\/a><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<h4><span style=\"font-weight: 400;\"><strong>Etapa 5<\/strong> - Criar o certificado intermedi\u00e1rio\u00a0<\/span><\/h4>\n<p><b>openssl x509 -req -in int1.csr -CA ca.pem -CAkey ca.key -CAcreateserial -CAserial rootCA.srl -extfile v3.ext -out int1.pem -days 365 2&gt;\/dev\/null<\/b><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Leia o arquivo csr e passe as chaves da CA raiz para <\/span><span style=\"font-weight: 400;\">estabelecer a autoridade do certificado raiz. A chave criptografada da CA raiz \u00e9 usada para assinar o CSR intermedi\u00e1rio.  Antes de assinarmos qualquer coisa, um arquivo de n\u00famero de s\u00e9rie precisa ser configurado para a CA raiz. Isso serve para que cada certificado possa ter um n\u00famero de s\u00e9rie exclusivo. Isso \u00e9 feito usando as op\u00e7\u00f5es -CAcreateserial -CAserial . O rootCA.srl \u00e9 o arquivo de n\u00famero de s\u00e9rie. \u00c9 um arquivo de texto simples com n\u00fameros ASCII. O certificado \u00e9 personalizado usando as extens\u00f5es que definimos anteriormente e \u00e9 v\u00e1lido por um ano. <\/span><span style=\"font-weight: 400;\">Quando <\/span><span style=\"font-weight: 400;\">s\u00e3o exibidos avisos solicitando uma senha para o certificado. Digite uma frase apropriada em resposta aos prompts.<\/span><span style=\"font-weight: 400;\"> Lembre-se desta frase.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Finalmente, temos os certificados da CA raiz e intermedi\u00e1ria. Agora \u00e9 hora de configurar o certificado do n\u00f3 e assin\u00e1-lo com a CA raiz e a chave intermedi\u00e1ria.\u00a0<\/span><\/p>\n<h4><span style=\"font-weight: 400;\"><strong>Etapa 6<\/strong> - Configurar chave de n\u00f3 e CSR\u00a0<\/span><\/h4>\n<p><b>openssl genrsa -out node1.key 2048 2&gt;\/dev\/null<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Depois que a chave criptografada para o n\u00f3 for gerada, configure o csr do n\u00f3.\u00a0<\/span><\/p>\n<p><b>openssl req -new -key node1.key -out node1.csr -subj \"\/C=US\/O=Couchbase\/CN=server1_linux\" 2&gt;\/dev\/null<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Aqui, o nome comum definido no assunto do certificado \u00e9 o nome do n\u00f3, conforme definido e mapeado em \/etc\/hosts.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ao configurar o csr do n\u00f3, use o nodename (prefer\u00edvel), o endere\u00e7o IP ou o URI com um certificado SAN (nome alternativo do assunto).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A maneira usual de especificar a identidade do certificado \u00e9 por meio do nome comum (CN) no DN do assunto do certificado. Se voc\u00ea implantar um certificado em um host multi-homed, ser\u00e1 necess\u00e1rio definir um certificado com identidades alternativas usando a op\u00e7\u00e3o <\/span><span style=\"font-weight: 400;\">subjectAltName<\/span><span style=\"font-weight: 400;\"> extens\u00e3o do certificado.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\"subjectAltName = IP:172.23.99.49\"<\/span><\/p>\n<h4><span style=\"font-weight: 400;\"><strong>Etapa 7<\/strong> - Gerar o certificado de n\u00f3 usando as extens\u00f5es apropriadas<\/span><\/h4>\n<p><b>openssl x509 -req -in node1.csr -CA int1.pem -CAkey int1.key -CAcreateserial \\<\/b><\/p>\n<p><b>-CAserial intermediateCA.srl -out node1.pem -days 365\u00a0<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Isso \u00e9 semelhante \u00e0s etapas acima para gerar o certificado intermedi\u00e1rio.\u00a0<\/span><\/p>\n<h4><span style=\"font-weight: 400;\"><strong>Etapa 8<\/strong> &#8211; <\/span><span style=\"font-weight: 400;\">Gerar a cadeia de certificados\u00a0<\/span><\/h4>\n<p><b>cat node1.pem int1.pem &gt; chain.pem<\/b><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Concatene todos os certificados intermedi\u00e1rios e de n\u00f3 na ordem correta. O certificado raiz nunca \u00e9 inclu\u00eddo na cadeia. Essa cadeia permitir\u00e1 que o cliente verifique o certificado intermedi\u00e1rio em rela\u00e7\u00e3o ao certificado raiz.\u00a0<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<h4><span style=\"font-weight: 400;\"><strong>Etapa 9<\/strong> - Implementar os certificados\u00a0<\/span><\/h4>\n<ol>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Copie o certificado criptografado do n\u00f3 e o certificado de cadeia para a pasta da caixa de entrada em <\/span><b>..\/var\/lib\/couchbase\/inbox <\/b><span style=\"font-weight: 400;\">em rela\u00e7\u00e3o ao local onde os bin\u00e1rios s\u00e3o executados em seu sistema operacional e d\u00ea a eles as permiss\u00f5es apropriadas usando chmod a+x<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">node1.key e chain.pem s\u00e3o copiados para ..\/inbox\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">chmod a+x node1.key\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">chmod a+x chain.pem<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span style=\"font-weight: 400;\">Carregue-os no servidor<\/span>\n<ul>\n<li><span style=\"font-weight: 400;\">curl -X POST -data-binary ca.pem https:\/\/Administrator:password@172.23.99.49:8091\/controller\/uploadClusterCA<\/span><\/li>\n<li><span style=\"font-weight: 400;\">curl -X POST https:\/\/Administrator:password@172.23.99.49:8091\/node\/controller\/reloadCertificate<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Quando voc\u00ea carrega o certificado do cluster no Couchbase, ele \u00e9 verificado primeiro para garantir que seja um certificado X.509 v\u00e1lido. Em seguida, se os certificados por n\u00f3 n\u00e3o forem assinados pelo certificado do cluster, ser\u00e1 exibido um aviso para cada n\u00f3 durante a configura\u00e7\u00e3o. \u00c0 medida que os certificados por n\u00f3 s\u00e3o atualizados, de modo que sejam assinados pelo certificado do cluster, o aviso para cada n\u00f3 desaparece.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Uso de certificados em sua consulta N1QL CURL() ou no shell cbq\u00a0<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Para verificar os certificados que foram assinados por terceiros, a biblioteca usa os certificados armazenados no computador local. Para cada n\u00f3 de consulta em um cluster do Couchbase, a pasta ..\/\/var\/lib\/couchbase\/n1qlcerts cont\u00e9m os certificados necess\u00e1rios para CURL(). Se os certificados n\u00e3o forem encontrados nessa pasta, ser\u00e1 gerado um erro.  A op\u00e7\u00e3o cacert \u00e9 usada para passar um nome de certificado para a fun\u00e7\u00e3o. A passagem de um caminho causar\u00e1 um erro.<\/span><\/p>\n<p><b>select CURL(\"https:\/\/127.0.0.1:18091\/pools\",{<\/b><b>\"request\": \"GET\"<\/b><b>, \"user\": \"Bucketuser:password\", \"cacert\": \"ca.pem\"})<\/b><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0Para se conectar usando o shell, use as op\u00e7\u00f5es cacert, cert e key.<\/span><\/p>\n<p><b>.\/cbq -cacert ca.pem -cert chain.pem -key node1.key -engine https:\/\/172.23.99.49:18091<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Com este artigo, agora sabemos como configurar certificados X509 em nosso servidor e us\u00e1-los com a consulta N1QL e o shell CBQ. No pr\u00f3ximo artigo, vamos nos aprofundar nos certificados do lado do cliente.\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Authentication and authorization to the N1QL query service in Couchbase works in multiple ways &#8211;\u00a0 Passing credentials through a rest request &#8211; curl https:\/\/localhost:8093\/query\/service?pretty=true -d &#8220;statement=select * from system:keyspaces&#8221; -u Admin:pwd Passing credentials using the creds named parameter and\/or query [&hellip;]<\/p>","protected":false},"author":6882,"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,1813,1812],"tags":[],"ppma_author":[9057],"class_list":["post-9325","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-security","category-n1ql-query"],"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>Authentication Using Server-Side X.509 Certificates And N1QL<\/title>\n<meta name=\"description\" content=\"Learn how to setup X509 certificates on Couchbase Server and use them with the N1QL query and CBQ shell for authentication and authorization.\" \/>\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\/authentication-using-server-side-x-509-certificates-with-n1ql\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Authentication Using Server-Side X.509 Certificates And N1QL\" \/>\n<meta property=\"og:description\" content=\"Learn how to setup X509 certificates on Couchbase Server and use them with the N1QL query and CBQ shell for authentication and authorization.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/authentication-using-server-side-x-509-certificates-with-n1ql\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-10T15:38:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-01-31T21:04:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/09\/Authentication-using-Server-side-X.509-Certificates-with-N1QL.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"627\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Isha Kandaswamy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Isha Kandaswamy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/\"},\"author\":{\"name\":\"Isha Kandaswamy\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f236f76f209f447fbc8fd46d91eb7e52\"},\"headline\":\"Authentication Using Server-Side X.509 Certificates And N1QL\",\"datePublished\":\"2020-09-10T15:38:59+00:00\",\"dateModified\":\"2021-01-31T21:04:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/\"},\"wordCount\":2094,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Best Practices and Tutorials\",\"Security\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/\",\"name\":\"Authentication Using Server-Side X.509 Certificates And N1QL\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2020-09-10T15:38:59+00:00\",\"dateModified\":\"2021-01-31T21:04:38+00:00\",\"description\":\"Learn how to setup X509 certificates on Couchbase Server and use them with the N1QL query and CBQ shell for authentication and authorization.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#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\/authentication-using-server-side-x-509-certificates-with-n1ql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Authentication Using Server-Side X.509 Certificates And N1QL\"}]},{\"@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\/f236f76f209f447fbc8fd46d91eb7e52\",\"name\":\"Isha Kandaswamy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/e8464106b598ad96e4e1446687ce93f6\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9c28181876ed38a9634b77ddbe73ada95b0f82838c0cce722be73968630d41e1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9c28181876ed38a9634b77ddbe73ada95b0f82838c0cce722be73968630d41e1?s=96&d=mm&r=g\",\"caption\":\"Isha Kandaswamy\"},\"description\":\"Isha Kandaswamy is a Senior Software Engineer at Couchbase. Isha is responsible for the development of designing the different features and tools for the N1QL Query Language -SQL for Json. Also, Designing and implementing features and tools for the N1QL query language.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/isha-kandaswamy\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Autentica\u00e7\u00e3o usando certificados X.509 do lado do servidor e N1QL","description":"Learn how to setup X509 certificates on Couchbase Server and use them with the N1QL query and CBQ shell for authentication and authorization.","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\/authentication-using-server-side-x-509-certificates-with-n1ql\/","og_locale":"pt_BR","og_type":"article","og_title":"Authentication Using Server-Side X.509 Certificates And N1QL","og_description":"Learn how to setup X509 certificates on Couchbase Server and use them with the N1QL query and CBQ shell for authentication and authorization.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/authentication-using-server-side-x-509-certificates-with-n1ql\/","og_site_name":"The Couchbase Blog","article_published_time":"2020-09-10T15:38:59+00:00","article_modified_time":"2021-01-31T21:04:38+00:00","og_image":[{"width":1200,"height":627,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/09\/Authentication-using-Server-side-X.509-Certificates-with-N1QL.png","type":"image\/png"}],"author":"Isha Kandaswamy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Isha Kandaswamy","Est. reading time":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/"},"author":{"name":"Isha Kandaswamy","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f236f76f209f447fbc8fd46d91eb7e52"},"headline":"Authentication Using Server-Side X.509 Certificates And N1QL","datePublished":"2020-09-10T15:38:59+00:00","dateModified":"2021-01-31T21:04:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/"},"wordCount":2094,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Best Practices and Tutorials","Security","SQL++ \/ N1QL Query"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/","url":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/","name":"Autentica\u00e7\u00e3o usando certificados X.509 do lado do servidor e N1QL","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2020-09-10T15:38:59+00:00","dateModified":"2021-01-31T21:04:38+00:00","description":"Learn how to setup X509 certificates on Couchbase Server and use them with the N1QL query and CBQ shell for authentication and authorization.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#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\/authentication-using-server-side-x-509-certificates-with-n1ql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Authentication Using Server-Side X.509 Certificates And N1QL"}]},{"@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\/f236f76f209f447fbc8fd46d91eb7e52","name":"Isha Kandaswamy","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/e8464106b598ad96e4e1446687ce93f6","url":"https:\/\/secure.gravatar.com\/avatar\/9c28181876ed38a9634b77ddbe73ada95b0f82838c0cce722be73968630d41e1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9c28181876ed38a9634b77ddbe73ada95b0f82838c0cce722be73968630d41e1?s=96&d=mm&r=g","caption":"Isha Kandaswamy"},"description":"Isha Kandaswamy \u00e9 engenheira de software s\u00eanior da Couchbase. Isha \u00e9 respons\u00e1vel pelo desenvolvimento de diferentes recursos e ferramentas para a linguagem de consulta N1QL -SQL para Json. Al\u00e9m disso, projetar e implementar recursos e ferramentas para a linguagem de consulta N1QL.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/isha-kandaswamy\/"}]}},"authors":[{"term_id":9057,"user_id":6882,"is_guest":0,"slug":"isha-kandaswamy","display_name":"Isha Kandaswamy","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/9c28181876ed38a9634b77ddbe73ada95b0f82838c0cce722be73968630d41e1?s=96&d=mm&r=g","author_category":"","last_name":"Kandaswamy","first_name":"Isha","job_title":"","user_url":"","description":"Isha Kandaswamy \u00e9 engenheira de software s\u00eanior da Couchbase. Isha \u00e9 respons\u00e1vel pelo desenvolvimento de diferentes recursos e ferramentas para a linguagem de consulta N1QL -SQL para Json. Al\u00e9m disso, projetar e implementar recursos e ferramentas para a linguagem de consulta N1QL."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/9325","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\/6882"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=9325"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/9325\/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=9325"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=9325"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=9325"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=9325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}