• mcp access control
  • mcp rbac
  • personal access token

비즈니스 강화하기: 액세스 제어와 함께 AI 도구를 기존 서비스에 연결

개인 액세스 토큰과 모델 컨텍스트 프로토콜(MCP)을 사용하여 AI 도구를 기존 서비스에 안전하게 연결하여 비즈니스를 강화하는 방법을 배우세요. 완전한 소스 코드와 실용적인 예재가 포함되어 있습니다.

Yijun
Yijun
Developer

사용자 인증에 몇 주를 낭비하지 마세요
Logto로 더 빠르게 안전한 앱을 출시하세요. 몇 분 만에 사용자 인증을 통합하고 핵심 제품에 집중하세요.
시작하기
Product screenshot

액세스 제어를 통해 AI 도구를 기존 서비스에 연결하는 가이드에 오신 것을 환영합니다!

우리는 당신의 기존 서비스를 AI 도구에 맞게 준비하는 방법을 탐구할 것입니다. 특히 LLM(사용 모델 컨텍스트 프로토콜)) 및 다양한 AI 에이전트를 통합하면서 액세스 제어 문제를 해결할 것입니다.

이 가이드를 통해 얻게 될 이점은 다음과 같습니다:

  • 원활한 AI 통합: AI 도구를 서비스와 연결하여 데이터와 기능을 AI 환경에서 사용할 수 있도록 준비하는 방법을 배우세요
  • 향상된 API 보안: 효과적인 액세스 제어를 통해 데이터와 사용자 프라이버시를 보호하는 API 인터페이스를 개선하세요
  • 사용자별 개인화된 AI 경험: 개인 액세스 토큰을 통해 각 사용자에게 독특한 AI 보조 경험을 만드세요

우리는 완전한 튜토리얼 리소스, 완전한 데모 프로젝트 소스 코드 (프론트엔드, 백엔드, MCP 서버 포함), 심지어 AI 준비 서비스 구축을 돕기 위한 실용적인 가이드까지 제공합니다.

이 가이드가 어떻게 비즈니스를 개선할 수 있는지 알아보세요:

  • 경쟁력 강화: 서비스의 기술적 역량과 사용자 경험을 향상시켜 경쟁 시장에서 두각을 나타내세요
  • 사용자 가치 강화: AI 도구를 통해 제품 내에서 더 깊은 가치를 발견할 수 있도록 기회를 제공하여 유지율과 만족도를 높이세요
  • 미래 대비 서비스: AI 생태계와 원활하게 통합하여 다가오는 AI 기반 비즈니스 환경에 대비하고 혁신적인 성장 경로를 열어주세요

시작해 봅시다!

MCP란 무엇이며, 어떻게 AI 도구와 서비스를 연결하는가

MCP (모델 컨텍스트 프로토콜)은 애플리케이션이 대형 언어 모델(LLM)에 컨텍스트 정보를 제공하는 방법을 표준화하는 개방형, 범용 프로토콜입니다.

MCP는 AI 도구가 서비스에 액세스할 수 있도록 여러 주요 구성 요소로 이루어져 있습니다:

이 가이드에서 MCP 서버는 서비스와 AI 도구 간의 핵심 연결 지점입니다. 이는 LLM이 사용할 일련의 도구를 제공하고, 이러한 도구는 여러분의 서비스와 상호 작용합니다. MCP에 대한 더 많은 세부 사항은 MCP(모델 컨텍스트 프로토콜) 및 작동 원리 설명서를 참조하십시오. 여기서는 MCP 서버에 주로 집중할 것입니다.

우리는 역할 기반 액세스 제어(RBAC) 정책이 통합된 콘텐츠 관리 시스템(CMS)을 예제로 사용하겠습니다. MCP 서버를 구축하고, LLM이 CMS의 현재 사용자에게 이용 가능한 기사 수를 검색할 수 있도록 하는 get-available-article-count 도구를 정의할 것입니다:

이는 MCP 서버를 서비스에 연결하는 핵심 코드입니다. 이 도구 구현에서는 서비스의 api/articles 엔드포인트로 요청을 보내고 결과를 반환합니다.

