国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Was ist der beste Weg, AWS-Anmeldeinformationen an einen Docker-Container zu übergeben?
P粉662361740
P粉662361740 2023-08-27 16:05:56
0
2
698
<p>Ich verwende Docker-Container auf Amazon EC2. Bisher habe ich die AWS-Anmeldeinformationen zur Docker-Datei hinzugefügt. K?nnen Sie mir sagen, wie das am besten geht? </p>
P粉662361740
P粉662361740

Antworte allen(2)
P粉399585024

自從提出這個問題以來,Docker 發(fā)生了很多變化,所以這里嘗試更新答案。

首先,特別是對于已在云中運行的容器上的 AWS 憑證,使用 IAM 角色,如 Vor 建議 是真的是不錯的選擇。如果你能做到這一點,那么在他的答案中再加一加一并跳過其余部分。


一旦您開始在云之外運行事物,或者擁有不同類型的機密,我建議不要在兩個關鍵位置存儲機密:

  1. 環(huán)境變量:當在容器上定義這些變量時,容器內(nèi)的每個進程都可以訪問它們,它們通過 /proc 可見,應用程序可以將其環(huán)境轉儲到 stdout,并將其存儲在日志中,并且最重要的是,當您檢查容器時,它們會以明文形式顯示。

  2. In the image itself: images often get pushed to registries where many users have pull access, sometimes without any credentials required to pull the image. Even if you delete the secret from one layer, the image can be disassembled with common Linux utilities like tar and the secret can be found from the step where it was first added to the image.


那么 Docker 容器中的機密還有哪些其他選項?

選項 A:如果您僅在構建映像期間需要此密鑰,在構建開始之前無法使用該密鑰,并且尚無權訪問 BuildKit,則 多階段構建是最好的壞選擇。您可以將機密添加到構建的初始階段,在那里使用它,然后將沒有機密的該階段的輸出復制到您的發(fā)布階段,并且僅將該發(fā)布階段推送到注冊表服務器。這個秘密仍然在構建服務器上的圖像緩存中,所以我傾向于僅將其用作最后的手段。

選項B:同樣在構建期間,如果您可以使用18.09發(fā)布的BuildKit,目前有實驗功能允許將機密注入作為單個運行線路的卷安裝。該裝載不會寫入映像層,因此您可以在構建期間訪問秘密,而不必擔心它會被推送到公共注冊表服務器。生成的 Dockerfile 如下所示:

# syntax = docker/dockerfile:experimental
FROM python:3
RUN pip install awscli
RUN --mount=type=secret,id=aws,target=/root/.aws/credentials aws s3 cp s3://... ...

您可以使用 18.09 或更高版本中的命令構建它,例如:

DOCKER_BUILDKIT=1 docker build -t your_image --secret id=aws,src=$HOME/.aws/credentials .

選項 C:在單個節(jié)點上運行時,無需 Swarm 模式或其他編排,您可以將憑據(jù)裝載為只讀卷。訪問此憑據(jù)需要與在 docker 外部訪問相同憑據(jù)文件的訪問權限相同,因此它并不比沒有 docker 的情況更好或更差。最重要的是,當您檢查容器、查看日志或?qū)⒂诚裢扑偷阶员矸掌鲿r,該文件的內(nèi)容不應該是可見的,因為在每種情況下該卷都位于該卷之外。這確實需要您在 docker 主機上復制憑據(jù),與容器的部署分開。 (請注意,任何能夠在該主機上運行容器的人都可以查看您的憑據(jù),因為對 docker API 的訪問權限是主機上的 root,并且 root 可以查看任何用戶的文件。如果您不信任主機上擁有 root 的用戶,然后不要給他們 docker API 訪問權限。)

For a docker run, this looks like:

docker run -v $HOME/.aws/credentials:/home/app/.aws/credentials:ro your_image

或者對于撰寫文件,您需要:

version: '3'
services:
  app:
    image: your_image
    volumes:
    - $HOME/.aws/credentials:/home/app/.aws/credentials:ro

選項 D:借助 Swarm 模式和 Kubernetes 等編排工具,我們現(xiàn)在擁有比卷更好的機密支持。使用 Swarm 模式,文件在管理器文件系統(tǒng)上進行加密(盡管解密密鑰通常也在那里,允許在管理員不輸入解密密鑰的情況下重新啟動管理器)。更重要的是,秘密僅發(fā)送給需要秘密的工作人員(使用該秘密運行容器),它僅存儲在工作人員的內(nèi)存中,而不是磁盤中,并且它作為文件注入到具有 tmpfs 的容器中山。 swarm 外部主機上的用戶無法將該秘密直接掛載到自己的容器中,但是,通過對 docker API 的開放訪問,他們可以從節(jié)點上正在運行的容器中提取秘密,因此再次限制誰有權訪問該秘密。 API。從 compose 來看,這個秘密注入看起來像:

version: '3.7'

secrets:
  aws_creds:
    external: true

services:
  app:
    image: your_image
    secrets:
    - source: aws_creds
      target: /home/user/.aws/credentials
      uid: '1000'
      gid: '1000'
      mode: 0700

You turn on swarm mode with docker swarm init for a single node, then follow the directions for adding additional nodes. You can create the secret externally with docker secret create aws_creds $HOME/.aws/credentials. And you deploy the compose file with docker stack deploy -c docker-compose.yml stack_name.

我經(jīng)常使用以下腳本來版本化我的秘密:https://github.com/ sudo-bmitch/docker-config-update

選項 E:還有其他工具可以管理機密,我最喜歡的是 Vault 因為它能夠創(chuàng)建自動過期的有時間限制的秘密。然后,每個應用程序都會獲取自己的一組令牌來請求機密,這些令牌使它們能夠在能夠到達保管庫服務器的情況下請求這些有時間限制的機密。如果某個秘密被從您的網(wǎng)絡中取出,這會降低風險,因為它要么不起作用,要么很快就會過期。 AWS for Vault 的特定功能記錄在 https://www.vaultproject.io /docs/secrets/aws/index.html

P粉523625080

最好的方法是使用 IAM 角色并且根本不處理憑證。 (請參閱 http://docs.aws .amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html )

Credentials could be retrieved from http://169.254.169.254..... Since this is a private ip address, it could be accessible only from EC2 instances.

所有現(xiàn)代 AWS 客戶端庫都“知道”如何從那里獲取、刷新和使用憑證。因此,在大多數(shù)情況下,您甚至不需要了解它。只需使用正確的 IAM 角色運行 ec2 即可。

As an option you can pass them at the runtime as environment variables ( i.e docker run -e AWS_ACCESS_KEY_ID=xyz -e AWS_SECRET_ACCESS_KEY=aaa myimage)

您可以通過在終端運行 printenv 來訪問這些環(huán)境變量。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage