한국어

개발자 도구 · Docker 작성 변환기로의 Docker 실행

컨테이너를 루트로 실행: 무엇 --user 및 사용자: 변경 및 이유

· 그것이 중요한 이유

도커 컨테이너 보안

루트로 실행 중인 컨테이너를 보여주는 추상 다이어그램: 무엇 --user 및 사용자: 변경 및 이유
원본 ToolAcre 벡터 일러스트레이션

이미지에 달리 명시되지 않는 한 컨테이너의 프로세스는 루트입니다. 이 게시물에서는 이것이 호스트에서 무엇을 의미하는지, --user 및 Compose 사용자: 키가 이를 변경하는 방법, 그리고 그에 따른 파일 소유권 문제에 대해 설명합니다.

삭제할 수 없는 파일 - 한 번의 컨테이너 실행 후 바인드 마운트가 루트 소유 파일로 가득 찼습니다.

삭제할 수 없는 파일 — 한 번의 컨테이너 실행 후 바인드 마운트는 루트 소유 파일로 가득 찼습니다. 증거: 바인드 탑재 출력은 구문 분석으로 진단할 수 없는 ID 불일치를 노출할 수 있습니다. 일회용 리터럴로 런타임 ID를 재현합니다. 각 소스 발생을 사용자 마운트 기능과 결합합니다. 대상 검토를 위해 네임스페이스와 소유권을 예약합니다.

보안 사고는 또한 별도의 보안 사고 경계가 이미지 사용자 및 진입점 스위치에 검사 또는 이미지 소스가 필요하다는 사실을 보여줍니다. 증거: 이미지 USER 및 진입점 스위치에는 검사 또는 이미지 소스가 필요합니다. 이 런타임 ID 제약 조건은 중지 지점입니다. 제조 동작 없이 사용자 마운트 기능을 검사한 다음 네임스페이스 및 소유권에 대한 호스트 검사를 문서화합니다.

내부 루트는 외부 루트입니다. 기본 사용자 네임스페이스 설정을 사용하면 컨테이너의 UID 0는 마운트된 파일에 대한 호스트의 UID 0입니다.

내부 루트는 외부 루트입니다. 기본 사용자 네임스페이스 설정을 사용하면 컨테이너의 UID 0는 마운트된 파일에 대한 호스트의 UID 0입니다. 증거: UID 0 호스트 효과는 여기서 읽지 않은 네임스페이스 구성에 따라 달라집니다. 런타임 ID 토큰을 사용자 마운트 기능으로 추적합니다. 순서가 지정된 값을 마지막 값 필드와 구분하세요. 네임스페이스 및 소유권은 컬렉션 외부에 있습니다.

관련 보안 메커니즘 경계는 다음과 같습니다. 별도의 보안 문법 경계는 1000:1000 예가 소유권 보장이 아닌 보존을 보여 준다는 것입니다. 증거: 1000:1000 예는 소유권 보장이 아닌 보존을 보여줍니다. 이 런타임 ID 사실을 사용하여 사용자 마운트 기능에서 하나의 멤버 또는 스칼라를 예측합니다. 네임스페이스 및 소유권에 대해 결정하기 전에 경고를 확인하세요.

--user가 사용자가 됩니다: — 숫자 UID:GID 대 이름, 이미지에 일치하는 계정이 없을 때 숫자가 더 안전한 이유

--user가 사용자가 됩니다: — 숫자 UID:GID 대 이름, 이미지에 일치하는 계정이 없을 때 숫자가 더 안전한 이유. 증거: --user가 사용자가 되고 숫자 UID:GID 텍스트가 인용됩니다. 해당 모델에서 런타임 ID 직렬화를 판단합니다. 사용자 마운트 기능의 인용은 유형을 보호하지만 네임스페이스 및 소유권에 대한 작동 증거를 제공하지 않습니다.

두 번째 보안 직렬화 관찰은 별도의 보안 출력 경계는 read_only cap_drop 및 security_opt 맵이지만 루트 없는 모드는 그렇지 않다는 것입니다. 증거: read_only cap_drop 및 security_opt 맵은 루트 없는 모드에서는 그렇지 않습니다. 이 런타임 ID 출력은 설정을 사용할 수 없는 컨텍스트와 분리합니다. 사용자 마운트 기능을 검토 가능하게 유지하고 네임스페이스와 소유권을 독립적으로 확인하세요.

이미 권한을 삭제한 이미지 — Dockerfile의 USER 및 진입점에서 사용자를 전환하는 이미지

