成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用Sidecar安全代理保護Jaeger用戶界面

譯文
安全 應用安全
您將學習到如何使用Sidecar安全代理來提高應用程序的安全性能,并能防止諸如暴力破解等類型的攻擊。

【51CTO.com快譯】您將學習到如何使用Sidecar安全代理來提高應用程序的安全性能,并能防止諸如暴力破解等類型的攻擊。

在Jaeger的產品部署中,我們限制訪問Jaeger的查詢服務,包括用戶界面(UI),是非常有益的。例如,您可能有各種內部安全的要求,只允許某些群組能夠訪問跟蹤數據,或者您可能將Jaeger部署到了公有云之上。在真正的微服務(microservices)方式里,一種可能的方法是給Jaeger查詢服務添加一個Sidecar作為安全代理。各種入向請求都被傳遞到我們的Sidecar,而非直接到達Jaeger的查詢服務上。而Sidecar將負責執(zhí)行各種身份驗證和授權的限制。

如上圖所示:傳入的HTTP請求到達路徑(route)①,它使用內部服務②來進行解析,并與安全代理③進行通信。一旦請求通過驗證,且所有安全的限制得到了滿足,則該請求就到達Jaeger④。

出于演示的目的,我們將使用Keycloak(譯者注:Keycloak是一個為瀏覽器和RESTful Web服務提供SSO的集成)作為自己的安全解決方案,當然其他任何安全代理也都適用于這個理念。當然如果您并不修改Red Hat的SSO(Single Sign-On),這個演示也能夠運作。因此對于本次操作練習,我們需要如下:

  • 一臺Keycloak(或是Red Hat的SSO)服務器的運行實例。我們定義它的位置為$ { REDHAT_SSO_URL }
  • 一個OpenShift的集群,我們將用來運行Jaeger的后端組件。它就像oc cluster up一樣容易
  • 一份Jaeger OpenShift產品模板的本地克隆

注意:我們并不會試圖對組件之間(比如說從代理到收集器)的通信進行安全加固。而對于此類場景,我們完全可以使用其他技術來實現,例如相互間使用證書來進行認證,采用istio(譯者注:istio是一個開源項目,提供統一的連接、安全、管理和監(jiān)控微服務),或其他類似的工具。

準備Keycloak

對于該演示,我們將直接在主機上通過Docker來運行Keycloak。這是為了強調Keycloak并不需要像我們的Jaeger后端那樣運行在同一個OpenShift集群之上。

下面的命令用來在主機上啟動一個合適的Keycloak服務器。如果你已經有了自己的Keycloak或Red Hat的SSO服務器的話,則完全跳過這一步驟。

  1. docker run --rm --name keycloak-server -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=password -p 8080:8080 jboss/keycloak 

一旦Keycloak服務器啟動并運行,我們就可以創(chuàng)建一個Jaeger的域(realm)了:

