Share skills and plugins

Share skills and plugins (스킬·플러그인 공유)

개요

스킬·플러그인 공유를 사용하면 Snowflake 계정 전체에서 스킬과 플러그인을 공유하고, 발견하고, 거버넌스할 수 있어요. 스킬을 단일 사용자 머신에 로컬로 두는 대신, 팀원, 역할, 또는 계정 전체가 찾아 사용할 수 있도록 게시할 수 있어요.

출처: Share skills and plugins

본문

핵심 기능:

  • 공유: 스킬이나 플러그인을 게시하고 동료에게 보낼 링크를 받아요.
  • 발견: CoCo Desktop, Snowsight의 CoCo, CoCo CLI에서 공유된 스킬과 플러그인을 검색해요.
  • 보안 스캔: 모든 공유 스킬과 플러그인은 다른 사람이 설치하기 전에 보안 문제로 스캔돼요.
  • 거버넌스: 스킬을 인증하고, 역할로 접근을 제어하고, 카탈로그를 카테고리로 구성하고, Snowsight의 AI & ML 아래 Skills and plugins 페이지에서 설치·사용 횟수를 추적해요.

참고

아무 사용자나 자신이 소유한 스킬과 플러그인을 공유할 수 있어요. 거버넌스 동작에는 ACCOUNTADMIN 역할 또는 ACCOUNTADMIN이 관련 거버넌스 권한을 부여한 역할이 필요해요. 자세한 내용은 Delegate administration을 참고해요.

동작 방식

스킬과 플러그인은 Snowflake 계정의 Cortex Extension 객체로 저장돼요. Cortex Extension은 스킬·플러그인 파일과 이름, 설명, 버전, 콘텐츠 유형(Skill 또는 Plugin) 같은 메타데이터를 포함해요.

스킬이나 플러그인을 공유하면 시스템이 다음 형식의 snow:// URI를 반환해요.

snow://skill_catalog/DB.SCHEMA.CORTEX_EXTENSION_NAME

특정 버전을 참조하려면 URI에 버전 세그먼트를 추가해요.

snow://skill_catalog/DB.SCHEMA.CORTEX_EXTENSION_NAME/versions/version$1

이 링크를 어떤 채널(Slack, 이메일 등)로든 보낼 수 있어요. 수신자는 URI를 CoCo에 붙여넣어 스킬이나 플러그인을 설치하고 사용해요.

snow://skill_catalog/와 snow://cortex_extension/는 같은 객체에 대한 상호 교환 가능한 접두사이므로, URI가 허용되는 곳이면 어느 형태의 링크든 동작해요.

참고

Cortex Extension 객체는 기본적으로 내 개인 데이터베이스의 SKILL_SHARING 스키마에 생성돼요. Snowflake가 스킬·플러그인 공유를 위해 자동으로 만드는 스키마예요.

플러그인은 Snowsight의 AI & ML 아래 Skills and plugins 페이지에서 스킬 옆에 나타나요. 스킬과 플러그인은 같은 공유, 발견, 거버넌스 모델을 따라요.

스킬·플러그인 공유

공유 옵션

공유는 두 개의 독립적인 개념으로 관리돼요.

  • 접근(RBAC): 어떤 역할이 스킬이나 플러그인을 설치하고 사용할 수 있는지 결정.
  • 발견 가능성: 스킬이나 플러그인이 탐색용으로 카탈로그에 나타나는지 결정. 발견 가능한 스킬·플러그인은 적절한 역할을 가진 사용자에게 검색 가능하고 UI에 보여요.

접근과 발견 가능성은 독립적이므로, 두 가지 주요 방식으로 결합해 공유할 수 있어요.

  • 비공개(비발견): 링크를 동료에게 직접 보내요. 스킬·플러그인은 다른 사람이 탐색할 수 있게 카탈로그에 나타나지 않아요. 링크가 있는 사람만 접근할 수 있어요. "미등록(unlisted)" 비디오와 유사하게, 링크가 있는 사람은 누구나 접근할 수 있지만 탐색할 수는 없어요.
  • 공개 또는 역할 기반(발견): PUBLIC 역할 또는 특정 역할에 공유해요. 스킬·플러그인은 카탈로그에서 발견 가능하고 적절한 역할을 가진 사람이 수동 검색이나 자동 발견으로 찾을 수 있어요.

설명

모든 공유 스킬·플러그인은 무엇을 하는지 알려주는 짧고 사람이 읽을 수 있는 설명을 담아요. CoCo를 통해 공유하면 Snowflake가 내용을 분석해 1~2문장 요약을 생성하며, 게시 전후에 편집할 수 있어요. 설명 생성은 CoCo 공유 워크플로의 일부이므로 SQL로 Cortex Extension을 직접 만들어도 생성되지 않아요.

