精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

淺談微服務架構中的鑒權體系

開發(fā) 開發(fā)工具
在微服務架構中,有一個核心的問題是處理好“集權”(中心化)和“放權”(去中心化)的關系。雖然微服務的主旋律是把數(shù)據(jù)和業(yè)務拆成小而獨立的模塊,但我們仍然需要一個強力的中央安保體系來確保“數(shù)據(jù)分散,權限集中”。

在微服務架構中,有一個核心的問題是處理好“集權”(中心化)和“放權”(去中心化)的關系。雖然微服務的主旋律是把數(shù)據(jù)和業(yè)務拆成小而獨立的模塊,但我們仍然需要一個強力的中央安保體系來確保“數(shù)據(jù)分散,權限集中”。這一篇就談談微服務架構中的鑒權體系。

身份認證

身份認證(Authentication)的目的是證明“你是你(所號稱的那個人)”。

要證明這一點,你必須掌握一個只有你自己和認證機構才知道的機密信息。在現(xiàn)實中,這個信息可能是 DNA、指紋、虹膜這樣的生物識別特征,但由于這種特征跟人身直接綁定且又不可修改,一旦泄露,可能被持續(xù)冒用,造成不可挽回的嚴重后果,所以現(xiàn)實中較少采用這些生物識別特征作為識別之用。

如果不采用機密信息作為判斷標準,就需要一個持續(xù)的、不易偽造的“證明材料”。在中國,這個證明材料就是戶口或身份證。中國對公民信息的登記相對嚴格,所以會在小孩出生的時候要求把身份信息登記到戶口之中,形成身份證明,跟隨一生。在需要證明“你是你”的時候,拿出身份證就行了。

[[216641]]

(生物特征不可廢棄,所以我們必須把它包一層,形成證明材料和對應的 Persona)

與生物識別特征不同的是,身份證如果丟失,從理論上說,應該可以掛失并且讓其失效,然后辦理一張新的身份證。不過,設計我國身份證的機構和供應商也許沒有考慮到這個問題,或者考慮到現(xiàn)實情況太復雜,導致身份證無法掛失,丟失的身份證仍然具備證明效力,但這個是后話了。

為了避免身份證被冒用,在對身份認證要求比較嚴格的場合(比如銀行),會附加一些別的檢查,比如對比照片等等。

那么,現(xiàn)在我們來對身份認證進行規(guī)劃。

  • 身份認證機構可以頒發(fā)兩個東西給用戶,作為身份認證的輸入:機密信息或證明材料。
  • 身份認證機構可以通過對比用戶提交和機構保存的機密信息來判斷用戶身份。
  • 身份認證機構可以通過檢查和對比用戶提交的證明材料來判斷用戶身份。
  • 如果需要,身份認證機構可能會附加別的驗證來增加認證可信度。
  • 用戶可以變更機密信息,避免冒用。
  • 用戶可以掛失證明材料,使證明材料失效,避免冒用。

身份認證中的機密信息在 Web 環(huán)境中通常以用戶名和密碼的形式存在。由于 HTTP 協(xié)議沒有“狀態(tài)”的概念,所以對于 Web 服務器來說,每次請求都是全新的體驗,都必須驗明請求者的正身。要做到這一點,客戶端可以在每次請求的時候都附上用戶名和密碼(或者別的憑據(jù)),表明身份。

可是,每次都發(fā)送用戶名和密碼增加了泄露風險,所以在第一次驗明正身(登錄)之后,服務器可以發(fā)給調用者一個“令牌”(Token)。這樣,后端的后續(xù)身份認證,無外乎就是把令牌換成“身份”(Identity)。這個令牌實際上就是前面說的證明材料。

我們應該盡量讓令牌不容易仿造,但是技術上無法做到完全杜絕。所以,在敏感操作的時候可能會附加一些別的驗證,比如再次輸入密碼或者用短信驗證碼做二次校驗,這也就是前面所說的附加驗證。

權限驗證

和身份認證相比,權限驗證(Authorization)要復雜一些。

身份認證的輸入,要么是用戶名和密碼(或別的身份憑據(jù)),要么是令牌,只需要通過一個檢查,就能輸出身份信息。而權限的驗證要檢查的是“某用戶能不能做某事情”,所以,至少需要有兩個輸入:“用戶身份”和“想要執(zhí)行的動作”。除了這兩個輸入之外,還需要有一個具體的“判斷規(guī)則”,驗證者才能根據(jù)規(guī)則,輸出“同意”或者“拒絕”。

