Node.js용 Docker 이미지를 안전하게 빌드하는 방법
최소 권한 사용자 사용
a
Dockerfile
가 a USER
를 지정하지 않으면 기본적으로 루트 사용자를 사용하여 컨테이너를 실행합니다. 실제로 컨테이너가 루트 권한을 가져야 하는 이유는 거의 없습니다.Docker는 기본적으로 루트 사용자를 사용하여 컨테이너를 실행합니다. 그런 다음 해당 네임스페이스가 실행 중인 컨테이너의 루트 사용자에 매핑되면 컨테이너가 잠재적으로 Docker 호스트에 대한 루트 액세스 권한을 갖는다는 의미입니다.
컨테이너에서 루트 사용자로 애플리케이션을 실행하면 공격 표면이 더욱 넓어지고 애플리케이션 자체가 악용에 취약한 경우 쉽게 권한 에스컬레이션 경로를 사용할 수 있습니다.
노출을 최소화하려면 애플리케이션의 Docker 이미지에서 전용 사용자 및 전용 그룹을 생성하도록 옵트인합니다.
USER
의 Dockerfile
지시문을 사용하여 컨테이너가 가능한 최소 권한 액세스로 애플리케이션을 실행하도록 합니다.이미지에 특정 사용자가 없을 수 있습니다.
Dockerfile
의 지침을 사용하여 해당 사용자를 만듭니다.다음은 일반 Ubuntu 이미지에 대해 이 작업을 수행하는 방법에 대한 전체 예를 보여줍니다.
FROM ubuntu
RUN mkdir /app
RUN groupadd -r lirantal && useradd -r -s /bin/false -g lirantal lirantal
RUN chown -R lirantal:lirantal /app
WORKDIR /app
COPY . /app
USER lirantal
CMD node index.js
위의 예:
Node.js 및 알파인 이미지의 팬이라면 이미
node
라는 일반 사용자를 번들로 제공합니다. 다음은 일반 노드 사용자를 사용하는 Node.js 예제입니다.FROM node:10-alpine
RUN mkdir /app
COPY . /app
RUN chown -R node:node /app
USER node
CMD [“node”, “index.js”]
Node.js 애플리케이션을 개발 중이라면 공식Docker and Node.js Best Practices과 상담하는 것이 좋습니다.
이 게시물은 귀하가 채택해야 하는 10 Docker image security best practices의 일부입니다. 읽어주셔서 감사합니다.
원본 블로그 게시물에는 아래에 표시된 스니펫과 같은 인쇄 가능한 고해상도 PDF가 포함되어 있습니다. Check it out
Reference
이 문제에 관하여(Node.js용 Docker 이미지를 안전하게 빌드하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lirantal/how-to-securely-build-docker-images-for-node-js-4d7o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)