이 설명은 스킬의 SKILL.md 파일이나 플러그인 매니페스트의 front matter와는 별개예요. Front matter는 CoCo와 에이전트를 위해 작성되어, 카탈로그를 탐색하는 사람보다는 작업을 스킬에 매칭하는 데 최적화됐어요. 설명은 사람들이 카탈로그에서 읽는 것이에요.

설명은 단일 버전이 아니라 객체에 적용돼요. 마치 저장소의 README처럼요. 소유자는 새 버전을 게시하지 않고도 언제든 설명을 업데이트할 수 있어요. 버전별 front matter는 계속 스킬·플러그인 파일 자체에서 나와요.

공유 인터페이스

다음 인터페이스가 공유를 지원해요.

인터페이스 스킬 플러그인
CoCo CLI 예 예
CoCo Desktop 예 예
Snowsight의 CoCo 예 아니요
CoCo CLI

/share-skill-and-plugin 스킬을 사용해 스킬이나 플러그인을 게시해요.

> /share-skill-and-plugin my-skill

CoCo는 대상 역할(기본 PUBLIC)과 스킬을 발견 가능하게 할지(기본 Yes) 고르라고 프롬프트해요. 공유 후 링크를 받아요.

Skill "my-skill" shared to Snowflake connection 'my-connection'.
Share link: snow://skill_catalog/USERS.MY_SCHEMA.MY_SKILL

스킬 매니저에서 /skill을 실행하고 특정 스킬의 공유 옵션을 선택해 공유할 수도 있어요.

이전에 공유한 스킬을 업데이트하려면 같은 공유 워크플로를 다시 실행해요. Cortex Extension 객체가 새 스킬 파일로 업데이트돼요.

Snowsight의 CoCo

CoCo에서 Share skill <skill>을 입력해 스킬 공유를 시작해요.

CoCo Desktop

스킬 매니저에서 스킬·플러그인을 공유해요. 공유 옵션을 선택해 게시하고 공유 링크를 얻어요. 자세한 내용은 Publish a skill과 Publish a plugin을 참고해요.

스킬·플러그인 대량 가져오기

/bulk-share-skills-and-plugins 스킬은 내 머신의 디렉터리에서 찾은 모든 스킬·플러그인을 공유하고, 각각에 Cortex Extension을 만들어요. 손으로 하나씩 공유하는 대신 팀의 기존 컬렉션을 한 번에 Snowflake로 가져오는 데 사용해요.

스킬은 로컬 디렉터리를 읽으므로, Git 저장소에서 가져오려면 먼저 저장소를 복제하고 스킬이 복제본을 가리키게 해요. Git 저장소가 아니어도 모든 디렉터리가 동작해요.

CoCo CLI나 CoCo Desktop에서 스킬을 호출하고 스캔할 디렉터리를 주세요. 적용할 공유 옵션을 묻고, 다음처럼 잡을 것을 좁히는 지침을 받아들여요.

  • 재귀적으로 스캔하거나 최상위만
  • 스킬만 또는 플러그인만 공유
  • 하나의 하위 디렉터리로 스캔을 제한하거나 하나를 제외

스킬은 공유한 모든 것에 대한 snow:// 링크와 공유하지 않은 것에 대한 이유를 보고해요. 나중에 다시 실행해 이미 공유한 스킬·플러그인을 업데이트해요. 각 업데이트가 새 버전을 만들어요.

가져온 스킬·플러그인은 다른 공유 스킬·플러그인처럼 동작해요. 보안 스캔, 카테고리, 인증, 접근 제어가 모두 같은 방식으로 적용돼요.

보안 스캔

스킬·플러그인은 공유될 때 보안 문제로 스캔돼요. 스킬·플러그인은 에이전트가 파일을 읽고, 명령을 실행하고, 외부 서비스에 도달하도록 지시할 수 있으므로, 스캔은 공유 스킬이 데이터를 유출하거나 내 계정에서 파괴적 동작을 취할 위험을 줄여요.

스캔은 클라이언트 지원에 의존하므로, 의존하기 전에 CoCo CLI와 CoCo Desktop을 최신 버전으로 업그레이드해요.

미리 보기 중 공유된 스킬은 스캔되지 않음

스캔은 사용 가능해진 시점부터 적용되고, Snowflake는 기존 콘텐츠를 소급 스캔하지 않아요. 따라서 미리 보기 중 공유한 스킬·플러그인은 스캔 결과가 없어요.

스캔되지 않은 스킬·플러그인은 계속 사용 가능해요. 사람들은 여전히 설치하고 사용할 수 있어요. 버전 선택은 스캔되지 않은 것을 검사를 통과한 것과 같은 방식으로 취급하므로, 미리 보기 중 공유한 스킬은 계속 정상적으로 제공돼요. 스캔되지 않음은 설치를 차단하는 실패나 대기 중과 같은 상태가 아니에요.

스캔 결과를 얻으려면 스킬·플러그인을 다시 공유해요. 그러면 새 버전이 게시되고 그 버전에 대한 스캔이 트리거돼요.

