인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
디렉토리 공유
디렉토리 공유는 로컬 머신과 원격 데스크톱 간에 파일을 쉽게 이동하고, 파일에 대한 변경 사항을 적용할 수 있게 해주는 Teleport의 기능입니다. 이 모든 과정은 보안을 해치지 않으면서 가능합니다.
원격 데스크톱 세션 중에, 로컬 워크스테이션에서 원격 데스크톱과 공유할 폴더를 선택할 수 있습니다. 세션 동안 원격 데스크톱 또는 워크스테이션의 폴더에 대한 변경 사항은 두 머신 모두에 반영됩니다.
공유 디렉토리는 로그 파일을 다운로드하거나, 구성 파일을 수정하거나, 원격 Windows 데스크톱에서 파일 조작을 수행할 때 편리합니다. 특정 사용자에 대해 Teleport 역할을 통해 디렉토리 공유를 비활성화할 수 있으며, 세션 종료 후 공유 디렉토리 내의 활동을 감사하기 위해 세션 기록 기능을 사용할 수 있습니다.
필요 조건
-
실행 중인 Teleport 클러스터 버전 17.0.0-dev 이상. Teleport를 시작하려면 가입하여 무료 평가판을 이용하거나 데모 환경 설정 방법을 확인하십시오.
-
tctl
관리자 도구와tsh
클라이언트 도구.tctl
및tsh
다운로드 방법에 대한 지침은 설치를 방문하십시오.
-
클러스터에 최소 하나의 원격 데스크톱이 등록된 Teleport Desktop 서비스. Desktop Access를 아직 설정하지 않은 경우, 이 가이드를 시작하기 전에 Desktop Access 시작하기를 읽으십시오.
-
Teleport가 디렉토리 공유에 사용하는 파일 시스템 접근 API를 지원하는 로컬 머신의 브라우저. Google Chrome, Brave, Microsoft Edge와 같은 Chromium 기반 브라우저의 최신 버전을 지원합니다.
Brave 사용자는 brave://flags/#file-system-access-api로 이동하여 파일 시스템 접근 API를 활성화할 수 있습니다.
전체 호환성 표는 Mozilla Developer Network 문서에서 확인할 수 있습니다.
-
연결이 가능한지 확인하기 위해
tsh login
으로 로그인한 다음, 현재 자격 증명을 사용하여tctl
명령어를 실행할 수 있는지 확인하십시오.예를 들어:
tsh login --proxy=teleport.example.com --user=email@example.comtctl status클러스터 teleport.example.com
버전 17.0.0-dev
CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678
클러스터에 연결할 수 있고
tctl status
명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 후속tctl
명령어를 실행할 수 있습니다.
자신의 Teleport 클러스터를 호스팅하는 경우, Teleport Auth Service를 호스팅하는 컴퓨터에서 전체 권한으로tctl
명령어를 실행할 수도 있습니다.
1/4단계. 디렉토리 공유
디렉토리를 공유하려면 Teleport 웹 UI를 열고 사이드바의 "Desktops" 탭으로 이동하여 연결할 데스크톱을 찾고 "CONNECT"를 클릭하여 데스크톱 세션을 시작합니다.
세션이 시작되면 화면의 오른쪽 상단에 있는 세 개의 점 메뉴를 클릭하고 "Share Directory"를 클릭합니다:
공유할 수 있는 디렉토리에 대한 제한
금지된 디렉토리
보안상의 이유로 웹 브라우저의 파일 시스템 접근 API는 "Desktop" 및 "Documents"와 같은 일반적으로 사용되는 사용자 디렉토리의 표준 위치를 포함하여 특정 디렉토리 공유를 금지합니다. 또한 운영 체제 자체에서 더 일반적으로 사용되는 중요한 디렉토리도 포함됩니다.
차단된 사용자 디렉토리의 전체 목록은 파일 시스템 접근 사양에서 확인할 수 있습니다.
이 차단된 사용자 디렉토리 내의 하위 디렉토리는 여전히 공유할 수 있습니다.
긴 디렉토리 이름
테스트를 기반으로, 이름(모든 경로 세그먼트를 포함)을 640자 이상인 디렉토리를 공유할 경우 예상치 못한 오류가 발생합니다.
디렉토리를 공유한 후
처음 디렉토리를 공유하면 브라우저가 디렉토리에 대한 변경을 허용하라는 메시지를 표시하며, 디렉토리 공유를 활성화하려면 이러한 권한을 부여해야 합니다.
권한을 부여한 후, 원격 데스크톱의 파일 탐색기에서 새 디렉토리가 표시됩니다. 이 디렉토리는 로컬 머신에 있는 디렉토리와 동일한 이름을 가지지만, 이름 뒤에 "on teleport"가 추가됩니다.
한 번에 하나의 디렉토리만 공유할 수 있습니다.
2/4단계. 디렉토리에서 파일 편집
로컬 머신과 원격 데스크탑 간에 파일 및 파일 수정을 쉽게 공유할 수 있습니다.
원격 측에서 편집
원격 측의 공유 디렉토리에서 파일을 생성, 편집 또는 삭제하면, 브라우저는 해당 변경 사항을 로컬 머신의 디렉토리에 적용합니다.
원격 측에서 파일을 공유 디렉토리로 이동하면, 해당 파일이 로컬 측에도 나타납니다. 그리고 원격 측에서 디렉토리 외부로 파일을 이동하면, 원격 데스크탑이 파일을 복사하여 공유 디렉토리 내에 유지합니다.
또한 공유 디렉토리 내의 한 하위 디렉토리에서 파일을 복사하여 다른 하위 디렉토리에 붙여넣을 수 있으며, 로컬 측에서 변경 사항이 반영됩니다.
디렉토리 공유는 원격 측의 공유 디렉토리 내 하위 디렉토리 간 파일 이동을 지원하지 않습니다.
로컬 측에서 편집
로컬 머신의 공유 디렉토리에서 파일을 생성, 편집 및 삭제할 수 있으며, 하위 디렉토리 간에 파일을 이동할 수도 있습니다.
로컬 측의 변경 사항을 원격 측에서 보려면, 원격 디렉토리를 새로 고치거나 다시 열거나, 로컬에서 변경한 개별 파일을 다시 열어야 합니다. 이렇게 하면 원격 데스크탑이 Teleport Web UI에서 디렉토리의 현재 상태를 요청합니다.
파일 크기 제한
공유 디렉토리 간에 큰 파일을 이동하는 성능은 네트워크 상태에 따라 달라지며, 파일 편집 성능은 사용하는 프로그램에 따라 달라집니다.
공유 디렉토리 내 파일에 대한 크기 제한은 없지만, 네트워크 대역폭 및 시스템 자원에 미치는 영향을 줄이기 위해 32MB 이하의 파일을 조작할 것을 권장합니다.
3/4단계. 연결 종료
디렉토리 공유를 중단하려면 원격 데스크탑 세션을 종료하십시오. 브라우저의 데스크탑 세션 오른쪽 상단에 있는 세 개의 점 메뉴로 이동하여 "연결 종료"를 클릭하십시오.
다음 번에 원격 데스크탑에서 세션을 시작하면, 디렉토리는 더 이상 공유되지 않습니다. 콘텐츠에 액세스하려면 디렉토리를 다시 공유해야 합니다.
4/4단계. 디렉토리 공유 비활성화
Teleport Auth Service는 데스크탑 세션을 시작하는 사용자의 역할에 따라 원격 데스크탑에서 디렉토리 공유에 대한 액세스를 허용합니다.
Teleport 역할은 기본적으로 디렉토리 공유를 활성화합니다. 사용자의 Teleport 역할 중 하나가 디렉토리 공유를 비활성화하면, 해당 사용자에 대한 디렉토리 공유도 비활성화됩니다.
Teleport 사용자에 대한 디렉토리 공유를 비활성화하려면 role.yaml
이라는 파일에 다음과 비슷한 역할을 정의하십시오:
kind: role
version: v5
metadata:
name: "no-sharing"
spec:
options:
desktop_directory_sharing: false
역할 생성:
tctl create -f role.yaml
no-sharing
역할을 Teleport 사용자에게 할당하려면, 인증 제공자에 맞는 적절한 명령어를 실행하십시오:
-
로컬 사용자의 역할을 쉼표로 구분된 목록으로 가져옵니다:
ROLES=$(tsh status -f json | jq -r '.active.roles | join(",")') -
새로운 역할을 추가하기 위해 로컬 사용자를 수정합니다:
tctl users update $(tsh status -f json | jq -r '.active.username') \ --set-roles "${ROLES?},no-sharing" -
Teleport 클러스터에서 로그아웃한 후 다시 로그인하여 새로운 역할을 가집니다.
-
텍스트 편집기에서
github
인증 커넥터를 엽니다:tctl edit github/github -
github
커넥터를 수정하여teams_to_roles
섹션에no-sharing
을 추가합니다.이 역할에 매핑해야 하는 팀은 조직의 역할 기반 액세스 제어(RBAC) 설계에 따라 다릅니다. 그러나 팀은 귀하의 사용자 계정을 포함해야 하며, 조직 내에서 가장 작은 팀이어야 합니다.
예시는 다음과 같습니다:
teams_to_roles: - organization: octocats team: admins roles: - access + - no-sharing
-
파일을 편집하고 저장하여 변경 사항을 적용합니다.
-
Teleport 클러스터에서 로그아웃한 후 다시 로그인하여 새로운 역할을 가집니다.
-
saml
구성 리소스를 가져옵니다:tctl get --with-secrets saml/mysaml > saml.yaml--with-secrets
플래그는spec.signing_key_pair.private_key
의 값을saml.yaml
파일에 추가합니다. 이 키는 민감한 값을 포함하므로, 리소스를 업데이트한 후 즉시saml.yaml
파일을 삭제해야 합니다. -
saml.yaml
을 수정하여attributes_to_roles
섹션에no-sharing
을 추가합니다.이 역할에 매핑해야 하는 속성은 조직의 역할 기반 액세스 제어(RBAC) 설계에 따라 다릅니다. 그러나 그룹은 귀하의 사용자 계정을 포함해야 하며, 조직 내에서 가장 작은 그룹이어야 합니다.
예시는 다음과 같습니다:
attributes_to_roles: - name: "groups" value: "my-group" roles: - access + - no-sharing
-
변경 사항을 적용합니다:
tctl create -f saml.yaml -
Teleport 클러스터에서 로그아웃한 후 다시 로그인하여 새로운 역할을 가집니다.
-
oidc
구성 리소스를 가져옵니다:tctl get oidc/myoidc --with-secrets > oidc.yaml--with-secrets
플래그는spec.signing_key_pair.private_key
의 값을oidc.yaml
파일에 추가합니다. 이 키는 민감한 값을 포함하므로, 리소스를 업데이트한 후 즉시oidc.yaml
파일을 삭제해야 합니다. -
oidc.yaml
을 수정하여claims_to_roles
섹션에no-sharing
을 추가합니다.이 역할에 매핑해야 하는 클레임은 조직의 역할 기반 액세스 제어(RBAC) 설계에 따라 다릅니다. 그러나 그룹은 귀하의 사용자 계정을 포함해야 하며, 조직 내에서 가장 작은 그룹이어야 합니다.
예시는 다음과 같습니다:
claims_to_roles: - name: "groups" value: "my-group" roles: - access + - no-sharing
-
변경 사항을 적용합니다:
tctl create -f oidc.yaml -
Teleport 클러스터에서 로그아웃한 후 다시 로그인하여 새로운 역할을 가집니다.
다음 단계
추가 읽기
디렉토리 공유는 원격 데스크탑에서 파일을 편집하는 강력한 도구이며, 사고 후 회고를 수행하거나 의도하지 않은 사용을 조사할 수 있도록 포괄적인 감사 추적이 필요합니다. 세션 기록 설정에 대해 알아보십시오.
디렉토리 공유 외에도, Teleport Desktop Service는 클립보드의 내용을 원격 데스크탑과 공유할 수 있습니다. 클립보드 공유를 사용하는 방법에 대해 알아보십시오.
디렉토리 공유 작동 방식
디렉토리 공유는 로컬 워크스테이션의 브라우저와 원격 Windows 데스크탑을 포함합니다.
원격 측에서 디렉토리 공유는 원격 데스크탑 프로토콜(RDP) 내에서 파일 시스템 관련 메시징을 활용합니다. 로컬 측에서는 Teleport Web UI가 브라우저의 파일 시스템 액세스 API를 사용하여 사용자 선택 로컬 디렉토리에 읽기 및 쓰기를 수행합니다.
Teleport Web UI는 Teleport Proxy Service와 안전한 WebSocket 세션을 설정하며, 여기서 관련 Teleport Desktop Service 인스턴스로 트래픽을 전달합니다.
Teleport Desktop Service는 Web UI가 원격 데스크탑과 통신할 수 있도록 Teleport Desktop Protocol(TDP)을 구현하여 WebSocket 프로토콜과 RDP 간의 추상화 계층을 만듭니다.
Teleport Desktop Service는 Teleport Web UI의 TDP 트래픽을 RDP 트래픽으로 변환하여 원격 데스크탑으로 전송합니다. Desktop Service는 또한 원격 데스크탑의 RDP 트래픽을 TDP 메시지로 변환하여 Teleport Web UI에 전송합니다. 이러한 메시지를 기반으로 Teleport Web UI는 공유 디렉토리에 대한 정보를 광고하거나 수정 작업을 수행합니다.
TDP에 대한 자세한 내용은 Teleport RFD 37와 디렉토리 공유에서 TDP가 사용되는 방법에 대한 RFD 67를 읽어보십시오.