1. 程式人生 > >雲開發的資料庫許可權機制解讀丨雲開發101

雲開發的資料庫許可權機制解讀丨雲開發101

在使用雲開發進行開發時,資料庫許可權是一個讓不少人困擾的部分,四種資料庫許可權,到底是什麼意思?其各自的許可權、應用場景都是什麼?大多數人對於這個機制,還是模糊的。為了幫助大家進行更好的開發,在涉及到具體的程式碼之前,我們先來了解一下雲開發的資料庫許可權機制。

一、為什麼會有許可權系統?

雲開發和其他常見的開發模式有一處很大的不同就是,其資料庫是可以在小程式端直接進行查詢,而無需通過服務端提供的特定 API 介面來完成資料查詢。這樣就會出現一個問題,這個資料到底誰能查?誰不能查?能查到資料的人,能修改資料麼?

在傳統的應用開發模式中,許可權的控制由服務端的後端介面完成,但是,在雲開發的模式中,已經不存在傳統的後端,因此,我們需要將許可權控制進行向前移,但前端的程式碼因為無法保證安全(前端的資料可能被篡改,不可信),因此,我們需要將許可權控制放在一個更加安全的地方,在經過多方權衡後,最終,雲開發資料庫就變成了雲開發控制檯中的一個選項。

二、雲開發許可權系統中的環境與角色

在雲開發的許可權中,我們會看到一些詞,比如建立者、所有人、管理端,這些詞應該如何理解呢?

其實這裡在命名上是有一些問題的,管理端和建立者、所有人並不是一個好的對比,如果將管理端更名為管理員,會更容易理解。

從許可權的層面上來看,從管理端到建立者再到所有人,許可權是依次收緊的。

管理端,或者叫管理員,其實便是指雲開發中的雲函式環境的執行許可權。因為是在雲函式中執行,安全係數較高,因而獲得了最高的許可權,也就是所謂的管理端許可權。這個許可權包括了對於所有的資料進行增、刪、改、查的能力。

建立者,則指的是建立某條資料的使用者,一般來說,是指在小程式端建立資料的使用者。資料和使用者之間的繫結是基於資料中的 _openid

來實現的,程式在執行中,當前使用者的 openid 與資料的_openid一致時,就認為這個使用者是資料的建立者。

所有人,指的是除了管理員以外的使用者,這個使用者一般而言,也是指小程式端的使用者。資料和使用者之間並不具備直接的關聯關係。使用者僅能通過資料庫許可權配置後的開放讀取到使用者。

三、關於四個不同的許可權

雲開發的資料庫許可權共四種,分別是:
1. 僅建立者可寫,所有人可讀
2. 僅建立者可讀寫
3. 僅管理端可寫,其他人可讀
4. 僅管理端可讀寫

這四種許可權各自對應著不同的場景,接下來,我們借一些例子,來看一看四種許可權的不同應用場景。

僅建立者可寫,所有人可讀

這種許可權是我們使用最多的許可權,特別是一些涉及到UGC的場景,我們一定會需要這個許可權,因為我們的需求是產生的內容所有人均可讀,寫的層面則允許資料的建立者可寫。

舉個例子,如果你做了一個類似朋友圈的應用,那麼你一定希望你的使用者發的朋友圈可以被其他使用者看到,但不能被其他使用者修改,不然就亂套了。

僅建立者可讀寫

這種許可權一般應用在一些使用者的個人隱私資訊的場景中。這些資訊希望使用者自己可以讀取,但其他使用者無法讀取,此時,我們便需要僅建立者可讀寫。

舉個例子,如果你做了個人相簿的功能,那麼你一定希望這個相簿是隻有你自己能看,而不是被所有人可以看到,因此,你需要選擇僅建立者可讀寫,而不是僅建立者可寫,所有人可讀。

僅管理端可寫,其他人可讀

如果描述這個許可權的特性,那麼就是管理員可以修改,其他人只能看。最適合的場景莫過於各種需要由開發者、平臺方管控的東西,比如新聞應用的輪播圖列表、商城首頁的活動資訊等等。這些資料的關鍵在於所有人都可以看到,同時,所有人也只能看到,不能修改,只能有管理員修改。

舉個例子,如果你做了一個電商小程式,那麼在你的小程式中,你一定希望首頁的推廣 Banner 由你自己控制,而不是由使用者自行控制,基於這樣的考慮,你就需要僅管理端可寫,其他人可讀的許可權。

僅管理端可讀寫

僅管理端可讀寫,你可以理解為只有雲函式中有資格獲取這個資料,其他的環境均不允許。這個許可權在某些特定的場景下非常有用,舉個例子,你的小程式的一些執行日誌,你希望在雲端可以檢視,同時,這個日誌不對普通使用者展現,這個時候就可以設定為僅管理端可讀寫。

舉個例子,如果你做了一個電商小程式,那麼內部的統計資料就需要設定為僅管理端可讀寫,這樣可以確保你的運營資料不會被普通使用者所讀取,儘可能避免資訊的洩露。