그러나 이것만으로는 충분하지 않습니다. 서비스의 API가 공용이 아닐 수 있기 때문입니다. 각 엔드포인트에는 액세스 제어가 필요하며, 사용자마다 다른 리소스와 데이터에 접근할 수 있습니다.

다음으로 서비스에 액세스 제어를 추가하는 방법을 논의할 것입니다.

MCP 서버에 대한 액세스 제어 구현 방법

중요한 것은 AI 도구를 통해 시스템에 액세스하는 사용자는 시스템을 직접 사용하려는 동일한 개인이라는 점입니다 - MCP 서버는 AI 도구를 통해 상호 작용할 때 그들의 대표 역할을 합니다.

따라서 사용자가 AI 도구를 통해 서비스를 이용할 때 두 가지 실제적인 액세스 제어 문제가 발생합니다:

  • MCP 서버가 사용자처럼 시스템에 로그인하려면 어떻게 해야 하나요?
  • 시스템이 MCP 서버를 수용하기 위해 액세스 제어 메커니즘을 완전히 재설계해야 하나요? 기존 시스템에 이미 인증 메커니즘이 있는 경우 이는 상당한 비용과 노력이 될 것입니다

이 문제를 해결하는 열쇠는 다음과 같습니다:

어떻게 사용자가 자신의 자격 증명과 상호 인증 없이 MCP 서버가 서비스에서 액세스를 부여하도록 허용할 수 있을까요?

이 문제를 해결할 수 있다면, MCP 서버를 통해 서비스와 직접 상호 작용할 수 있으며, 서비스는 사용자에게 설계된 이전 액세스 제어 메커니즘을 계속 사용할 수 있습니다. MCP 서버만을 위한 새 시스템을 재설계할 필요가 없습니다!

하지만 이것이 가능할까요?

물론 가능합니다! 우리는 **개인 액세스 토큰(PATs)**을 사용하여 이 문제를 완벽히 해결할 수 있습니다!

개인 액세스 토큰(PATs)은 사용자 자격 증명과 상호 인증 없이 액세스 토큰을 안전하게 부여하는 방법을 제공합니다. 이는 CI/CD, 스크립트, 프로그래밍 방식으로 리소스에 액세스할 필요가 있는 애플리케이션에 유용합니다.

다음은 워크플로우입니다:

따라서 시스템이 개인 액세스 토큰(PAT)을 지원하는 한, AI 도구와 기존 서비스 간의 액세스 제어 문제를 완벽하게 해결할 수 있으며, 인증 메커니즘을 재설계하지 않고도 사용자 데이터 보안 및 프라이버시 보호를 보장할 수 있습니다.

이제 실습에서 이를 구현하는 방법을 살펴봅니다.

MCP 서버 액세스 제어 구현

이 섹션에서는 기존 CMS 시스템을 기반으로 MCP 서버에 대한 액세스 제어를 구현할 것입니다.

RBAC를 실습에서 사용하는 방법: 애플리케이션에 대한 안전한 권한 부여 구현에서 완전한 CMS 샘플 튜토리얼과 소스 코드를 확인할 수 있지만, 필수는 아니며, 여기서 모든 필수 원칙을 다룰 것입니다.

CMS 샘플은 포괄적인 인증 및 권한 부여 솔루션을 제공하는 인기 있는 오픈소스 ID 플랫폼 Logto를 기반으로 하고 있지만, 이 글의 기술 구현은 중점이 아닙니다.

서비스에 대한 권한 및 액세스 제어 정책 설계

액세스 제어를 구현하는 첫 번째 단계는 시스템에 대한 권한 및 액세스 제어 정책을 설계하는 것입니다.

CMS 예제에서는 RBAC (역할 기반 액세스 제어)를 기반으로 다음과 같은 API 엔드포인트를 설계하고, 각 엔드포인트에 액세스하기 위해 필요한 권한을 명시했습니다:

엔드포인트액세스 제어 논리
GET /api/articles- list:articles 권한이 있는 모든 사용자 또는 작성자가 자신의 기사를 볼 수 있음
GET /api/articles/:id- read:articles 권한이 있는 모든 사용자 또는 작성자가 작성한 글
POST /api/articles- create:articles 권한이 있는 모든 사용자
PATCH /api/articles/:id- update:articles 권한이 있는 모든 사용자 또는 작성자가 작성한 글
DELETE /api/articles/:id- delete:articles 권한이 있는 모든 사용자 또는 작성자가 작성한 글
PATCH /api/articles/:id/published- publish:articles 권한이 있는 사용자만

