Infograb logo
디렉터리 공유

디렉터리 공유는 로컬 머신과 원격 데스크탑 간에 파일을 쉽게 이동하고, 파일에 대한 변경 사항을 적용할 수 있게 해주는 Teleport 기능입니다. 이를 통해 보안을 저해하지 않고 파일을 처리할 수 있습니다.

원격 데스크탑 세션 중에, 로컬 워크스테이션에서 공유할 폴더를 선택할 수 있습니다. 원격 데스크탑 또는 워크스테이션의 폴더에 대한 변경 사항은 세션 동안 두 머신 모두에 반영됩니다.

공유된 디렉터리는 로그 파일을 다운로드하거나, 구성 파일을 편집하거나, 원격 Windows 데스크탑에서 파일을 조작하는 등의 작업을 편리하게 수행할 수 있도록 합니다. 텔레포트 역할을 통해 특정 사용자에 대해 디렉터리 공유를 비활성화할 수 있으며, 세션 기록을 사용하여 세션 종료 후 공유 디렉터리의 활동을 감사할 수 있습니다.

필수 조건

  • 실행 중인 Teleport 클러스터 버전 이상. Teleport를 시작하려면, 가입하기 위해 무료 평가판에 등록하거나 데모 환경 설정하기를 참조하세요.

  • tctl 관리 도구와 tsh 클라이언트 도구.

    tctltsh 다운로드에 대한 지침은 설치를 방문하세요.

  • 클러스터에 최소 하나의 원격 데스크탑이 등록된 Teleport 데스크탑 서비스. 데스크탑 액세스를 아직 구성하지 않은 경우, 이 가이드를 시작하기 전에 데스크탑 액세스 시작하기를 읽어보세요.

  • 디렉터리 공유를 위해 Teleport에서 사용하는 파일 시스템 액세스 API를 지원하는 로컬 머신의 브라우저. Google Chrome, Brave 및 Microsoft Edge와 같은 Chromium 기반 브라우저의 최신 버전을 지원합니다.

    Brave 사용자는 brave://flags/#file-system-access-api로 이동하여 "Enable"을 선택함으로써 파일 시스템 액세스 API를 활성화할 수 있습니다.

    전체 호환성 표는 Mozilla Developer Network 문서에서 확인할 수 있습니다.

  • 당신의 Teleport 클러스터에 연결할 수 있는지 확인하려면, tsh login으로 로그인한 다음 현재 자격 증명을 사용하여 tctl 명령어를 실행할 수 있는지 확인하십시오.

    예를 들어:

    tsh login --proxy=teleport.example.com --user=email@example.com
    tctl status

    클러스터 teleport.example.com

    버전 16.2.0

    CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678

    클러스터에 연결하고 tctl status 명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 작업대에서 후속 tctl 명령어를 실행할 수 있습니다.

    자신의 Teleport 클러스터를 호스팅하는 경우, Teleport 인증 서비스를 호스팅하는 컴퓨터에서 전체 권한으로 tctl 명령어를 실행할 수도 있습니다.

1단계/4. 디렉터리 공유

디렉터리를 공유하려면 Teleport 웹 UI를 열고 사이드바의 "Desktops" 탭으로 이동하여 연결할 데스크탑을 찾아 "CONNECT"를 클릭하여 데스크탑 세션을 시작합니다.

세션이 시작되면 화면 오른쪽 상단의 점 세 개 메뉴를 클릭하고 "Share Directory"를 클릭하십시오:

공유할 수 있는 디렉터리에 대한 제한 사항

금지된 디렉터리

보안상의 이유로 웹 브라우저의 파일 시스템 액세스 API는 "Desktop" 및 "Documents"와 같은 일반적으로 사용되는 사용자 디렉터리의 표준 위치와 운영 체제에서 더 일반적으로 사용되는 중요한 디렉터리를 포함하여 특정 디렉터리의 공유를 금지합니다.

차단된 사용자 디렉터리의 전체 목록은 파일 시스템 액세스 사양에서 확인할 수 있습니다.

이 차단된 사용자 디렉터리 내부의 하위 디렉터리는 여전히 공유될 수 있습니다.

긴 디렉터리 이름

테스트 결과, 디렉터리 이름(모든 경로 세그먼트를 포함하여)의 길이가 640자 이상인 디렉터리를 공유하면 예기치 않은 오류가 발생하는 것으로 확인되었습니다.

디렉터리를 공유한 후

디렉터리를 처음 공유하면 브라우저가 해당 디렉터리에 대한 변경을 허용하라는 메시지를 표시하며, 디렉터리 공유를 활성화하려면 이러한 권한을 부여해야 합니다.