四、常見問題

為什麼沒有所有人可讀寫的許可權?

所有人可讀寫的資料庫應用場景並不多見,而且大多數時候、可以通過管理端完成繞過。不過,如果你真的有了這樣的場景,不妨思考一下,你的需求到底是什麼?是不是因為你的資料庫結構的不合理導致的需要所有人可讀寫?

所有人可讀寫資料會造成非常多的問題,比如資料原子化、資料鎖等問題,因此,在你實現資料所有人可讀寫時,一定要考慮場景。

能不能實現更加細粒度的許可權控制呢?

當然是可以的,實際上,雲開發的資料庫中每一條由小程式段完成新增的資料都有一個欄位 _openid,我們在進行資料庫查詢時,系統會自動替我們完成這個欄位的對比,如果對比不上,再去查詢對應集合的許可權控制,看是否給予了非建立者可讀寫的許可權。

你自己在實現時,可以在資料建立時,根據業務需求,在資料中加入對應的欄位,然後資料查詢時,基於欄位中的條件進行對比。

如果你對於雲開發有任何問題,都歡迎你在文章留言出留下你的疑問,我們將一一解答。

如果你想要了解更多關於雲開發CloudBase相關的技術故事/技術實戰經驗,請掃碼關注【騰訊云云開發】公眾號~

相關推薦

開發資料庫許可權機制解讀開發101

在使用雲開發進行開發時,資料庫許可權是一個讓不少人困擾的部分,四種資料庫許可權,到底是什麼意思?其各自的許可權、應用場景都是什麼?大多數人對於這個機制,還是模糊的。為了幫助大家進行更好的開發,在涉及到具體的程式碼之前,我們先來了解一下雲開發的資料庫許可權機制。 一、為什麼會有許可權系統? 雲開發和其他常見的開

開發資料庫VS傳統資料庫開發101

雲開發資料庫與傳統資料庫的不同 在小程式·雲開發中,最核心的便是三大元件:資料庫、雲端儲存和雲函式,從今天開始,我們將開始隔日更的專欄文章,雲開發101,在第一週,我們將從最最核心的資料庫開始說起。 雲開發資料庫簡介 首先,我們先來了解一下雲開發的資料庫,雲開發資料庫是由雲開發團隊提供給雲開發使用者的資料庫服

開發資料庫實現列表觸底自動載入功能開發101

雲開發資料庫之觸底自動載入 在前面的兩篇文章中,我們簡單的談了談雲開發資料庫與傳統資料庫的差異,以及雲開發資料庫中的許可權機制,今天我們來分享一些實用的程式碼,快速幫助大家完成自己的小程式的部分功能。 微信小程式實現觸底自動載入 在開發小程式類資訊流型別的應用時,我們經常會有一個需求,就是當用戶將列表滑動到列

​藉助開發資料庫實現小程式列表上拉重新整理功能開發101

上一期101專欄中,我們介紹瞭如何藉助雲開發資料庫實現小程式的列表觸底自動載入功能,相對應的,小程式列表上拉重新整理又該如何實現呢?本期專欄就來為大家解答。 原理說明 在小程式中,如果我們希望實現上拉重新整理的功能,則需要我們監聽小程式頁面的 onPullDownRefresh 事件,我們可以在這個方法中實現

原 Java開發企業級許可權管理系統 百度

推薦 Spring Boot/Cloud /Redis視訊: Java 微服務實踐 - Spring Boot Java 微服務實踐 - Spring Cloud redis高可用視訊 Spring原理解析視訊教程 首先先介紹一下spring secu

阿里巴巴下一代分析型資料庫AnalyticDB入選Forrester Wave™ 數倉評估報告 解讀

近期, 全球權威IT諮詢機構Forrester釋出"The Forrester WaveTM: CloudData Warehouse Q4 2018"研究報告,阿里巴巴分析型資料庫(AnalyticDB)成功入選 !AnalyticDB作為阿里巴巴自主研發的PB級實時雲資料倉庫,全面相容M

資料庫POLARDB優勢解讀之②——高性價比

現在做任何事情都要看投入產出比,對應到資料庫上其實就是價效比。POLARDB作為一款阿里自研資料庫,經常被問的問題是:效能怎麼樣?能不能支撐我的業務?價格貴不貴?很顯然,在早期調研階段,對穩定性、可靠性很難有量化的指標時,效能的好快就成了一個非常關鍵的決策因子。 POLARDB在一開始設計時就把效能作為一項

資料庫POLARDB優勢解讀之①——10分鐘瞭解

什麼是POLARDB POLARDB 是阿里雲自研的下一代關係型分散式資料庫,100%相容MySQL,之前使用MySQL的應用程式不需要修改一行程式碼,即可使用POLARDB。 POLARDB在執行形態上是一個多節點叢集,叢集中有一個Writer節點(主節點)和多個Reader節點,他們之間節點間通過分散

資料庫POLARDB優勢解讀系列文章之⑤——會話讀一致性