1. 請使用用戶名:admin和密碼:password,登錄到Keycloak(http://<YOUR_IP>:8080/auth/admin/master/console)。

2. 在左上角Select realm中用鼠標點擊Add realm。將其命名為jaeger,然后點擊Create。

3. 在Clients上,點擊Create,將proxy-jaeger設置為名稱并保存它。

4. 設置Access Type為confidential,并用*代表Valid Redirect URIs,并保存之。您可能需要在生產環(huán)境中進行微調,否則可能會暴露出已知的“未驗證的重定向和轉發(fā)”(Unvalidated Redirects and Forwards,譯者注:源自OWASP TOP10 2010的A10)攻擊。

5. 打開Installation選項卡并選擇Keycloak OIDC JSON,然后復制其顯示的JSON。如下所示,不過auth-server-url和secret的值會有所不同。

  1.   "realm""jaeger", 
  2.   "auth-server-url""http://192.168.2.111:8080/auth", 
  3.   "ssl-required""external", 
  4.   "resource""proxy-jaeger", 
  5.   "credentials": { 
  6.     "secret""7f201319-1dfd-43cc-9838-057dac439046" 
  7.   } 

最后,讓我們創(chuàng)建一個角色和用戶,使得我們能夠登錄Jaeger的查詢服務:

1. 在左下側菜單-Configure的下面,請打開Roles頁面,然后單擊Add role。

2. 將角色的名稱設置為user,并點擊Save。

3. 在左下側菜單-Manage的下面,請打開Users頁面,然后單擊Add user。

4. 按照您的設想去填寫該表格,并將Email verified設置為ON,在并點擊Save。

5. 為該用戶打開Credentials選項卡,并設置一個(臨時的或非臨時的)密碼。

6. 打開該用戶的Role mappings選項卡,從Available Roles列表中選擇角色為user,再點擊Add。

準備OpenShift

對于該演示,我們假設您已經有一個OpenShift集群正在運行了。如果還沒有的話,那么您可能需要參考minishift之類的工具了(譯者注:minishift是一個通過虛擬機來模擬OpenShift集群的工具)。如果您正在運行最新版本的Fedora、CentOS或Red Hat Enterprise Linux,您可能需要安裝包origin-clients,并運行oc cluster up --version=latest。這樣您就能有一個基本的、運行在本地的OpenShift集群。

為了方便演示,我們將添加cluster-admin的權限給developer用戶。同時我們創(chuàng)建如下的Jaeger命名空間:

  1. oc login -u system:admin 
  2. oc new-project jaeger 
  3. oc adm policy add-cluster-role-to-user cluster-admin developer -n jaeger 
  4. oc login -u developer 

準備Jaeger OpenShift模板

我們將使用Jaeger OpenShift產品模板(https://github.com/jaegertracing/jaeger-openshift/blob/master/production/jaeger-production-template.yml)作為開始:克隆整個存儲庫,或者得到本地版本的模板。

第一步是添加sidecar容器到query-deployment對象里。在containers列表下,我們指定了jaeger-query之后,就可以添加如下的sidecar代碼:

  1. - image: jboss/keycloak-proxy 
  2.           name: ${JAEGER_SERVICE_NAME}-query-security-proxy 
  3.           volumeMounts: 
  4.           - mountPath: /opt/jboss/conf 
  5.             name: security-proxy-configuration-volume 
  6.           ports: 
  7.           - containerPort: 8080 
  8.             protocol: TCP 
  9.           readinessProbe: 
  10.             httpGet: 
  11.               path: "/" 
  12.               port: 8080 

注意:該容器將volumeMount的名稱指定為security-proxy-configuration-volume,我們將使用它來存儲代理的配置文件。您可以在spec/template/spec節(jié)點下為query-deployment指定容量,并同樣設定dnsPolicy的屬性(它應該是在前續(xù)的代碼片段中):

  1. volumes: 
  2.           - configMap: 
  3.               name: ${JAEGER_SERVICE_NAME}-configuration 
  4.               items: 
  5.                 - key: proxy 
  6.                   path: proxy.json 
  7.             name: security-proxy-configuration-volume 

現在,我們需要來指定具有代理配置條目的ConfigMap。要做到這一點,我們應當給該模板添加一個新的頂層項目。在這里,我們建議您將其放置得越接近于其被使用之處越好。例如,就放在query-deployment的前面:

  1. - apiVersion: v1 
  2.   kind: ConfigMap 
  3.   metadata: 
  4.     name: ${JAEGER_SERVICE_NAME}-configuration 
  5.     labels: 
  6.       app: jaeger 
  7.       jaeger-infra: security-proxy-configuration 
  8.   data: 
  9.     proxy: | 
  10.       { 
  11.           "target-url""http://localhost:16686", 
  12.           "bind-address""0.0.0.0", 
  13.           "http-port""8080", 
  14.           "applications": [ 
  15.               { 
  16.                   "base-path""/", 
  17.                   "adapter-config": { 
  18.                     "realm""jaeger", 
  19.                     "auth-server-url""${REDHAT_SSO_URL}", 
  20.                     "ssl-required""external", 
  21.                     "resource""proxy-jaeger", 
  22.                     "credentials": { 
  23.                       "secret""THE-SECRET-FROM-INSTALLATION-FILE" 
  24.                     } 
  25.                   } 
  26.             , 
  27.             "constraints": [ 
  28.                       { 
  29.                           "pattern""/*", 
  30.                           "roles-allowed": [ 
  31.                               "user" 
  32.                           ] 
  33.                       } 
  34.                   ] 
  35.               } 
  36.           ] 
  37.       } 

請注意:我們只允許具有user角色的用戶登錄我們的Jaeger用戶界面。在真實的場景中,您可能想要調整之,以適應您自己的設置。例如,您的用戶數據可能來自LDAP,而您只想允許來自特定LDAP組的用戶去訪問Jaeger的用戶界面。

各個credentials中的secret應當與我們從本練習最開始的Keycloak中所獲得的secret相匹配。頗具好奇心的讀者您也許會注意到,我們在auth-server-url屬性下所提到了模板參數REDHAT_SSO_URL。改變您的Keycloak服務器,或是我們指定一個模板參數,都能允許我們在部署時對它進行設置。在該模板的parameters部分,我們可以添加以下屬性:

  1. - description: The URL to the Red Hat SSO / Keycloak server 
  2.   displayName: Red Hat SSO URL 
  3.   name: REDHAT_SSO_URL 
  4.   required: true 
  5.   value: http://THE-URL-FROM-THE-INSTALLATION-FILE:8080/auth 

可見這個值應該是一個您的瀏覽器和sidecar都能訪問到的位置,就像您主機的局域網IP地址(192.x.10.x)一樣。顯然,使用Localhost/127.x是無法工作的。

作為最后一步,我們需要更改服務引導請求到端口8080(即為代理)上,而不是16686。你可以更改服務名為query-service的屬性targetPort,將其設置到8080:

  1. - apiVersion: v1 
  2.   kind: Service 
  3.   metadata: 
  4.     name: ${JAEGER_SERVICE_NAME}-query 
  5.     labels: 
  6.       app: jaeger 
  7.       jaeger-infra: query-service 
  8.   spec: 
  9.     ports: 
  10.     - name: jaeger-query 
  11.       port: 80 
  12.       protocol: TCP 
  13.       targetPort: 8080 
  14.     selector: 
  15.       jaeger-infra: query-pod 
  16.     type: LoadBalancer 

作為參考,您可以在博客鏈接--https://github.com/jaegertracing/jaeger-openshift/blob/KeycloakSecuringUI/production/jaeger-production-template.yml里看到完整的模板文件。

部署

現在我們已經一切準備就緒了,那么就開始部署Jaeger到我們的OpenShift集群上吧。請您在前續(xù)步驟里存儲了YAML文件的相同目錄中,運行以下的命令。我們在此引用到的名稱是jaeger-production-template.yml:

  1. oc process -f jaeger-production-template.yml | oc create -n jaeger -f - 

在開始運行的頭幾分鐘內,如果pod的jaeger-query和jaeger-collector出現失敗的話并無大礙,Cassandra(譯者注:Cassandra是一套開源分布式數據庫管理系統,用于儲存特別大的數據)仍將會完成啟動。最終,該服務也會啟動并運行,如下圖所示。

一旦準備好了接收服務,請點擊路徑(route)的URL(https://jaeger-query-jaeger.127.0.0.1.nip.io)。一個由Keycloak服務器所提供的登錄界面就會呈現在您眼前。請使用您在前續(xù)步驟中設置好的憑證進行登錄,之后您就可以順利到達Jaeger的用戶界面了。

結論

在這個練習中,我們了解到了如何為Jaeger的查詢pod添加一個sidecar作為安全代理。它讓所有的入向請求都傳遞到該sidecar,而Keycloak的所有特性,例如:雙因素認證、服務帳戶、單點登錄、暴力攻擊保護、LDAP支持、等都仍然是透明可用的。

原文標題:Protecting Jaeger UI With a Sidecar Security Proxy,作者:Juraci Paixao Kroehling

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2024-11-20 12:17:04

2015-03-18 10:36:33

2012-08-01 10:47:59

2012-08-08 14:57:00

2011-03-01 16:37:29

2014-03-03 09:50:59

Windows XP

2009-06-19 13:03:31

JavaFX

2009-03-09 09:39:00

2021-04-16 10:31:56

數據數據安全個人信息安全

2016-08-02 17:08:46

2010-10-26 16:11:18

虛擬桌面環(huán)境數據安全

2014-02-20 15:00:48

MetroWindows用戶

2010-09-17 20:40:09

2022-09-15 10:44:42

SidecarIstioeBPFizer

2018-08-04 07:56:03

云安全網絡安全信息安全

2025-06-12 08:15:24

2020-09-15 10:28:42

Kubernetes容器

2011-04-14 18:13:37

Imperva文件保護

2010-09-29 10:09:41

2011-08-19 11:12:04

IIS Web應用池應用池
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲二区在线 | 99视频在线播放 | 一区二区三区视频在线 | 狠狠的干| 91精品久久久久久久久久 | 亚洲不卡在线观看 | 99福利视频 | 成人激情视频免费观看 | 日韩在线观看视频一区 | 国产精品不卡一区二区三区 | 激情毛片 | 凹凸日日摸日日碰夜夜 | 男人天堂色 | 99re视频在线| 日韩在线中文字幕 | 久久久久综合 | 一区二区三区视频免费观看 | 精品国产一区二区三区免费 | 亚洲最新在线视频 | 色男人的天堂 | 国产自产c区 | 久久精品小视频 | 欧美福利三区 | 在线一级片 | 免费一级欧美在线观看视频 | 一级黄色录像片子 | 亚洲电影在线播放 | 欧美一区日韩一区 | 精品久久99 | 中文字幕日本一区二区 | 国产精品亚洲精品 | 91福利在线观看视频 | 成年免费大片黄在线观看岛国 | av在线免费播放 | 亚洲精品一二三 | 国产亚洲一区精品 | 精品99在线 | 国产精品自拍视频 | 久久久久国产精品 | 天天操天天干天天透 | 羞羞在线观看视频 |