티스토리 뷰
하나의 SVN 저장소에 여러개의 프로젝트가 올라가 있는 경우 각 프로젝트 별로 업무 연관성이 있는 개발자만 접근하여 사용을 해야 하는 상황이다.
이렇게 oingdaddy라는 저장소에 현재 A-project, B-project가 있고 이것들을 개발하는 개발자는 각각 다른 사람들이다. 미연의 사고를 방지하기 위해 A-project에는 A-project 관련 인원만 B-project에는 B-project 관련 인원만 접근 가능하게 SVN 설정을 하고자 한다.
설정의 대부분 oingdaddy라는 저장소의 conf 폴더 하위에 있는 파일에서 진행을 한다.
svnserve.conf
anon-access=none #인증되지않은(즉 계정이 없는) 사용자에 대해 접근을 거부한다.
auth-access = write #인증된 사용자에 대해 쓰기 권한을 준다.
password-db = passwd #인증된 사용자에 대한 계정 정보(아이디/패스) 정보가 기록된 파일명을 의미한다.(기본값 passwd)
authz-db = authz #인증된 사용자에 대한 권한 정보(폴더접근경로) 정보가 기록된 파일명을 의미한다.
passwd
[users]
#Admin
oingdaddy = oingdaddy
#A-project developer
adeveloper1 = adeveloper1
adeveloper2 = adeveloper2
#B-project developer
bdeveloper1 = bdeveloper1
bdeveloper2 = bdeveloper2
그냥 있는사람 쭉 나열해서 작성해도 상관없지만 이왕이면 이렇게 프로젝트별로 나눠서 사용자를 관리하는것은 관리적인 측면에서 매우 편리하다. 알아보기 쉽게 크게 3가지 그룹을 만들어봤다.
authz
[groups]
#AdminUser
adminUser=oingdaddy
#A-project group
AprojectUser=adeveloper1,adeveloper2
#B-project group
BprojectUser=bdeveloper1,bdeveloper1
[/]
@adminUser=rw
@AprojectUser=r
@BprojectUser=r
#A-project
[/trunk/A-project]
@AprojectUser=rw
@BprojectUser=
#B-project
[/trunk/B-project]
@AprojectUser=
@BprojectUser=rw
프로젝트 접근권한 설정할때 가장 핵심이 되는 부분이다.
passwd에서 정의한 사용자들을 여기서 그룹핑을 해준다. 필자는 크게 모두 볼수 있는 admin 그룹, A-project만 볼수 있는 AprojectUser 그룹, B-project만 볼수 있는 BprojectUser 그룹으로 생성을 하였다.
그리고 생성한 그룹과 프로젝트(폴더)를 매핑시켜준다. 프로젝트(폴더)는 [/] 이런식으로 대괄호로 감싸서 표현을 한다. 그리고 그것에 매핑되는 그룹은 @adminUser 이런식으로 표현을 한다. 위의 예제를 보면 직관적이라서 이해가 어렵지는 않을 것이다.
A-project를 B-project 인원에게 아예 보이지도 않게 하려면 위처럼 @BprojectUser= 으로 적어주면 된다.
또한 현재는 A-project로 프로젝트 단위로 구분을 했는데 [/trunk/A-project/aModule], [/trunk/A-project/bModule]
이렇게 프로젝트 내부의 폴더까지도 세분화해서 권한을 부여할 수 있다.
유의할점은
SVN을 구성할때 svn://111.222.0.111:3690/TEST 처럼 포트 뒤에 프로젝트명이 붙을 경우는 [/]를 [TEST:/] 로 작성을 해줘야한다.
이제 잘 되나 테스트를 해보자.
adminUser로 접속시에는 맨 처음 권한을 설정하기 전과 같이 모든 프로젝트가 보이고 쓰기도 가능하다.
그럼 계정을 변경을 해보자.
변경하는 방법은 SVN Repository Perspective에서 저장소를 우클릭을 하고 Location Properites 를 클릭하면 된다.
adeveloper1로 변경을 했다. A-project만 보여야 한다.
adeveloper1과 bdeveloper1로 각각 접속을 했을때 위와 같이 원했던 대로 자신의 프로젝트만 볼 수 있다. 잘 된다.
끝!
'CI,CD > SCM' 카테고리의 다른 글
Jenkins에서 Git Publisher 사용시 returned status code 128 오류 (0) | 2020.12.28 |
---|---|
git push할때 RFC failed; 413 Request Entity Too Large 오류 해결 (0) | 2020.12.09 |
Windows에 SVN 설치 및 설정, 그리고 이클립스에 연결하기 (0) | 2020.11.19 |
Cloning the Git Repository on Eclipse Error (Caused by: org.eclipse.jgit.errors. (0) | 2020.11.09 |
[git 시작 #4] branch 생성 / 삭제 / 변경 (CLI 환경) (0) | 2020.08.10 |