Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
kit-policy — Kit向けの柔軟で構成可能な認可フレームワーク(Action Policyに触発) | Kitploit
ツール/GitLabGitLab/kit-lang/packages/kit-policy
認証と認可ユーティリティとフレームワーク
GitLabkit-lang/packages/kit-policy

kit-policy

Kit向けの柔軟で構成可能な認可フレームワーク(Action Policyに触発)

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
1ヶ月前未レビュー

kit-policy

Kit向けの柔軟で構成可能な認可フレームワーク。RubyのAction Policyにインスパイアされています。


[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 を参照してください。

ツールをダウンロード
ポリシーの型とヘルパーのテスト