사전 준비 사항
관리자 계정 필요 (Administration 메뉴 접근용)
권한을 부여할 대상 정보 (사용자 ID 또는 그룹명)
설정할 저장소 이름 및 경로 패턴
권한 및 예외 설정 절차
Step 1) 관리자 계정으로 로그인 및 메뉴 이동
- 관리자 계정으로 JFrog Platform에 로그인한다.
- 메인 화면에서 Administration (톱니바퀴 모양) 메뉴를 선택한다.
- Identity and Access > Permissions 메뉴로 이동한다.
- New Permission 버튼을 클릭하여 새로운 권한 타겟(Permission Target) 생성을 시작한다.
Step 2) 권한 타겟 기본 정보 및 저장소(Repository) 단위 설정
- Name 영역에 권한 목적을 명확히 알 수 있는 고유한 이름을 입력한다. (예: RnD_Project-A, DevOps_Restricted)
- Resources 탭에서 Add Repositories 버튼을 클릭한다.
- 시스템에 등록된 저장소 목록 중 권한을 적용할 특정 저장소를 선택하거나, 향후 생성될 저장소까지 포함하려면
Any Local Repository등을 선택한 뒤 추가한다.
Step 3) 특정 폴더·파일 접근 권한 및 접근 예외 설정 (패턴 적용)
- 저장소 선택 후 화면 하단의 Set Patterns (Optional) 버튼을 클릭한다.
- Include Patterns (포함 패턴 / 접근 허용 경로):
- 특정 폴더나 파일 이하의 경로에만 접근을 허용하고 싶을 때 와일드카드(
*,**,?)를 사용하여 입력한다. - (예시)
org/apache/**입력 시, 해당 저장소 내의org/apache/폴더 하위 자원에만 접근 권한이 제한된다.
- 특정 폴더나 파일 이하의 경로에만 접근을 허용하고 싶을 때 와일드카드(
- Exclude Patterns (제외 패턴 / 접근 예외 설정):
- 특정 폴더나 파일에 대해 접근을 차단(예외 처리)하고자 할 때 입력한다.
- (예시)
**/*.secret또는**/private/**입력 시, 전체 경로 중 해당 파일이나 폴더는 권한 부여 대상에서 제외되어 접근이 불가능해진다.
- 패턴 입력 후 + 버튼 또는 엔터(Enter) 키를 눌러 필터를 등록한다.
Step 4) 대상 사용자/그룹 지정 및 권한 액션 부여
- Users 또는 Groups 탭으로 이동하여 권한을 적용할 사용자나 그룹을 선택하고 추가한다.
- 추가된 각 사용자/그룹별로 저장소에서 수행할 수 있는 구체적인 권한 액션을 체크한다.
- Read: 아티팩트 다운로드 및 메타데이터 조회
- Deploy/Cache: 아티팩트 배포 및 원격 저장소 캐싱
- Annotate: 메타데이터 및 속성 부여
- Delete/Overwrite: 아티팩트 삭제 및 덮어쓰기
- Manage: 해당 권한 타겟의 다른 사용자 권한을 편집할 수 있는 관리 권한
Step 5) 저장
화면 하단의 Create (또는 Save) 버튼을 클릭하여 권한 설정을 최종 적용한다.
JFrog Ant-style 패턴 표기법 가이드
핵심 와일드카드 규칙
?(물음표): 단 하나의 문자와 매칭됩니다.*(별표 1개): 폴더 내의 0개 이상의 문자와 매칭됩니다. (하위 폴더 경계인/를 넘어가지 못함)**(별표 2개): 0개 이상의 디렉터리(하위 폴더 전체)와 매칭됩니다. (경로 구분자/를 포함하여 재귀적으로 매칭)
실제 적용 가이드 및 폴더 구조 예시
실무에서 가장 많이 사용되는 4가지 시나리오별 패턴 적용 방법입니다.
시나리오 A: 특정 폴더 및 그 하위의 모든 파일 제어 (가장 많이 사용)
목적:
project-a폴더 내부의 모든 자원에 대한 접근을 허용하거나 차단하고 싶을 때패턴:
project-a/**매칭 결과:
project-a/(폴더 자체)project-a/build.json(폴더 직속 파일)project-a/src/main/core.jar(깊은 하위 폴더의 파일)project-b/core.jar(매칭 실패)
시나리오 B: 특정 확장자를 가진 파일만 일괄 제어 (보안 및 예외 설정용)
목적: 패키징 유형에 관계없이 저장소 내의 모든
.secret또는.pem파일에 대한 접근을 차단(Exclude)하고 싶을 때패턴:
**/*.secret매칭 결과:
config.secret(루트 경로 파일)deploy/env/prod.secret(모든 하위 경로 파일)deploy/env/prod.json(확장자 불일치)
시나리오 C: 특정 구조를 가진 중간 폴더 제어
목적: 어떤 프로젝트든 관계없이 중간에
release라는 이름을 가진 폴더 하위의 자원만 제어하고 싶을 때패턴:
**/release/**매칭 결과:
project-a/release/v1.0.jarcompany/teams/rnd/release/patch.zipproject-a/snapshot/v1.0.jar(release폴더 없음)
시나리오 D: 단일 문자 변형 대응
- 목적: 버전 표기나 팀 명칭 등 한 글자만 바뀌는 폴더 구조를 묶어서 제어할 때
- 패턴:
apps/v?/deploy/** - 매칭 결과:
apps/v1/deploy/app.tarapps/v2/deploy/app.tarapps/v10/deploy/app.tar(v10은 두 글자이므로 매칭 실패)
Include / Exclude 패턴 조합 우선순위 주의사항
JFrog 권한 설정 시 Include(포함)와 Exclude(제외) 패턴을 동시에 적용할 경우 Exclude 패턴이 항상 우선(Override)합니다.
- 설정 예시:
- Include Patterns:
project-a/**(프로젝트 A 폴더 전체 접근 허용) - Exclude Patterns:
**/private/**(명칭에 private이 포함된 폴더 제외)
- Include Patterns:
- 실제 동작:
- 사용자는
project-a/public/lib.jar에는 정상 접근할 수 있지만,project-a/private/key.pem파일은 Include 범위에 있더라도 Exclude에 걸려 접근이 차단됩니다.
- 사용자는