在現(xiàn)實中,這個判斷規(guī)則有很多種可能。

  • 在等級森嚴的軍隊里面,所有的動作和文檔都有明確的“查閱級別”,而每個人也有自己的“查閱級別”。只有用戶的級別高于動作的級別,才能執(zhí)行這個動作。
  • 在分工明確的工廠里面,每個人都只負責自己的工作,那么,所有的動作和資源都按照不同的工種來進行分配。各工種只能執(zhí)行屬于自己負責范圍的動作,獲取屬于自己負責范圍的資源。
  • 在架構明確的公司里面,每個人都屬于公司行政架構中的一個節(jié)點,可以執(zhí)行屬于這個節(jié)點的動作,并且訪問這個節(jié)點及其下屬節(jié)點的信息。

在專家主導的醫(yī)院里面,所有人都圍繞專家的需要服務,而專家則為病人服務(執(zhí)業(yè))。根據(jù)專家的需要,同時保護敏感信息,我們可能會設置更加復雜的判斷規(guī)則,比如根據(jù)時間段、服務流程階段等來判斷,或者提供一個特定的委托授權的流程用于臨時開放權限。

不管怎么變,只要有了身份、動作和規(guī)則,我們就能做判斷。當然,如果規(guī)則要求我們核實部分數(shù)據(jù),我們還需要這部分的數(shù)據(jù)作輸入。不過,由誰來執(zhí)行這個判斷比較合適,值得我們探討一下。

舉一個生活中的例子。

有這么一家公司,在 A 市有個辦公室,辦公室有個戴經理。戴經理有一天興之所至,想起來要查一下員工老王的工資。他來到了 HR 部門,找到了 HR 主管,想要調老王的工資出來看看。

HR 看了看公司規(guī)定,經理只能看自己所轄辦公室的員工工資,然后又看了看戴經理,是負責成都的,再看看老王,是成都員工,然后,就把老王的工資調出來給了戴經理。戴經理看了,然后說,再給我看看老陳的工資啊。然后 HR 調出檔案一看,老陳是北京辦公室的,就拒絕了。

又有一天,員工老王也興之所至,想要查一下戴經理的工資。他也來到 HR 部門,找到 HR 主管,問戴經理的工資。HR 一看,你這不是經理啊,怎么能查別人工資呢,就直接拒絕了。

如果看這個例子,我們就會發(fā)現(xiàn),這個規(guī)則的檢查是 HR 做的。實際上,絕大部分非 IT 的業(yè)務流程中,權限的檢查都由信息的保管方來執(zhí)行。

我們當然也可以按照這個來建模,但是稍等,再深入分析一下。

 

  • 首先,“誰能看誰的工資”這個規(guī)則,是不是 HR 部門來決定的呢?不是。公司的規(guī)章制度決定了“誰能看誰的工資”,規(guī)章制度由公司管理者制定。
  • 然后,當公司制度需要調整的時候,是不是由 HR 部門來調整呢?不是。 還是由管理者來制定,然后由各個部門來執(zhí)行。各個部門實際上是收到了制度調整的結果,而不是自己去調整制度。
  • 最后,“誰能看誰的工資”這個規(guī)則,是不是 HR 的專業(yè)范圍?不是。只有“調出工資檔案”這個動作是 HR 的專業(yè)范圍,至于“誰能看”,其實跟 HR 的專業(yè)知識沒有直接關系。

[[216642]]

 


 

要理解最后這一點,我們可以看兩個場景。

  • 某 HR 換了一家新公司。現(xiàn)在這個新的公司很有意思,允許所有人看所有人的工資,層級也不同,規(guī)章完全不同,但 HR 仍然可以按照自己的專業(yè)來工作不受影響。不只是 HR,對其他部門的人來說也是如此。規(guī)章制度的變化,對它們的職責沒有實質的影響。
  • 某 HR 換了一家新公司。這家公司專門搞高精尖的研究,對于員工的信息和商業(yè)機密控制極其嚴格。只要有人來調取數(shù)據(jù),都必須經過專門的審核人員審核放行。這對 HR 的職責也沒有實質影響,只要能通過審核,照辦即可。審核人員也不知道 HR 具體的工作是什么,只知道規(guī)則要求檢查什么,就去檢查什么。

