젠킨스에서 인증과 권한 부여기능을 구성해보자 !
💡젠킨스의 전역 보안 구성
- 로그인 유지라는 체크박스이며, 이를 선택하고 로그인하면 다음부터는 젠킨스에 접속할 때 로그인 요청을 하지 않는다.

💡Security Realm 섹션

- Delegate to servlet container (서블릿 컨테이너에 위임) : 젠킨스는 제티(젠킨스 서버를 실행할때 사용하는 기본 서블릿 컨테이너)나 톰캣 등과 같은 자바 서블릿 컨테이너에서 실행되는 자동화 서버다. 해당 컨테이너에 구성된 사용자로 젠킨스를 실행하고 싶은 경우 선택한다.
- Jenkins own user database (젠킨스 자체 사용자 데이터베이스) : 서드파티 제품을 이용하지 않고, 젠킨스의 자체 데이터베이스에서 사용자를 생성하고 관리하려고 할때 사용하는 옵션으로서 새로운 사용자를 생성하는 단계는 다음과 같다.
젠킨스 대시보드 이동 > Manage Jenkins > Manage Users > Create User
- Allow users to sign up (사용자 가입 기능 활성화) : Jenkins own database 항목을 선택하면 표시되는 옵션이며, 체크시 젠킨스 초기 페이지에서 Create an Account(계정생성) 링크가 표시
- None (무인증) : Security Realms 섹션에서 None 항목을 선택하면, 어떤 인증도 요청하지 않고, 익명 사용자로 간주된다.
익명사용자가 접속할 수 있도록 허용하려면
1. $jenkins_home/config.xml파일로 이동
2. <denyAnonymousReadAccess>값을 true에서 fasle로 변경한다.
💡 Authorization 섹션

- Anyone can do anything (누구나 모든 기능 제어 가능) : 모든 사람(익명의 사용자 포함)이 젠킨스의 모든 기능 제어 가능하다.
- Legacy mode (레거시 모드) : 관리자 권이 있는 사용자는 시스템에 대한 모든 권한을 갖는다. 일반 사용자 및 익명 사용자는 읽기 전용 권한만 가진다.
- Logged-in users can do anything (로그인한 사용자는 모든 기능 제어 가능) : 익명 사용자를 제외한 사용자들은 반드시 로그인을 해야하며, 로그인하면 시스템에 대한 모든 권한을 가진다.
- Allow anonymous read access (익명 로그인에게 읽기 권한 부여) : Logged-in users can do anything의 하위메뉴이며, 로그인하지 않는 사용자는 읽기 전용 권한을 가진다.
- Matrix-based security (행렬 기반 보안) : 전체 Jenkins에서 모든 권한을 한 번에 설정하는 방식 (빌드, 구성, SCM, 프로젝트 보기 등 각 항목에 대해 사용자마다 권한을 세부적으로 설정), 전체 Jenkins에만 적용되고, 개별 프로젝트별로 권한을 설정할수 없다.
- Project-based Matrix Authorization Strategy (프로젝트별 권한 설정) :각각의 프로젝트(작업)마다 권한을 따로 설정가능하며, 프로젝트 단위로 권한을 세밀하게 조정가능하다.
💡 Agents 섹션

TCP port for inbound agents (인바운드 에이전트 용 TCP 포트 번호) : 분산빌드와 관련된 기능, 포트번호를 사용해 젠킨스 에이전트와 통신
분산빌드는 별도의 젠킨스 에이젠트를 구성해야 하는데, 해당 옵션에서 지정한 포트 번호를 사용해 젠킨스 에어전트와 통신한다.
- Random : 다른 프로레스에서 사용하지 않는 포트번호가 임의로 선택
- Fixed : 다른 프로세스에서 사용하지 않는 포트번호 중 사용 가능한 포트번호 하나를 사용자가 직접 입력, 일반적으로 많이 사용됨
- Disable : 분산빌드를 사용하지 않는 경우 선택
💡CSRF Protection 섹션

