成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Docker 私有注冊(cè)中心身份認(rèn)證

klinson / 3351人閱讀

摘要:考慮到這一點(diǎn),我們花費(fèi)了一些時(shí)間審查了我們維護(hù)的多種系統(tǒng),并在這星期,我給我們的私人注冊(cè)中心設(shè)置了添加身份認(rèn)證的目標(biāo)。你也許知道,注冊(cè)沒有提供身份認(rèn)證的方法。授權(quán)響應(yīng)觸發(fā)客戶端回應(yīng)一組使用基本身份驗(yàn)證的憑據(jù)。

  

注:原文作者是 Alex Ianchici,原文地址是 Docker private registry authentication

安全已經(jīng)融入了我們的生活。我們鎖門,使用密碼保護(hù)我們的銀行信息,但是通常密碼如此復(fù)雜以至于造成我們很容易忘記它。用常識(shí)來保護(hù)系統(tǒng)的安全是良好的實(shí)踐。這真的很容易呈現(xiàn),因?yàn)樗且粋€(gè)內(nèi)部的系統(tǒng),沒有必要啟用身份認(rèn)證以及安全傳輸,但在我們當(dāng)前的遠(yuǎn)程工作時(shí)代,內(nèi)部網(wǎng)絡(luò)可能十分廣泛。

考慮到這一點(diǎn),我們花費(fèi)了一些時(shí)間審查了我們維護(hù)的多種系統(tǒng),并在這星期,我給我們的私人 Docker 注冊(cè)中心設(shè)置了添加身份認(rèn)證的目標(biāo)。你也許知道,Docker 注冊(cè)沒有提供身份認(rèn)證的方法。因此我們決定早期的方案就是在我們的鏡像倉庫前面加一個(gè)身份認(rèn)證的代理。在我們的案例中,我們決定通過 SSL 使用 Nginx 并加上一個(gè)內(nèi)部身份認(rèn)證 API。

該解決方案的幾個(gè)優(yōu)勢(shì):

允許我們使用我們內(nèi)部的身份驗(yàn)證 API

可以給其他系統(tǒng)重復(fù)使用身份認(rèn)證

可以通過 Docker 容器實(shí)現(xiàn)(我們使用的容器數(shù)量小于 3 個(gè))