總結就是以下幾點。

  • 專業(yè)知識(領域邏輯、業(yè)務規(guī)則)和權限是相對獨立的東西。
  • 要運用專業(yè)知識,不需要知道權限。
  • 要檢查權限,不需要用到專業(yè)知識。

既然如此,為什么在現(xiàn)實中還是由專業(yè)人士來兼職檢查權限呢?這也許是因為對于很多公司來說,絕大部分的數(shù)據(jù)都沒有那么敏感,所以為了降低管理成本,絕大部分的數(shù)據(jù)訪問都沒有那么嚴格地用專職人員去檢查,而是由專業(yè)人士代勞。

了解了這些之后,我們就可以開始規(guī)劃了。

  • 權力機構會制定一套權限規(guī)則,并且可能調整這套規(guī)則。
  • 這套規(guī)則可能會用到一些外部的輸入,比如員工所在的辦公室。
  • 有了這套規(guī)則和查驗數(shù)據(jù)的權力,任何人都可以判斷一個動作是否合規(guī)。

這樣做的好處,就是業(yè)務變得非常純粹,而權限相關的東西完全挪出業(yè)務層面,即便業(yè)務或者權限需要頻繁變化,問題也不大。

說到這里,也順便拋一個待驗證的設想:不同公司的業(yè)務邏輯總是高度雷同,差別最大(妨礙復用)的其實是公司的管理體系。我們把組織結構和與之相關的安全權限單獨拎出來,也許可以更好地促進業(yè)務邏輯的復用。

鑒權服務

為了提升服務的效率,我們一般會希望盡早地做完身份認證和權限驗證。如果用戶執(zhí)行了越權操作,那我們應該及早中止訪問并返回錯誤提示。

前面提到,權限驗證的輸入之一是用戶身份,所以身份認證和權限驗證通常是前后腳來做。二者組合,形成鑒權服務(Auth Service)。鑒權服務負責維護令牌身份映射以及權限規(guī)則,它的輸入是“令牌”和“想執(zhí)行的動作”,輸出是“身份”和“是否允許執(zhí)行”。

幾個例子

現(xiàn)在,我們用這樣一個場景來實驗一下整個鑒權流程。

設有這么一個訂單管理系統(tǒng),其中有一個訂單查詢功能。其權限要求如下。

  • 買家只能看到自己下的訂單
  • 賣家只能看到下給自己的訂單
  • 賣家管轄多個小二,小二可以分組給不同的權限,有的只能看分配給自己的訂單,有的可以查看分配到自己組的訂單
  • 運營商可以看到所有訂單

要對這個權限體系進行建模,我們必須認識到,這些操作,雖然查看的都是訂單,但是因為是不同的業(yè)務上下文,表現(xiàn)到 API 呈現(xiàn)上也會有不同。

  • 買家看自己的訂單:/CustomerViewOrders
  • 賣家看自己的訂單:/MerchantViewOrders
  • 運營商看任意訂單:/AdminViewOrders

然后,我們可以制訂如下規(guī)則。

  • 所有這些 API 都要求用戶處于已登錄狀態(tài)
  • 對于 /CustomerViewOrders ,訪問者必須有 customer 身份
  • 對于 /MerchantViewOrders ,訪問者必須有 merchant 身份
  • 對于 /AdminViewOrders,要求當前用戶必須有 admin 身份

這樣,鑒權服務就可以根據(jù)身份、動作和規(guī)則三者來判斷訪問權限了。

[[216643]]

