Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
kit-policy — Kit을 위한 유연하고 구성 가능한 권한 부여 프레임워크 (Action Policy에서 영감을 받음) | Kitploit
도구/GitLabGitLab/kit-lang/packages/kit-policy
Authentication & AuthorizationUtilities & Frameworks
GitLabkit-lang/packages/kit-policy

kit-policy

Kit을 위한 유연하고 구성 가능한 권한 부여 프레임워크 (Action Policy에서 영감을 받음)

저장소 보기

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
1개월 전아직 검토되지 않음

kit-policy

Ruby의 Action Policy에서 영감을 받은, Kit을 위한 유연하고 합성 가능한 권한 부여 프레임워크입니다.


[TOC]


파일

파일설명
.editorconfig편집기 서식 구성
.gitignore빌드 아티팩트 및 의존성에 대한 Git 무시 규칙
.tool-versionsasdf 도구 버전 (Zig, Kit)
LICENSEMIT 라이선스 파일
README.md이 파일
examples/blog-policy.kit블로그 권한 부여 예제
kit.toml메타데이터, 작업, 린트 구성을 포함한 패키지 매니페스트
src/core.kit핵심 권한 부여 헬퍼
src/error.kit권한 부여 오류, 결과 유형 및 실패 이유
src/main.kit패키지 루트 모듈
src/scope.kit범위, 조건자 및 페이지네이션 헬퍼
tests/policy.test.kit종단 간 정책 동작 테스트
tests/types.test.kit

의존성

Kit 패키지 의존성 없음.

설치

root@kitploit:~
kit add gitlab.com/kit-lang/packages/kit-policy.git

사용법

root@kitploit:~
import Kit.Policy.Core as PolicyCore
import Kit.Policy.Error as PolicyError
import Kit.Policy.Scope as PolicyScope

type Post = {id: Int, author-id: Int, published?: Bool, title: String}
type User = {id: Int, admin?: Bool}
type AuthContext = {user: User}

post-policy = fn(post, ctx, action) =>
  if ctx.user.admin? then
    PolicyCore.allow
  else
    match PolicyCore.resolve-alias action
      | :show -> PolicyCore.allow-if post.published?
      | :update -> PolicyCore.allow-if (ctx.user.id == post.author-id)
      | :destroy -> PolicyCore.allow-if (ctx.user.id == post.author-id)
      | _ -> PolicyCore.no-rule action

post-scope = fn(posts, ctx) =>
  if ctx.user.admin? then
    posts
  else
    posts |>> List.filter (fn(post) => post.published?)

main = fn =>
  user = {id: 1, admin?: false}
  ctx = {user: user}
  post = {id: 1, author-id: 1, published?: true, title: "Hello"}
  posts = [post]

  if PolicyCore.can-with? post-policy post ctx :update then
    println "Can update post"
  else
    println "Cannot update post"

  visible-posts = PolicyScope.scope-with post-scope posts ctx
  page = PolicyScope.paginate 1 10 visible-posts
  info = PolicyScope.pagination-info 1 10 visible-posts

  println "Visible posts: ${page}"
  println "Pages: ${info.pages}"

  err = PolicyError.not-authorized "Post" :update "not the author"
  println (PolicyError.message err)

main

API 개요

Policy.Core

Result Bool PolicyError를 반환하는 정책 함수를 위한 핵심 헬퍼입니다.

root@kitploit:~
PolicyCore.can-with? policy resource context action
PolicyCore.may-with? policy resource context action

PolicyCore.allow
PolicyCore.deny
PolicyCore.allow-if condition
PolicyCore.deny-if condition
PolicyCore.no-rule action
PolicyCore.allow-or-deny condition resource-name reason action

사전 검사 헬퍼는 Option Bool을 반환합니다: Some true는 허용, Some false는 거부, None은 주 규칙으로 계속 진행합니다.

root@kitploit:~
PolicyCore.admin-bypass is-admin? ctx
PolicyCore.owner-check is-owner? resource ctx
PolicyCore.first-pre-check [check1, check2, check3]

액션 헬퍼는 공통 액션 그룹과 별칭을 제공합니다.

root@kitploit:~
PolicyCore.crud-actions
PolicyCore.read-actions
PolicyCore.write-actions

PolicyCore.read-action? action
PolicyCore.write-action? action

PolicyCore.resolve-alias :new     # :create
PolicyCore.resolve-alias :edit    # :update
PolicyCore.resolve-alias :delete  # :destroy
PolicyCore.resolve-alias :view    # :show

정책 합성 헬퍼는 여러 권한 부여 결과를 결합합니다.

root@kitploit:~
PolicyCore.all-allowed? [result1, result2, result3]
PolicyCore.any-allowed? [result1, result2, result3]