我把一個(gè)簡單的身份認(rèn)證服務(wù)和一個(gè) Nginx 容器放在一起,我們可以在 github 上獲取可用的版本(https://registry.hub.docker.com/u/opendns)。

簡單的基礎(chǔ)身份認(rèn)證服務(wù)

作為 Nginx 代理容器的一個(gè)參考,我們使用 NodeJS 構(gòu)建了一個(gè)身份認(rèn)證 API,非常容易的創(chuàng)建了一個(gè)基礎(chǔ)身份認(rèn)證服務(wù)。所有我們所需要做的就是創(chuàng)建一個(gè)真正簡單的 server.js,使用 htpasswd utility 生成一個(gè)資格證書文件,并且在一個(gè) Docker 容器中封裝,我們可以創(chuàng)建如下 Dockerfile:

FROM google/nodejs 
ADD . /app 
WORKDIR /app 
RUN npm install http-auth 
EXPOSE 8000 
ENV NODE_PATH /data/node_modules/ 
CMD ["node", "server.js"]

然后我們測(cè)試并部署我們的服務(wù):

ubuntu@trusty-64:/basic-auth# docker build -t opendns/basic-auth-service . 

ubuntu@trusty-64:/basic-auth# docker run --name simple-auth opendns/basic-auth-service 

ubuntu@trusty-64:/basic-auth# docker inspect --format "{{ .NetworkSettings.IPAddress }}" simple-auth 
172.17.0.40 

ubuntu@trusty-64:/basic-auth# curl 172.17.0.40:8000 
401 Unauthorized 

ubuntu@trusty-64:/basic-auth# curl -u testuser:testpassword 172.17.0.40:8000 
User authenticated successfully

你可以在這里找到基礎(chǔ)身份認(rèn)證服務(wù)的所有示例代碼,可用的容器在這里。

Nginx 身份認(rèn)證代理

Nginx 代理的關(guān)鍵部分是配置文件:

# define an /auth section to send the request to an authentication service 

location = /auth { 
    proxy_pass {{auth_backend}}; 
    proxy_pass_request_body off; 
    proxy_set_header Content-Length ""; 
    proxy_set_header X-Original-URI $request_uri;
    proxy_set_header X-Docker-Token ""; 
} 

# use the auth_request directive to redirect all requests to the /auth section above 

location / { 
    proxy_pass {{backend}}; 
    auth_request /auth; 
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 
    proxy_buffering off; 
}

使用了 http_auth_request 模塊發(fā)送用戶,使用 proxy_pass 指令轉(zhuǎn)發(fā)請(qǐng)求到我們簡單身份認(rèn)證服務(wù)處理,返回 200 或是 401。 401 授權(quán)響應(yīng)觸發(fā) Docker 客戶端回應(yīng)一組使用基本身份驗(yàn)證的憑據(jù)。一旦證書被接受,API 將返回 200。Nginx 可以發(fā)送請(qǐng)求到私有注冊(cè)中心,把這兩個(gè)容器放在一起:

ubuntu@trusty-64:/nginx-auth-proxy# docker run -d --name hello-world hello-world  # run a simple web server that prints out “Hello world” 

ubuntu@trusty-64:/nginx-auth-proxy# docker inspect --format "{{ .NetworkSettings.IPAddress }}" hello-world 
172.17.0.41 

ubuntu@trusty-64:/nginx-auth-proxy# docker run -d -e AUTH_BACKEND=http://172.17.0.40:8000 -e BACKEND=http://172.17.0.41:8081 -p 0.0.0.0:8080:80 nginx-auth 

ubuntu@trusty-64:/nginx-auth-proxy# curl 0.0.0.0:8080 
 
401 Authorization Required 
 

401 Authorization Required


nginx/1.6.1
ubuntu@trusty-64:/nginx-auth-proxy# curl -u testuser:testpassword 0.0.0.0:8080 Hello world

唯一剩下的事情是給這些容器添加 SSL 證書,然后你就可以好好的玩耍了。你可以在這里找到 Nginx 身份認(rèn)證代理的代碼,在這里是可用的容器。使用這個(gè)方案需要注意幾件事:

使用基礎(chǔ)認(rèn)證意味著每個(gè)請(qǐng)求都將訪問身份認(rèn)證 API

基礎(chǔ)認(rèn)證意味著你的證書不受阻礙的發(fā)送,除非你使用 SSL 加密了你的連接。注意:永遠(yuǎn)不要在沒有 SSL 的情況下發(fā)送基礎(chǔ)認(rèn)證證書。Docker 的客戶端和注冊(cè)中心不會(huì)接受 HTTP 方式的基礎(chǔ)認(rèn)證

訪問私有注冊(cè)中心需要對(duì)到身份認(rèn)證代理的請(qǐng)求做一定限制

該解決方案另外一個(gè)有趣的附帶影響就是,在私有注冊(cè)中心啟用 SSL 已經(jīng)降低了每個(gè) pull 請(qǐng)求花費(fèi)的時(shí)間,比如,除非在注冊(cè)中心的 URL 上指定了端口,否則在連接 80 端口之前,客戶端首先初始化嘗試連接 443 端口。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/39093.html

相關(guān)文章

  • Docker 私有注冊(cè)中心身份認(rèn)證

    摘要:考慮到這一點(diǎn),我們花費(fèi)了一些時(shí)間審查了我們維護(hù)的多種系統(tǒng),并在這星期,我給我們的私人注冊(cè)中心設(shè)置了添加身份認(rèn)證的目標(biāo)。你也許知道,注冊(cè)沒有提供身份認(rèn)證的方法。授權(quán)響應(yīng)觸發(fā)客戶端回應(yīng)一組使用基本身份驗(yàn)證的憑據(jù)。 注:原文作者是 Alex Ianchici,原文地址是 Docker private registry authentication 安全已經(jīng)融入了我們的生活。我們鎖門...

    Cc_2011 評(píng)論0 收藏0
  • 宜信開源|詳解PaaS平臺(tái)LAIN的功能和架構(gòu)

    摘要:是宜信公司大數(shù)據(jù)創(chuàng)新中心開發(fā)的開源平臺(tái)。為宜信大數(shù)據(jù)創(chuàng)新中心各個(gè)團(tuán)隊(duì)提供了統(tǒng)一的測(cè)試和生產(chǎn)環(huán)境,簡化了服務(wù)的部署與上線流程,也降低了運(yùn)維人員對(duì)系統(tǒng)管理的復(fù)雜度?;谌萜骷夹g(shù),面向多樣化的技術(shù)棧,并且天然隔離系統(tǒng)和應(yīng)用的依賴。 LAIN是宜信公司大數(shù)據(jù)創(chuàng)新中心開發(fā)的開源PaaS平臺(tái)。在金融的場景下,LAIN 是為解放各個(gè)團(tuán)隊(duì)和業(yè)務(wù)線的生產(chǎn)力而設(shè)計(jì)的一個(gè)云平臺(tái)。LAIN 為宜信大數(shù)據(jù)創(chuàng)新中...

    mist14 評(píng)論0 收藏0
  • 視頻私有云實(shí)戰(zhàn):基于 Docker 構(gòu)建點(diǎn)播私有云平臺(tái)

    摘要:本篇文章將會(huì)結(jié)合網(wǎng)易云信的實(shí)踐經(jīng)驗(yàn),以全局概述的方式帶大家認(rèn)識(shí)點(diǎn)播私有化平臺(tái)構(gòu)建的整體架構(gòu)面貌。基于構(gòu)建點(diǎn)播私有云平臺(tái)在具有以上優(yōu)勢(shì)的同時(shí),還具備資源彈性管理監(jiān)控完善部署簡易自動(dòng)化維護(hù)等特性。基于構(gòu)建平臺(tái),能夠自由管理創(chuàng)建云主機(jī)。 私有云是為一個(gè)客戶單獨(dú)使用而構(gòu)建的,因而提供對(duì)數(shù)據(jù)、安全性和服務(wù)質(zhì)量的最有效控制。前置條件是客戶擁有基礎(chǔ)設(shè)施,并可以使用基礎(chǔ)設(shè)施在其上部署應(yīng)用程序。其核心屬...

    MadPecker 評(píng)論0 收藏0
  • 視頻私有云實(shí)戰(zhàn):基于 Docker 構(gòu)建點(diǎn)播私有云平臺(tái)

    摘要:本篇文章將會(huì)結(jié)合網(wǎng)易云信的實(shí)踐經(jīng)驗(yàn),以全局概述的方式帶大家認(rèn)識(shí)點(diǎn)播私有化平臺(tái)構(gòu)建的整體架構(gòu)面貌?;跇?gòu)建點(diǎn)播私有云平臺(tái)在具有以上優(yōu)勢(shì)的同時(shí),還具備資源彈性管理監(jiān)控完善部署簡易自動(dòng)化維護(hù)等特性?;跇?gòu)建平臺(tái),能夠自由管理創(chuàng)建云主機(jī)。 私有云是為一個(gè)客戶單獨(dú)使用而構(gòu)建的,因而提供對(duì)數(shù)據(jù)、安全性和服務(wù)質(zhì)量的最有效控制。前置條件是客戶擁有基礎(chǔ)設(shè)施,并可以使用基礎(chǔ)設(shè)施在其上部署應(yīng)用程序。其核心屬...

    jkyin 評(píng)論0 收藏0
  • [Docker 官方文檔] 理解 Docker

    摘要:將一個(gè)輕量級(jí)的容器虛擬化平臺(tái)和一組標(biāo)準(zhǔn)工作流程工具進(jìn)行集成,來幫助你方便地管理和部署應(yīng)用。主要包括哪些組件主要包括兩個(gè)組件開源的容器虛擬化平臺(tái)用于分享和管理容器的軟件即服務(wù)平臺(tái)。 【編者的話】本文來自 Docker 的官方文檔,詳細(xì)介紹了 Docker 的體系結(jié)構(gòu)、重要概念、內(nèi)部工作機(jī)理等內(nèi)容,推薦不了解 Docker 內(nèi)部原理的同學(xué)閱讀。 什么是 Docker? Docker 是...

    cncoder 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<