공유할 때 일어나는 일

공유는 스캔이 끝나기를 기다리지 않아요. snow:// 링크를 즉시 받아 곧바로 동료에게 보낼 수 있고, 스캔은 백그라운드에서 실행돼요.

그런 다음 스캔 결과가 다른 사람이 스킬·플러그인을 설치할 수 있는지 결정해요.

  • 통과: 스킬·플러그인을 설치할 수 있어요. 발견 가능하고 그 사람이 접근 권한이 있는 역할을 보유하면 카탈로그에도 나타나요.
  • 실패 또는 여전히 대기 중: 스킬·플러그인을 설치할 수 없어요. 카탈로그에 나타나지 않고, 링크가 있는 사람에게 사용할 수 없다고 알려져요.

내 복사본은 영향받지 않아요. 실패한 스캔은 다른 사람이 스킬·플러그인을 설치하지 못하게 하지만, 내가 로컬에서 사용하는 것을 막지는 않아요. 그러나 실패한 스캔의 스킬·플러그인을 실행하지 않는 것이 모범 사례며 Snowflake는 그렇게 하지 말 것을 권장해요.

스캔 한도

스캐너는 다음 한도까지 스킬·플러그인을 받아요.

한도 값
스킬·플러그인당 파일 수 50
단일 파일 크기 2 MiB
모든 파일의 총 크기 10 MiB

이 한도 중 하나라도 초과하는 스킬·플러그인은 스캔할 수 없어요. 즉 다른 사람이 설치할 수 없어요.

스캔 실패

실패한 스캔은 찾은 것을 보고해요. 발견 사항을 검토하려면 스캔 상태 검토에서 설명하는 대로 스캔 상태를 확인해요. 실패를 해결하려면 스킬·플러그인에서 보고된 문제를 고치고 다시 공유해요. 다시 공유하면 새 버전이 생성되고 새 스캔이 트리거돼요. 발견 사항이 오탐이라고 생각되면 관리자에게 스캔 상태를 오버라이드하도록 요청해요. 자세한 내용은 보안 스캔 오버라이드를 참고해요.

스캔 상태 검토

관리자는 Snowsight의 Skills and plugins 페이지에서 모든 공유 스킬·플러그인의 스캔 상태와 상세 발견 사항을 검토할 수 있어요.

SHOW와 DESCRIBE도 승인된 사용자가 읽을 수 있는 세 컬럼에서 실제로 제공되는 버전과 그 이유를 보고해요.

컬럼 의미
effective_version Snowflake가 사용을 위해 선택하는 커밋된 버전. 자격이 되는 스캔 상태를 가진 최신 인증 버전을 선호해요.
action_required effective_version이 최신 커밋 버전보다 뒤처질 때 TRUE.
action_required_reason 최신 버전이 선택되지 않은 이유: NONE, LATEST_VERSION_SCAN_NOT_PASSED, 또는 LATEST_VERSION_NOT_CERTIFIED.

이 컬럼들이 건강한 스킬과 조용히 이전 버전을 제공하는 스킬을 구분하는 방법이에요. action_required가 TRUE이고 이유가 LATEST_VERSION_SCAN_NOT_PASSED면, 게시한 최신 버전이 실패했거나 스캔을 통과하지 못했고 사람들이 마지막 자격 버전을 받고 있는 거예요.

스킬 크로스 리전 전송 동의

Skills Catalog에 게시할 때 모든 스킬·플러그인에 대해 스캔이 자동으로 실행돼요. 요청할 필요도, 켤 것도 없어요. 스킬·플러그인을 게시하면 아래 식별된 대로 스킬·플러그인이 스캔 목적으로 리전을 가로질러 이동할 수 있음에 동의하고 수락하게 돼요.

스킬·플러그인을 게시할 때 스캔을 위해 코드를 Snowflake와 자동으로 공유해요. 다음 표는 보안 스캔 리전을 해당 공급자 리전에 매핑해요.

클라우드 공급자 공급자 리전 스캔 리전
AWS US West(Oregon), US East(Ohio), US East(N. Virginia), Canada(Central), South America(상파울루), EU(Ireland), Europe(London), EU(Paris), EU(Frankfurt), EU(Zurich), EU(Stockholm) 같은 AWS 리전
AWS Asia Pacific(Tokyo, Osaka, Seoul, Mumbai, Singapore, Sydney, Jakarta) 같은 AWS 리전
Azure West US 2, Central US, South Central US, East US 2, Canada Central Azure East US 2(Virginia)
Azure UK South, North Europe, West Europe, Switzerland North, UAE North Azure West Europe(네덜란드)
Azure Central India, Japan East, Southeast Asia, Australia East Azure Australia East(New South Wales)
GCP US Central1, US East4, Europe West2, Europe West4 AWS US West(Oregon)

공유 스킬·플러그인 사용

