Teleport 정책의 접근 그래프를 통해 GitLab 계정 내의 접근 패턴에 대한 인사이트를 얻을 수 있습니다. 모든 권한, 사용자, 그룹 및 프로젝트를 스캔하여 GitLab 환경 내의 권한 모델을 향상시키는 데 도움이 되는 시각적 표현을 제공합니다. 이 기능을 통해 다음과 같은 질문에 답할 수 있습니다:
- 사용자가 접근할 수 있는 프로젝트는 무엇인가요?
- 어떤 사용자가 프로젝트에 대한 쓰기 권한을 가지고 있나요?
접근 그래프는 Teleport 정책 제품의 기능으로, Teleport Enterprise 에디션 고객에게 제공됩니다.
Teleport UI에 로그인한 후, 관리 탭으로 이동합니다. 활성화된 경우, 접근 그래프 옵션은 권한 관리 섹션에서 찾을 수 있습니다.
작동 방식
접근 그래프는 사용자, 프로젝트 및 그룹을 포함한 다양한 GitLab 리소스를 동기화합니다. 이 리소스들은 접근 그래프 페이지에서 자세히 설명된 그래프 표현을 사용하여 시각화됩니다.
가져오기 과정은 두 가지 주요 단계로 구성됩니다:
GitLab API 폴링
Teleport 클러스터는 구성된 GitLab 계정을 지속적으로 스캔하고 다음 리소스를 검색합니다:
- 사용자
- 그룹
- 프로젝트
- 그룹 구성원
- 프로젝트 구성원
필요한 모든 리소스가 가져와지면, Teleport는 이를 접근 그래프에 푸시하여 GitLab 인스턴스에서 최신 정보를 유지합니다.
리소스 가져오기
Teleport 정책의 접근 그래프 기능은 가져온 리소스와 그 관계를 파고들어 그래픽 표현을 작성합니다.
전제 조건
- 실행 중인 Teleport Enterprise 클러스터 v14.3.20/v15.3.1/v16.0.0 이상.
- 셀프 호스팅 클러스터의 경우, Teleport 정책이 활성화된 업데이트된
license.pem
. - 셀프 호스팅 클러스터의 경우, 실행 중인 접근 그래프 노드 v1.21.4 이상. 자세한 설정 방법은 접근 그래프 페이지를 참고하세요.
- 셀프 호스팅 클러스터의 경우, 접근 그래프 서비스가 실행되는 노드는 Teleport Auth 서비스에서 접근 가능해야 합니다.
- GitLab v9.0 이상이 실행 중인 GitLab 인스턴스.
1단계/3. GitLab 토큰 생성하기
GitLab 통합을 설정하려면 다음 권한을 가진 GitLab 토큰을 생성해야 합니다:
read_api
GitLab 인스턴스에 접속하여 사용자 설정에 들어가고, 접근 토큰 옵션을 선택합니다.
read_api
범위로 새 토큰을 생성하고 생성된 토큰을 복사합니다. 자세한 내용은
GitLab 문서를 참고하세요.
가져오기 도구는 이 토큰을 사용하여 GitLab 인스턴스에서 필요한 리소스를 가져옵니다.
GitLab 가져오기 도구는 토큰이 접근할 수 있는 리소스만 가져옵니다. 토큰과 연결된 사용자가 가져오려는 리소스에 대한 필요한 권한이 있는지 확인하세요.
GitLab.com 계정을 사용하는 경우, 가져오기 도구는 조직의 일부이거나 토큰이 접근 가능한 프로젝트에 접근할 수 있는 사용자만 검색합니다.
셀프 호스팅 GitLab 인스턴스를 사용하는 경우, 가져오기 도구는 토큰이 접근할 수 있는 모든 리소스를 검색하며, 인스턴스의 모든 사용자도 포함됩니다.
토큰은 다음 단계에서 GitLab 동기화 통합을 구성하는 데 사용됩니다.
2단계/3. 접근 그래프 GitLab 동기화 설정하기
GitLab 동기화 구성을 위한 설정 마법사를 시작하려면 Teleport UI에 접근하여 관리 탭으로 이동하고 권한 관리 섹션 내의 접근 그래프 옵션을 선택하세요.
접근 그래프 페이지에서 통합
이라는 버튼을 확인할 수 있습니다. 클릭하여
통합 페이지로 이동합니다. 통합 페이지에서 GitLab 통합 옆의 설정
버튼을 클릭하세요.
1단계에서 생성한 GitLab 토큰과 GitLab 인스턴스 도메인을 제공하라는 메시지가 표시됩니다. 토큰이 성공적으로 검증되면, 접근 그래프에서 가져온 리소스를 볼 수 있습니다.
3단계/3. 접근 그래프에서 GitLab 리소스 보기
가져온 GitLab 리소스를 접근 그래프 페이지에서 볼 수 있습니다. 그래프 표현은 GitLab 인스턴스 내의 사용자, 그룹 및 프로젝트 간의 관계를 보여줍니다.
사용자는 그룹 또는 프로젝트에 접근할 수 있는 권한을 가질 수 있습니다. 사용자가 그룹에 접근할 수 있는 경우, 해당 그룹 내의 모든 프로젝트 및 하위 프로젝트에 대한 권한을 상속받습니다.
그래프에서 각각의 노드를 클릭하여 사용자, 그룹 및 프로젝트에 부여된 권한을 볼 수 있습니다.
예를 들어, 사용자에게 부여된 권한을 보려면 사용자 노드를 클릭하고
컨텍스트 메뉴에서 접근 보기
를 선택하세요. 이를 통해 사용자에게 부여된
권한과 그들이 접근할 수 있는 리소스가 표시됩니다.
또한 접근 그래프에서 특정 정보를 가져오기 위해 쿼리를 실행할 수 있습니다:
사용자에게 접근 가능한 모든 프로젝트 가져오기
다음 쿼리는 사용자 user에게 접근 가능한 모든 프로젝트를 가져옵니다:
SELECT * FROM access_path WHERE "identity" = 'user' AND source='Gitlab'
또한 쿼리를 실행하여 owner
, maintainer
, developer
, guest
또는 reporter
와 같은
사용자의 접근 수준에 따라 프로젝트를 필터링할 수 있습니다:
SELECT * FROM access_path WHERE "identity" = 'user' AND source='Gitlab' AND action='owner'
action
매개변수를 maintainer
, developer
, guest
또는 reporter
로 변경하여
해당 프로젝트를 가져옵니다.
프로젝트에 대한 쓰기 접근 권한이 있는 모든 사용자 가져오기
다음 쿼리는 project라는 이름의 프로젝트에 대한 쓰기/읽기 접근 권한이 있는 모든 사용자를 가져옵니다:
SELECT * FROM access_path WHERE "resource" = 'project' AND source='Gitlab'
문제 해결
GitLab 통합을 설정한 후, 접근 그래프의 통합 페이지에서 가져오기 프로세스 상태를 모니터링할 수 있습니다. 가져오기에 실패하면 오류 메시지가 문제를 식별하는 데 도움이 됩니다.
가져오기 프로세스가 현재 실행 중인지 아니면 성공적으로 완료되었는지를 확인하여 상태를 확인할 수 있습니다.
Unauthorized
오류가 발생하는 경우, GitLab 토큰이 리소스에 대한
필요한 권한이 있는지 확인하고, 토큰이 유효한지 확인하세요. 토큰이
만료되었으면 새 토큰을 생성하고 통합 설정을 업데이트해야 합니다.
다른 문제가 발생하면, Teleport 클러스터가 GitLab 인스턴스에 도달할 수 있고 GitLab API에 접근 가능하는지 확인하세요.
여전히 문제가 발생하면 접근 그래프의 통합 페이지에서 오류 로그를 검사하여 자세한 정보를 확인하세요.