自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Docker敏感信息防泄露實踐

安全 云安全
本文我們討論了容器敏感信息防泄露的一些安全方法,包括基本語法,鏡像編譯,運行時以及安全掃描等方法。

云時代流行的今天,云和容器成了日常工作的一部分。這樣就涉及一個安全問題,在容器使用過程中常常要構建鏡像,在構建進行并push到公共存儲(私有項目不要存儲大公共注冊表),其中可能會涉及有些敏感信息和機密數(shù)據泄露。比如IP地址,密碼,私鑰等信息。本文我們就來說說在實踐中如何避免敏感信息的泄露。

[[397716]]

概述

容器和Docker讓我們的日常更加便捷,但是同時也會很容易將一些信息不小心泄露給公眾造成安全問題。密碼,云憑證和SSH私鑰,如果配置不當,一不小心就會泄露。除非建立一套安全事件策略,綜合防護,一些案例:

Codecov供應鏈攻擊:

2021年4月1日,由于Codecov一個Docker文件配置失誤,攻擊者可以竊取憑據并修改客戶使用的Bash Uploader腳本。通過惡意代碼修改Bash Uploaders,并將環(huán)境變量和從一些客戶的CI/CD環(huán)境中收集的密鑰泄露給了一個受攻擊者控制的服務器。

受到該事件影響,HashiCorp用于發(fā)布簽名和驗證的GPG密鑰被泄露,目前已經采用輪換機制定期更換私鑰。

其他由于Docker Hub公共鏡像導致的泄露還包括(不限于):

AWS賬戶和憑據,SSH私鑰,Azure密鑰,.npmrc令牌,Docker Hub賬戶,PyPI存儲庫密鑰,SMTP服務器認證信息,eCAPTCHA密碼,Twitter API密鑰,Jira密鑰,Slack密鑰以及其他一些密鑰等。

COPY方法

DockerFile語法中常見的一個COPY方法:

  1. FROM debian:buster 
  2. COPY . /app 

默認情況下,該語句會將當前目錄中所有內容的復制到鏡像中。這些內容中可能會包含敏感信息的文件:例如站點.env。

一旦敏感信息,被放到Docker鏡像中,則任何可以訪問該鏡像的用戶都可以看到這些信息。為了防止由于COPY導致的敏感信息泄露:

  • 限制復制內容:只復制必須的特定文件或目錄。 例如,
    1. COPY setup.py myapp/app。 
  • .dockerignore:使用.dockerignore確保敏感文件不被復制到鏡像中去,一個典型的配置:
    1. NOTICE 
    2. README.md 
    3. LICENSE 
    4. AUTHORS.md 
    5. CONTRIBUTING.md 
    6. .vscode/ 
    7. vendor/ 
    8. env/ 
    9. ENV/ 
    10. build/ 
    11. dist/ 
    12. target/ 
    13. downloads/ 
    14. eggs/ 
    15. .eggs/ 
    16. lib/ 
    17. lib64/ 
    18. parts/ 
    19. sdist/ 
    20. var/ 
    21. Dockerfile 
    22. .git 
    23. .editorconfig 
    24. *.egg-info/ 
    25. .installed.cfg 
    26. *.egg 
    27. *.manifest 
    28. *.spec 
    29. .gcloudignore 
    30. .gitignore 
    31. .tox/ 
    32. .dockerignore 
    33. .coverage 
    34. .coverage.* 
    35. .cache 
    36. htmlcov/ 
    37. nosetests.xml 
    38. coverage.xml 
    39. *,cover 
    40. .hypothesis/ 
    41. ssh/ 
    42. id_rsa 
    43. .git-credentials 
    44. config.* 
  • 避免手動生成鏡像:與CICD自動生成系統(tǒng)相比,開發(fā)環(huán)境更容易涉及敏感文件,因此在開發(fā)環(huán)境手動生成公共鏡像更容易導致泄露。
  • 使用CI環(huán)境變量:如果CI或構建環(huán)境需要使機密信息,需要將其配置在環(huán)境變量中,而不要通過文件訪問。

鏡像編譯

有時需要在構建Docker鏡像時使用機密,例如訪問私有軟件包存儲庫的密碼。

  1. FROM python:3.9 
  2. RUN pip install \ 
  3. --extra-index-url User:pass@priveapk.example \ 
  4. package privatepackage 

直接在URL包含了用戶名和密碼會直接導致其泄露。可以使用環(huán)境變量形式來應用:

  1. export MYSECRET=secretpassword 
  2. export DOCKER_BUILDKIT=1 
  3. docker build --secret --secret id=mysecret,env=MYSECRET . 

運行時

有些密碼是需要在容器運行時候需要訪問的,比如訪問數(shù)據庫的憑據。同樣的運行時機密也不能直接存儲在鏡像中。

除了鏡像內容導致意外泄露,這種存儲在鏡像中的配置也綁定了環(huán)境,不便于鏡像靈活運行。在運行容器時可以通過多種方法將機密傳遞給容器:

  • 使用環(huán)境變量。
  • 與綁定機密文件的卷。
  • 編排系統(tǒng)(如K8S)的密碼管理機制。
  • 在公有云環(huán)境中,可以使用云環(huán)境變量和授權。比如AWS 的IAM角色管理。
  • 外部密鑰庫。

通過以上這些機制,可以避免運行時敏感信息存儲在鏡像本身中。

安全掃描

除了上面一些管理方面策略外,還有一個主動方法就是自動地進行安全掃描。市面上有很多密碼掃描工具,可以掃描目錄或者Git倉庫,如果包含敏感信息則會直接告警。比如detect-secrets,trufflehog

也有對鏡像掃描的工具,比如pentester可以掃描Docker Hub鏡像,發(fā)現(xiàn)問題。

總結

本文我們討論了容器敏感信息防泄露的一些安全方法,包括基本語法,鏡像編譯,運行時以及安全掃描等方法。綜合使用這些方法和策略,可以有效地防止容器使用時候的敏感信息泄露,從而提高安全。

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2022-02-17 11:52:05

?Argo CD漏洞Kubernetes

2023-11-02 08:29:51

2013-04-07 15:40:26

2023-05-30 20:19:20

2023-12-06 15:36:24

2023-07-12 16:20:06

2014-06-30 13:51:27

2012-07-03 13:25:24

2023-05-17 19:39:58

2012-04-12 15:59:21

微星科技IP-guard信息防泄露

2013-07-04 09:40:14

2024-01-10 18:49:47

2021-10-08 11:51:18

Twitchimageboard數(shù)據泄露

2021-07-29 15:53:53

信息泄露漏洞網絡攻擊

2023-07-17 17:58:45

2023-04-14 18:04:56

2021-11-09 10:10:50

個人信息安全法律

2021-05-11 15:12:52

高敏感數(shù)據數(shù)據防泄露大數(shù)據

2010-09-26 15:28:45

2010-09-27 13:16:42

點贊
收藏

51CTO技術棧公眾號