Policy.Scope

범위 헬퍼는 호출자에게 데이터를 반환하기 전에 컬렉션을 필터링합니다.

root@kitploit:~
PolicyScope.scope-with scope-fn items ctx
PolicyScope.filter-by predicate items

PolicyScope.is-owned-by? get-owner-id get-user-id item ctx
PolicyScope.is-published? get-published item
PolicyScope.is-in-state? get-state target-state item
PolicyScope.is-admin-or? check-admin fallback-check ctx item

조건자 결합기는 재사용 가능한 범위 검사를 구축하는 데 유용합니다.

root@kitploit:~
PolicyScope.both? pred1 pred2 item
PolicyScope.either? pred1 pred2 item
PolicyScope.not-matching? pred item

페이지네이션 헬퍼는 1부터 인덱싱됩니다.

root@kitploit:~
page1 = PolicyScope.paginate 1 10 items
pages = PolicyScope.total-pages 10 items
info = PolicyScope.pagination-info 1 10 items

Policy.Error

권한 부여 실패를 위한 오류 및 결과 유형입니다.

root@kitploit:~
type PolicyError =
  | NotAuthorized {resource: String, action: Keyword, reason: String}
  | RuleNotFound {action: Keyword}
  | ContextMissing {field: String}
  | PolicyNotFound {resource-type: String}
  | CustomError String

type FailureReason = FailureReason {
  policy: String,
  action: Keyword,
  details: String
}

type AuthResult =
  | Allowed
  | Denied String

헬퍼 함수는 모듈에서 내보내지므로 PolicyError로 가져오면 모듈 함수로 호출됩니다.

root@kitploit:~
PolicyError.not-authorized resource action reason
PolicyError.rule-not-found action
PolicyError.context-missing field
PolicyError.policy-not-found resource-type
PolicyError.custom message

PolicyError.message err
PolicyError.kind err
PolicyError.is-not-authorized? err
PolicyError.is-rule-not-found? err

PolicyError.new policy action
PolicyError.with-details policy action details
PolicyError.policy reason
PolicyError.action reason
PolicyError.details reason
PolicyError.format reason

PolicyError.allowed
PolicyError.denied reason
PolicyError.is-allowed? result
PolicyError.is-denied? result
PolicyError.reason result
PolicyError.to-result resource-name action result

설계 노트

  • 정책은 일반 함수이므로 테스트와 합성이 쉽습니다.
  • 권한 부여는 명시적입니다: 헬퍼는 예외를 던지는 대신 Result Bool PolicyError를 반환합니다.
  • 범위는 정책 검사와 분리되어 있으므로 렌더링이나 직렬화 전에 목록 필터링이 가능합니다.
  • 일반적인 액션은 :index, :show, :create, :update, :destroy와 같은 키워드를 사용합니다.
  • 이 패키지는 프레임워크에 구애받지 않으며 모든 Kit 애플리케이션 코드와 함께 사용할 수 있습니다.

개발

예제 실행

인터프리터로 블로그 정책 예제를 실행합니다:

root@kitploit:~
kit run examples/blog-policy.kit

예제를 네이티브 바이너리로 컴파일합니다:

root@kitploit:~
kit build examples/blog-policy.kit && ./blog-policy

테스트 실행

테스트 스위트 실행:

root@kitploit:~
kit test

커버리지와 함께 테스트 스위트 실행:

root@kitploit:~
kit test --coverage

kit dev 실행

표준 개발 워크플로우 실행(포맷, 검사, 테스트):

root@kitploit:~
kit dev

다음을 수행합니다:

  1. src/의 소스 파일 포맷 및 검사
  2. examples/의 예제 타입 검사
  3. tests/의 테스트를 커버리지로 실행

인터프리터/컴파일러 패리티 확인

예제에 대한 패리티 검사 실행:

root@kitploit:~
kit parity --failures-only

문서 생성

문서 주석에서 API 문서 생성:

root@kitploit:~
kit doc

참고: 문서 주석(##)이 있는 Kit 소스는 docs/*.html에 HTML 문서를 생성합니다.

빌드 아티팩트 정리

생성된 파일, 캐시 및 빌드 아티팩트 제거:

root@kitploit:~
kit task clean

참고: kit.toml에 정의되어 있습니다.

로컬 설치

개발을 위해 이 패키지를 로컬에 설치하려면:

root@kitploit:~
kit install

이 패키지는 ~/.kit/packages/@kit/policy/에 설치되어 다른 프로젝트에서 Kit.Policy로 가져올 수 있습니다.

라이선스

이 패키지는 MIT 라이선스 하에 제공됩니다 - 자세한 내용은 LICENSE를 참조하세요.

도구 다운로드
정책 유형 및 헬퍼 테스트