공유 스킬·플러그인 설치

공유 스킬·플러그인을 설치하려면 링크를 CoCo에 붙여넣어요.

  • CoCo CLI: 링크를 채팅에 직접 붙여넣어요. CoCo가 Cortex Extension 객체를 해석하고, 파일을 다운로드하고, 스킬·플러그인을 로컬에서 사용 가능하게 해요.
  • Snowsight의 CoCo: 링크를 CoCo 채팅 창에 붙여넣어요.
  • CoCo Desktop: 링크를 붙여넣어 스킬·플러그인을 설치해요. 공유 플러그인을 가져올 수도 있어요.

같은 이름의 스킬·플러그인이 이미 설치되어 있으면 이미 존재한다는 메시지를 받아요.

Snowflake CoWork에서 공유 스킬 사용

참고

Snowflake CoWork에는 카탈로그 탐색 표면이 없어요. 카탈로그를 검색하거나 거기에서 설치할 수 없고, 공유 스킬은 Cortex Agent에 추가된 경우에만 Snowflake CoWork에 도달해요.

두 제품은 누가 스킬을 고르는지가 달라요. CoCo에서는 스킬을 찾아 내 환경에 추가해요. Snowflake CoWork에서는 에이전트가 스킬을 운반해요. 에이전트를 구성하는 사람이 사양의 Cortex Extension을 참조하고, 그 에이전트를 사용하는 모든 사람이 그 스킬을 자동으로 얻어요. 개별 사용자는 대화에 스킬을 탐색, 검색, 추가하지 않아요.

각 스킬을 나열하는 대신 확장을 참조하면 두 가지 결과가 있다는 점을 알아 두세요.

  • Snowflake는 요청이 실행될 때 참조를 확장의 멤버 스킬로 확장하므로, 플러그인을 참조하는 에이전트는 그 플러그인이 번들한 모든 스킬을 가져와요.
  • 새 버전을 게시하면 참조가 버전을 고정하지 않는 한 확장을 참조하는 모든 에이전트를 업데이트해요. 자세한 내용은 Cortex Extensions을 참고해요.

접근은 여전히 확장 객체에서 나오므로 사용자에게 그 객체에 대한 READ 권한이 필요해요.

참고

스킬을 참조하는 에이전트 공유는 아직 지원되지 않아요. 도구가 시맨틱 뷰, Cortex Search 서비스, 또는 함수인 에이전트만 다른 계정과 공유할 수 있으므로, Cortex Extension을 에이전트에 추가하면 그 에이전트는 지금으로서는 공유할 수 없게 돼요. 자세한 내용은 Share Cortex Agents을 참고해요.

버전 필드를 포함한 참조 작성 방법과 명명 충돌 해결 방법은 Cortex Extensions를 참고해요.

설치된 스킬·플러그인 업데이트

CoCo CLI에서 설치된 스킬·플러그인을 최신 공유 버전으로 업데이트해요.

  • 스킬을 업데이트하려면 cortex skill update <skill-uri>를 실행해요. 여기서 <skill-uri>는 스킬의 snow:// 공유 링크예요.
  • 특정 플러그인을 업데이트하려면 cortex plugin update <plugin-name>을 실행해요.
  • 모든 설치 플러그인을 업데이트하려면 cortex plugin update를 실행해요.

스킬·플러그인 발견

자동 발견

CoCo는 작업 중 관련 스킬·플러그인을 자동으로 찾을 수 있어요. 현재 작업과 관련된 항목을 위해 카탈로그를 검색하고 컨텍스트에서 제안해요. CoCo CLI와 CoCo Desktop에서는 /find-skill-and-plugin 스킬을 사용해요. Snowsight의 CoCo에서는 /find-skill을 사용하며, 이는 스킬만 찾아요(플러그인은 거기에서 지원되지 않음).

수동 검색

  • Snowsight: 내가 접근할 수 있는 스킬·플러그인 목록을 AI & ML > Skills and plugins에서 탐색해요. 인증된 스킬은 Certified 배지를 표시해요.
  • Snowsight의 CoCo: + 메뉴와 / 명령이 로컬, 내장, 공유 스킬·플러그인을 표시해요.
  • CoCo Desktop: + 메뉴와 / 명령이 로컬, 내장, 공유 스킬·플러그인을 표시해요.

카탈로그 탐색·검색은 CoCo와 Snowsight 기능이에요. Snowflake CoWork에는 카탈로그 탐색 표면이 없어요. 자세한 내용은 Snowflake CoWork에서 공유 스킬 사용를 참고해요.

카테고리

카테고리는 관련 스킬·플러그인을 그룹화해 사람들이 한 긴 목록을 스캔하는 대신 관심 있는 영역으로 카탈로그를 좁힐 수 있게 해요. 카테고리는 계정 고유이므로, 조직이 실제로 사용하는 팀, 도메인, 워크플로 이름을 따라 지을 수 있어요.