시스템의 권한 설계는 다음과 같습니다:

권한설명
list:articles시스템의 모든 기사 목록 보기
read:articles모든 기사의 전체 내용 읽기
create:articles새 기사 작성
update:articles모든 기사 수정
delete:articles모든 기사 삭제
publish:articles발행 상태 변경

이 권한을 기반으로 CMS 시스템에 대해 다음과 같은 역할을 정의했습니다:

권한/역할👑 관리자📝 발행자✍️ 저자
설명전체 콘텐츠 관리를 위한 완전한 시스템 액세스모든 기사를 보고 발행 상태를 제어할 수 있음시스템에서 새 기사를 작성할 수 있음
list:articles
read:articles
create:articles
update:articles
delete:articles
publish:articles

참고: 저자는 역할 권한에 상관없이 자신이 작성한 글에 대해 읽기/수정/삭제 권한을 자동으로 부여받습니다.

다음은 우리 시스템의 사용자를 예제로 역할을 지정한 것입니다:

사용자역할
Alex관리자
Bob발행자
Charlie저자

Logto에서는, 위의 RBAC 실습 기사에서 언급했듯이 사용자에 대한 역할을 설정해두었습니다.

Logto 역할

서비스 API에 액세스 제어 정책 적용하기

다음은 CMS 샘플에서 사용자가 로그인하는 방법입니다:

따라서 서비스 API에 액세스 제어를 적용하는 것은 액세스 토큰을 검증하고 권한을 확인하는 미들웨어를 9단계에 추가하는 것만큼 간단합니다.

핵심 구현은 다음과 같습니다 (RBAC 샘플 - 백엔드에서 전체 구현을 확인하세요):

그리고 인증이 필요한 API 엔드포인트에 미들웨어를 적용하세요:

이제 CMS 시스템에 액세스 제어를 추가하고 사용자에게 역할을 할당했습니다.

사용자가 CMS API를 위한 액세스 토큰을 얻고 나면, 이 토큰을 사용하여 CMS API에 액세스할 수 있습니다. 액세스 토큰에는 사용자의 권한 정보가 포함됩니다. 이를 사용하여 사용자 권한에 따라 어떤 데이터를 반환할지 제어할 수 있습니다.

다음 단계는 MCP 서버가 개인 액세스 토큰을 사용하는 방법을 구현하는 것입니다.

개인 액세스 토큰이 사용자를 대표하는 방식 이해하기

위의 CMS 인증 흐름을 참조하세요. 사용자는 로그인 후 CMS API에 대한 액세스 토큰을 얻습니다. 이 액세스 토큰은 CMS API에 액세스하기 위한 그들의 자격 증명입니다.

사용자가 로그인 후 얻는 액세스 토큰과 유사한 것을 얻어야 합니다. 그러면 이를 사용하여 CMS API에 액세스할 수 있습니다.

여기서 개인 액세스 토큰이 도움이 됩니다. 이를 통해 사용자가 로그인 후 얻는 것과 동일한 유형의 액세스 토큰을 얻을 수 있습니다.

우리가 해야 할 일은 다음과 같습니다:

  1. 사용자를 위해 개인 액세스 토큰 만들기
  2. 이 개인 액세스 토큰을 사용하여 인증 서비스의 토큰 엔드포인트에서 교환 토큰을 요청합니다. 이는 사용자가 로그인 후 얻는 것과 유사한 액세스 토큰을 제공합니다
  3. MCP 서비스 도구에서 이 액세스 토큰을 사용하여 CMS API에 액세스합니다

이 예제에서는 Logto를 사용하여 시연합니다. Logto는 개인 액세스 토큰 및 토큰 교환을 지원합니다. Logto를 사용하지 않는 경우 이 접근 방식을 따라 개인 액세스 토큰 지원을 구현할 수 있습니다.

사용자에게 개인 액세스 토큰 만들기

Logto 콘솔 > 사용자 관리에서, 사용자 세부 정보 페이지에서 개인 액세스 토큰을 만들 수 있습니다:

