Public Application의 공개 범위와 지원 연산
Public Application은 Foundry 하위 도메인에서 로그인 없이 제공하는 웹사이트와, 선택적으로 연결하는 제한된 온톨로지 API입니다. 주소에 도달하고 적용된 인바운드 조건을 충족하는 사람은 누구나 사이트와 공개한 API를 사용할 수 있습니다.
Developer Console의 OSDK 기반 Public Application과 Slate의 공개 양식 업로드는 별도 기능이며 지원 범위도 다릅니다.
적합한 업무
- 비함수 기반 액션으로 정보를 제출하고 제출자가 다시 조회할 필요가 없는 일방향 수집 양식
- 미리 계산한 공개 집계값을 보여 주는 대시보드
- Foundry 계정을 만들 필요 없는 관심 등록, 연락처 수집이나 가입 신청
- 온톨로지 API를 전혀 호출하지 않는 정적 웹사이트
대시보드의 제한적인 선택은 미리 계산한 결과나 이미 받은 공개 데이터를 활용할 수 있습니다. 일반적인 서버 검색, 필터 객체 집합과 집계 호출을 지원한다고 해석하면 안 됩니다.
구성 요소와 신원
| 요소 | 동작 |
|---|---|
| 비인증 웹사이트 | HTML, CSS와 JavaScript를 Foundry 하위 도메인에서 로그인 없이 제공합니다. |
| 브라우저 OSDK | 앱이 명시적으로 공개한 범위의 허용된 온톨로지 호출을 수행합니다. |
| 비인증 API proxy | 요청을 앱의 서비스 사용자로 인증해 온톨로지에 전달합니다. |
정적 웹사이트만 사용할 수도 있고 웹사이트와 API proxy를 함께 사용할 수도 있습니다. 최종 사용자는 Foundry 토큰을 받거나 보거나 전송하지 않습니다.
모든 API 요청은 Foundry가 관리하는 앱 서비스 사용자로 실행합니다. Developer Console의 앱 리소스 범위와 서비스 사용자가 볼 수 있는 리소스가 공개 가능한 최대 범위를 정합니다.
개별 공개 이용자의 Foundry 신원은 없습니다. Foundry가 쓰기 작업을 특정 일반인에게 귀속할 수 없으므로 최종 사용자별 신원이나 권한 판단이 필요한 업무에는 이 모델을 사용하지 않습니다.
허용 연산
| 연산 | 기능 | 추가 제한 |
|---|---|---|
| Get Ontology full metadata | 객체, 링크, 액션, query와 interface를 포함한 온톨로지 메타데이터를 읽습니다. | 연산별 추가 제한은 없지만 앱 범위와 서비스 사용자 자격은 계속 적용합니다. |
| Load Ontology metadata | 요청 본문에서 지정한 온톨로지 부분의 메타데이터를 읽습니다. | 같은 범위 및 신원 조건을 따릅니다. |
| Apply Action | 입력값으로 액션을 적용하고 온톨로지에 씁니다. | 함수 기반 액션, 배치 적용과 웹훅을 지원하지 않습니다. |
| Load Object Set | 객체 집합 정의로 여러 객체, 기본 키의 단일 객체 또는 연결 객체를 읽습니다. | SearchAround, FilteredObjectSets와 orderBy를 지원하지 않습니다. |
메타데이터 응답에 query나 interface 정의가 있다고 그 기능의 실행도 허용되는 것은 아닙니다. 연결 객체 읽기 지원을 일반적인 복잡한 search-around 지원으로 확장해서도 안 됩니다.
차단되는 기능
다음은 Public Application에서 호출할 수 없습니다.
- 모든 함수 실행, query, 함수 기반 액션과 함수 기반 배치 액션
- searchObjects와 aggregateObjects 등 검색 및 집계
- 복잡한 search-around와 파생 속성
- 온톨로지 interface 사용
- 첨부 파일 업로드 및 다운로드
- 미디어 업로드 및 다운로드
- streamAllPoints와 streamValues 같은 시계열 스트리밍 엔드포인트
- 플랫폼 관리, 모델 생성, 스케줄 관리와 챗봇 상호작용 등 온톨로지 밖의 API
서비스 사용자가 내부에서 이런 작업 권한을 가지고 있어도 공개 proxy가 차단합니다. 공개 API의 비용과 데이터 형태를 제한하기 위한 별도 제약입니다.
무거운 처리가 필요하면 비함수 액션으로 제출을 기록한 뒤 Foundry 안의 Automate 등에서 통제된 주기로 처리합니다. 공개 요청이 직접 임의의 비용을 가진 함수를 실행하도록 설계하지 않습니다.
기본 보호
비인증 트래픽에는 앱별 rate limit을 서비스 신원으로 바꾸기 전에 적용합니다. 앱 하나의 공개 트래픽이 다른 앱과 플랫폼에 미칠 영향을 줄이기 위한 통제이며 개발자가 기본 보호를 임의로 변경할 수는 없습니다.
하위 도메인은 기본적으로 상위 인스턴스 도메인의 ingress 정책을 상속합니다. 예를 들어 특정 국가나 네트워크만 허용한 경우 공개 앱에도 적용됩니다. 모든 요청은 인스턴스 WAF를 통과합니다. 공개 앱에 더 넓은 인바운드 범위가 필요한 경우에는 앱별 ingress 정책 구성을 사용합니다.
Rate limit과 WAF가 있다는 이유로 비공개 데이터를 공개 범위에 넣어도 되는 것은 아닙니다.
리소스 공개 권한
앱 범위에 리소스를 추가하려면 그 리소스의 모든 보안 표지와 조직 표지를 제거할 수 있는 권한이 필요합니다. 이 조건을 충족하지 못하면 Foundry가 추가를 차단합니다.
리소스 추가는 인터넷에서 접근할 표면을 넓히는 반출 결정입니다. 원래 보호를 해제할 권한이 있는 사람이 명시적으로 검토하고 감사 가능한 절차로 수행해야 합니다. 앱의 범위에 추가한 데이터가 공개 의도에 맞는지, 서비스 사용자 권한이 필요한 수준인지 확인합니다.
URL의 식별자는 무작위 UUID처럼 추측하기 어렵게 만듭니다. 그러나 URL을 아는 사람은 접근할 수 있으므로 추측 난이도를 사용자 인증이나 비공개 데이터 보호의 대체로 사용하지 않습니다.
보안 검토와 예외
앱을 활성화하기 전에 인스턴스의 Information Security Officer가 다음을 검토하고 승인해야 합니다.
- 업무가 인터넷에 공개된 비인증 표면에 적합한지
- 추가한 리소스가 공개하려는 데이터인지
- 개발자가 위험을 이해하고 처리 및 노출을 제한하도록 설계했는지
이 검토는 일반적인 하위 도메인 승인에 더해 필요합니다. 도메인 요청 전에 승인할 업무 목적을 문서화해 검토자가 맥락을 알 수 있게 합니다.
현재 허용 범위 밖의 기능이 필요하면 Palantir Support에 문의합니다. 예외는 사례별로 검토하며, 예외가 있더라도 활성화 전 Information Security Officer의 업무 승인이 필요합니다. 지원 연산은 앱별 연산량 관측과 강화된 호출 빈도 제한 기능이 출시됨에 따라 확대될 예정입니다.
실제 생성과 두 공개 옵션은 Public Application 설정을 참조합니다.