전체 보기
🍀

도커 로그인 insecure 경고 해결(with Github Actions)

작성일자
2023/10/18
태그
DIARY_DEVELOP
프로젝트
FIS
책 종류
1 more property

도커 로그인 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 를 사용하면 암호가 셸의 기록 또는 로그 파일에 기록되지 않는다고 한다.
여전히 경고가 뜨긴 하지만 기존 방식보단 보안에 강하다.