튜토리얼: 모델 서비스에 서비스 정책 가드레일을 추가하기

Important

서비스 정책은 베타 버전입니다. Unity Gateway는 일반적으로 제공되지만, 베타 기능은 별도로 활성화됩니다. 계정 관리자는 계정 콘솔 리뷰 페이지에서Unity Gateway 베타 기능을 켜야 합니다. Azure Databricks 미리 보기 관리를 참조하세요.

이 튜토리얼은 모델 서비스에 가드레일을 추가하는 두 가지 상호 보완적인 방법으로 안내합니다. Azure Databricks에서는 가드레일이 서비스 정책입니다. 모델 서비스는 Azure Databricks 호스트된 모델 또는 OpenAI, Anthropic 또는 Google과 같은 외부 공급자를 앞세울 수 있으며 동일한 방식으로 제어할 수 있습니다.

  • 기본 제공 서비스 정책(가드레일): PII, 안전하지 않은 콘텐츠, 탈옥 시도 및 환각과 같은 일반적인 위험에 대한 관리되고 Azure Databricks 제공된 검사입니다. 작성할 코드가 없는 UI에서 선택하여 연결합니다.
  • 사용자 지정 서비스 정책: 기밀 프로젝트 코드 이름 또는 금지된 응답 패턴과 같이 조직과 관련된 규칙에 대해 작성하는 SQL 함수입니다.

서비스 정책 개념, 기본 제공 가드레일 및 전체 작성 참조는 AI 보안 개체에 대한 서비스 정책, 서비스 정책 만들기 및 연결, 서비스 정책함수 참조를 참조하세요.

두 가지 모두 Unity Gateway UI의 모델 서비스의 Policies 탭에서 같은 방식으로 연결하고, 혼합할 수 있습니다. Azure Databricks는 각 데이터를 두 지점에서 평가합니다:

  • 모델을 호출하기 전의 입력 단계(ON CALL)입니다.
  • 모델이 응답한 후의 출력 단계(ON RESULT).

UI에서 정책을 연결할 때 단계를 선택합니다. 사용자 지정 정책은 event:type를 기준으로 분기하여 하나의 단계에만 적용되도록 범위를 제한할 수도 있습니다.

시나리오: 팀은 앱과 에이전트가 호출하는 모델 서비스(main.default.team_chat)를 통해 LLM을 노출합니다. 관리된 가드레일로 안전하지 않거나 해로운 콘텐츠를 차단하고, 기밀 프로젝트를 언급하는 모든 프롬프트를 차단하며, 보안 등급이 낮은 링크가 포함된 응답도 차단해야 합니다. 이 모든 것은 애플리케이션 코드를 변경하지 않고도 가능합니다.

이 자습서를 마치면 다음을 수행할 수 있습니다.

  • 서비스에 내장된 안전하지 않은 내용물 보호 장치.
  • 입력 단계(ON CALL)에서 기밀 코드네임을 차단하는 맞춤형 요청 정책입니다.
  • 출력 단계에서 보안되지 않은 링크를 차단하는 맞춤형 응답 정책(ON RESULT).
  • 세 가지 모두 모델 서비스의 놀이터에서 연결되고 확인되었습니다.

사전 요구 사항

  • Unity 카탈로그에 사용할 수 있는 작업 영역입니다. Unity 카탈로그 시작을 참조하세요.
  • 계정에 활성화된 Unity Gateway 베타 기능은 서비스 정책과 기타 Unity Gateway 베타 기능을 활성화합니다. Azure Databricks 미리 보기 관리를 참조하세요.
  • 관리할 수 있는 모델 서비스이며, 테스트할 수 있도록 그 위에 EXECUTE 합니다. 이를 생성하려면 모델 API 생성 및 관리(model services)를 참조하세요. 이 자습서에서는 main.default.team_chat를 사용합니다.
  • MANAGE 모델 서비스에서 정책을 연결하려면
  • CREATE FUNCTION 사용자 지정 정책 함수를 만드는 스키마에 대해 설명합니다(main.governance 이 자습서에서는).
  • 기본 제공 가드레일의 경우: 가드레일 검사를 수행하는 평가 모델(LLM 심사 모델)이 미리 선택되어 있으므로 별도의 설정이 필요하지 않습니다. 고급 옵션에서 다른 평가자를 선택하는 경우, 이에 대해 CAN_QUERY이(가) 필요합니다.

