Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

nomad-programmer

[DevOps/Docker] Docker Credential Pass 설정 (feat. RockyLinux9) 본문

DevOps/Docker

[DevOps/Docker] Docker Credential Pass 설정 (feat. RockyLinux9)

scii 2024. 8. 14. 02:31

Docker Hub (https://app.docker.com/) 에 push & pull 을 하려면, 먼저 로그인을 해야 한다. 따라서 다음과 같이 로그인을 진행할 것이다.

$ docker login

위의 명령을 실행하면 ID & Password를 입력하라고 나온다. 계정 정보가 맞다면 로그인이 될텐데.. 그러면, `$HOME/.docker/config.json` 파일에 해당 비밀번호가 base64로 인코딩 돼어 다음과 같이 입력된다. 

{
  "auths" {
    "https://index.docker.io/v1/: {
      "author": "<base64로 인코딩 된 암호>"
    }
  }
}

이곳에 비밀번호가 자동으로 들어가는 이유는, 다음 login할 때 조금 더 편하게 로그인하기 위함이다. 이것이 장점이 될 수 있지만 단점이 될 수 있다. 그것도 아주 치명적으로...

이것이 왜 치명적인 단점이냐면, config.json에 적힌 비밀번호를 decoding 해주면 비밀번호가 나오기 때문이다. 이렇게...

$ echo <base64로 인코딩 된 암호> | base64 --decode

그래서 사용해야 한다. docker-credential-pass를!


Docker Credential Pass 란?

docker login 명령으로 credential한 정보가 평문으로 저장되는 것이 아닌 credential storage를 이용해 암호화한 정보로 저장될 수 있도록 도와준다.

https://github.com/docker/docker-credential-helpers

 

GitHub - docker/docker-credential-helpers: Programs to keep Docker login credentials safe by storing in platform keystores

Programs to keep Docker login credentials safe by storing in platform keystores - docker/docker-credential-helpers

github.com

따라서 사용하지 않을 이유가 없다.


Docker Credential Pass 적용 방법

저자는 rocky linux 9에서 진행하였다.

1. pass 설치

먼저 pass 패키지를 설치해야 한다. pass는 linux에서 패스워드를 안전하게 관리하는 유틸리티이다.

sudo dnf install pass

2. GPG 키 생성

pass는 GPG 키를 사용해 비밀번호를 암호화한다. 그래서 먼저 GPG 키를 생성해야 한다.

gpg --generate-key

키 생성 과정에서 이름, 이메일, 암호 등을 입력하라고 할 것이다. 원하는 정보를 입력하고 키 생성을 한다.

3. pass 초기화

GPG 키 생성 후, pass를 초기화한다. 초기화할 때, GPG 키의 이메일 주소를 사용한다.

pass init "이메일 주소"

4. docker-credential-pass 설치

docker에서 pass를 credential store로 사용하기 위해 docker-credential-pass를 설치해야 한다. 다음의 링크를 통해 다운 받도록 하자.

https://github.com/docker/docker-credential-helpers/releases

 

Releases · docker/docker-credential-helpers

Programs to keep Docker login credentials safe by storing in platform keystores - docker/docker-credential-helpers

github.com

저자는 여기서 "docker-credential-pass-v0.8.2.linux-amd64" 이것을 다운 받았다. (현재 기준 최신 버전이 0.8.2 라서 이것을 받음)

다음의 명령들을 통하여 시스템에서 사용할 수 있도록 만들자.

chmod +x docker-credential-pass-v0.8.2.linux-amd64

sudo mv docker-credential-pass-v0.8.2.linux-amd64 /usr/local/bin/docker-credential-pass

5. Docker 설정

docker의 설정 파일인 $HOME/.docker/config.json 파일을 열고, 다음과 같이 수정하자. 또한  docker에 login이 되어 있다면 logout부터 진행하고 하는 것이 좋을 것이다.

docker logout

 로그아웃을 했다면 $HOME/.docker/config.json 파일을 아래와 같이 입력한 후 저장한다.

{
    "credsStore": "pass"
}

6. Docker Login

이제 docker에 다시 로그인하여 credential이 안전하게 저장되는 지 확인한다.

docker login

안전하게 login을 진행한 모습

추가로, docker-credential-pass가 잘 관리하고 싶은지 확인하고 싶다면, 다음과 같은 명령을 통해 확인할 수 있다.

docker-credential-pass list

그러면 관리중인 목록을 볼 수 있다.

Comments