OAuth 2.0을 사용하는 서비스 계정
기능 가용성\nOAuth 2.0을 사용하는 서비스 계정은 Snyk API를 통해 엔터프라이즈(Enterprise) 플랜에서만 사용할 수 있습니다. 자세한 내용은 Snyk API를 사용하여 서비스 계정 관리를 참조하십시오.
Snyk API 키 대신 OAuth 2.0 client_credentials 권한 부여 흐름을 사용하여 인증하는 서비스 계정을 생성할 수 있습니다. OAuth 2.0 액세스 토큰은 Snyk API 키와 동일한 방식으로 사용할 수 있지만, 유효 기간(TTL)이 짧고 자동으로 갱신될 수 있다는 보안상 이점이 추가되었습니다.
클라이언트 시크릿을 사용하는 OAuth 2.0
조직을 위한 서비스 계정 생성 또는 그룹을 위한 서비스 계정 생성 API 엔드포인트를 호출하거나, Snyk 웹 UI를 통해 그룹 또는 조직 레벨에서 oauth_client_secret 서비스 계정을 생성할 수 있습니다.
응답으로 client_secret과 client_id가 반환됩니다. 서비스 계정이 생성된 후에는 client_secret을 다시 볼 수 없습니다. 분실한 경우 client_secret을 교체(rotate)하고 새 비밀번호를 받을 수 있습니다.
client_secret은 서비스 계정 인증에 사용되므로 절대 공개적으로 공유하지 마십시오. 안전하고 비공개로 유지하십시오.
OAuth 2.0 액세스 토큰 검색
서비스 계정이 생성된 후, client_secret을 사용하여 OAuth 2.0 엔드포인트인 액세스 토큰 요청을 통해 access_token을 검색할 수 있습니다. 본문 형식과 Content-Type 헤더는 반드시 form-urlencoded여야 합니다.
access_token은 Snyk API 키와 동일한 방식으로 사용할 수 있으며, Snyk CLI와 함께 사용할 때는 Authorization: bearer $access_token 헤더나 SNYK_OAUTH_TOKEN 환경 변수를 사용합니다.
access_token은 유효 기간이 짧으므로 만료되면 갱신해야 합니다. 이 프로세스를 크게 단순화해 주는 많은 OAuth 2.0 라이브러리를 사용할 수 있습니다.
Snyk CLI로 인증
client_secret 및 client_id를 사용하여 Snyk CLI로 인증할 수도 있습니다. 자세한 내용은 snyk auth 명령 도움말을 참조하십시오.
UI를 통해 OAuth 서비스 계정 생성
API를 통해 OAuth 서비스 계정을 생성하고 관리하는 것 외에도, 웹 UI를 통해 OAuth 기반 서비스 계정을 생성할 수 있습니다. 단계는 다음과 같습니다.
참고: UI를 통해 OAuth 서비스 계정의 수명을 수정할 수는 없지만, API를 통해 이 작업을 수행할 수 있습니다.
그룹 설정 섹션에서 Service Accounts를 선택합니다.
Service accounts 설정에서 Name 필드에 서비스 계정 이름을 입력한 다음, Role 드롭다운에서 서비스 계정의 역할을 선택합니다.
OAuth 2.0 client credentials 라디오 버튼을 선택하고 Create service account 버튼을 클릭합니다.
Client ID 및 Client secret을 보여주는 창이 열립니다. 이러한 자격 증명을 기록하고 복사해 두십시오. 나중에 다시 검색할 수 없습니다. 자격 증명을 안전한 위치에 복사한 후 Close window를 클릭합니다.
서비스 계정이 그룹의 서비스 계정 목록에 표시됩니다.
UI를 통해 OAuth 기반 서비스 계정 삭제
그룹에서 활성화된 서비스 계정 목록에서 삭제하려는 서비스 계정을 식별합니다.
서비스 계정 옆의 Delete 버튼을 선택합니다.
**Are you sure you want to delete this service account?**라는 프롬프트가 있는 창이 열립니다. 서비스 계정을 삭제하려면 Delete service account 버튼을 클릭합니다.
서비스 계정이 삭제되었습니다.
개인 키 JWT를 사용하는 OAuth 2.0
서비스 계정은 기존의 client_secret 대신 OIDC Core 1.0 사양에 정의된 private_key_jwt 형식의 client_assertion을 인증에 사용할 수도 있습니다.
이는 공개적으로 액세스 가능한 JWKS 엔드포인트를 호스팅하고 공개 및 개인 서명 키를 관리할 수 있는 인프라를 갖춘 고객을 위한 고급 기능입니다. 이는 액세스 토큰 요청을 요청 본문의 단순한 client_id 및 client_secret 쌍 대신 서명된 JWT 형식으로 전송하도록 요구함으로써 OAuth 서비스 계정에 추가적인 보안 계층을 생성합니다.
개인 키 JWT 서비스 계정 설정을 위한 전제 조건
서비스 계정을 생성하기 전에 다음을 수행해야 합니다.
공개 및 개인 서명 키를 생성합니다.
공개 키에 액세스하기 위해 공개적으로 액세스 가능한 JWKS 엔드포인트를 호스팅합니다. 이는 반드시
https여야 합니다.
고객이 관리하는 서명 키는 원하는 대로 교체할 수 있습니다.
개인 키 JWT 서비스 계정 생성
Snyk API를 사용하여 그룹 또는 조직 레벨에서 oauth_private_key_jwt 서비스 계정을 생성할 수 있습니다. 서비스 계정을 생성하려면 공개적으로 액세스 가능한 JWKS 엔드포인트의 URL과 서비스 계정에 할당할 역할을 제공해야 합니다. 자세한 내용은 Snyk API를 사용하여 서비스 계정 관리를 참조하십시오.
응답에는 다음 단계에 필요한 client_id가 포함됩니다.
개인 키로 서명된 JWT 준비
Snyk은 적절한 클레임(claims)이 포함된 private_key_jwt를 구축하고 생성한 개인 서명 키로 서명할 도구 또는 스크립트를 준비할 것을 권장합니다.
JWT에는 client_assertion 속성에 대해 Snyk OAuth 2.0 액세스 토큰 엔드포인트에 요약된 클레임이 포함되어야 합니다. aud 클레임은 Snyk 인스턴스(예: api.snyk.io 또는 api.eu.snyk.io)에 따라 다를 수 있음에 유의하십시오. 자세한 내용은 지역 호스팅 및 데이터 상주를 참조하십시오.
개인 키 JWT 액세스 토큰 검색
서비스 계정이 생성되고 서명된 JWT가 준비되면, Snyk OAuth 2.0 액세스 토큰 엔드포인트를 사용하여 access_token을 검색할 수 있습니다. 이 액세스 토큰은 Snyk API 키와 동일한 방식으로 사용할 수 있습니다. 요청 본문에는 다음이 포함되어야 합니다.
grant_type: client_credentialsclient_assertion_type: private_key_jwtclient_assertion:<서명된 JWT>
access_token은 유효 기간이 짧으므로 만료되면 갱신해야 합니다. 이 프로세스를 크게 단순화해 주는 많은 OAuth 2.0 라이브러리를 사용할 수 있습니다.
Last updated