1단계: 기본 제공 가드레일 적용

기본 제공 보호 장치는 관리형 LLM-judge 확인 기능입니다. 가드레일 유형 메뉴에서 하나를 선택합니다. 검사를 실행하는 평가기 모델 서비스(LLM 판사)가 미리 선택되어 있습니다. 사용 가능한 가드레일은 다음과 같습니다.

  • 안전하지 않은 콘텐츠 (system.ai.block_unsafe_content): 안전하지 않거나 유해한 콘텐츠를 거부합니다.
  • 탈옥 (system.ai.block_jailbreak): 프롬프트 주입 및 탈옥 시도(요청만 해당)를 거부합니다.
  • 환각 (): 환각 응답 (system.ai.block_hallucination응답만)을 거부합니다.

비안전 콘텐츠 가드레일을 모델 서비스에 부착하세요:

  1. 작업 영역 사이드바에서 AI 게이트웨이를 클릭합니다.
  2. 모델 탭에서 모델 서비스(main.default.team_chat)를 선택합니다.
  3. 정책 탭을 연 다음 새 정책을 클릭합니다.
  4. 이름(예: block-unsafe-content.)을 입력합니다.
  5. 적용 대상에서 모든 계정 사용자를 유지하거나 정책 범위를 특정 보안 주체로 지정합니다.
  6. 가드레일 유형에서 '안전하지 않은 내용'을 선택하세요.
  7. 순위1로 설정합니다. 순위는 평가 순서를 설정합니다. 가장 낮은 순위는 요청에서 먼저 실행되고 응답에서 마지막으로 실행됩니다.
  8. 단계에서입력 가드레일(모델 이전)출력 가드레일(모델 이후)을 모두 선택하여 가드레일이 요청 및 응답에서 실행됩니다.
  9. 정책 만들기를 클릭합니다.

가드레일은 미리 선택된 평가 모델 서비스(검사를 실행하는 LLM 심사자)를 사용합니다. 다른 모델을 사용하려면 정책을 만들기 전에 고급 옵션을 확장합니다. 선택한 모델에 필요합니다 CAN_QUERY .

메모

모델 서비스에서 정책을 연결하거나 변경한 후 테스트하기 전에 변경 내용이 적용되도록 잠시 기다립니다. 서비스 정책 베타 기간에는 적용되기까지 몇 분 정도 걸릴 수 있습니다.

2단계: 사용자 지정 요청 정책 추가

가드레일은 일반적인 위험을 다룹니다. 조직과 관련된 규칙의 경우 사용자 지정 정책을 작성합니다. 사용자 지정 정책은 (event VARIANT)를 입력받아 결정을 반환하는 SQL UDF입니다. 마지막 사용자 메시지 또는 도우미 메시지의 API와 무관한 프로젝션인 event:context.message에서 메시지 텍스트를 읽으세요.

이 정책은 기밀 프로젝트 코드 이름을 언급하는 모든 요청을 거부합니다. event:type::string = 'request' 검사는 이를 입력 단계(ON CALL)로 한정합니다:

