Teleport는 구성 가능한 키 확장을 가진 사용자 SSH 인증서를 내보내는 것을 지원합니다. 이를 통해 Teleport CA를 GitHub의 SSH 인증 기관 지원과 함께 사용할 수 있습니다. 이 방법을 통해 사용자는 짧은 기간 동안 유효한 서명된 SSH 인증서를 사용하여 조직의 레포지토리에 접근할 수 있습니다.
필수 조건
-
실행 중인 Teleport 클러스터 버전 이상. Teleport를 시작하려면, 가입하기 위해 무료 평가판에 등록하거나 데모 환경 설정하기를 참조하세요.
-
tctl
관리 도구와tsh
클라이언트 도구.tctl
과tsh
다운로드에 대한 지침은 설치를 방문하세요.
- GitHub Enterprise에 대한 접근 권한과 GitHub의 SSH 인증 기관을 수정할 수 있는 권한.
- 당신의 Teleport 클러스터에 연결할 수 있는지 확인하려면,
tsh login
으로 로그인한 다음 현재 자격 증명을 사용하여tctl
명령어를 실행할 수 있는지 확인하십시오. 예를 들어:클러스터에 연결하고tsh login --proxy=teleport.example.com --user=email@example.comtctl 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에 가져오세요:
내보낸 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 사용자에게 할당하려면 인증 제공자에 맞는 적절한 명령어를 실행하세요:
-
로컬 사용자의 역할을 콤마로 구분된 목록으로 가져옵니다:
ROLES=$(tsh status -f json | jq -r '.active.roles | join(",")') -
로컬 사용자를 편집하여 새로운 역할을 추가합니다:
tctl users update $(tsh status -f json | jq -r '.active.username') \ --set-roles "${ROLES?},developer" -
Teleport 클러스터에서 로그아웃한 후 새로운 역할을 asum 하기 위해 다시 로그인합니다.
-
github
인증 커넥터를 가져옵니다:tctl get github/github --with-secrets > github.yaml--with-secrets
플래그는spec.signing_key_pair.private_key
의 값을github.yaml
파일에 추가합니다. 이 키는 민감한 값을 포함하고 있기 때문에, 리소스를 업데이트한 후 즉시github.yaml
파일을 제거해야 합니다. -
github.yaml
을 편집하고teams_to_roles
섹션에developer
을 추가합니다.이 역할에 매핑할 팀은 귀하의 조직에서 어떻게 역할 기반 접근 제어(RBAC)를 설계했느냐에 따라 달라집니다. 하지만 팀에는 귀하의 사용자 계정이 포함되어야 하며, 조직 내에서 가능한 한 작은 팀이어야 합니다.
여기에 예시가 있습니다:
teams_to_roles: - organization: octocats team: admins roles: - access + - developer
-
변경 사항을 적용합니다:
tctl create -f github.yaml -
Teleport 클러스터에서 로그아웃한 후 새로운 역할을 assum 하기 위해 다시 로그인합니다.
-
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
섹션에developer
을 추가합니다.이 역할에 매핑할 속성은 귀하의 조직에서 어떻게 역할 기반 접근 제어(RBAC)를 설계했느냐에 따라 달라집니다. 그러나 그룹에는 귀하의 사용자 계정이 포함되어야 하며, 조직 내에서 가능한 한 작은 그룹이어야 합니다.
여기에 예시가 있습니다:
attributes_to_roles: - name: "groups" value: "my-group" roles: - access + - developer
-
변경 사항을 적용합니다:
tctl create -f saml.yaml -
Teleport 클러스터에서 로그아웃한 후 새로운 역할을 asum 하기 위해 다시 로그인합니다.
-
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
섹션에developer
을 추가합니다.이 역할에 매핑할 클레임은 귀하의 조직에서 어떻게 역할 기반 접근 제어(RBAC)를 설계했느냐에 따라 달라집니다. 그러나 그룹에는 귀하의 사용자 계정이 포함되어야 하며, 조직 내에서 가능한 한 작은 그룹이어야 합니다.
여기에 예시가 있습니다:
claims_to_roles: - name: "groups" value: "my-group" roles: - access + - developer
-
변경 사항을 적용합니다:
tctl create -f oidc.yaml -
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에 대하여를 참조하세요.