한국어
문서
정책

정책

OpenCode가 사용할 수 있는 설정된 리소스를 제어하세요.

정책은 OpenCode가 지정된 리소스에 대해 작업을 수행할 수 있는지 제어합니다. 이 기능은 실험적이며 opencode.jsonexperimental.policies 배열로 설정합니다.

정책은 권한과는 별개입니다. 권한은 세션 중에 도구가 할 수 있는 일을 제어하는 반면, 정책은 OpenCode가 LLM 프로바이더 같은 리소스를 사용할 수 있는지를 제어합니다.


설정

각 정책 문(statement)에는 세 가지 필드가 있습니다:

  • effect - "allow" 또는 "deny" 중 하나.
  • action - 제어되는 작업.
  • resource - 문이 적용되는 리소스 ID 또는 와일드카드 패턴.

예를 들어, openai 프로바이더 사용을 거부하려면:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "experimental": {
    "policies": [
      {
        "effect": "deny",
        "action": "provider.use",
        "resource": "openai"
      }
    ]
  }
}

정책에 의해 거부된 프로바이더는 자격 증명이 있거나 다른 방식으로 올바르게 설정되어 있더라도 모델 선택이나 모델 사용에 사용할 수 없습니다.


사용 가능한 정책

OpenCode는 현재 하나의 정책 액션을 지원합니다:

액션리소스설명
provider.useopenai 같은 프로바이더 IDLLM 프로바이더 사용을 허용하거나 거부합니다.

향후 더 많은 정책 액션이 추가될 수 있습니다.


매칭

resource 필드는 와일드카드 매칭을 지원합니다. *는 0개 이상의 문자와 매칭되고, ?는 한 개의 문자와 매칭됩니다.

예를 들어:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "experimental": {
    "policies": [
      {
        "effect": "deny",
        "action": "provider.use",
        "resource": "company-*"
      }
    ]
  }
}

이는 company-us, company-eu 같은 프로바이더를 거부합니다.


규칙 순서

여러 문이 일치하는 경우, 마지막으로 일치하는 문이 우선합니다. 포괄적인 규칙을 먼저 두고, 그 뒤에 더 구체적인 예외를 배치하세요.

예를 들어, Anthropic만 허용하려면:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "experimental": {
    "policies": [
      {
        "effect": "deny",
        "action": "provider.use",
        "resource": "*"
      },
      {
        "effect": "allow",
        "action": "provider.use",
        "resource": "anthropic"
      }
    ]
  }
}

프로바이더와 일치하는 정책이 없으면, 기본적으로 프로바이더 사용이 허용됩니다.

정책은 전역 설정과 프로젝트 설정 모두에 설정할 수 있습니다. 두 위치의 정책이 동일한 프로바이더와 일치하는 경우, 전역 정책이 프로젝트 정책보다 우선합니다. 이를 통해 저장소가 전역적으로 거부된 프로바이더를 다시 활성화하는 것을 방지합니다.


프로바이더 목록

프로바이더 접근을 제어할 때는 기존의 disabled_providersenabled_providers 설정 대신 정책을 사용하세요.

disabled_providers를 대체하려면:

opencode.json
{
  "experimental": {
    "policies": [
      { "effect": "deny", "action": "provider.use", "resource": "openai" },
      { "effect": "deny", "action": "provider.use", "resource": "google" }
    ]
  }
}

enabled_providers를 대체하려면, 먼저 모든 프로바이더를 거부한 다음 선택한 프로바이더를 허용하세요:

opencode.json
{
  "experimental": {
    "policies": [
      { "effect": "deny", "action": "provider.use", "resource": "*" },
      { "effect": "allow", "action": "provider.use", "resource": "anthropic" },
      { "effect": "allow", "action": "provider.use", "resource": "openai" }
    ]
  }
}