CREATE OR REPLACE FUNCTION main.governance.block_confidential_codename(
  event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN
  CASE
    WHEN event:type::string = 'request'
      AND contains(lower(event:context.message::string), 'project aurora')
    THEN to_variant_object(named_struct('result', 'DENY', 'reason', 'Requests about confidential projects are not permitted.'))
    ELSE to_variant_object(named_struct('result', 'ALLOW', 'reason', ''))
  END;

containslower 정책 본문에서 지원되는 SQL 하위 집합의 일부입니다. 정책 함수 작성에 대한 전체 목록 및 규칙은 서비스 정책 함수 참조를 참조하세요.

요청 단계로 범위가 지정된 사용자 지정 정책으로 함수를 연결합니다.

  1. 모델 서비스의 정책 탭에서 새 정책을 클릭하고 이름(예: block-codename)을 입력합니다.
  2. 가드레일 유형에서 사용자 지정을 선택합니다.
  3. 사용자 지정 함수를 클릭한 다음, 함수 선택을 클릭하고 main.governance.block_confidential_codename를 선택합니다.
  4. 이 정책은 요청 정책이므로 단계 아래에서 입력 가드레일(모델 이전)만 선택합니다.
  5. 순위를10설정한 다음 정책 만들기를 클릭합니다.

3단계: 사용자 지정 응답 정책 추가

모델은 전달하지 않으려는 콘텐츠를 반환할 수도 있습니다. 이 정책은 안전하지 않은 링크( http:// URL 또는 javascript: URI)가 포함된 응답을 거부합니다. event:type::string = 'response' 검사는 이를 출력 단계(ON RESULT)로 한정하므로, 사용자가 프롬프트에서 해당 스킴들을 단순히 언급만 한 경우에는 입력 단계에서 이에 걸리지 않습니다:

CREATE OR REPLACE FUNCTION main.governance.block_unsafe_links(
  event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN
  CASE
    WHEN event:type::string = 'response'
      AND (contains(lower(event:context.message::string), 'http://')
        OR contains(lower(event:context.message::string), 'javascript:'))
    THEN to_variant_object(named_struct('result', 'DENY', 'reason', 'Response contained an insecure link and was blocked by policy.'))
    ELSE to_variant_object(named_struct('result', 'ALLOW', 'reason', ''))
  END;

응답 단계로 범위가 지정된 사용자 지정 정책으로 함수를 연결합니다.

  1. 정책 탭에서 새 정책을 클릭하고 이름(예: block-unsafe-links)을 입력합니다.
  2. Guardrail 유형에서 사용자 지정을 선택한 다음 main.governance.block_unsafe_links에서 를 선택합니다.
  3. 단계에서 출력 가드레일(모델 이후)만 선택하세요. 이는 응답 정책이기 때문입니다.
  4. 순위를20설정한 다음 정책 만들기를 클릭합니다.

4단계: 확인

이제 세 가지 정책이 모두 서비스의 정책 탭에 표시됩니다. 플레이그라운드를 사용하여 각 정책이 실행되는지 확인하세요:

  1. 모델 서비스 페이지에서 플레이그라운드의 채팅을 클릭합니다.
  2. 안전하지 않거나 해로운 콘텐츠를 요청하는 프롬프트를 보내세요. 안전하지 않은 콘텐츠 가드레일이 이를 차단하고, 응답에서는 해당 콘텐츠가 정책에 의해 차단되었다고 보고합니다.
  3. 보내기 Tell me about Project Aurora. 요청 정책은 기밀 프로젝트에 대한 요청이 허용되지 않는 이유로 차단합니다.
  4. 모델이 링크를 반환하도록 하는 프롬프트를 보냅니다 http:// . 응답 정책은 출력 단계(ON RESULT)에서 응답이 안전하지 않은 링크를 포함하고 정책에 의해 차단된 이유로 차단합니다.
  5. 일반 프롬프트를 보냅니다. 정상 완료를 반환합니다.

자신의 앱이나 스크립트에서 서비스를 테스트하려면 Query model API(모델 서비스)를 참조하세요.

정리

완료되면 정책 탭에서 정책을 제거합니다. 만든 각 정책을 열고 삭제합니다. 그런 다음 필요에 따라 사용자 지정 함수를 삭제합니다.

DROP FUNCTION IF EXISTS main.governance.block_confidential_codename;
DROP FUNCTION IF EXISTS main.governance.block_unsafe_links;

다음 단계