카테고리가 동작하는 방식

카테고리는 다음과 같이 동작해요.

  • 카탈로그는 단일 평면 카테고리 레이어를 사용해요. 카테고리는 중첩되지 않아요.
  • 스킬·플러그인은 한 번에 하나의 카테고리에 속해요.
  • 카테고리는 개별 버전이 아니라 스킬·플러그인 전체에 적용돼요.
  • 카테고리화되지 않은 것은 카테고리 이름 대신 대시(-)를 표시해요.
  • 카테고리는 계정 전체이므로, 스킬은 어디에 나타나든 같은 카테고리를 담아요.

스킬·플러그인을 공유할 때 Snowflake는 관리자가 유지하는 목록에서 가장 가까운 맞춤을 골라 카테고리를 제안해요. 제안을 수락하거나 다른 카테고리를 고를 수 있고, 관리자가 나중에 재분류할 수 있어요.

카테고리 관리

관리자는 사람들이 고를 수 있는 카테고리 목록을 유지하며, 새 영역이 나오면 추가하고 더 이상 맞지 않는 것은 이름을 바꾸거나 제거해요.

내부적으로 카테고리는 Cortex Extension 객체의 태그이며, 사용 가능한 카테고리 목록은 그 태그의 허용 값 집합이에요. 관리자는 목록 유지 능력을 다른 역할에 위임할 수 있어요. 자세한 내용은 Delegate administration을 참고해요.

카테고리 태그를 다중 값으로 만들지 마세요.

스킬·플러그인은 한 번에 하나의 카테고리에 속하며, 카테고리 태그는 한 개 이상의 값을 보관하도록 설계되지 않았어요. MULTI_VALUE를 설정하면 되돌릴 수 없어요. 객체가 한 개 이상의 카테고리를 지니면 태그 매핑을 다시 쓸 방법이 없어 Snowflake는 FALSE로 다시 설정하는 것을 지원하지 않아요. 카탈로그는 결과 데이터 형태를 파싱할 수 없고, 복구하려면 Snowflake에 태그를 재생성하고 모든 매핑을 다시 하라고 요청해야 해요. 다음을 실행하지 마세요.

-- DO NOT RUN
ALTER TAG SNOWFLAKE.TAGS.CORTEX_EXTENSION_CATEGORIES
  SET MULTI_VALUE = TRUE;

버전 관리

스킬·플러그인은 버전 관리를 지원해요.

  • 공유 스킬·플러그인의 첫 버전은 버전 1이에요.
  • 소유자(Cortex Extension 객체에 OWNERSHIP을 보유한 역할)는 공유 워크플로를 다시 실행해 언제든 새 버전을 업로드할 수 있어요. 각 업로드가 새 버전을 만들어요.
  • 카탈로그를 탐색할 때 사용자는 최신 버전, 또는 있으면 최신 인증 버전을 봐요. 관리자와 소유자는 모든 버전을 볼 수 있어요.

snow:// URI가 버전으로 해석되는 방식은 URI에 버전이 포함되었는지에 달려 있어요.

  • URI에 버전이 포함되면 해당 특정 버전이 검색돼요.
  • URI에 버전이 없으면 자격이 되는 스캔 상태를 가진 최신 인증 버전을 선호하며, Snowflake가 사용을 위해 선택한 버전으로 해석돼요.

선택이 스캔 상태를 고려하므로, 스캔을 통과하지 못한 버전을 게시해도 스킬이 서비스에서 빠지지 않아요. 사람들은 마지막 자격 버전을 계속 받아요. 어떤 버전이 제공되고 그 이유를 보려면 스캔 상태 검토에서 설명하는 effective_version, action_required, action_required_reason 컬럼을 확인해요.

거버넌스

관리자는 모든 공유 스킬·플러그인을 탐색하고, 인증하고, 접근·가시성을 변경하고, 분류하고, 보안 스캔을 오버라이드하고, 소유권을 재할당하고, 사용 원격 측정을 보고, 삭제할 수 있어요.

관리자는 Snowsight의 AI & ML 아래 Skills and plugins 페이지에서 이러한 동작을 수행해요.

ACCOUNTADMIN은 모든 거버넌스 동작에 대해 완전한 권한을 보유하지만, 거버넌스가 그곳에만 머물러야 하는 것은 아니에요. 자세한 내용은 Delegate administration을 참고해요.

거버넌스 동작 방식

공유 스킬·플러그인은 Cortex Extension 객체로 저장되며, 기본적으로 소유자의 개인 데이터베이스에 생성돼요. 관리자가 스킬 인증이나 접근 변경 같은 거버넌스 동작을 수행하면 Snowflake가 객체를 전용 데이터베이스에 복사해요. 처음 거버넌스 동작을 수행할 때 거버넌스 스킬·플러그인이 저장될 데이터베이스를 고르라는 프롬프트를 받아요.

