Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

에이전트를 외부 시스템에 연결하기

에이전트가 외부 모니터링 서비스, 웹훅이나 API에 접근하거나 별도의 API 키를 사용해야 한다면 Data Connection 소스를 연결합니다.

보안 분류 기반 접근 제어(CBAC)가 활성화된 환경에서는 이 소스 기반 외부 연결을 지원하지 않습니다.

소스가 제공하는 것

항목실행 시 제공되는 내용
외부 통신소스가 가리키는 호스트에 대한 네트워크 정책이 에이전트에 자동 반영됨
비밀정보실행 중인 컨테이너의 /app/var/run/source_credentials.json에 해석된 인증정보 제공

에이전트는 소스가 허용한 호스트에 접근하며, 소스의 네트워크 정책을 이어받습니다. 같은 외부 통신 정책을 에이전트에 별도로 구성할 필요는 없습니다.

인증정보 파일의 구조

첫 번째 키는 소스 API 이름, 두 번째 키는 비밀정보 API 이름입니다. 다음 값은 구조를 보여주기 위한 가상 예시입니다.

{
  "example": {
    "api_key": "example-only-not-a-real-key"
  }
}

인증정보를 해석하지 못하면 파일 내용은 빈 객체 {}가 될 수 있습니다.

필요한 시점에 읽기

플랫폼은 파일을 원자적으로 교체하므로 읽는 도중에 일부만 갱신된 내용이 노출되지 않습니다. 최신 비밀값이 필요할 때 파일을 다시 읽고, 내용을 메모리에 장기 보관하지 않습니다.

import * as fs from "fs";

type SourceCredentials = Record<string, Record<string, string>>;

export function readSourceSecret(sourceApiName: string, secretApiName: string): string {
    const credentials: SourceCredentials = JSON.parse(
        fs.readFileSync("/app/var/run/source_credentials.json", "utf-8"),
    );
    const secret = credentials[sourceApiName]?.[secretApiName];
    if (typeof secret !== "string" || secret.length === 0) {
        throw new Error("필요한 소스 인증정보를 해석하지 못했습니다.");
    }
    return secret;
}

소스와 비밀정보의 식별자는 실제 연결에 맞추고, 요청을 준비할 때 readSourceSecret을 호출합니다. 필요한 인증정보가 없으면 오류로 중단합니다. 읽은 비밀값은 로그에 출력하지 않습니다.

OSDK나 OMCP 같은 플랫폼 도구의 자동 인증과 외부 소스의 비밀정보 전달은 서로 다른 경로입니다. 플랫폼 연결은 템플릿 도우미를 사용합니다.