본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 06. 03. 08:05

Oracle Autonomous AI Database의 AI Profile 기능으로 구현하는 AI 액세스 제어

요약

Oracle Autonomous AI Database의 'AI Profile' 기능을 통해 AI 에이전트의 데이터 액세스를 제어하는 방법을 소개합니다. 데이터베이스 측에서 LLM 종류와 접근 가능한 오브젝트를 정의함으로써 강력한 AI 거버넌스와 보안을 구현할 수 있습니다.

핵심 포인트

  • AI Profile을 통한 데이터베이스 중심의 AI 액세스 제어 구현
  • LLM 프로바이더 및 접근 가능한 DB 오브젝트(테이블, 뷰) 정의 가능
  • AI 에이전트 확장에 따른 데이터 보안 및 거버넌스 대응 필수성 강조
  • Select AI 및 MCP 서버 기능과 연계된 세밀한 보안 설정 제공

이 내용은 얼마 전 개최된 Oracle Developer Day 2026에서 「Autonomous AI Database로 실현하는 AI 거버넌스 구현」이라는 제목으로 발표한 내용의 보충 자료입니다.

당일 자료는 이쪽입니다.

AI 에이전트 (AI Agent)가 직접 DB나 스토리지와 같은 데이터 스토어 (Data Store)에 액세스하는 케이스도 있고, MCP 서버를 경유하여 액세스하는 등 다양한 패턴이 있습니다.

그리고 개인 이용이나 PoC와 같은 소규모 이용에서 스케일 아웃하여 부문 단위나 전사 규모로 AI 에이전트가 데이터 스토어에 액세스하는 사례는 늘어나고 있다고 생각합니다.

그러한 상황에서 요구되는 것이 바로 **엄격한 액세스 제어 (Access Control) 및 데이터 보안 (Data Security)**라고 생각합니다.

AI 거버넌스 (AI Governance)나 AI 보안 (AI Security)와 같은 맥락에서는 AI 에이전트나 애플리케이션 측에서의 거버넌스 및 보안 구현에 초점이 맞춰지기 쉽지만, 데이터 스토어 측에서도 AI 에이전트가 액세스해 올 것을 전제로 보안과 거버넌스를 의식하는 것이 요구되고 있습니다.

AI 에이전트나 애플리케이션은 만들고 부수는 일이 많기 때문에, 데이터 스토어에서의 보안 및 거버넌스에 관한 기능 구현은 필수적(Must)이 될 것입니다.

Autonomous AI Database에서는 Select AI Agent라는 DB 내에서 AI 에이전트를 생성할 수 있는 기능이나, Autonomous AI Database MCP Server와 같은 MCP 서버 기능 등 생성형 AI (Generative AI) 관련 기능이 많이 제공되고 있습니다.

또한, 그러한 기능을 안전하게 이용하기 위해 세밀한 액세스 제어를 실현하기 위한 기능과 데이터 보안에 관한 기능이 제공됩니다.

물론 기존부터 있던 VPD나 RAS 등의 DB 보안 기능도 이용할 수 있습니다.

서론이 길어졌습니다만, 이번에 소개해 드리고 싶은 것이 AI Profile이라는 기능입니다.

AI Profile은 앞서 언급한 Select AI Agent나 소위 NL2SQL (Natural Language to SQL) 기능인 Select AI와 같은 기능을 실행할 때 설정이 필요하게 되는 프로파일 (Profile)입니다.

구체적으로는 사용자나 유스케이스 (Use Case)와 같은 단위로, 어떤 LLM (Large Language Model)을 사용하고, 어떤 테이블이나 뷰 (View) 등의 데이터베이스 오브젝트 (Database Object)에 대한 액세스를 허용할 것인지를 정의하는 것입니다.

따라서 Select AI Agent의 툴 설정이나 Python 등으로 작성한 커스텀 에이전트, 애플리케이션 측에서 AI의 동작을 정의하는 것이 아니라, 데이터베이스 측에서 데이터베이스 오브젝트에 대한 AI의 동작을 정의할 수 있습니다.

  • 사용자에 대한 DBMS_CLOUD_AI 패키지 실행 권한 부여
  • OCI Enterprise AI model을 이용하는 경우: OCI API 키를 이용한 크리덴셜 (Credential) 생성
  • ChatGPT, Claude, Gemini 등 외부 모델을 이용하는 경우: API 키에 의한 크리덴셜 생성 + 엔드포인트 (Endpoint)에 대한 네트워크 ACL 허용