이 모델은 소유자의 개인 데이터베이스에서 객체를 복사해 중앙에서 거버넌스할 수 있게 하면서, 소유자의 원본 스킬·플러그인은 그대로 둬요.

관리 위임

내가 만든 역할은 ACCOUNTADMIN을 활성화하지 않고 스킬·플러그인을 관리할 수 있어요. 그것이 위임된 관리(delegated administration)예요.

공유 스킬·플러그인에 대한 단일 관리자 권한은 없어요. Cortex Extensions로 저장되므로 역할이 수행할 동작에 대한 개별 권한과 애플리케이션 역할을 부여해요. 이는 일부만 부여할 수도 있음을 의미해요. 보안 팀이 오탐 스캔 발견 사항을 지울 수 있으면서 계정의 모든 스킬을 누가 설치할 수 있는지 변경하지는 못하게 할 수 있어요.

상속 승인을 먼저 켜세요.

이 중 두 부여는 INHERITED 키워드를 사용해요: INHERITED MANAGE GRANTS와 INHERITED WRITE. 이 키워드는 계정에 상속 승인이 활성화되어 있어야 해요. ACCOUNTADMIN으로 다음을 설정해요.

ALTER ACCOUNT SET FEATURE_RBAC_INHERITED_GRANTS = 'ENABLED';

같은 파라미터가 컨테이너 수준 MANAGE GRANTS도 활성화해요. 없으면 GRANT INHERITED ...가 거부되고, 위임된 역할은 접근이나 발견 가능성을 관리할 수 없어요.

동작 선택

역할이 수행해야 할 동작만 부여해요.

동작 필수 부여
스킬 접근 부여·회수 INHERITED MANAGE GRANTS ON ALL CORTEX EXTENSIONS
모든 스킬·플러그인의 메타데이터 보기 MONITOR CORTEX EXTENSIONS
어떤 스킬의 보안 스캔 오버라이드·발견 사항 읽기 MANAGE CORTEX EXTENSION SECURITY SCAN 및 MONITOR CORTEX EXTENSIONS
카테고리 값 관리·기존 할당 업데이트 SNOWFLAKE.OOB_TAG_ADMIN 및 APPLY TAG ON ACCOUNT
어떤 스킬의 카테고리 설정 APPLY TAG ON ACCOUNT
스킬 인증 SNOWFLAKE.OOB_TAG_ADMIN, SNOWFLAKE.CORE_VIEWER, APPLY TAG ON ACCOUNT
발견 가능성 변경 INHERITED WRITE ON ALL CORTEX EXTENSIONS
소유자 변경·삭제 MANAGE GRANTS ON ACCOUNT
공유 스킬·플러그인을 넘어 닿는 부여

이 중 세 부여는 스킬·플러그인에 국한되지 않아요. 부여 전에 저울질하세요.

부여 필요한 이유 얼마나 넓은가
SNOWFLAKE.OOB_TAG_ADMIN 허용 카테고리 값 변경, 인증 상태 설정. 역할이 대부분의 Snowflake 제공 태그를 수정·적용할 수 있음.
APPLY TAG ON ACCOUNT 다른 역할이 소유한 스킬·플러그인 분류·인증. 카테고리 이름 바꾸기·삭제는 기존 할당도 업데이트. 역할이 Cortex Extensions뿐 아니라 계정의 어떤 객체에도 태그를 적용할 수 있음.
MANAGE GRANTS ON ACCOUNT 확장의 소유자 변경, 삭제 전 소유권 획득. 이 부여 없이는 역할이 소유하지 않은 확장을 삭제할 수 없음. 역할이 계정의 어떤 객체에 대해서도 접근을 부여·회수하고 소유권을 이전할 수 있음.

다른 부여는 Cortex Extensions 또는 그 카테고리·인증 상태를 담는 태그로 제한돼요.

각 Cortex Extension 권한이 단독으로 허용하는 것에 대한 내용은 Cortex Extension privileges를 참고해요.

역할 설정

다음 예시는 모든 동작을 수행할 수 있는 역할을 만들어요. 역할이 수행하지 말아야 할 동작의 부여는 빼세요.

USE ROLE ACCOUNTADMIN;

-- Allow grants to cover current and future Cortex Extensions in this account
ALTER ACCOUNT SET FEATURE_RBAC_INHERITED_GRANTS = 'ENABLED';

-- Create the delegated administrator role
CREATE ROLE IF NOT EXISTS skill_catalog_admin;
GRANT ROLE skill_catalog_admin TO USER <user_name>;

-- Grant or revoke skill access
GRANT INHERITED MANAGE GRANTS ON ALL CORTEX EXTENSIONS IN ACCOUNT TO ROLE skill_catalog_admin;

-- View metadata for every skill and plugin in the account
GRANT MONITOR CORTEX EXTENSIONS ON ACCOUNT TO ROLE skill_catalog_admin;

