사전 준비 사항

  • 관리자 계정 필요 (Administration 메뉴 접근용)

  • 권한을 부여할 대상 정보 (사용자 ID 또는 그룹명)

  • 설정할 저장소 이름 및 경로 패턴

권한 및 예외 설정 절차

Step 1) 관리자 계정으로 로그인 및 메뉴 이동

  1. 관리자 계정으로 JFrog Platform에 로그인한다.
  2. 메인 화면에서 Administration (톱니바퀴 모양) 메뉴를 선택한다.
  3. Identity and Access > Permissions 메뉴로 이동한다.
  4. New Permission 버튼을 클릭하여 새로운 권한 타겟(Permission Target) 생성을 시작한다.

Step 2) 권한 타겟 기본 정보 및 저장소(Repository) 단위 설정

  1. Name 영역에 권한 목적을 명확히 알 수 있는 고유한 이름을 입력한다. (예: RnD_Project-A, DevOps_Restricted)
  2. Resources 탭에서 Add Repositories 버튼을 클릭한다.
  3. 시스템에 등록된 저장소 목록 중 권한을 적용할 특정 저장소를 선택하거나, 향후 생성될 저장소까지 포함하려면 Any Local Repository 등을 선택한 뒤 추가한다.

Step 3) 특정 폴더·파일 접근 권한 및 접근 예외 설정 (패턴 적용)

  1. 저장소 선택 후 화면 하단의 Set Patterns (Optional) 버튼을 클릭한다.
  2. Include Patterns (포함 패턴 / 접근 허용 경로):
    • 특정 폴더나 파일 이하의 경로에만 접근을 허용하고 싶을 때 와일드카드(*, **, ?)를 사용하여 입력한다.
    • (예시) org/apache/** 입력 시, 해당 저장소 내의 org/apache/ 폴더 하위 자원에만 접근 권한이 제한된다.
  3. Exclude Patterns (제외 패턴 / 접근 예외 설정):
    • 특정 폴더나 파일에 대해 접근을 차단(예외 처리)하고자 할 때 입력한다.
    • (예시) **/*.secret 또는 **/private/** 입력 시, 전체 경로 중 해당 파일이나 폴더는 권한 부여 대상에서 제외되어 접근이 불가능해진다.
  4. 패턴 입력 후 + 버튼 또는 엔터(Enter) 키를 눌러 필터를 등록한다.

Step 4) 대상 사용자/그룹 지정 및 권한 액션 부여

  1. Users 또는 Groups 탭으로 이동하여 권한을 적용할 사용자나 그룹을 선택하고 추가한다.
  2. 추가된 각 사용자/그룹별로 저장소에서 수행할 수 있는 구체적인 권한 액션을 체크한다.
    • Read: 아티팩트 다운로드 및 메타데이터 조회
    • Deploy/Cache: 아티팩트 배포 및 원격 저장소 캐싱
    • Annotate: 메타데이터 및 속성 부여
    • Delete/Overwrite: 아티팩트 삭제 및 덮어쓰기
    • Manage: 해당 권한 타겟의 다른 사용자 권한을 편집할 수 있는 관리 권한

Step 5) 저장

  1. 화면 하단의 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.jar

    • company/teams/rnd/release/patch.zip

    • project-a/snapshot/v1.0.jar (release 폴더 없음)

 시나리오 D: 단일 문자 변형 대응

  • 목적: 버전 표기나 팀 명칭 등 한 글자만 바뀌는 폴더 구조를 묶어서 제어할 때
  • 패턴: apps/v?/deploy/**
  • 매칭 결과:
    • apps/v1/deploy/app.tar
    • apps/v2/deploy/app.tar
    • apps/v10/deploy/app.tar (v10은 두 글자이므로 매칭 실패)

Include / Exclude 패턴 조합 우선순위 주의사항

JFrog 권한 설정 시 Include(포함)와 Exclude(제외) 패턴을 동시에 적용할 경우 Exclude 패턴이 항상 우선(Override)합니다.

  • 설정 예시:
    • Include Patterns: project-a/** (프로젝트 A 폴더 전체 접근 허용)
    • Exclude Patterns: **/private/** (명칭에 private이 포함된 폴더 제외)
  • 실제 동작:
    • 사용자는 project-a/public/lib.jar에는 정상 접근할 수 있지만, project-a/private/key.pem 파일은 Include 범위에 있더라도 Exclude에 걸려 접근이 차단됩니다.


 
 
 
 
 
 
 
  

  • No labels