대상 디렉터리에 대한 권한이 없는 경우 Jenkins "빌드 후" 작업으로 파일을 복사하는 방법

대상 디렉터리에 대한 권한이 없는 경우 Jenkins "빌드 후" 작업으로 파일을 복사하는 방법

다음 사용자 "스키마"가 있습니다.

  1. 루트 액세스가 비활성화되었습니다.
  2. 관리자 사용자는 자신의 홈 디렉터리에만 액세스할 수 있습니다.
  3. Apache는 루트 서비스로 실행됩니다(루트는 웹 서버 파일에 액세스할 수 있는 유일한 서비스입니다).
  4. Jenkins CI를 설치했으며 "관리자" 권한으로 프로젝트를 구축하고 있습니다.

빌드 후 작업으로 최신 빌드 파일을 내 웹서버 위치에 복사하고 싶습니다. "루트" 사용자만 내 대상 디렉터리에 액세스할 수 있는 경우 어떻게 이를 달성할 수 있습니까? 어쩌면 내 "사용자 스키마"가 처음부터 잘못되었을 수도 있습니까?

답변1

어쩌면 내 "사용자 스키마"가 처음부터 잘못되었을 수도 있습니까?

예. 당신에게 그것을 깨뜨리는 것을 싫어하지만 그게 전부입니다. 어떻게 바꿔야 할까요:

  1. 가급적이면 chroot에서 자신의 사용자로 Apache를 실행하세요. 이를 최소 권한의 원칙이라고 합니다. 이는 무언가가 손상될 경우 발생할 수 있는 피해를 제한하는 것입니다. 뭔가를 가정하다~ 할 것이다거기에서 타협하고 일하십시오. 권한 있는 사용자로 Apache를 실행할 이유가 없습니다.
  2. Jenkins CI를 자신의 사용자로 실행하세요. 동일한 원칙이 적용됩니다.
  3. 파일이 웹 서버 디렉토리에 도달하는 방법을 제공합니다. 예를 들어 Jenkins 사용자를 Apache 그룹에 추가할 수 있습니다. 이렇게 하면 Jenkins 빌드 서버에 웹 서버 디렉터리에 대한 액세스 권한이 부여됩니다. 더 안전한 접근 방식은 Apache 사용자로 cron 작업이나 systemd 타이머를 실행하고 이를 사용하여 파일을 복사하는 것입니다. 왜 이것이 더 안전합니까? Jenkins가 손상되면 공격자는 웹 서버 디렉터리에 액세스할 수 없습니다.

관련 정보