-- Override security scans and read findings
GRANT MANAGE CORTEX EXTENSION SECURITY SCAN ON ACCOUNT TO ROLE skill_catalog_admin;

-- Manage category values, update assignments, and set any skill's category and
-- certification status
GRANT APPLICATION ROLE SNOWFLAKE.OOB_TAG_ADMIN TO ROLE skill_catalog_admin;
GRANT DATABASE ROLE SNOWFLAKE.CORE_VIEWER TO ROLE skill_catalog_admin;
GRANT APPLY TAG ON ACCOUNT TO ROLE skill_catalog_admin;

-- Change discoverability
GRANT INHERITED WRITE ON ALL CORTEX EXTENSIONS IN ACCOUNT TO ROLE skill_catalog_admin;

-- Change owner or delete
-- Caution: this grant is very powerful. See the warning that follows.
GRANT MANAGE GRANTS ON ACCOUNT TO ROLE skill_catalog_admin;

MANAGE GRANTS ON ACCOUNT는 매우 강력한 부여다

MANAGE GRANTS ON ACCOUNT는 역할이 계정의 어떤 객체에서도 어떤 권한이든 부여·회수하고, 어떤 객체의 소유권도 이전하게 해요. 스킬·플러그인을 훨씬 넘어 닿으므로, 신중하게 그리고 그 수준으로 신뢰하는 역할에만 부여해요.

역할이 소유권을 재할당하거나 소유하지 않은 스킬·플러그인을 삭제해야 할 때만 포함해요. 필요 없다면 이 부여를 빼세요. 앞 표의 다른 모든 동작은 그것 없이 동작해요.

위임할 때 다음을 기억하세요.

  • 계정 범위는 의도적이에요. 두 INHERITED 부여는 IN ACCOUNT를 사용하는데, 공유 스킬·플러그인이 기본적으로 소유자의 개인 데이터베이스에 생성되기 때문이에요. 계정 범위 상속 부여가 위임된 역할이 그곳의 객체에 도달하게 해줘요. 또한 나중에 생성되는 모든 데이터베이스를 다루므로, 부여 전에 Account scope reaches every database를 검토해요.
  • 상속 부여에는 객체별 예외가 없어요. 부여에서 권한을 회수해도 상속 부여에서 하나의 스킬을 면제할 수 없고, 시도는 조용히 실패해요. 균일하게 적용되어야 하는 것으로 부여를 범위를 정해요.
  • SQL로 부여해요. Skills and plugins 페이지는 이 권한들을 부여하거나 회수하지 않아요. 앞 예시처럼 SQL을 사용한 뒤, 위임된 역할이 페이지에서 자신의 동작을 수행할 수 있어요.
  • 일부 동작은 여러 부여가 필요해요. 보안 스캔 오버라이드는 MANAGE CORTEX EXTENSION SECURITY SCAN과 MONITOR CORTEX EXTENSIONS가 함께 필요해요. 카테고리 값 관리는 SNOWFLAKE.OOB_TAG_ADMIN과 APPLY TAG ON ACCOUNT가 함께 필요해요. 인증은 그것들 두 개에 SNOWFLAKE.CORE_VIEWER가 더해져야 해요. 이는 역할이 인증 태그를 참조하게 해줘요. MONITOR CORTEX EXTENSIONS 단독은 역할이 모든 스킬·플러그인의 메타데이터를 보게 해주는 것이에요.
  • 스킬 사용은 별개예요. 이 부여 중 어떤 것도 역할이 스킬·플러그인을 만들고, 게시하고, 실행하게 하지 않아요. 공유 스킬을 사용하는 접근은 Cortex Extension 객체의 권한에서 나와요.
  • ACCOUNTADMIN은 접근을 유지해요. 위임은 다른 역할에 동작을 여는 것이에요. ACCOUNTADMIN에서 제거하거나 기존 접근을 제한하지 않아요.

스킬·플러그인 인증

스킬·플러그인을 인증해 계정에 대한 공식 검증 버전으로 표시해요. 인증된 스킬·플러그인은 Certified 배지를 표시해요.

인증은 버전에 묶여 있으므로 같은 스킬·플러그인의 버전을 독립적으로 인증할 수 있어요. 최종 사용자가 카탈로그를 탐색할 때 있으면 최신 인증 버전을, 그렇지 않으면 최신 버전을 봐요. 관리자는 모든 버전을 볼 수 있어요.

인증 상태는 Snowflake 제공 태그 SNOWFLAKE.CORE.CERTIFICATION_STATUS로 기록되며, 인증되는 버전에 'CERTIFIED'로 설정돼요.

접근과 가시성 변경

접근과 발견 가능성은 독립적으로 관리돼요.

  • 접근(RBAC): 어떤 역할이 공유 스킬·플러그인을 설치·사용할 수 있는지 변경.
  • 가시성: 스킬·플러그인이 카탈로그에서 발견 가능한지 변경.

