Infograb logo
GitHub와 Teleport의 인증 기관 사용

Teleport는 구성 가능한 키 확장을 통해 사용자 SSH 인증서를 내보내는 것을 지원합니다. 이를 통해 Teleport CA를 GitHub의 SSH 인증 기관 지원과 함께 사용할 수 있습니다. 이렇게 하면 사용자는 단기 서명된 SSH 인증서를 통해 조직의 리포지토리에 접근할 수 있습니다.

전제 조건

  • 실행 중인 Teleport 클러스터 버전 17.0.0-dev 이상. Teleport를 시작하려면 가입하여 무료 평가판을 이용하거나 데모 환경 설정 방법을 확인하십시오.

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

    tctltsh 다운로드 방법에 대한 지침은 설치를 방문하십시오.

  • GitHub Enterprise에 대한 접근 권한과 GitHub의 SSH 인증 기관을 수정할 수 있는 권한.
  • 연결이 가능한지 확인하기 위해 tsh login 으로 로그인한 다음, 현재 자격 증명을 사용하여 tctl 명령어를 실행할 수 있는지 확인하십시오. 예를 들어:
    tsh login --proxy=teleport.example.com --user=email@example.com
    tctl status

    클러스터 teleport.example.com

    버전 17.0.0-dev

    CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678

    클러스터에 연결할 수 있고 tctl status 명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 후속 tctl 명령어를 실행할 수 있습니다.
    자신의 Teleport 클러스터를 호스팅하는 경우, Teleport Auth Service를 호스팅하는 컴퓨터에서 전체 권한으로 tctl 명령어를 실행할 수도 있습니다.

1/3단계. Teleport CA를 GitHub에 가져오기

Teleport CA를 내보내려면 다음 명령을 실행하여 proxy를 Teleport Proxy Service의 주소로 설정합니다:

curl 'https://proxy/webapi/auth/export?type=user' | sed 's/^cert-authority //g'

다음으로 아래 가이드의 지침에 따라 Teleport CA를 GitHub에 가져옵니다:

조직의 SSH 인증 기관 관리

내보낸 teleport.ca 파일의 내용은 "New CA"를 클릭한 후 "Key" 필드에 붙여넣어야 합니다.

2/3단계. GitHub 키 확장 구성

cert_extensions 옵션을 포함하도록 역할을 생성하거나 업데이트합니다. name 의 값은 login@github.com 이어야 합니다.

kind: role
version: v5
metadata:
  name: developer
spec:
  options:
    cert_extensions:
      - type: ssh
        mode: extension
        name: login@github.com # 필수: `login@github.com` .
        value: "{{ external.logins }}"

developer 역할을 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?},developer"
  3. Teleport 클러스터에서 로그아웃한 후 다시 로그인하여 새로운 역할을 가집니다.

  1. 텍스트 편집기에서 github 인증 커넥터를 엽니다:

    tctl edit github/github
  2. github 커넥터를 수정하여 teams_to_roles 섹션에 developer 을 추가합니다.

    이 역할에 매핑해야 하는 팀은 조직의 역할 기반 액세스 제어(RBAC) 설계에 따라 다릅니다. 그러나 팀은 귀하의 사용자 계정을 포함해야 하며, 조직 내에서 가장 작은 팀이어야 합니다.

    예시는 다음과 같습니다:

      teams_to_roles:
        - organization: octocats
          team: admins
          roles:
            - access
    +       - developer
    
  3. 파일을 편집하고 저장하여 변경 사항을 적용합니다.

  4. Teleport 클러스터에서 로그아웃한 후 다시 로그인하여 새로운 역할을 가집니다.

  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 섹션에 developer 을 추가합니다.

    이 역할에 매핑해야 하는 속성은 조직의 역할 기반 액세스 제어(RBAC) 설계에 따라 다릅니다. 그러나 그룹은 귀하의 사용자 계정을 포함해야 하며, 조직 내에서 가장 작은 그룹이어야 합니다.

    예시는 다음과 같습니다:

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

    tctl create -f saml.yaml
  4. Teleport 클러스터에서 로그아웃한 후 다시 로그인하여 새로운 역할을 가집니다.

  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 섹션에 developer 을 추가합니다.

    이 역할에 매핑해야 하는 클레임은 조직의 역할 기반 액세스 제어(RBAC) 설계에 따라 다릅니다. 그러나 그룹은 귀하의 사용자 계정을 포함해야 하며, 조직 내에서 가장 작은 그룹이어야 합니다.

    예시는 다음과 같습니다:

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

    tctl create -f oidc.yaml
  4. Teleport 클러스터에서 로그아웃한 후 다시 로그인하여 새로운 역할을 가집니다.

3/3단계. 사용자 인증서 발급

이전에 정의한 developer 역할을 가정하기 위해 Teleport에 인증하면, Teleport는 사용자 인증서에 구성한 인증서 확장을 추가합니다. 그런 다음 로컬 SSH 구성에서 이 경로를 참조할 수 있습니다.

편의를 위해 터미널을 열고 사용자 인증서의 위치에 대한 환경 변수를 할당합니다. example.teleport.sh를 Teleport 클러스터의 도메인 이름으로, myuser를 Teleport 사용자의 이름으로 교체합니다:

export TELEPORT_CERT=~/.tsh/keys/example.teleport.sh/myuser-ssh/example.teleport.sh-cert.pub

이 서명된 인증서로 인증이 제대로 작동하는지 테스트하려면 조직의 사용자로 github.com 에 SSH로 접속합니다:

ssh -i $TELEPORT_CERT org-<ID>@github.com

인증이 성공하면 터미널에 "You've successfully authenticated" 메시지가 표시되어야 합니다.

새로 생성된 인증서는 다음을 ~/.ssh/config 파일에 추가하여 SSH를 통해 GitHub와 상호 작용할 때 사용할 수 있습니다:

Host github.com HostName github.com IdentityFile path/to/cert.pub

SSH 인증 기관을 사용할 때는 GitHub UI에서 GitHub 리포지토리의 SSH URL을 가져와야 올바른 SSH 사용자가 인증에 사용됩니다. 자세한 내용은 SSH 인증서가 있는 SSH URL에 대한 정보를 참조하세요.

Teleport 원문 보기