這篇文章主要介紹“Docker敏感信息怎么防止泄露”,在日常操作中,相信很多人在Docker敏感信息怎么防止泄露問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Docker敏感信息怎么防止泄露”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)主營(yíng)和平網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,APP應(yīng)用開發(fā),和平h5成都微信小程序搭建,和平網(wǎng)站營(yíng)銷推廣歡迎和平等地區(qū)企業(yè)咨詢
容器和Docker讓我們的日常更加便捷,但是同時(shí)也會(huì)很容易將一些信息不小心泄露給公眾造成安全問題。密碼,云憑證和SSH私鑰,如果配置不當(dāng),一不小心就會(huì)泄露。除非建立一套安全事件策略,綜合防護(hù),一些案例:
Codecov供應(yīng)鏈攻擊:
2021年4月1日,由于Codecov一個(gè)Docker文件配置失誤,攻擊者可以竊取憑據(jù)并修改客戶使用的Bash Uploader腳本。通過惡意代碼修改Bash Uploaders,并將環(huán)境變量和從一些客戶的CI/CD環(huán)境中收集的密鑰泄露給了一個(gè)受攻擊者控制的服務(wù)器。
受到該事件影響,HashiCorp用于發(fā)布簽名和驗(yàn)證的GPG密鑰被泄露,目前已經(jīng)采用輪換機(jī)制定期更換私鑰。
其他由于Docker Hub公共鏡像導(dǎo)致的泄露還包括(不限于):
AWS賬戶和憑據(jù),SSH私鑰,Azure密鑰,.npmrc令牌,Docker Hub賬戶,PyPI存儲(chǔ)庫密鑰,SMTP服務(wù)器認(rèn)證信息,eCAPTCHA密碼,Twitter API密鑰,Jira密鑰,Slack密鑰以及其他一些密鑰等。
DockerFile語法中常見的一個(gè)COPY方法:
FROM debian:buster COPY . /app
默認(rèn)情況下,該語句會(huì)將當(dāng)前目錄中所有內(nèi)容的復(fù)制到鏡像中。這些內(nèi)容中可能會(huì)包含敏感信息的文件:例如站點(diǎn).env。
一旦敏感信息,被放到Docker鏡像中,則任何可以訪問該鏡像的用戶都可以看到這些信息。為了防止由于COPY導(dǎo)致的敏感信息泄露:
限制復(fù)制內(nèi)容:只復(fù)制必須的特定文件或目錄。 例如,
COPY setup.py myapp/app。
.dockerignore:使用.dockerignore確保敏感文件不被復(fù)制到鏡像中去,一個(gè)典型的配置:
NOTICE README.md LICENSE AUTHORS.md CONTRIBUTING.md .vscode/ vendor/ env/ ENV/ build/ dist/ target/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ Dockerfile .git .editorconfig *.egg-info/ .installed.cfg *.egg *.manifest *.spec .gcloudignore .gitignore .tox/ .dockerignore .coverage .coverage.* .cache htmlcov/ nosetests.xml coverage.xml *,cover .hypothesis/ ssh/ id_rsa .git-credentials config.*
避免手動(dòng)生成鏡像:與CICD自動(dòng)生成系統(tǒng)相比,開發(fā)環(huán)境更容易涉及敏感文件,因此在開發(fā)環(huán)境手動(dòng)生成公共鏡像更容易導(dǎo)致泄露。
使用CI環(huán)境變量:如果CI或構(gòu)建環(huán)境需要使機(jī)密信息,需要將其配置在環(huán)境變量中,而不要通過文件訪問。
有時(shí)需要在構(gòu)建Docker鏡像時(shí)使用機(jī)密,例如訪問私有軟件包存儲(chǔ)庫的密碼。
FROM python:3.9 RUN pip install \ --extra-index-url User:pass@priveapk.example \ package privatepackage
直接在URL包含了用戶名和密碼會(huì)直接導(dǎo)致其泄露??梢允褂铆h(huán)境變量形式來應(yīng)用:
export MYSECRET=secretpassword export DOCKER_BUILDKIT=1 docker build --secret --secret id=mysecret,env=MYSECRET .
有些密碼是需要在容器運(yùn)行時(shí)候需要訪問的,比如訪問數(shù)據(jù)庫的憑據(jù)。同樣的運(yùn)行時(shí)機(jī)密也不能直接存儲(chǔ)在鏡像中。
除了鏡像內(nèi)容導(dǎo)致意外泄露,這種存儲(chǔ)在鏡像中的配置也綁定了環(huán)境,不便于鏡像靈活運(yùn)行。在運(yùn)行容器時(shí)可以通過多種方法將機(jī)密傳遞給容器:
使用環(huán)境變量。
與綁定機(jī)密文件的卷。
編排系統(tǒng)(如K8S)的密碼管理機(jī)制。
在公有云環(huán)境中,可以使用云環(huán)境變量和授權(quán)。比如AWS 的IAM角色管理。
外部密鑰庫。
通過以上這些機(jī)制,可以避免運(yùn)行時(shí)敏感信息存儲(chǔ)在鏡像本身中。
除了上面一些管理方面策略外,還有一個(gè)主動(dòng)方法就是自動(dòng)地進(jìn)行安全掃描。市面上有很多密碼掃描工具,可以掃描目錄或者Git倉(cāng)庫,如果包含敏感信息則會(huì)直接告警。比如detect-secrets,trufflehog
也有對(duì)鏡像掃描的工具,比如pentester可以掃描Docker Hub鏡像,發(fā)現(xiàn)問題。
到此,關(guān)于“Docker敏感信息怎么防止泄露”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!