보안 스캔 오버라이드

스캔이 스킬·플러그인을 지적했는데 관리자가 안전하다고 판단하면, 관리자가 스캔 상태를 오버라이드해 다시 설치 가능하게 만들 수 있어요. 오버라이드는 오탐을 지우는 지원되는 방법이므로, 소유자가 변경하지 않은 콘텐츠를 재게시해 우회할 필요가 없어요.

오버라이드 전에 관리자는 기본 발견 사항을 검토할 수 있고, 나중에 결정이 바뀌면 오버라이드를 지울 수 있어요. 오버라이드와 발견 사항 읽기는 계정에 대한 MANAGE CORTEX EXTENSION SECURITY SCAN과 MONITOR CORTEX EXTENSIONS가 필요하며, ACCOUNTADMIN이 보안 팀의 역할에 부여할 수 있어요. 자세한 내용은 Delegate administration을 참고해요.

소유권 재할당·삭제

  • 소유자 변경: 공유 스킬·플러그인의 소유권 재할당.
  • 삭제: 카탈로그에서 스킬·플러그인 제거.

역할이 소유하지 않은 스킬·플러그인을 삭제하는 것은 먼저 소유권을 가져가는 것을 의미하므로, 두 동작 모두 계정에 대한 MANAGE GRANTS가 필요해요. 그 권한은 Cortex Extensions에 국한되지 않아요. 자세한 내용은 Delegate administration을 참고해요.

원격 측정

각 공유 스킬·플러그인에 대해 Skills and plugins 페이지는 지난 28일 동안의 설치 횟수와 사용 횟수를 모든 클라이언트에 걸쳐 집계해 보여줘요.

사용은 사용자가 공유 복사본을 수정 없이 실행하는 동안만 계산돼요. 누군가 설치된 스킬·플러그인을 로컬에서 편집하면 그 복사본이 사용량 보고를 멈춰, 그 횟수는 스킬이 실제로 사용되는 정도를 과소 표시해요. 변형에 대한 원격 측정을 유지하려면 설치된 것을 편집하는 대신 그것을 자체 스킬·플러그인으로 공유해요.

CORTEX EXTENSION SQL 예시

CoCo와 Snowsight 워크플로의 대안으로 SQL로 Cortex Extension 객체를 직접 관리할 수 있어요. 다음 예시는 일반적인 작업을 보여줘요.

-- Create a Cortex Extension from an existing one
-- Note: CLONE isn't supported yet; use this pattern instead
CREATE CORTEX EXTENSION new_db.new_schema.new_ext
  FROM 'snow://skill_catalog/old_db.old_schema.old_ext';

-- Set RBAC
GRANT READ ON CORTEX EXTENSION new_db.new_schema.new_ext TO ROLE PUBLIC;

-- Certify a specific version of a skill or plugin
ALTER CORTEX EXTENSION new_db.new_schema.new_ext VERSION VERSION$1
  SET TAG SNOWFLAKE.CORE.CERTIFICATION_STATUS = 'CERTIFIED';

-- Drop an old extension
DROP CORTEX EXTENSION old_db.old_schema.old_ext;

거버넌스 동작을 ACCOUNTADMIN이 아닌 역할에 위임하려면 Delegate administration을 참고해요.

제한 사항

  • 공유는 같은 Snowflake 계정 안에서만 동작해요. 크로스 계정 공유는 지원되지 않아요.
  • 로컬(내 워크스페이스나 머신에서)로 만든 스킬·플러그인은 명시적으로 공유되기 전까지 카탈로그에 나타나지 않아요.
  • 스킬·플러그인을 Snowflake 밖의 저장소로 내보내는 것은 지원되지 않아요.
  • 스킬·플러그인은 다른 사람과 공유하려면 보안 스캐너의 파일 수·크기 한도 안에 들어야 해요. 자세한 내용은 Scan limits를 참고해요.
  • Snowflake CoWork에는 카탈로그 탐색 표면이 없어요. 공유 스킬은 Cortex Agent에 추가된 경우에만 Snowflake CoWork에 도달해요. 자세한 내용은 Snowflake CoWork에서 공유 스킬 사용을 참고해요.
  • 누군가 로컬에서 편집한 설치 스킬·플러그인에 대한 사용 원격 측정은 멈춰요. 자세한 내용은 Telemetry를 참고해요.

법적 고지

내 Cortex Code 구성이 Model and Service Pass-Through Terms에 제공된 모델을 사용하면, 그 모델의 사용은 그 페이지에 있는 그 모델에 대한 약관에 추가로 따르게 돼요.

입력·출력의 데이터 분류는 다음 표에 명시된 대로예요.

입력 데이터 분류 출력 데이터 분류 지정
Usage Data Customer Data Covered AI Features [1]

추가 정보는 Snowflake AI and ML을 참고해요.

더 알아보기