Jenkins를 통해 데몬을 배포하는 가장 안전한 방법

Jenkins를 통해 데몬을 배포하는 가장 안전한 방법

Java로 시스템 서비스를 개발 중이며 배포를 위해 다음을 수행하고 싶습니다.

  1. 빌드에서 새 Initd 복사
  2. 배포 서비스 중지
  3. 새 JAR/구성 예제 덮어쓰기/복사
  4. 서비스를 시작합니다.

Jenkins에게 루트 액세스 권한을 부여하지 않고 이를 수행할 수 있는 방법이 있습니까? [jenkins가 아닌 사람들의 경우: Jenkins는 복제 및 명령 전송에 SCP 및 SSH를 사용합니다.] 제가 우려하는 점은 Jenkins 루트 액세스 권한을 부여하면 부여된 권한이 제한되지 않는다는 것입니다. 그 범위는 해당 서비스 하나만으로 변경을 제한하는 것입니다. (다른 서비스에 의존하지 않음)

솔루션이 더 까다로워질 수 있으므로 첫 번째 요구 사항을 완화하겠습니다.

답변1

하나 있다희귀한 질문사용자가 루트로 스크립트를 실행하도록 하는 방법(예: sudo 사용)은 이미 이 사이트에서 다루고 있습니다. 기본적으로 2~4단계(예: service foo stop; cp -f ~jenkins/service.init /etc/init.d/; service foo start)를 수행하는 스크립트를 작성하고 jenkins 사용자에게 스크립트에 대한 NOPASSWD 권한을 부여 해야 합니다. /etc/sudoers.

하지만 근본적으로 Jenkins가초기화 스크립트 설치재부팅할 때 init 스크립트가 루트로 실행되므로 Jenkins(및 생성 스크립트에 대한 입력을 변경하고 작업을 다시 실행할 수 있는 모든 사람)에게 전체 루트 액세스 권한을 부여하는 것과 같습니다.

관련 정보