(圖片來自:http://t.cn/RHRujGG)

至于賣家給小二的權限分配,根據(jù)不同需要,我們可以選擇兩個方案。第一是讓賣家自己去處理這個細粒度的權限,形成自己的一套小的權限體系,這也意味著小二訪問的可能是因賣家中轉而暴露出來的新 API。第二是把這個細粒度的權限也建模到原來的權限體系里面,加入如下新的 API 和判斷規(guī)則。

小二查看訂單: /ClerkViewOrders,檢查:

  • 用戶必須是 clerk 身份
  • 用戶在組織結構上必須屬于某個 merchant
  • 如果用戶類別是 1,那么他可以查看所有分配到自己組內任意小二的訂單
  • 如果用戶類別是 2,那么他可以查看分配給自己的訂單

我們再來看另一個場景,查看員工信息。API 的和規(guī)則的設計如下。

  • 所有 API 要求用戶處于登錄狀態(tài)

員工查看自己的信息:/EmployeeViewOwnProfile(所有員工均可訪問)

員工查看其他員工的信息:/EmployeeViewProfile(所有員工均可訪問)

經理查看員工信息:/ManagerViewProfile(當前用戶必須為 manager 角色、請求中的員工必須屬于該 manager 負責的 location)

不同的 API 返回的數(shù)據(jù)可能有差別,比如看自己的信息可以看全,看別人的只能看名字、照片和聯(lián)系方式,經理則可以看所有人的完整信息,這由應用邏輯決定。

[[216644]]

(圖片來自:http://t.cn/RHRu1e3)

再來看一個醫(yī)院的。醫(yī)院有一點不同的是,病人和病歷實際上需要在多個部門之間周轉,而不同的角色處在不同部門的時候,其職能和權限會有變化。比如, 有時候實習醫(yī)生會守急診室,住院醫(yī)生不在的時候護士也需要代理執(zhí)行醫(yī)囑,職工可能會輪崗到不同部門,等等。

基于這樣一些假想場景,我們可能會有如下一些 API 和權限。

(1) 掛號處,要求用戶必須有 clerk 身份

  • 建檔:/RegistrationsCreateMedicalRecord
  • 掛號:/RegistrationsCreateVisit
  • 查看病歷(用于確認病人已建檔):/RegistrationViewMedicalRecord

(2) 門診部,要求用戶必須有 doctor 身份

  • 診斷:/OutPatientCreateDiagnosis
  • 開藥:/OutPatientCreatePrescription
  • 查看病歷:/OutPatientViewMedicalRecord

(3) 急診室,要求用戶必須有 doctor 身份

  • 查看病歷:/EmergencyViewMedicalRecord

(4) 住院部,要求用戶必須有 doctor 或者 nurse 身份

a.入院:/InPatientAdmitPatient

  • (僅 nurse 可以執(zhí)行入院)

b.日常檢查記錄:/InPatientCreateRoutineRecord

  • doctor 只能給自己分管的病人創(chuàng)建檢查記錄
  • nurse 只能給自己負責區(qū)域的病人創(chuàng)建檢查記錄

c.創(chuàng)建醫(yī)囑:/InPatientCreateOrder

  • doctor 只能給自己分管的病人創(chuàng)建醫(yī)囑
  • nurse 不能創(chuàng)建醫(yī)囑

d.出院:/InPatientDismissPatient

  • 僅 nurse 可以執(zhí)行出院

e.查看病歷:/InPatientViewMedicalRecord

  • doctor 只能查看自己分管病人的病歷

(5) 手術室,要求用戶必須有 doctor-surgeon 身份

  • 準備材料:/OpRoomPrepareMaterial
  • 記錄結果:/OpRoomCreateOpRecord

(6) 檢查部,要求用戶必須有 technician 身份

  • 錄入結果:/LabsCreateExaminationRecord
  • 查看病歷:/LabsViewMedicalRecord

(7) 藥房,要求用戶必須有 pharmacist 身份

  • 看處方:/PharmacyViewPrescription
  • 放藥:/PharmacyDeliverMedicine

上述 API 能訪問到的數(shù)據(jù)和權限主要根據(jù)部門來進行劃分,方便輪崗。比如,醫(yī)生在門診的時候,可以查看完整的病人病歷,但輪崗到掛號處的時候,雖然也查看病歷,但就只能查看最基本的個人信息了,用于給病人補辦卡片之類。

功能和數(shù)據(jù)權限

從上面幾個例子看來,我們通常可以把權限的驗證分成兩個步驟:先確定職能,然后確定職能作用范圍。

比如,先確定你能看訂單,然后確定你能看哪些訂單;先確定你能看工資,然后確定你能看誰的工資。再比如,某國法律規(guī)定,當一個案件發(fā)生在某地,警察來調查,但只有該轄區(qū)的警察有調查權,跨區(qū)域的案件必須交給聯(lián)邦警察。如此等等。

既然這兩步看上去分得很清楚,那么我們不妨給它們分別取名。用戶能不能執(zhí)行某個動作,使用某個功能,是功能權限,而能不能在某個數(shù)據(jù)上執(zhí)行該功能(訪問某部分數(shù)據(jù)),是數(shù)據(jù)權限。

促成這種拆分方式的原因可能有下面幾種。

  • 現(xiàn)實中,很多組織采取了這種“職能 + 組織節(jié)點”的形式來確定權限,所以這樣的拆分實際上為建模提供了方便。
  • 由于功能權限通常會直接對應應用的 API 列表,所以權限驗證可以及早失敗,而無需把數(shù)據(jù)取出來做對比,提升了鑒權的效率。
  • 方便我們把所有的功能 API 提取出來形成一個列表或者表格,可以更好地查看和管理權限。

此外,這種形式的權限管理還可以讓業(yè)務人員在不寫代碼的情況下對功能權限進行重新分配。如果涉及數(shù)據(jù)權限,則必然會有某種形式的判斷邏輯,寫代碼也就必不可少了。

話說回來,盡管這種拆分很常見,我們仍應該認識到這只是人為的一種拆分。二者都是權限驗證的一部分,都是為了回答“該用戶能不能做某件事”這個問題,本質沒變。

需要注意的是,在制定權限規(guī)則時,制訂者需要參考業(yè)務規(guī)則,但是反之則不然。業(yè)務規(guī)則可以在完全不了解權限驗證規(guī)則的情況下執(zhí)行。甚至,從理論上說,所有的業(yè)務單元都應該可以在完全沒有權限驗證的情況下“正常裸奔”,即假設所有人可以做所有事情,但業(yè)務應該被正常執(zhí)行,業(yè)務規(guī)則應該被正常遵守。用語言學的詞匯來說,就是在沒有權限驗證的情況下,業(yè)務數(shù)據(jù)中也許會有語義問題(semantic problem),但是不會有句法錯誤(syntax error)。

[[216645]]

鑒權體系回顧

我們來回顧一下這篇文章中提到的鑒權體系。

  • 身份認證。確認“你是你”,獲取你的身份信息。
  • 權限驗證。確認“你能做某件事”。

二者合稱為“鑒權”。身份認證輸入令牌,輸出身份。權限驗證輸入身份、動作(包括動作范圍),輸出“同意”或“拒絕”。我們希望身份和權限在一個體系內高度一致,所以,鑒權是一個半中心化的行為,權限規(guī)則在一個體系(比如組織、應用)內是中心化管理的。

權限的形成需要對業(yè)務知識的了解,但規(guī)則抽象出來之后,要使用它就不需要業(yè)務知識了。權限驗證的獨立,意味著我們把“權限規(guī)則”和“業(yè)務規(guī)則”拆成了兩個部分。前者擁抱變化,而后者追求穩(wěn)定;前者在意的是業(yè)務的意義,后者在意的是業(yè)務的邏輯。

為了適應現(xiàn)有組織形態(tài)和更清晰地展示權限信息,在給權限建模的時候我們常常會把它拆分成功能和數(shù)據(jù)權限兩種。我們應該認識到二者都是權限驗證的一部分,都是為了回答同一個問題:這個用戶能不能做某事。

從整個分析脈絡我們可以看到,這個鑒權體系是通用的。在設計任意一個系統(tǒng)的過程中,我們都應該注意盡量把安全相關的判斷和業(yè)務規(guī)則拆開對待,方便集中管理權限,把業(yè)務規(guī)則提純。

對于微服務架構來說,鑒權是一個重要的節(jié)點,它和應用場景密切結合,是安保的最后一道關口。在對權限進行建模的時候,我們應該尤其謹慎。希望這篇文章能給大家一些啟示。

【本文是51CTO專欄作者“ThoughtWorks”的原創(chuàng)稿件,微信公眾號:思特沃克,轉載請聯(lián)系原作者】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2021-04-06 09:43:41

微服務架構數(shù)據(jù)

2022-12-02 16:28:47

2025-07-30 09:15:22

2025-08-01 09:25:30

2022-05-31 08:36:41

微服務網關鑒權

2023-04-17 08:56:29

微服務鑒權業(yè)務

2014-07-10 11:34:05

2017-11-22 15:00:34

微服務基建API

2019-08-05 09:05:06

技術Docker軟件

2022-11-02 08:31:53

BFF架構App

2023-07-28 09:23:24

微服務架構

2019-09-18 16:52:58

hyperf微服務php

2019-09-29 10:29:02

緩存模式微服務架構

2021-08-17 10:37:10

分層設計領域劃分架構

2024-07-01 12:09:12

2025-01-08 09:23:03

2020-12-01 08:21:05

微服務監(jiān)控Kubernetes

2023-07-27 14:03:51

微服務

2024-01-26 14:35:03

鑒權K8sNode

2019-05-20 14:57:35

Tomcat容器安全
點贊
收藏

51CTO技術棧公眾號

91久久亚洲| 国产高清日韩| 欧美韩国一区二区| 91久久久久久久久久久| 免费中文字幕在线观看| 日韩成人av在线资源| 欧美亚洲国产一区在线观看网站| 影音欧美亚洲| 日日夜夜精品免费| 奇米四色…亚洲| 久久欧美在线电影| 中文天堂资源在线| 精品三级av| 制服丝袜国产精品| 日本一道本久久| av在线播放国产| 久久精品亚洲一区二区三区浴池| 91在线|亚洲| 青青草视频在线观看免费| 欧美二区不卡| 伊人久久精品视频| 一女三黑人理论片在线| 懂色av色香蕉一区二区蜜桃| 日韩欧美在线国产| 久草免费福利在线| 免费av不卡| 国产欧美中文在线| 狠狠色综合欧美激情| 国产精品无码天天爽视频| 性xx色xx综合久久久xx| 欧美富婆性猛交| 国语对白在线播放| 欧美www视频在线观看| 日韩麻豆第一页| 欧类av怡春院| youjizzjizz亚洲| 91精品国产综合久久久久久 | 国产精品精品国产| 影音先锋亚洲天堂| 亚洲激情精品| 欧美激情亚洲一区| 欧美人禽zoz0强交| 欧美激情四色| 久久天天躁狠狠躁老女人| 我不卡一区二区| 国产调教一区二区三区| 亚洲欧美国产精品专区久久| 成人在线视频免费播放| 极品尤物一区| 亚洲国产免费av| 亚洲高清无码久久| 卡通动漫国产精品| 亚洲黄色片网站| 亚洲国产第一区| 免费成人三级| 日韩精品免费在线| 国产精品亚洲无码| 深爱激情综合网| 亚洲欧洲一区二区三区在线观看| 泷泽萝拉在线播放| 蜜桃国内精品久久久久软件9| 亚洲精品自拍第一页| 欧美成人三级伦在线观看| 偷拍自拍一区| 亚洲天堂影视av| 91麻豆制片厂| 中文精品电影| 久久久欧美一区二区| 1级黄色大片儿| 石原莉奈一区二区三区在线观看| 国产成人综合av| 国产一区二区三区成人| 国产美女一区二区三区| 国产精品初高中精品久久| 色窝窝无码一区二区三区成人网站| 成人黄色av电影| 麻豆蜜桃91| 日韩在线免费电影| 亚洲自拍另类综合| 日韩一级在线免费观看| 人人精品久久| 欧美精品一区二区三区久久久 | 亚洲大奶少妇| 日韩电视剧在线观看免费网站| av网站免费在线播放| 精品久久影视| 欧美另类在线观看| 日本免费在线观看视频| 精品一区二区免费视频| 国产精品毛片一区视频| 阿v免费在线观看| 亚洲欧美电影院| 国产午夜伦鲁鲁| 国产91亚洲精品久久久| 欧美成人激情免费网| 大黑人交xxx极品hd| 日韩精品看片| 久久久在线观看| 最近中文字幕在线观看| 国产aⅴ精品一区二区三区色成熟| 麻豆传媒一区| 色www永久免费视频首页在线 | 一区免费观看视频| 91成人在线观看喷潮教学| 精品久久99| 日韩久久午夜影院| 久久久久久久久久久久国产| 日韩福利视频网| 国产精品福利视频| 日韩大片在线永久免费观看网站| 午夜国产精品影院在线观看| 中文字幕国产免费| 亚洲人成网77777色在线播放 | 日本一区二区精品| 丁香高清在线观看完整电影视频| 欧洲一区二区三区在线| 中文字幕天堂av| 亚洲激情中文在线| 国产精品久久久久久久app| www.久久成人| 国产精品萝li| 欧美日韩中文在线视频| 国产极品模特精品一二| xvideos成人免费中文版| 精品人妻一区二区三区免费看| 国产成人精品一区二区三区四区| 亚洲一区精彩视频| 最新欧美电影| 亚洲精品自产拍| 亚洲第一精品在线观看| 成人av高清在线| 妺妺窝人体色www看人体| 涩涩涩久久久成人精品| 中文字幕欧美视频在线| 国产91精品看黄网站在线观看| 99热国产精品| 亚洲精品写真福利| 国产曰肥老太婆无遮挡| 欧一区二区三区| 久久成人18免费网站| 一区二区三区免费观看视频| 中文一区在线播放| 亚洲成人福利在线观看| 精品国产一区二区三区久久久蜜臀| 97国产真实伦对白精彩视频8| 亚洲伦理在线观看| 亚洲永久免费视频| 日本50路肥熟bbw| 亚洲人人精品| 精品国产乱码久久久久久88av| a级片免费在线观看| 精品乱码亚洲一区二区不卡| 久久国产免费观看| 成人高清视频在线观看| 蜜桃传媒一区二区三区| 日本亚洲不卡| 国产成一区二区| av基地在线| 欧美精品日韩一本| 2021亚洲天堂| 成人美女在线视频| 国产男女无遮挡| 国产探花一区在线观看| 国产精品天天狠天天看| 日韩黄色影院| 精品国产自在久精品国产| 国产大片中文字幕| 91丨porny丨国产入口| 青青视频在线播放| 久久麻豆精品| 51成人做爰www免费看网站| 九色91在线| 亚洲免费一在线| 中文字幕有码视频| 亚洲欧美电影院| 最近日本中文字幕| 麻豆高清免费国产一区| www.亚洲成人网| 亚洲v天堂v手机在线| 国产精品亚洲美女av网站| 亚洲制服国产| 亚洲女人初尝黑人巨大| 亚洲综合免费视频| 天天操天天色综合| 成人一级片免费看| 国产jizzjizz一区二区| www.四虎成人| 亚洲老妇激情| 久久一区二区精品| 99精品国产九九国产精品| 久久青草福利网站| 日本网站在线免费观看视频| 日韩欧美在线综合网| 久久久久女人精品毛片九一| 国产精品第五页| 黄色录像a级片| 久久国产精品色| 亚洲国产精品久久久久婷蜜芽| 99热国内精品| 精品一区久久久久久| 日韩一区二区三区四区五区 | 亚洲人体影院| 久久精品人人爽| 精品av中文字幕在线毛片| 日韩视频国产视频| 国产情侣免费视频| 亚洲v精品v日韩v欧美v专区| 国产美女高潮视频| 久久综合av免费| 国产清纯白嫩初高中在线观看性色| 日本va欧美va精品| 国产日韩一区二区在线| 国产精品a级| 伊甸园精品99久久久久久| 亚洲美女15p| 国产美女99p| 日韩一二三区在线观看| 国产精品丝袜一区二区三区| 毛片无码国产| 2018日韩中文字幕| 欧美videos另类精品| 久久久国产精品视频| 9色在线观看| 亚洲深夜福利网站| 色wwwwww| 亚洲成人av在线| av网站在线观看免费| 5858s免费视频成人| 中文字幕永久在线观看| 欧美三级一区二区| 亚洲精品一区二三区| 欧美性jizz18性欧美| 福利一区二区三区四区| 亚洲韩国精品一区| 久久一二三四区| 亚洲一区在线观看视频| 欧美成人一二三区| 一区2区3区在线看| 久久中文字幕在线观看| 亚洲精品国产无天堂网2021 | 成人观看高清在线观看免费| 91精品国产66| 国产精品日韩精品| 国产精品一区二区免费福利视频 | 日韩国产亚洲欧美| 在线看国产一区| 日韩欧美国产另类| 欧美视频三区在线播放| 国产美女www| 欧美日韩视频一区二区| 国产孕妇孕交大片孕| 欧美一区二区三区四区久久| 精品国产伦一区二区三区| 日韩一级在线观看| 丰满人妻av一区二区三区| 精品国产乱码久久久久久久| 免费观看a视频| 日韩高清不卡av| 户外极限露出调教在线视频| 国产一区二区三区网站| 青青影院在线观看| 久久99热精品| 亚洲十八**毛片| 国产精品久久久久久久久久久久 | 精品亚洲aⅴ乱码一区二区三区| 国产精欧美一区二区三区白种人| 韩国女主播成人在线观看| 三级网站免费看| 成人美女在线观看| a级片在线观看| 亚洲色图第一区| 日韩aaaaaa| 欧美日韩一区在线| www.99视频| 亚洲视频网站在线观看| 麻豆网站在线看| 久久久久久久一区二区三区| 桃花岛tv亚洲品质| 成人欧美在线视频| 日韩有码一区| 在线国产精品网| 亚洲精品影院在线观看| 亚洲天堂av线| 国产成人综合在线观看| 欧美 日本 国产| 一色屋精品亚洲香蕉网站| 国产午夜视频在线| 欧美视频在线一区二区三区| av网站在线观看免费| 亚洲女人被黑人巨大进入| 成视频免费观看在线看| 97视频网站入口| 99久久99九九99九九九| 精品久久久久久中文字幕动漫| 久久国产成人午夜av影院宅| 被灌满精子的波多野结衣| 免费欧美日韩国产三级电影| 免费在线观看日韩av| 久久久久99精品国产片| 免费在线一区二区三区| 欧美日韩国产小视频在线观看| 女人18毛片水真多18精品| 最近2019中文字幕在线高清| 白浆在线视频| 亚洲专区中文字幕| 欧美一级本道电影免费专区| 一卡二卡三卡视频| 精品中文av资源站在线观看| 插吧插吧综合网| 香蕉久久一区二区不卡无毒影院| 亚洲一区二区人妻| 亚洲男人天堂视频| 丰满大乳少妇在线观看网站| 国产情人节一区| 蜜桃精品wwwmitaows| 999在线观看视频| 国产乱码字幕精品高清av | 日韩在线观看电影完整版高清免费悬疑悬疑| 日本aa在线观看| 国产麻豆成人精品| 国产精品久久久久久成人| 欧美色视频日本版| 蜜桃av噜噜一区二区三区麻豆| 日韩在线观看你懂的| 九九热线视频只有这里最精品| 国产综合av一区二区三区| 欧美xxx在线观看| 欧美国产日韩在线视频| 中文字幕欧美日本乱码一线二线| 亚洲影院在线播放| 日韩精品在线观看视频| 黄频免费在线观看| 狠狠爱一区二区三区| 亚洲麻豆一区| 欧美大喷水吹潮合集在线观看| 亚洲夂夂婷婷色拍ww47| 性生活黄色大片| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲欧美日韩一区| 一道本无吗一区| 深夜福利日韩在线看| 国产精品亲子伦av一区二区三区| 亚洲精品中字| 麻豆国产精品官网| 亚洲少妇xxx| 欧美一区二区视频网站| 国产在线一区二区视频| 91在线直播亚洲| 欧美精品偷拍| 永久免费未满蜜桃| 欧美日韩国产精品专区| 欧美日韩视频精品二区| 国产精品av电影| 成人羞羞动漫| 中文av字幕在线观看| 亚洲人成网站影音先锋播放| 精品二区在线观看| 91chinesevideo永久地址| 久久最新网址| 91亚洲精品久久久蜜桃借种| 亚洲精品亚洲人成人网| 天天色综合久久| 国产精品91在线观看| 久久中文视频| 午夜性福利视频| 福利视频一区二区| 91亚洲欧美| 3d动漫精品啪啪一区二区三区免费| 在线日本高清免费不卡| 蜜桃传媒一区二区亚洲av| 精品视频一区二区三区免费| 性xxxfreexxxx性欧美| 国产伦精品一区二区三毛| 亚洲欧美视频| www日韩在线| 亚洲电影免费观看高清完整版在线观看| 麻豆国产在线| 亚洲免费久久| 成人免费视频国产在线观看| 精品人妻一区二区三区潮喷在线| 日韩中文字幕在线观看| 中文字幕久久精品一区二区| 日韩 欧美 高清| 亚洲男人的天堂在线观看| 午夜激情在线视频| 91精品免费视频| 国产精品久久777777毛茸茸 | 在线看黄色av| 国产伦精品一区二区三| 蜜臀av一区二区在线免费观看| 久久久久久久国产精品毛片| 亚洲欧美日韩一区二区在线| 欧美精品三级在线| 成人中文字幕av| 亚洲高清不卡在线观看| 日本三级视频在线播放| 久久视频在线观看中文字幕| 极品销魂美女一区二区三区| 天天爽夜夜爽人人爽| 国产做受高潮69|