권한을 부여하면 원격 데스크탑의 파일 탐색기에 새 디렉터리가 표시됩니다. 그 디렉터리는 로컬 머신의 디렉터리와 동일한 이름을 가지며, 이름 뒤에 "on teleport"가 추가됩니다.

한 번에 하나의 디렉터리만 공유할 수 있습니다.

2단계/4. 디렉터리 내 파일 편집

로컬 머신과 원격 데스크탑 간에 파일 및 파일 수정사항을 쉽게 공유할 수 있습니다.

원격 측에서 편집

원격 측의 공유 디렉터리에서 파일을 생성, 편집 또는 삭제하면 브라우저가 이러한 변경 사항을 로컬 머신의 디렉터리에 적용합니다.

원격 측에서 파일을 공유 디렉터리로 이동하면, 해당 파일은 로컬 측에도 나타납니다. 원격 측에서 디렉터리 외부로 파일을 이동하면, 원격 데스크탑이 복사하여 공유 디렉터리 내에 보관합니다.

또한 공유 디렉터리 내의 한 하위 디렉터리에서 파일을 복사하여 다른 하위 디렉터리에 붙여넣을 수 있으며, 로컬 측에서 변경 사항이 반영됩니다.

디렉터리 공유는 원격 측에서 공유 디렉터리 내의 하위 디렉터리 간에 파일을 이동하는 것을 지원하지 않습니다.

로컬 측에서 편집

로컬 머신의 공유 디렉터리에서 파일을 생성, 편집 및 삭제할 수 있으며 하위 디렉터리 간에 파일을 이동할 수 있습니다.

원격 측에서 로컬 변경 사항을 보려면, 원격 디렉터리를 새로 고치거나 다시 열거나 변경된 개별 파일을 다시 열어야 합니다. 이렇게 하면 원격 데스크탑이 Teleport 웹 UI로부터 디렉터리의 현재 상태를 요청합니다.

파일 크기 제한

공유 디렉터리 간에 대용량 파일을 이동하는 성능은 네트워크 조건에 따라 달라질 수 있으며, 파일 편집 성능은 사용하는 파일 편집 프로그램에 따라 달라질 수 있습니다.

공유 디렉터리 내 파일에 대한 크기 제한은 없지만, 네트워크 대역폭 및 시스템 리소스에 미치는 영향을 줄이기 위해 32MB 이하의 파일을 조작하는 것을 권장합니다.

3단계/4. 연결 해제

디렉터리 공유를 중단하려면 원격 데스크탑 세션을 종료하십시오. 브라우저에서 데스크탑 세션의 오른쪽 상단에 있는 점 세 개 메뉴로 이동하여 "Disconnect"를 클릭하십시오.

다음 번에 원격 데스크탑에서 세션을 시작하면 디렉터리가 더 이상 공유되지 않습니다. 콘텐츠에 접근하려면 디렉터리를 다시 공유해야 합니다.

