Data Connection 권한
Data Connection의 에이전트, 소스와 동기화는 Foundry 리소스로 관리됩니다. 프로젝트와 폴더에 배치하고 보안 표지(Marking) 등의 접근 제어를 적용할 수 있습니다.
소스와 에이전트의 조회 및 편집 권한은 신뢰할 수 있는 파이프라인 개발자에게 부여해야 합니다. 데이터 소비자에게는 동기화 결과 데이터셋을 후속 변환 프로젝트로 가져오게 하여 데이터를 공유할 수 있습니다. 결과 데이터를 공유하기 위해 에이전트나 소스까지 함께 공유할 필요는 없습니다.
이하 역할별 권한은 기본 설정을 기준으로 합니다. 사용자 지정 역할로 기본 권한을 바꾼 환경에서는 실제 역할에 부여된 권한도 확인해야 합니다.
에이전트
| 역할 | 권한 |
|---|---|
Owner | 에이전트 재다운로드, 에이전트 토큰 재발급. Editor 권한 포함 |
Editor | 에이전트에 소스 배치, Agent Manager에서 플러그인과 구성 변경 및 에이전트 재시작, 다른 사용자와 공유, 에이전트 삭제. Viewer 권한 포함 |
Viewer | 에이전트 구성과 상태 조회 |
프로젝트 안에 에이전트를 생성하려면 프로젝트의 Editor가 필요하지만, 그 프로젝트의 에이전트를 관리하는 작업에는 프로젝트의 Owner가 필요합니다. 따라서 에이전트를 만든 사용자가 다운로드 링크를 생성하거나 다른 관리 작업을 수행하지 못하는 경우가 있을 수 있습니다.
소스
Owner
소스의 Owner는 기본적으로 Editor 권한을 포함하며 다음 작업을 수행할 수 있습니다.
| 작업 | 추가 조건 |
|---|---|
| 내보내기 활성화 또는 비활성화 | 플랫폼 인스턴스의 Information Security Officer 역할도 필요 |
| 내보낼 수 있는 보안 표지 추가 | 각 표지의 Apply marking, Remove marking 권한이 모두 필요 |
| 내보낼 수 있는 조직 추가 | 자신의 조직이 아닌 각 조직에 대한 Expand access 권한 필요. 자신의 조직에는 이 추가 권한이 필요하지 않음 |
| 소스를 코드 리소스에 가져올 수 있도록 허용 | 소스 소유자 권한으로 설정 |
내보낼 수 있는 보안 표지나 조직을 추가하는 작업 자체에는 Information Security Officer 역할이 필요하지 않습니다. 내보내기 기능을 활성화하는 권한과 내보낼 범위를 추가하는 권한을 구분합니다.
Editor
소스의 Editor는 다음 작업을 수행할 수 있습니다.
- 소스 삭제, 이름 변경과 다른 사용자에게 공유.
- 소스에 지정한 에이전트 변경. 추가하는 각 에이전트에 대한 편집 권한도 필요합니다.
- 소스 구성 갱신. 소스에 지정된 에이전트의 편집 권한도 필요합니다.
- 해당 소스의 동기화 생성, 편집과 삭제.
- 데이터베이스 소스에 SQL 쿼리 실행.
- JDBC와 Directory처럼 지원되는 소스의 탐색과 미리보기.
- 소스를 코드 리소스에 가져오기.
Viewer의 모든 작업.
소스의 인증 정보에 쓰기 권한이 있으면 동기화가 원천 시스템을 변경할 수 있습니다. 디렉터리나 S3의 파일을 삭제하거나 SQL로 데이터베이스의 데이터를 삭제하는 작업도 가능할 수 있습니다. 소스 또는 그 프로젝트의 편집 권한은 해당 원천 계정에 대한 전체 접근을 맡겨도 되는 사용자에게만 부여해야 합니다.
Viewer
소스의 Viewer는 지정된 에이전트를 포함하여 소스 구성을 조회할 수 있습니다.
소스 생성의 조직 수준 제어
일반적인 네트워크 통제는 외부 통신 정책으로 구성합니다. 정책은 허용한 목적지와 해당 정책을 사용할 수 있는 사용자를 정합니다.
소스 생성 자체를 조직 역할로 추가 제한하는 설정도 있습니다.
| 설정 상태 | 소스 생성 조건 |
|---|---|
| 활성화 | Create Data Connection sources 작업을 포함한 조직 역할 필요 |
| 비활성화 | 조직 수준의 소스 생성 작업 권한을 별도로 요구하지 않음. 기본 상태 |
이 설정은 조직 전체에 적용되며 소스 생성만 통제합니다. 외부 통신 정책을 대체하지 않고 기존 소스의 권한을 바꾸지도 않습니다. 기존 소스에는 어느 설정 상태에서도 프로젝트 권한이 적용됩니다.
설정을 바꾸려면 해당 조직에 대한 Manage source creation authorization method 작업 권한이 필요합니다. 기본적으로 Organization administrator 역할에 포함됩니다.
역할 기반 소스 생성을 활성화하기 전에는 실제로 소스를 만들 사용자나 그룹에 Create Data Connection sources를 포함한 조직 역할 또는 사용자 지정 역할을 먼저 부여해야 합니다.
동기화
동기화 권한은 관련 소스와 출력 데이터셋에서 결정합니다.
| 작업 | 필요한 권한 |
|---|---|
| 동기화 조회 | 소스와 데이터셋 모두 조회 권한 |
| 동기화 편집 | 소스와 데이터셋 모두 편집 권한 |
| 동기화 삭제 | 소스와 데이터셋 모두 편집 권한 |
| 동기화 실행 | 데이터셋 편집 권한 |
플러그인과 JDBC 드라이버
| 역할 | 권한과 조건 |
|---|---|
Owner | Editor 권한 포함 |
Editor | 플러그인 또는 드라이버 삭제. 어느 에이전트에도 지정되어 있지 않아야 삭제 가능. Viewer 권한 포함 |
Viewer | 플러그인 또는 드라이버 조회와 다운로드. 에이전트에 플러그인을 추가할 수 있으며 대상 에이전트의 Editor도 필요 |
웹훅
웹훅 권한은 연결된 소스에서 상속합니다.
| 작업 | 필요한 소스 권한 |
|---|---|
| 웹훅 구성 조회 | 조회 |
| 웹훅 생성 | 편집 |
| 웹훅 구성 편집 | 편집 |
| 웹훅 삭제 | 편집 |
| 액션에서 웹훅을 사용하도록 구성 | 편집 |
| 웹훅 직접 실행 | 편집. 액션을 통해 실행하는 경우에는 예외 적용 |
요청과 응답 이력
기본적으로 Data Connection의 이력 탭에서 웹훅 응답을 조회할 수 있는 사용자는 해당 웹훅을 실행한 사용자입니다.
접근 가능한 웹훅의 전체 요청과 응답 이력을 확인해야 하는 역할에는 webhooks:read-privileged-data를 추가할 수 있습니다. 기본 역할이나 사용자 지정 역할에 부여할 수 있으며, 권장 구성은 Webhook Privileged Data Viewer라는 새 역할을 만들고 필요한 사용자에게 해당 소스 범위에서 부여하는 것입니다.
코드에서 외부 연결 사용
외부 연결 변환, 파이프라인과 Compute modules
| 작업 | 필요한 권한 |
|---|---|
| 소스를 변환, 파이프라인 또는 Compute module에 가져오기 | 소스의 Editor |
| 소스를 가져온 코드 리소스의 빌드 시작 | 코드 리소스의 Editor. 소스 자체의 권한은 필요하지 않음 |
| 코드 리소스에서 가져온 소스 제거 | 소스 또는 코드 리소스 중 하나의 Editor |
소스를 코드 리소스에 가져오면 그 저장소를 편집할 수 있는 사용자가 소스의 연결 정보를 사용하는 코드를 작성할 수 있습니다. 비밀값에 접근하는 코드도 포함됩니다. 따라서 소스 가져오기 허용과 소스 및 저장소의 편집 권한을 함께 관리해야 합니다.
TypeScript v1에서 웹훅을 사용하는 외부 연결 함수
| 작업 | 수행 주체 | 필요한 권한 |
|---|---|---|
| 함수 저장소로 웹훅 가져오기 | 함수 편집자 | 웹훅의 webhooks:editor. 기본 Editor 역할에 포함 |
| 웹훅을 호출하는 함수 게시 | 함수 편집자 | 소스의 webhooks:execute. 기본 역할 중 Owner, Editor에 부여 |
웹훅을 호출하는 @OntologyEditFunction()을 액션에 연결 | 액션 편집자 | 웹훅의 webhooks:grant-action-validated-execution과 함수의 Viewer |
Workshop에서 @Query() 웹훅 실행 | 최종 사용자 | 소스의 webhooks:execute. 기본 역할 중 Owner, Editor에 부여 |
액션을 통해 @OntologyEditFunction() 실행 | 최종 사용자 | 액션의 제출 조건 충족 |
마지막 경우에는 실행 사용자의 소스, 웹훅이나 함수 권한을 검사하지 않습니다. 액션을 만들고 관리하는 사용자는 외부 작업을 허용할 대상을 제출 조건으로 적절히 제한해야 합니다.
TypeScript v2 또는 Python에서 웹훅을 호출하려면 웹훅을 함수로 게시한 뒤 함수 저장소에 가져와 Ontology SDK로 호출하는 방식을 사용할 수 있습니다. 위의 소스 가져오기 및 데코레이터 기반 호출 방식과 구분합니다.
조직과 보안 표지의 전파
소스에 적용한 조직과 보안 표지는 해당 소스의 동기화로 생성한 데이터셋에 전파됩니다. 사용자가 결과 데이터를 보려면 소스에 적용된 모든 조직과 보안 표지에 접근할 수 있어야 합니다.
한 소스가 민감도가 다른 데이터를 포함할 수 있으므로, 소스에서 접근 가능한 데이터에 필요한 조직과 보안 표지를 모두 소스에 적용하는 구성이 권장됩니다. 후속 변환에서 데이터를 정리하고 stop_propagating, stop_requiring 등의 기능으로 적절하게 전파와 요구 조건을 제거합니다.
동기화한 뒤 결과 데이터셋에만 보안 표지를 붙이는 것으로 충분하지 않습니다. 소스 접근 자체가 그 소스의 데이터에 접근하는 권한을 제공하므로 소스도 보호해야 합니다.
프로젝트 배치 권장 사항
에이전트 배치
| 구성 | 적합한 상황과 주의점 |
|---|---|
| 조직마다 하나의 프로젝트에 모든 에이전트 배치 | 하나의 그룹이 모든 에이전트를 관리할 때 적합합니다. 프로젝트 수준에서 관리하고 소스 및 동기화 권한은 별도로 둘 수 있습니다. 모든 에이전트 관리자와 소스 편집자에게 모든 에이전트 접근을 허용해도 되는 경우에 선택합니다. |
| 에이전트마다 별도 프로젝트 사용 | 관리 그룹이 여러 개이거나 에이전트별 접근을 구분해야 할 때 적합합니다. 소스에 에이전트를 추가하거나 제거할 때 다른 에이전트 전체의 권한을 함께 부여할 필요가 없고, 그룹 구성이 달라져도 프로젝트를 다시 묶을 필요가 줄어듭니다. |
소스를 에이전트에 배치하려면 그 에이전트의 Editor가 필요합니다. 에이전트가 들어 있는 프로젝트의 Editor는 해당 에이전트에서 실행할 소스와 동기화를 만들 수 있으므로, 이 작업을 허용하지 않을 사용자에게 프로젝트 편집 권한을 부여하지 않습니다.
소스와 출력 데이터셋 배치
데이터 원천 계층에서 소스마다 프로젝트를 하나씩 만들고, 그 소스의 동기화 출력 데이터셋도 같은 프로젝트에 두는 구성이 권장됩니다. 개인정보 등 민감한 데이터를 담는 소스에는 보안 표지를 적용하여 출력 데이터셋에도 전파되도록 합니다.
소스 프로젝트의 Editor는 동기화를 생성하고 편집할 수 있으며, 웹훅 생성과 다른 Foundry 기능에서의 사용 설정도 할 수 있습니다.
플러그인과 드라이버 배치
모든 에이전트를 하나의 그룹이 관리하고 각 관리자가 플러그인 및 드라이버에 동일하게 접근해도 된다면, 조직별 공통 프로젝트에 모을 수 있습니다.
기존 구성을 공통 프로젝트로 정리하는 순서는 다음과 같습니다.
- 에이전트마다 폴더를 만듭니다.
- 현재 플러그인과 드라이버를 해당 에이전트 폴더로 옮깁니다.
- 플러그인과 드라이버마다 기준으로 사용할 사본 하나를 골라 프로젝트 루트에 둡니다.
- 각 에이전트가 루트의 기준 사본을 사용하도록 변경합니다.
- 개별 에이전트 폴더의 사용을 중단합니다.
민감한 플러그인이나 드라이버를 별도로 통제하려면 종류별 프로젝트로 분리할 수 있습니다. 필요한 에이전트와 함께 배치하는 구성도 가능합니다. 이 경우 각 에이전트의 소유자가 필요한 프로젝트에 접근하고 리소스를 에이전트에서 사용할 수 있도록 권한을 부여해야 합니다.