Logto 콘솔에서 개인 액세스 토큰 만들기

개인 액세스 토큰을 만들 때 필요한 만료 시간을 설정할 수 있습니다.

MCP 서버에서 개인 액세스 토큰 사용하기

이제 사용자 개인 액세스 토큰이 있으므로 MCP 서버에서 이를 사용할 수 있습니다.

먼저 Logto의 개인 액세스 토큰 문서를 따라 Logto의 토큰 엔드포인트에서 CMS API에 액세스하기 위한 액세스 토큰을 얻겠습니다. 전체 소스 코드를 여기서 확인할 수 있습니다.

MCP 서버에서는 exchangeAccessToken 함수의 액세스 토큰을 사용하여 CMS API에서 데이터를 가져옵니다.

이렇게 하면 MCP 서버는 CMS API에 액세스하기 위해 사용자 로그인 자격 증명이 필요하지 않습니다. 대신 사용자의 개인 액세스 토큰을 사용합니다.

전체 코드는 RBAC 샘플 - MCP 서버에서 확인할 수 있습니다.

Claude Desktop에서 이 MCP 서버를 로컬로 배포하는 방법을 알아보려면 MCP 서버 배포 가이드를 참조하세요.

또한 이 서버를 Cursor, Cline, Windsurf 등과 같은 다양한 AI IDE에 배포할 수 있습니다.

액세스 제어 테스트

Claude Desktop에서 이 구현을 테스트해 봅시다.

CMS에서 Alex와 Charles는 각각 하나의 기사를 작성했습니다.

Alex는 관리자 역할을 가지므로 모든 기사를 볼 수 있고, Charles는 저자가 되어 자신의 기사만 볼 수 있습니다.

Claude에게 이용 가능한 기사 수를 물어볼 때, Claude는 get-available-article-count 도구를 사용하고 우리의 권한을 묻습니다.

도구 사용 요청

Alex의 개인 액세스 토큰을 MCP에 사용하고 Claude에게 이용 가능한 기사 수를 물어보면, Claude는 get-available-article-count 도구를 호출하고 총 2개의 기사가 있다고 알려줍니다.

Alex에 대한 응답

Charles의 개인 액세스 토큰으로 전환하고 동일한 질문을 하면, Claude는 단 하나의 기사만 있다고 알려줍니다.

Charles에 대한 응답

굉장해요! 우리는 개인 액세스 토큰을 사용하여 CMS API에 액세스하고 정확한 데이터를 얻었습니다.

우리가 원하는 것은 바로 이것입니다: 각 사용자에게 개인 액세스 토큰을 생성하고, 사용자가 자신의 MCP 서버에 이 토큰을 구성하면, 우리는 그들을 위해 개인화된 AI 경험을 만듭니다.

요약 섹션을 작성하는 데 도움을 드리겠습니다:

요약

이 가이드에서는 AI 도구를 기존 서비스에 연결하면서 적절한 액세스 제어를 유지하는 방법에 대해 탐구했습니다. 역할 기반 액세스 제어(RBAC)가 구현된 CMS 시스템을 사용하여 개인 액세스 토큰(PATs)이 인증 문제를 우아하게 해결하는 방법을 보여주었습니다.

이 구현의 완전한 소스 코드는 RBAC 샘플 저장소에 있습니다. 여기에는 CMS 백엔드, 프론트엔드, MCP 서버 구현이 포함되어 있습니다.

MCP 서버를 사용자에게 배포할 때는 개인 액세스 토큰을 구성 가능하게 하세요. 이를 통해 각 사용자는:

  • MCP 서버에서 자신의 PAT 구성
  • 특정 권한에 따라 리소스에 액세스
  • 자신의 역할과 액세스 레벨을 반영하는 개인화된 AI 경험을 얻을 수 있습니다

이 접근 방식은 AI 통합의 보안을 유지하면서 각 사용자의 권한 및 역할에 따라 맞춤형 경험을 제공하는 것을 보장합니다.

AI 통합 여정을 시작하며 비즈니스에서 큰 성공을 바랍니다! 새로운 AI 기능으로 서비스가 번창하고 성장할 수 있기를 기원합니다! 🚀