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

Teleport는 구성 가능한 키 확장을 가진 사용자 SSH 인증서를 내보내는 것을 지원합니다. 이를 통해 Teleport CA를 GitHub의 SSH 인증 기관 지원과 함께 사용할 수 있습니다. 이 방법을 통해 사용자는 짧은 기간 동안 유효한 서명된 SSH 인증서를 사용하여 조직의 레포지토리에 접근할 수 있습니다.

필수 조건

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

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

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

  • GitHub Enterprise에 대한 접근 권한과 GitHub의 SSH 인증 기관을 수정할 수 있는 권한.
  • 당신의 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단계/3단계. GitHub에 Teleport CA 가져오기

Teleport CA를 내보내기 위해 다음 명령어를 실행하고, proxy를 Teleport 프록시 서비스의 주소로 지정합니다:

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

다음으로, 아래 가이드의 지침에 따라 Teleport CA를 GitHub에 가져오세요:

조직의 SSH 인증 기관 관리

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

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 클러스터에서 로그아웃한 후 새로운 역할을 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 섹션에 developer을 추가합니다.

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

    여기에 예시가 있습니다:

      teams_to_roles:
        - organization: octocats
          team: admins
          roles:
            - access
    +       - developer
    
  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 섹션에 developer을 추가합니다.

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

    여기에 예시가 있습니다:

      attributes_to_roles:
        - name: "groups"
          value: "my-group"
          roles:
            - access
    +       - developer
    
  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 섹션에 developer을 추가합니다.

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

    여기에 예시가 있습니다:

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

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

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를 통해 GitHub와 상호작용할 때 사용될 수 있으며, 다음을 ~/.ssh/config 파일에 추가합니다:

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

SSH 인증 기관을 사용하는 경우, 인증을 위해 올바른 SSH 사용자가 사용되도록 GitHub UI에서 GitHub 레포지토리의 SSH URL을 검색해야 합니다. 자세한 내용은 SSH 인증서가 있는 SSH URL에 대하여를 참조하세요.

Teleport 원문 보기