도커 로그인 insecure 경고 해결
(1) 깃헙액션 환경에서 발생 (docker image Push 할 때)
•
깃헙액션으로 짜둔 cicd 스크립트를 실행했을 때 아래와 같은 Warning이 떴다
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/runner/.docker/config.json.
Configure a credential helper to remove this warning. See
Login Succeeded
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
YAML
복사
•
깃헙액션 환경에서 docker image push 하기 전에 docker login을 해주고 있는데, 이때 docker login 정보가 액션 환경에 고스란히 저장된단 소리였다.
•
따라서 지금과 같은 로그인 명령어는 권장되지 않는다.
# Docker build
- name: Docker build
run: |
docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }}
# 이후 build와 push
YAML
복사
•
아래와 같이 바꿔줘서 경고를 해결해줬다. 로그인 부분만 따로 빼주고 login-action을 사용했다.
# Docker login
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
# 이후 build와 push
# Docker build
- name: Docker build
run: |
docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }}
# 이후 build와 push
YAML
복사
Warning: Github Actions save-state deprecated → v1 말고 v2 쓰기
(2) EC2 환경에서 발생 (docker image Pull 할 때)
•
깃헙액션으로 짜둔 cicd 스크립트를 실행했을 때 아래와 같은 Warning이 떴다
======CMD======
docker login -u *** -p ***
docker pull ***/call-dev:${GITHUB_SHA::7}
docker tag ***/call-dev:${GITHUB_SHA::7} call-spring
docker-compose up -d
yes | docker image prune -a
======END======
err: WARNING! Using --password via the CLI is insecure. Use --password-stdin.
err: WARNING! Your password will be stored unencrypted in /home/ubuntu/.docker/config.json.
err: Configure a credential helper to remove this warning. See
err: https://docs.docker.com/engine/reference/commandline/login/#credentials-store
out: Login Succeeded
YAML
복사
•
위에 내용과 결과적으로 같은 경고긴 하지만, 상황이 다르다.
•
docker hub repository가 private이라 ec2에서 docker image pull 해올 때 docker login을 해주고 있는데, 이때 docker login 정보가 ec2에 고스란히 저장된단 소리였다.
# Deploy
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST_DEV }}
username: ubuntu
key: ${{ secrets.PRIVATE_KEY_DEV }}
envs: GITHUB_SHA
script: |
docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }}
# 이후 pull과 run
YAML
복사
•
이땐 cmd 환경이라 login-action을 사용할 수 없었다.
•
아래와 같이 바꿔줘서 어느 정도 해결해줬다.
# Deploy
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST_DEV }}
username: ubuntu
key: ${{ secrets.PRIVATE_KEY_DEV }}
envs: GITHUB_SHA
script: |
cat /home/ubuntu/docker/password.txt | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin
# 이후 pull과 run
YAML
복사
◦
ec2 ubuntu 환경에 접속해서 해당 경로에 password.txt란 파일을 만들고 파일 안엔 비밀번호 값만 딱 입력해줬다.
◦
STDIN 를 사용하면 암호가 셸의 기록 또는 로그 파일에 기록되지 않는다고 한다.
◦
여전히 경고가 뜨긴 하지만 기존 방식보단 보안에 강하다.