여기서는 OpenAI의 모델을 이용하여, SH 스키마 (Schema)의 임의의 오브젝트에 대한 액세스를 허용하는 AI Profile을 작성하고 있습니다.

provider: OCI나 OpenAI, Google과 같은 AI 프로바이더 (Provider)를 지정함 -
credential_name: 사전에 작성된 크리덴셜의 이름을 지정함 -
object_list: Select AI Agent나 Select AI 액션의 대상이 되는 오브젝트의 소유자명과 오브젝트명을 지정함

BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name =>'OPENAI',
...

이번에는 SOMA라는 사용자에게, TELCOCUSTOMERCHURN이라는 테이블에 대해 NL2SQL 동작만을 허용하고 있습니다.

참고로, TELCOCUSTOMERCHURN은 통신사의 고객 해지 (Churn) 분석용 데이터셋입니다.

LLM은 OCI 상의 grok-4를 선택했습니다.

SELECT profile_name, status, description, created, last_modified
FROM user_cloud_ai_profiles
ORDER BY profile_name;
...
SELECT profile_name, attribute_name, attribute_value
FROM user_cloud_ai_profile_attributes
ORDER BY profile_name, attribute_name;
...

몇 가지 SQL 및 Select AI 질의를 준비하여, AI Profile의 object_list 설정이 유효하게 작동하는지 확인합니다.

object_list에서는 TELCOCUSTOMERCHURN이라는 테이블에 대해서만 액세스를 허용하고 있습니다.

반면, 일반적인 SQL 문에서는 EMPLOYEE_SALARY 테이블에 대한 액세스를 허용하고 있습니다.

  1. 일반 SQL로 SELECT 문을 실행하여 EMPLOYEE_SALARY에 대한 액세스 권한이 있는지 확인한다.
SELECT COUNT(*) AS emp_salary_rows FROM ADMIN.EMPLOYEE_SALARY;
"EMP_SALARY_ROWS"
5
  1. TELCOCUSTOMERCHURN에 대해 Select AI로 질의한다 (runsql)
SELECT AI 해지한 고객은 몇 명인가요;
"CHURNED_CUSTOMERS"
1869
  1. narrate를 사용하여 자연어로 답변하게 한다
SELECT AI narrate 해지하지 않은 고객은 몇 명인가요;
"RESPONSE"
"해지하지 않은 고객은 5174명 있습니다."
  1. object_list에 지정하지 않은 EMPLOYEE_SALARY에 대해 자연어로 질의한다
SELECT AI EMPLOYEE_SALARY 테이블의 직원 급여를 목록으로 보여주세요;
"RESPONSE"
"SELECT 'I''m sorry, but I can only generate SQL queries using the tables and schema provided in my instructions, and ""EMPLOYEE_SALARY"" is not among them.' AS MESSAGE FROM DUAL"

→ object_list에 지정되지 않았으므로 에러가 발생한다.

  1. object_list에 지정하지 않은 EMPLOYEE_SALARY에 대해 narrate를 사용하여 자연어로 답변하게 한다
SELECT AI narrate 직원의 평균 급여는 얼마인가요;
"RESPONSE"
"직원의 평균 급여는 약 64.76입니다."

→ 의도한 답변이 돌아오지는 않았지만, TELCOCUSTOMERCHURN의 MONTHLYCHARGES를 '급여'로 해석하여 대용했습니다.

이는 제한을 우회한 것이 아니라, 오히려 object_list 외에는 절대 액세스하지 않는다는 또 다른 증거가 되었습니다.

의도한 답변이 돌아오지 않은 사례도 일부 있었지만, 그 사례를 포함하여 AI Profile에 의한 제어가 작동하고 있음을 보여줄 수 있었습니다.

다소 특이한 유스케이스(Use Case)일 수 있지만, AI Profile에 의한 제어는 다음과 같은 경우 등에 유효할 수 있습니다.

  • 애플리케이션에 Select AI 메커니즘을 통합했을 때, 특정 데이터베이스 오브젝트(Database Object)로만 액세스를 제한하고 싶은 경우
  • Select AI (NL2SQL)나 Select AI Agent 등 유스케이스에 따라 액세스를 허용하는 데이터베이스 오브젝트를 한정하고 싶은 경우 등

그 외의 발표 내용 부분은 마음이 내키면 보충 설명을 겸하여 업데이트하도록 하겠습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0