作者 武藏等 POLARDB架構 我們知道,POLARDB是一個由多個節點構成的資料庫叢集,一個主節點,多個讀節點。對外預設提供兩個地址,一個是叢集地址,一個是主地址,推薦使用叢集地址,因為它具備讀寫分離功能可以把所有節點的資源整合到一起對外提供服務。 MySQL讀寫分離解決和引入的問題 用過My

資料庫POLARDB優勢解讀系列文章之②——高性價比

現在做任何事情都要看投入產出比,對應到資料庫上其實就是價效比。POLARDB作為一款阿里自研資料庫,經常被問的問題是:效能怎麼樣?能不能支撐我的業務?價格貴不貴?很顯然,在早期調研階段,對穩定性、可靠性很難有量化的指標時,效能的好快就成了一個非常關鍵的決策因子。 POLARDB在一開始設計時就把效能作為一項

資料庫POLARDB產品解讀之二:如何做到高性價比

現在做任何事情都要看投入產出比,對應到資料庫上其實就是價效比。POLARDB作為一款阿里自研資料庫,經常被問的問題是:效能怎麼樣?能不能支撐我的業務?價格貴不貴?很顯然,在早期調研階段,對穩定性、可靠性很難有量化的指標時,效能的好快就成了一個非常關鍵的決策因子。 POLARDB在一開始設計時就把效能作為一項

小程式 開發 資料庫操作

開發者可以使用雲開發開發微信小程式、小遊戲,無需搭建伺服器,即可使用雲端能力。 雲開發為開發者提供完整的雲端支援,弱化後端和運維概念,無需搭建伺服器,使用平臺提供的 API 進行核心業務開發,即可實現快速上線和迭代,同時這一能力,同開發者已經使用的雲服務相互相容,並不互斥。

資料庫POLARDB優勢解讀系列文章之④——物理複製

本文作者 黃忠(AnySQL) 日誌是資料庫的重要組成部份,按順序以增量的方式記錄了資料庫上所有的操作,日誌模組的設計對於資料庫的可靠性、穩定性和效能都非常重要。 可靠性方面,在有一個數據檔案的基礎全量備份後,對執行中的資料庫來說,日誌檔案的重要性大於資料檔案,只要操作記錄到日誌中並完成落盤,就等於操作完成

小程式開發·資料庫

在雲控制檯操作雲資料庫,即建立資料庫和插入資料等操作。 雲開發資料庫提供的資料型別:string、number、object、array、bool、GeoPoint(地理位置點)、Date(時間)、Null 其中的Date表示時間,精確到毫秒。小程式端用Javascrip

深入解讀阿里資料庫POLARDB核心功能會話讀一致性

POLARDB架構 我們知道,POLARDB是一個由多個節點構成的資料庫叢集,一個主節點,多個讀節點。對外預設提供兩個地址,一個是叢集地址,一個是主地址,推薦使用叢集地址,因為它具備讀寫分離功能可以把所有節點的資源整合到一起對外提供服務。 MySQL讀寫分離解決和引入的問題 用過MySQL的都知道,

解讀NoSQL最新現狀和趨勢:NoSQL資料庫將成重要增長引擎

NoSQL最早起源於1998年,但從2009年開始,NoSQL真正開始逐漸興起和發展。回望歷史應該說NoSQL資料庫的興起,完全是

開發常用資料結構設計剖析開發101

雲開發常用資料結構設計 在使用雲開發進行產品開發的時候,我們常常需要思考,我們的應用的資料結構應該如何設計,今天我們來看一些在進行應用開發時常見的一些場景的資料結構,來幫助你更好的理解雲開發,以及不同場景下雲開發的應用。 場景一:使用者個人資訊表 功能:判斷使用者是否註冊/留存使用者資訊以備查詢 在絕大多數場

用【庫存】看懂開發資料庫事務

####在正常使用資料庫(CRUD)的情況下,這些操作都會順利進行所有資料都會被成功更新,由於某些特定的業務場景,需要進行一系列的操作,在這過程中必須保證每一步的操作都正常執行,如果任何一個環節出了差錯,比如更新庫存資訊發生異常,這終將會導致資料庫的資訊混亂而不可預測,資料庫事務正是用來保證這種一系列操作的穩

如何基於 k8s 開發高可靠服務?容器牛人有話說

容器雲?? k8s 是當前主流的容器編排服務,它主要解決「集群環境」下「容器化應用」的「管理問題」,主要包括如下幾方面:?? 容器集群管理 編排? 調度? 訪問? ? 基礎設施管理 計算資源? 網絡資源? 存儲資源?? k8s 的強大依賴於它良好的設計理念和抽象,吸引了越來越多的開發者投入到 k8

開發自動拉群微信控系統,一鍵全自動拉群

target parse mes 是否 中文 number master 數字 ttr 微信自動拉群雲控系統源碼,全自動一鍵拉群。自動統計新加的好友,自動將所有新加好友一鍵拉群。服務器端下發群二維碼,手機端一鍵拉群。全自動大批量,同時拉群。 在系統的開發實現過程中,除了服