4단계/4. 디렉터리 공유 비활성화

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 사용자에게 할당하려면 인증 제공자에 맞는 적절한 명령어를 실행하세요:

  1. 로컬 사용자의 역할을 콤마로 구분된 목록으로 가져옵니다:

    ROLES=$(tsh status -f json | jq -r '.active.roles | join(",")')
  2. 로컬 사용자를 편집하여 새로운 역할을 추가합니다:

    tctl users update $(tsh status -f json | jq -r '.active.username') \ --set-roles "${ROLES?},no-sharing"
  3. Teleport 클러스터에서 로그아웃한 후 새로운 역할을 asum 하기 위해 다시 로그인합니다.

  1. github 인증 커넥터를 가져옵니다:

    tctl get github/github --with-secrets > github.yaml

    --with-secrets 플래그는 spec.signing_key_pair.private_key의 값을 github.yaml 파일에 추가합니다. 이 키는 민감한 값을 포함하고 있기 때문에, 리소스를 업데이트한 후 즉시 github.yaml 파일을 제거해야 합니다.

  2. github.yaml을 편집하고 teams_to_roles 섹션에 no-sharing을 추가합니다.

    이 역할에 매핑할 팀은 귀하의 조직에서 어떻게 역할 기반 접근 제어(RBAC)를 설계했느냐에 따라 달라집니다. 하지만 팀에는 귀하의 사용자 계정이 포함되어야 하며, 조직 내에서 가능한 한 작은 팀이어야 합니다.

    여기에 예시가 있습니다:

      teams_to_roles:
        - organization: octocats
          team: admins
          roles:
            - access
    +       - no-sharing
    
  3. 변경 사항을 적용합니다:

    tctl create -f github.yaml
  4. Teleport 클러스터에서 로그아웃한 후 새로운 역할을 assum 하기 위해 다시 로그인합니다.

  1. saml 구성 리소스를 가져옵니다:

    tctl get --with-secrets saml/mysaml > saml.yaml

    --with-secrets 플래그는 spec.signing_key_pair.private_key의 값을 saml.yaml 파일에 추가합니다. 이 키는 민감한 값을 포함하고 있기 때문에, 리소스를 업데이트한 후 즉시 saml.yaml 파일을 제거해야 합니다.

  2. saml.yaml을 편집하고 attributes_to_roles 섹션에 no-sharing을 추가합니다.

    이 역할에 매핑할 속성은 귀하의 조직에서 어떻게 역할 기반 접근 제어(RBAC)를 설계했느냐에 따라 달라집니다. 그러나 그룹에는 귀하의 사용자 계정이 포함되어야 하며, 조직 내에서 가능한 한 작은 그룹이어야 합니다.

    여기에 예시가 있습니다:

      attributes_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - no-sharing
    
  3. 변경 사항을 적용합니다:

    tctl create -f saml.yaml
  4. Teleport 클러스터에서 로그아웃한 후 새로운 역할을 asum 하기 위해 다시 로그인합니다.

  1. oidc 구성 리소스를 가져옵니다:

    tctl get oidc/myoidc --with-secrets > oidc.yaml

    --with-secrets 플래그는 spec.signing_key_pair.private_key의 값을 oidc.yaml 파일에 추가합니다. 이 키는 민감한 값을 포함하고 있기 때문에, 리소스를 업데이트한 후 즉시 oidc.yaml 파일을 제거해야 합니다.

  2. oidc.yaml을 편집하고 claims_to_roles 섹션에 no-sharing을 추가합니다.

    이 역할에 매핑할 클레임은 귀하의 조직에서 어떻게 역할 기반 접근 제어(RBAC)를 설계했느냐에 따라 달라집니다. 그러나 그룹에는 귀하의 사용자 계정이 포함되어야 하며, 조직 내에서 가능한 한 작은 그룹이어야 합니다.

    여기에 예시가 있습니다:

      claims_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - no-sharing
    
  3. 변경 사항을 적용합니다:

    tctl create -f oidc.yaml
  4. Teleport 클러스터에서 로그아웃한 후 새로운 역할을 asum 하기 위해 다시 로그인합니다.

다음 단계

추가 읽기

디렉터리 공유는 원격 데스크탑에서 파일을 편집하는 강력한 도구이며, 사건 후 회고를 수행하거나 의도치 않은 사용을 조사하기 위해 포괄적인 감사 기록을 반드시 마련해야 합니다. 데스크탑 액세스를 위한 세션 기록 설정에 대해 알아보세요.

디렉터리 공유 외에도 Teleport 데스크탑 서비스는 클립보드의 내용을 원격 데스크탑과 공유할 수 있게 해줍니다. 클립보드 공유 사용하는 방법을 알아보세요.

디렉터리 공유가 작동하는 방식

디렉터리 공유는 로컬 워크스테이션의 브라우저와 원격 Windows 데스크탑을 포함합니다.

원격 측에서는 디렉터리 공유가 원격 데스크탑 프로토콜(RDP) 내에 있는 파일 시스템 관련 메시징을 활용합니다. 로컬 측에서는 Teleport 웹 UI가 브라우저의 파일 시스템 액세스 API를 사용하여 사용자 선택 로컬 디렉터리로부터 읽고 씁니다.

Teleport 웹 UI는 Teleport 프록시 서비스와의 안전한 WebSocket 세션을 설정하여 관련 Teleport 데스크탑 서비스 인스턴스로 트래픽을 전달합니다.

Teleport 데스크탑 서비스는 웹 UI가 원격 데스크탑과 통신할 수 있도록 Teleport 데스크탑 프로토콜(TDP)을 구현하여 WebSocket 프로토콜과 RDP 간의 추상화 레이어를 생성합니다.

Teleport 데스크탑 서비스는 Teleport 웹 UI의 TDP 트래픽을 원격 데스크탑에 보내기 위해 RDP 트래픽으로 변환합니다. 또한 원격 데스크탑의 RDP 트래픽을 TDP 메시지로 변환하여 Teleport 웹 UI에 전송합니다. 이러한 메시지를 기반으로 Teleport 웹 UI는 공유 디렉터리에 대한 정보를 광고하거나 수정 작업을 수행합니다.

TDP에 대한 자세한 내용은 Teleport RFD 37에서 확인하고, 디렉터리 공유가 이를 사용하는 방법은 RFD 67에서 확인할 수 있습니다.

Teleport 원문 보기