GitHub, 클래식 PAT·SSH 키의 SSO 인증 자동화 지원
핵심 내용
GitHub SSO 자동 인증(credential delegation)은 GitHub Enterprise Cloud 관리자가 enterprise_credentials:write 권한을 가진 GitHub App을 통해 클래식 PAT·SSH 키의 SSO 인증을 단일 API 요청으로 최대 50개 조직에 걸쳐 한 번에 처리하는 기능이다.
기존에는 SSO로 보호된 조직마다 개발자가 직접 수동으로 credential을 인증해야 해서 마찰과 운영 부담이 컸고, 이 번거로움을 피하려고 장기 토큰을 계속 쓰는 부작용으로 이어지기도 했다. 새 API는 credential의 비밀값 자체는 전달하지 않고 토큰 ID나 SSH 키 지문으로만 대상을 식별하며, 대상 조직이 해당 엔터프라이즈에 속하는지 확인하고, 이미 인증이 활성화된 조직은 안전하게 건너뛴다. GitHub Enterprise Cloud 계정 산하의 여러 SSO 보호 조직에 적용되며, 특히 서비스 계정이나 자동화용 credential을 관리할 때 유용하다.
사용 방법
먼저 enterprise_credentials:write 권한을 가진 GitHub App을 만들거나 기존 앱에 이 권한을 추가한다. 이후 이 앱의 자격으로 아래 GitHub REST API를 호출하면 된다 (GitHub 공식 REST API 문서 기준).
curl -L -X POST \
https://api.github.com/enterprises/ENTERPRISE/credential-authorizations \
-H "Authorization: Bearer <GitHub App 액세스 토큰>" \
-H "Accept: application/vnd.github+json" \
-d '{
"credential_id": "SHA256:nThbg6kXUpJWGl7E2H9kGJbIIKnKNNL3V9PzAPPSZ3M",
"credential_type": "ssh_key",
"organizations": ["octo-org", "octo-enterprise-org"]
}'
credential_type은 ssh_key 또는 classic_pat, credential_id는 SSH 키의 SHA-256 지문 또는 토큰 ID, organizations는 인증할 조직 slug 배열(최대 50개)이다. credential의 비밀값 자체는 전달하지 않는다.
관리 부담을 줄여주는 기능
여러 조직에 SSO를 걸어둔 곳이라면 이 API가 반가울 것이다. 지금까지는 조직 하나하나마다 개발자에게 수동 인증을 요청해야 했는데, 그 번거로움 때문에 오히려 장기 토큰을 그냥 계속 쓰는 경우가 많았다 — 이번 자동화는 그 악순환을 끊을 수 있는 방법이다. 서비스 계정이나 자동화 봇용 PAT를 운영하는 팀에도 특히 유용해 보인다.
적용하기 전에 확인할 것:
enterprise_credentials:write권한을 가진 GitHub App을 새로 만들지, 기존 앱에 추가할지 정한다.- SSO 보호 조직 중 아직 수동 인증이 남은 곳을 목록화한다.
- 자동 인증 후에도 credential 비밀값이 API로 노출되지 않는지 재확인한다.