> ## Documentation Index
> Fetch the complete documentation index at: https://link.datarelay.run/llms.txt
> Use this file to discover all available pages before exploring further.

# 활용 사례: AI에 읽기 전용 MCP 권한 부여

> 검증된 AI Identity가 지정한 Managed Host에서 host/process 정보만 조회하도록 만듭니다.

# AI에 특정 Managed Host의 읽기 전용 권한만 부여하기

**완성 결과:** 실제 인증된 AI 클라이언트가 **branch-a**의 호스트/프로세스 정보를 조회할 수 있지만 임의 명령 실행과 다른 대상에 대한 권한은 없습니다.

> [!NOTE]
>
> 원격 MCP에는 single443와 신뢰할 수 있는 공개 HTTPS가 필요합니다. [Claude·ChatGPT 연결](https://link.datarelay.run/ko/guides/mcp-clients.md)을 완료하고 이 실습에서는 별도 최소 권한 identity를 사용하세요.

## 1단계 — 서버·Agent·배포 모드 확인

![실제 Data Relay Link CLI 캡처 — 정책 설정 이전의 실제 Server 상태: Remote Access는 초기 ALLOW, Internet Access와 AI Access는 기본 DENY입니다.](https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/server-status.png?fit=max\&auto=format\&n=RzAl7zFhuZCRSIKj\&q=85\&s=bfe6b188996c8ea2078dfe6c01145c28)

*그림 1. 정책 설정 이전의 실제 Server 상태: Remote Access는 초기 ALLOW, Internet Access와 AI Access는 기본 DENY입니다. 제품 CLI 출력 예시; 일부 주소·호스트는 가렸습니다.*

**Server REPL:**

```text theme={null}
show status
show managed-hosts
system diagnostics
system certificate status
```

**branch-a**가 정상 등록되어 있고 Agent 관리 연결이 가능해야 합니다. MCP 사용을 위한 별도의 SSH Remote Service는 필요하지 않습니다. 공용 **https\://\<호스트>/mcp**는 **single443**에서만 제공됩니다. **direct** 모드라면 설치된 제품과 같은 버전의 Server 설치 프로그램에서 배포 모드를 전환합니다. [배포 모드](https://link.datarelay.run/ko/deployment/modes.md)를 따르고, 오래된 인증서만 보고 준비 완료로 판단하지 마세요.

## 2단계 — AI Identity와 최소 권한 Object 생성

![실제 Data Relay Link CLI 캡처 — Server의 실제 menu 화면: Remote Access는 4번, Internet Access는 5번, AI Access는 6번, System은 7번을 선택합니다.](https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/server-guided-menu.png?fit=max\&auto=format\&n=RzAl7zFhuZCRSIKj\&q=85\&s=b0c33a06335c9fff03e46eddd39eb331)

*그림 2. Server의 실제 menu 화면: Remote Access는 4번, Internet Access는 5번, AI Access는 6번, System은 7번을 선택합니다. 제품 CLI 출력 예시; 일부 주소·호스트는 가렸습니다.*

**Server REPL:**

```text theme={null}
set ai-identity auditor-ai
show ai-identity auditor-ai
set permission-object observer permissions host-info,process-read
set permission-object exec-check permissions command-exec
show permission-objects
```

`set ai-identity`의 Guided Wizard에서 실제 인증에 필요한 설정을 구성합니다. 대화형 AI는 지원되는 **OAuth Authorization Code** 인증을 사용합니다. 서버 계약에 맞는 OAuth 방식 지정:

```text theme={null}
system credential configure ai-identity auditor-ai authentication oauth
```

AI Identity 이름만 생성했다고 외부 AI가 인증된 것은 아닙니다. 토큰이나 클라이언트 비밀정보는 공개 저장소/문서에 기록하지 마세요.

## 3단계 — 특정 호스트와 읽기 권한만 WHITELIST 허용

**Server REPL:**

```text theme={null}
set ai-access auditor-host mode whitelist source auditor-ai destination branch-a permission observer enabled
set ai-access enabled
show ai-access
test ai-access source auditor-ai destination branch-a permission observer
test ai-access source auditor-ai destination branch-a permission exec-check
```

**기대:** observer는 ALLOW, 다른 매칭 허용 Rule이 없다면 exec-check는 DENY. AI Access는 **WHITELIST 전용·기본 DENY**이며 Enforcement 비활성화는 **DENY ALL**입니다. 읽기 전용 계정에는 command-exec를 부여하지 마세요.

## 4단계 — 공개 MCP TLS 주소 구성

![실제 Data Relay Link CLI 캡처 — 실제 Direct 모드의 MCP 경고: 인증서와 공개 주소가 설정되지 않았으며 single443 전환이 필요합니다. MCP 접속 성공 화면이 아닙니다.](https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/mcp-direct-not-ready.png?fit=max\&auto=format\&n=RzAl7zFhuZCRSIKj\&q=85\&s=2beeb57ff98f582086ccd7872d830fc0)

*그림 3. 실제 Direct 모드의 MCP 경고: 인증서와 공개 주소가 설정되지 않았으며 single443 전환이 필요합니다. MCP 접속 성공 화면이 아닙니다. 제품 CLI 출력 예시; 일부 주소·호스트는 가렸습니다.*

이미 **single443**으로 구성된 Server에 DNS/HTTPS/인증서 발급 환경을 마련한 다음 **Server REPL**에서 실제 소유 도메인/이메일로 교체하여 실행합니다.

```text theme={null}
set mcp-tls hostname mcp.example.net
set mcp-tls mode auto-acme
set mcp-tls contact-email admin@example.net
system certificate preflight
```

인증서 발급 사전 점검 통과와 운영 담당자 승인이 있을 때만:

```text theme={null}
system certificate issue
system certificate status
system diagnostics
```

외부 네트워크에서 **[https://mcp.example.net/mcp](https://mcp.example.net/mcp)**, **/.well-known/oauth-authorization-server**, **/.well-known/oauth-protected-resource/mcp**가 정상 HTTPS로 응답하고 OAuth 발급자/엔드포인트가 일치하는지 확인합니다. 내부 loopback 확인만으로 완료하지 않습니다.

## 5단계 — 실제 MCP 클라이언트 로그인/허용·거부 시험

1. 원격 MCP/OAuth를 지원하는 실제 AI 클라이언트에 \*\*[https://mcp.example.net/mcp\*\*를](https://mcp.example.net/mcp**를) Custom Remote MCP 엔드포인트로 추가합니다. 제품/플랜의 실제 지원 여부를 먼저 확인하세요.
2. OAuth Authorization Code 로그인 및 동의를 완료합니다. 검증된 사용자/클라이언트가 의도한 **auditor-ai**에 대응하는지 확인하고, 보류 승인 요청도 인증된 주체를 검토한 뒤 처리합니다.
3. 제공되는 MCP 도구 목록에서 **branch-a의 host-info 조회**를 실제 실행해 성공을 확인합니다.
4. **명령 실행** 등 허용하지 않은 동작을 요청하여 명시적 정책 DENY인지 확인합니다.
5. **Server REPL**에서 감사:

```text theme={null}
show ai-access
show ai-access-log identity auditor-ai
system diagnostics
```

**완료 기준:** 실제 외부 AI 사용자 연결, OAuth 성공, 허용 작업 성공, 비허용 작업 DENY 모두 확인해야 합니다. CLI 시뮬레이션만으로 사용자 E2E PASS를 선언하지 마세요.

## 장애/권한 철회

실패하면 TLS·OAuth·클라이언트 플랜·Agent 신뢰·AI Access Rule을 서로 구분해 점검합니다. 파일 접근에는 경로 제한 **paths**가 필요하며 읽기 권한에 명령 실행을 포함하지 않습니다. `system credential revoke ai-identity auditor-ai`는 기존 인증을 끊는 보안 작업이므로 의도한 때만 수행하세요. Rule 제거는 `unset ai-access auditor-host` 영향 검토 후 실행하며 다른 ID나 인증서를 삭제하지 않습니다.

## 최신 동작 확인 — 2026-10-28

Claude와 ChatGPT 실제 MCP 테스트가 완료되었습니다. 클라이언트 연결 가이드를 따르고 최초 소유자 mcp-owner-full-access까지 전체 유효 정책을 확인하세요. observer를 추가해도 기존 command-exec 권한은 제거되지 않습니다. 소유자 권한이 넓다면 이 읽기 전용 실습에는 별도 비소유자 identity가 필요합니다.

[현재 CLI 전체 목록](https://link.datarelay.run/ko/drlink/cli-reference.md) · [MCP 호환성](https://link.datarelay.run/ko/reference/mcp-validation.md)

## 로그 파일만 읽도록 추가 제한

운영자가 branch-a의 /var/log/myapp/health.log에 민감정보 없는 실습 로그를 준비한 경우, [AI Access 파일 예제](https://link.datarelay.run/ko/guides/ai-access.md)의 app-reader Rule을 사용합니다. Claude/ChatGPT에 해당 파일 read\_file만 요청하고 command-exec나 다른 경로는 허용하지 마세요. file-read 정책 테스트에는 path를 반드시 포함합니다. 실제 파일 존재·OS 권한과 도구의 ALLOW·DENY를 각각 확인합니다.

MCP만 사용할 신규 Managed Host는 `set enrollment bulk`에서 count **1**, SSH 사용자명 빈 값으로 management-only 등록합니다. Choose Remote Services는 서비스가 하나 이상 필요합니다. SSH/RDP를 게시할 필요가 없고 기존 정상 호스트는 재등록하지 않습니다.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.