- CSRF Protection(CSRF 보호): 사이트 간 요청 위조공격 보호 기능을 선택하면 젠킨스는 사용자 정보를 기반으로 토큰을 생성해 사용자에게 전송한다. 사용자가 양식을 제출하거나 빌드 구성을 변경하는 작업이 발생하는 경우 사용자는 해당 토큰(crumb)을 제공해야 한다. 토큰에는 토큰을 생성한 특정 사용자의 식별 정보가 포함돼 있으므로 다른 사용자의 토큰을 사용하면 요청한 작업이 거부된다.
💊crumb은 사용자의 정보를 기반으로 생성되는 고유의 해시 값(크럼이 생성되면 사용자는 해당 토큰을 사용해 인증할 수 있음)
- 사용자의 이름
- 웹세션 아이디
- 사용자 컴퓨터의 IP주소
- 젠킨스 인스턴스의 고유한 솔트 값
💡API Token 섹션

젠킨스에서 제공하는 REST API나 CLI명령, 다른 애플리케이션 등을 통해 젠킨스를 접속할 때, 접근을 제어하는 구성과 관련돼 있다. 젠킨스는 새로운 빌드를 시작하거나 기존 작업의 생성/복사 등의 기능을 수행하는 다양한 CLI명령과 REST API엔드포인트를 제공한다.
- Generate a legacy API token for each newly created user (신규 생성 사용자별 레거시 API토큰 생성) : 젠킨스에서 모든 사용자별로 API토큰을 생성하며, 젠킨스 데이터베이스나 LDAP에 저장된다. REST API로 젠ㅓ버의의킨스 서버에 접속할 때마다 해당 토큰을 사용해 인증한다.
- Allow users to manually create a legacy API token (사용자가 수동으로 레거시 API 토큰 생성) : 사용자가 직접 자신의 토큰 생성 가능
- Enable API Token usage statistics
💡 SSH Server 섹션
SSH Server (SSH 서버) : shell 프로그램에서 젠킨스에 접속할 수 있는 내장명령이 있는데, 젠킨스는 SSH서버의 역할을 하며, 다른 프로그램이 젠킨스에 CLI 접속을 할 수 있게 허용한다.
- Ramdom : 다른 프로세스에서 사용하지 않는 포트 번호가 임의로 선택되며, 서버는 해당 포트를 사용해 SSH클라이언트로부터 연결 요청을 수신한다.
- Fixed : 다른 프로세스에서 사용하지 않는 포트 번호 중 사용가능한 번호 하나를 사용자가 직접 입력해야 한다. SSH 클라이언트로 부터 연결 요청을 수신한다.
💡 젠킨스 LDAP 구성
경량 디렉터리 액세스 프로토콜 LDAP(Lightweigt Directory Access Protocol) : 인터넷이나 인트라넷 같은 네트워크에서 조직이나 개인, 리소스등을 찾을 수 있게 해주는 소프트웨어 프로토콜
- 용도 : 사용자의 이름과 비밀번호를 저장하고, 인증기능을 제공하는것
- 필요성 : Jenkins 사용자 관리와 보안을 더 효율적으로 하고, 관리자의 부담을 줄여준다.
- LDAP 플러그인 설치 > Available plugins > LDAP 검색 > 설치

Security > LDAP 섹션에서 필요한 추가 정보를 입력하면 된다.

전체 도메인 사용자 이름과 비밀번호를 LDAP로 구성했다면 자체 도메인 사용자 이름과 비밀번호를 사용해도 젠킨스에 로그인 가능하고, 빌드를 실행하는 사용자가 접속할 수 있도록 요청할 수 있다. 이러한 작업은 Authorize Project 플러그인으로 수행할 수 있다.


'Study > 젠킨스로 배우는 CI,CD 파이프라인 구축' 카테고리의 다른 글
| 젠킨스로 배우는 CI/CD 파이프라인 구축 - 사용자 관리 (0) | 2025.06.15 |
|---|---|
| 젠킨스로 배우는 CI/CD 파이프라인 구축 - 젠킨스 자격증명 관리 (0) | 2025.05.25 |
| 젠킨스로 배우는 CI/CD 파이프라인 구축 - 전역 도구 구성 이해 (0) | 2025.05.24 |
| 젠킨스로 배우는 CI/CD 파이프라인 구축 - 젠킨스 설치 (1) | 2025.05.12 |
| 젠킨스로 배우는 CI/CD 파이프라인 구축 - 젠킨스 소개 및 구성 (2) | 2025.05.12 |
