Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
pigeon — AI 에이전트에 대해 서명되고 범위가 지정된 자격 증명으로 최소 권한 위임을 적용합니다. 하위 에이전트에 좁은 기능과 리소스를 부여하고, 실행 전에 작업을 검증하며, 권한 상승을 방지합니다. | Kitploit
도구/GitHubGitHub/pigeonlabshq/pigeon
Authentication & AuthorizationCloud SecurityDevSecOpsIdentity & Access Management (IAM)API SecurityAI Security
GitHubpigeonlabshq/pigeon

pigeon

AI 에이전트에 대해 서명되고 범위가 지정된 자격 증명으로 최소 권한 위임을 적용합니다. 하위 에이전트에 좁은 기능과 리소스를 부여하고, 실행 전에 작업을 검증하며, 권한 상승을 방지합니다.

저장소 보기
4421620일 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Pigeon

당신의 에이전트가 하위 에이전트를 생성하고 동일한 API 키를 넘겨주었습니다. 그 하위 에이전트는 이제 프로덕션에 배포하고, 결제 데이터베이스를 읽고, main에 병합할 수 있습니다.

Pigeon은 이를 막습니다. 자식에게 Pigeon Pass를 넘겨주세요. 이는 당신이 할 수 있는 모든 것의 복사본이 아니라, 수행할 수 있는 작업에 대해 축소되고 서명된 자격 증명입니다.

설치

Python 3.12 이상.

root@kitploit:~
git clone https://github.com/pigeonlabsHQ/pigeon.git
cd pigeon
pip install .

핵심 아이디어, 20줄로 요약

root@kitploit:~
from pigeon import grant, verify

authority = grant(
    subject="agent:deployer",
    capabilities=["deploy"],
    resources=["environment:staging"],
)

allowed = verify(authority, action="deploy", resource="environment:staging")
assert allowed.allowed

denied = verify(authority, action="deploy", resource="environment:production")
assert not denied.allowed
assert denied.reason_code == "RESOURCE_NOT_ALLOWED"
print(denied.reason_code, denied.message, denied.details)

verify는 단순한 불리언 값을 반환하지 않습니다. 거부에는 이유 코드, 메시지, 그리고 실패한 비교(requested vs allowed)가 포함됩니다.

직접 작성하지 않고 실행해 보세요:

root@kitploit:~
python examples/01_infrastructure.py
python demo/agent.py

에이전트에서의 적용 위치

연결할 Pigeon 서버는 없습니다. 이미 보유한 두 곳만 변경하면 됩니다:

  1. 생성(Spawn). API 키를 하위 에이전트에 복사하던 곳에서 delegate(...)를 호출하고 자식에게 Pass를 부여하세요.
  2. 도구(Tool). 부수 효과가 발생하는 곳(배포, 쿼리, MCP 도구)에서 verify(...)를 호출하고 거부된 경우 도구를 실행하지 마세요.

실제 비밀 키는 러너(runner)에 보관하세요. 자식은 Pass만 휴대합니다.

root@kitploit:~
from pigeon import delegate, grant, verify, DelegationError

parent = grant(
    subject="agent:orchestrator",
    capabilities=["deploy", "open_pr"],
    resources=["environment:staging", "repo:acme/api"],
    constraints={"max_deploys_per_hour": 3},
)

worker = delegate(
    parent,
    subject="agent:pr-bot",
    capabilities=["open_pr"],
    resources=["repo:acme/api"],
    constraints={"max_deploys_per_hour": 3},  # cannot drop a parent constraint
)

result = verify(worker, action="open_pr", resource="repo:acme/api")
assert result.allowed

denied = verify(worker, action="deploy", resource="environment:staging")
assert denied.reason_code == "CAPABILITY_NOT_GRANTED"

try:
    delegate(worker, "agent:rogue", ["open_pr", "deploy"], ["repo:acme/api"])
except DelegationError as exc:
    assert exc.reason_code == "PRIVILEGE_ESCALATION"

자식은 기능을 추가하거나, 리소스를 확장하거나, 제한을 높이거나, 부모의 제약 조건을 제거할 수 없습니다. Pigeon이 자식이 더 좁은 범위임을 증명할 수 없으면 거부합니다.

러너가 verify를 호출하지 않으면 Pass는 장식에 불과합니다.

MCP 미들웨어

이는 프로토콜의 일부가 아닌 시행 지점입니다. 클라이언트는 도구 호출마다 더 좁은 Pass를 발급합니다. 서버는 도구가 실행되기 전에 이를 검증합니다.

root@kitploit:~
from pigeon import grant
from pigeon.integrations.mcp import execute_tool, pass_for_tool

parent = grant(
    subject="agent:github",
    capabilities=["create_issue", "merge_pr"],
    resources=["mcp:github"],
)

tool_pass = pass_for_tool(parent, "create_issue", "mcp:github")

def create_issue(*, title, body):
    return {"created": True, "title": title}

ok = execute_tool(tool_pass, "create_issue", "mcp:github",
                  {"title": "bump deps", "body": "automated"}, create_issue)
assert ok["allowed"]

no = execute_tool(tool_pass, "merge_pr", "mcp:github",
                  {"title": "nope", "body": "nope"}, create_issue)
assert no["reason_code"] == "CAPABILITY_NOT_GRANTED"

신원(Identity)은 에이전트가 누구인지 알려줍니다. 권한(Authority)은 무엇을 할 수 있는지 알려줍니다.

CLI

root@kitploit:~
pigeon keygen
pigeon inspect pass.json

이것이 아닌 것

Pigeon은 작은 기본 요소입니다. 플랫폼, 정책 엔진, 신원 공급자, 또는 키 관리자가 아닙니다. 프롬프트 인젝션을 막지 않습니다. Pass에 명시한 차원에서만 폭발 반경(blast radius)을 제한하며, 오직 그 차원에서만 제한합니다.

  • 프로토콜: SPEC.md
  • 제한 사항: SECURITY.md
  • 추가 스크립트: examples/ (인프라, 데이터, 코드, 결제 순)
도구 다운로드