이미 권한을 삭제한 이미지 — Dockerfile의 USER 및 진입점에서 사용자를 전환하는 이미지. 추측하는 대신 런타임 ID 예외에서 중지하세요. 사용자 마운트 기능 근처에 추가하려면 네임스페이스 및 소유권과 관련된 배포별 이유가 필요합니다.

또 다른 보안 예외 제약 조건은 별도의 보안 예외 경계가 네임스페이스 재매핑 및 Kubernetes 컨텍스트가 범위를 벗어나는 것입니다. 증거: 네임스페이스 재매핑 및 Kubernetes 컨텍스트는 범위를 벗어납니다. 경고 옆에 원래 런타임 ID 명령을 유지하십시오. 비교에서는 사용자 마운트 기능에 포함된 내용과 수동으로 유지되는 네임스페이스 및 소유권 결정을 보여줍니다.

작업 예: docker run --user 1000:1000 -v /srv/app:/app — user: 키 및 디스크의 결과 소유권 변환

작업 예: docker run --user 1000:1000 -v /srv/app:/app — user: 키 및 디스크의 결과 소유권 변환. 합성 이름으로 런타임 ID 예제를 빌드합니다. 프로덕션 네임스페이스 및 소유권 세부 정보를 노출하지 않고도 모든 사용자 마운트 기능 항목을 추적 가능하게 만듭니다.

동일한 보안 예제 샘플은 별도의 보안 예제 경계가 검토를 위해 마운트 및 기능 옆에 ID가 표시된다는 점을 보여줍니다. 증거: 검토를 위해 마운트 및 기능 옆에 신원이 표시됩니다. 쌍을 이루는 런타임 ID 사실은 사용자 마운트 기능에 표시되어야 합니다. 해당 줄을 기록하고 네임스페이스 및 소유권에 대한 가정을 피하세요.

기타 강화 키 — 더 큰 단계인 read_only, cap_drop: [ALL], security_opt no-new-privileges 및 루트 없는 Docker

기타 강화 키 — 더 큰 단계인 read_only, cap_drop: [ALL], security_opt no-new-privileges 및 루트 없는 Docker. 런타임 ID 결과를 하나의 관찰 가능한 사용자 마운트 기능 차이로 변환합니다. Docker는 최신 네임스페이스와 소유권 판정을 소유합니다.

보안 결과 구현은 바인드 마운트 출력이 구문 분석에서 진단할 수 없는 ID 불일치를 노출할 수 있다는 별도의 보안 효과 경계도 보여줍니다. 런타임 ID 책임 분할: 변환은 사용자 마운트 기능을 쓰고, 저장소는 비밀을 제거하고, 운영자는 네임스페이스와 소유권을 확인합니다.

여기서 다루지 않는 내용 — 사용자 네임스페이스 재매핑 구성 및 Kubernetes securityContext

여기서 다루지 않는 내용 — 사용자 네임스페이스 재매핑 구성 및 Kubernetes securityContext. 여기에 표시된 사용자 마운트 기능 분기로 런타임 ID 범위를 제한합니다. 인접한 양식과 기본값은 네임스페이스 및 소유권 질문에 답할 수 없습니다.

보안 범위 제한이 하나 더 있습니다. 별도의 보안 제한 경계는 UID 0 호스트 효과가 여기에서 읽지 않은 네임스페이스 구성에 따라 달라진다는 것입니다. 이 런타임 ID 경계를 제외로 처리합니다. 네임스페이스 및 소유권에 대한 추측보다 정확한 사용자 마운트 기능을 선호합니다.

요점: 프로세스가 누구인지 결정하고 변환기의 출력에 사용자가 포함되어 있는지 확인하십시오. 스택을 가져오기 전에

요점: 프로세스가 누구인지 결정하고 스택을 가져오기 전에 변환기의 출력에 user:가 포함되어 있는지 확인하십시오. 소스 옵션, 모델 필드, 사용자 마운트 기능 라인 및 경고로 런타임 ID를 감사합니다. 네임스페이스와 소유권을 확인하기 전에 비밀을 제거하세요.

마지막으로 보안 시사점 소스는 --user가 user가 되고 숫자 UID:GID 텍스트가 인용된다는 별도의 보안 결정 경계를 확인합니다. 런타임 ID를 좁게 닫습니다. 사용자 마운트 기능이 후보입니다. 네임스페이스, 소유권 및 쉘 동등성은 보장되지 않습니다.