앱에 대한 GitHub OAuth 2.0 자격 증명 생성 - JWT for the GitHub 애플리케이션 취약성 통합

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 11분
  • 에 대한 GitHub 애플리케이션 취약성 통합JWT 전달자 토큰을 사용하여 앱을 통합 GitHub 하려면 다음 단계를 수행합니다.

    필요한 역할:
    • sn_vul.app_sec_manager 및 관리자 의 기록에 ServiceNow AI Platform대한 .
    • 계정의 작업에 GitHub 필요한 인스턴스 역할이 없습니다.
    • 이 설정 단계의 컨텍스트에 대한 자세한 내용은 OAuth 2.0 프로토콜을 참조하세요.

    에 대한 앱 생성 및 구성 GitHubGitHub 애플리케이션 취약성 통합

    계정에서 사용자 지정 GitHub 앱을 GitHub 생성하여 인스턴스에서 OAuth GitHub 애플리케이션 취약성 통합 2.0 인증을 활성화합니다.

    시작하기 전에

    필요한 역할: 인스턴스 역할이 필요하지 않음

    이 태스크 정보

    계정에서 GitHub 이 단계를 완료합니다. 참조 건물 GitHub (개발자 사이트)에서 GitHub 사용자 지정 애플리케이션을 만들고 구성하는 방법에 대한 지침을 확인할 수 있습니다.

    프로시저

    1. GitHub 계정에서 다음으로 이동하여 앱을 생성합니다GitHub. 개발자 설정 > GitHub 앱.
    2. 홈페이지 URL 필드에 https://<instance-name>.service-now.com 을 입력합니다.
    3. 사용자 권한 부여 콜백 URL 필드에 https://<instance-name>.service-now.com/oauth_redirect.do 을 입력합니다.
    4. 사용자 식별 및 권한 부여 섹션에서 사용자 인증 토큰 만료 필드의 선택을 취소합니다.
    5. 웹후크 섹션에서 활성 필드를 선택합니다.
    6. 웹후크 URL 필드에 https://instance-name>.service-now.com/ 를 입력합니다.
    7. 나머지 필드는 비워 둡니다(기본값).
    8. 리포지토리 권한 섹션에서 다음 설정을 구성합니다.
      코드 스캔 읽기 전용
      컨텐츠 읽기 전용
      사용자 지정 속성 읽기 전용
      Dependabot alerts 읽기 전용
      메타데이터 읽기 전용
      주:
      GitHub 앱을 이미 사용 중이고 권한을 업데이트하는 경우 GitHub 앱에 대한 해당 권한을 검토하고 수락해야 합니다. 앱으로 이동하여 구성 > 검토 요청 > 새 권한 수락을 선택할 수 있습니다.
    9. 나머지 권한은 접근 권한 없음 (기본값)으로 둡니다.
    10. 이벤트 구독 섹션에서 배포 보호 규칙 옵션을 선택합니다.
    11. 헤더를 마우스 오른쪽 버튼으로 클릭하여 변경 내용을 저장합니다.
    12. 새로 만든 GitHub 앱을 선택한 계정에 설치합니다.
      1. GitHub 앱 설정 페이지에서 앱을 선택합니다.
      2. 왼쪽 사이드바에서 앱 설치를 선택합니다.
      3. 올바른 리포지토리가 포함된 조직 또는 개인 계정 옆에 있는 설치를 선택합니다.
      4. 모든 리포지토리에 앱을 설치하거나 리포지토리를 선택합니다.
        자세한 내용은 GitHub 앱 설치를 참조하세요.
    13. 설치 후 앱의 설정(톱니바퀴 아이콘)을 선택하고 다음 정보를 적어 두거나 기록해 둡니다.

      이러한 상세 정보는 인스턴스에서 애플리케이션 레지스트리 ServiceNow AI Platform 를 생성할 때 필요합니다.

      • 앱 ID
      • 클라이언트 ID
      • 클라이언트 비밀입니다.
      • URL에서 토큰을 기록해 둡니다. 인스턴스의 토큰 URL에 입력하는 토큰 ID입니다.
    14. 페이지를 아래로 스크롤하여 새 개인 키를 생성하고 컴퓨터에 저장합니다.

    에 대한 JKS 인증서 생성 GitHub 애플리케이션 취약성 통합

    에 대한 GitHub 애플리케이션 취약성 통합JWT 인증을 위한 JKS 인증서를 생성합니다.

    시작하기 전에

    .jks 파일(KeyStore 암호)을 생성하는 데 사용하는 암호를 기록해 두어야 합니다.

    필요한 역할: sn_vul.app_sec_manager

    프로시저

    1. 앱 개인 키를 사용하여 GitHub CA 서명 인증서를 만듭니다.
      openssl req -new -x509 -key <file-name>.pem -out <certificate-name>.pem -days 1095
    2. 필요한 상세 정보를 입력합니다.
    3. 앱 개인 키 및 CA 서명 인증서를 사용하여 GitHub PKCS 12 파일을 생성합니다.
      openssl pkcs12 -export -in <certificate-name>.pem -inkey <file-name>.pem -certfile <certificate-name>.pem -out <PKCS-12-file-name>.p12 
    4. 익스포트 암호를 제공합니다.
    5. JKS 파일을 생성합니다.
      keytool -importkeystore -srckeystore <PKCS-12-file-name>.p12 -srcstoretype pkcs12 -destkeystore <JKS-certificate-filename>.jks -deststoretype JKS
    6. 대상 및 소스 키 저장소 암호를 제공합니다.

    Java 키 스토어 인증서를 인스턴스에 첨부 GitHub 하여 GitHub 애플리케이션 취약성 통합

    유효한 GitHub Java KeyStore(JKS) 인증서를 인스턴스에 연결하여 JWT 전달자 Grant 토큰 인증을 활성화합니다.

    시작하기 전에

    유효한 Java KeyStore 인증서입니다.

    필요한 역할: sn_vul.app_sec_manager

    프로시저

    1. 다음으로 이동 모두 > 시스템 정의 > 인증서.
    2. 새로 만들기를 선택합니다.
    3. 양식에서 필드를 채웁니다.
      표 1. X.509 인증서 양식 필드
      필드 설명
      이름 기록을 고유하게 식별하는 이름입니다. 예를 들어 AVR용 내 GitHub 앱 인증서입니다.
      만료 시 알림 인증서가 만료될 때 알림을 받을 사용자를 지정하는 옵션입니다.
      만료되기 전 경고 인증서가 만료되기 전에 알림을 보낼 일 수입니다.
      활성 인증서를 활성화하는 옵션입니다.
      유형 인증서 유형을 선택하는 옵션입니다. Java 키 스토어를 선택합니다.
      며칠 후 만료 인증서가 만료될 때까지의 일 수입니다.
      키 스토어 암호 인증서와 관련된 암호입니다(힌트: 이전에 작성한 대상 KeyStore 암호).
      간단한 설명 인증서에 대한 요약입니다.
    4. 첨부 파일 아이콘을 선택하고 JKS 인증서를 첨부합니다.
    5. Validate Stores/Certificates(스토어/인증서 확인)를 선택합니다.
      유효한 인증서 파일에 대해 유효한 key_store 메시지가 표시됩니다.

    JKS 인증서에 대한 GitHub JWT 서명 키 만들기 GitHub 애플리케이션 취약성 통합

    Java KeyStore 인증서에 GitHub 할당할 JWT(JSON Web Token) 서명 키를 생성합니다.

    시작하기 전에

    필요한 역할:
    • 관리자
    • sn_vul.app_sec_manager

    프로시저

    1. 다음으로 이동 모두 > 시스템 OAuth > JWT 키.
    2. 새로 만들기를 선택합니다.
    3. 양식에서 필드를 채웁니다.
      표 2. JWT 키 양식 필드
      필드 설명
      이름 JWT 서명 키를 고유하게 식별하는 이름입니다. 예를 들어 AVR용 내 GitHub 앱 JWT 키입니다.
      서명 키 스토어 이전 작업에서 첨부한 유효한 JKS 인증서를 선택합니다.
      키 ID 이 필드는 비워둡니다.
      서명 알고리즘 이 값을 RSA 256으로 둡니다.
      서명 키 암호 서명 키와 연결된 암호입니다. JKS 파일을 생성하는 데 사용한 암호입니다.
      활성 키를 활성화하는 옵션입니다.
    4. 페이지의 회색 머리글 아무 곳이나 마우스 오른쪽 버튼으로 클릭하고 저장을 선택합니다.

    의 서명 키에 대한 GitHub JWT 제공자 생성 GitHub 애플리케이션 취약성 통합

    에 대한 GitHub인스턴스에 JSON 웹 토큰(JWT) 제공자 ServiceNow 를 추가합니다.

    시작하기 전에

    필요한 역할:
    • 관리자
    • sn_vul.app_sec_manager

    프로시저

    1. 다음으로 이동 모두 > 시스템 OAuth > JWT 제공자.
    2. 새로 만들기를 선택합니다.
    3. 양식에서 필드를 채웁니다.
      표 3. JWT 제공자 양식 필드
      필드 설명
      이름 JWT 제공자를 고유하게 식별하는 이름입니다. 예를 들어 AVR용 내 GitHub 앱 JWT 공급자입니다.
      만료 간격(초) JWT 제공자 토큰의 수명을 설정할 숫자(초)입니다. 이 설정을 기본값으로 둘 수 있습니다.
      서명 구성 이전 단계에서 만든 JWT 키를 선택합니다.
    4. 양식 헤더를 마우스 오른쪽 버튼으로 클릭하고 저장을 선택합니다.
    5. GitHub 표준 클레임 관련 목록에서 iss 클레임 값에 대한 앱 앱 ID를 입력합니다.
      이전 단계에서 만든 콘솔의 GitHubGitHub 앱의 앱 ID입니다.
    6. audsub 값을 비워 둡니다(기본값).
    7. 양식 헤더를 마우스 오른쪽 버튼으로 클릭하고 저장을 선택합니다.

    에 대한 OAuth 제공자(JWT)로 등록 GitHubGitHub 애플리케이션 취약성 통합

    앱 계정 구성 중에 GitHub 생성된 정보를 사용하여 OAuth 공급자로 등록 GitHub 하고 인스턴스가 OAuth 2.0 토큰을 요청하도록 허용합니다.

    시작하기 전에

    필요한 역할:
    • 관리자
    • sn_vul.app_sec_manager

    프로시저

    1. 다음으로 이동 모두 > 시스템 OAuth > 애플리케이션 레지스트리.
    2. 새로 만들기를 선택합니다.
      어떤 종류의 OAuth 애플리케이션입니까? 메시지가 표시됩니다.
    3. 외부 공급업체 OAuth 제공자에 연결을 선택합니다.
    4. 양식에서 필드를 채웁니다.
      표 4. 애플리케이션 레지스트리 양식 필드
      필드 설명
      이름 기록을 고유하게 식별하는 이름입니다. 예를 들어 내 GitHub App Provider for AVR을 입력합니다.
      클라이언트 ID 앱의 클라이언트 ID입니다 GitHub . 클라이언트 ID는 이전 단계에서 만든 콘솔의 GitHub 애플리케이션에서 가져옵니다GitHub. 이 ID는 의 앱 구성 정보 섹션에서 GitHub 사용할 수 있습니다 GitHub.
      접근 가능 이 설정을 현재 값으로 둡니다.
      클라이언트 비밀 앱의 클라이언트 비밀입니다 GitHub . 클라이언트 암호는 이전 단계에서 만든 콘솔의 GitHub 애플리케이션에서 가져온 GitHub 것입니다. 이 ID는 의 앱 구성 정보 섹션에서 GitHub 사용할 수 있습니다 GitHub.
      활성 키를 활성화하는 옵션입니다. 이 항목을 선택된 상태로 둡니다.
      인증 URL 이 URL은 자동으로 생성됩니다.
      토큰 URL 인스턴스가 토큰을 검색하고 새로 고치는 데 사용하는 토큰 엔드포인트의 위치입니다. 앱의 URL GitHub 에서 토큰을 입력합니다. 앱이 에 설치된 GitHub후 URL에 표시되는 토큰입니다. 의 GitHub 앱 구성에 GitHub있는 앱 설치 섹션에서 기어를 선택합니다. 토큰이 웹 페이지 URL에 표시됩니다.
      OAuth API 스크립트 수정된 OAuthUtil 스크립트 포함을 참조할 수 있는 옵션입니다. OAuthGitHubJWTHandler를 선택합니다.
      기본 부여 유형 애플리케이션 레지스트리와 연결된 권한 부여 유형입니다. JWT 전달자를 선택합니다.
    5. 나머지 양식 필드는 기본값으로 둡니다.
    6. 양식 헤더를 마우스 오른쪽 버튼으로 클릭하고 저장을 선택합니다.
    7. OAuth 엔터티 프로파일 관련 목록으로 스크롤하여 선택한 다음 목록에서 생성된 기본 프로파일을 엽니다.
    8. JWT 제공자 필드를 이전에 작성한 JWT 제공자로 채우고 양식을 저장합니다.
    9. 애플리케이션 레지스트리 파일로 돌아가서 저장합니다.
    10. 다음으로 이동 주요 운영 > 모듈 접근 정책 > 모두.
    11. com_snc_platform_security_oauth_glideencrypter암호화 모듈 필드 값으로 표시되고 대상 스크립트 필드에 OAuthGitHubJWTHandler가 스크립트 포함이 되도록 정책을 선택합니다.

      다음 이미지에서는 com_snc_platform_security_oauth_glideencrypter암호화 모듈 필드의 값으로 선택되어 있습니다. 스크립트 테이블 필드에는 스크립트 포함 [sys_script_include] 테이블이 표시되고 대상 스크립트 필드 값은 OAuthGitHubJWTHandler입니다.

      스크립트 포함 OAuthGitHubJWTHandler가 있는 암호화 모듈 필드

    12. 업데이트를 선택합니다.

      유형: 스크립트 및 결과: 추적

      앞의 이미지에 표시된 것처럼 정책 이름 필드의 값이 변경되고 스크립트 테이블대상 스크립트 필드가 더 이상 표시되지 않습니다.
    13. 결과 필드가 추적으로 설정되어 있는지 확인하고 변경 내용을 저장합니다.

    에 대한 자격 증명 및 연결 생성 GitHub 애플리케이션 취약성 통합

    이전에 앱 제공자에게 GitHub 자격 증명 기록을 생성하여 작업을 승인합니다.

    시작하기 전에

    필요한 역할:
    • 관리자
    • sn_vul.app_sec_manager

    프로시저

    1. 다음으로 이동 자격 증명 및 연결 > 자격 증명.
    2. 새로 만들기를 선택합니다.
    3. OAuth 2.0 자격 증명을 선택합니다.
    4. 새로 만들기를 선택하고 필드를 채웁니다.
      필드설명
      이름 기록의 고유한 이름입니다.
      적용 대상 목록에서 OAuth 2.0 자격 증명을 선택합니다.
      OAuth 엔터티 프로파일 검색 아이콘을 선택하고 이전 단계에서 만든 엔터티 프로파일을 찾습니다.
      기타 필드 이러한 필드는 기본값으로 둡니다.
    5. 페이지 헤더의 아무 곳이나 마우스 오른쪽 버튼으로 클릭하고 저장을 선택합니다.
      자격 증명 목록이 표시됩니다.
    6. 방금 생성한 기록을 열고 OAuth 토큰 가져오기 관련 링크를 선택합니다.
      OAuth 토큰을 성공적으로 가져왔다는 메시지가 표시됩니다.
    7. 다음으로 이동 자격 증명 및 연결 > 연결.
    8. 새로 만들기를 선택합니다.
    9. HTTP(s) 연결을 선택합니다.
    10. 새로 만들기를 선택하고 필드를 채웁니다.
      필드설명
      이름 기록의 이름입니다.
      애플리케이션 읽기 전용입니다.
      상위 별칭(선택 사항) 검색 아이콘을 선택하고 목록에서 하나를 선택합니다.
      유형 연결 및 자격 증명입니다.
      연결 유형 HTTP입니다.
      다중 활성 연결 지원(선택 사항) 비활성화.
      기본 재시도 정책 기본 HTTP 재시도 정책
      구성 템플릿 비워 둡니다.
    11. 제출을 선택합니다.
      연결 및 자격 증명 별칭 목록이 표시됩니다.
    12. 기록을 열고 연결 관련 목록 탭에서 새로 만들기를 선택한 다음 HTTP 연결 기록의 필드를 채웁니다.
      필드설명
      이름 기록의 이름입니다.
      활성 활성화.
      자격 증명 이전 단계에서 생성한 자격 증명 레코드를 선택합니다.
      연결 별칭 기록이 표시됩니다.
      URL 작성기 비활성화.
      연결 URL

      기본 URL: 엔터프라이즈용 https://api.github.com 입니다. 온-프레미스는 GitHub 엔드포인트 URL입니다.

      MID 서버 사용(선택 사항) 온 프레미스에는 MID 서버가 필요합니다. 엔터프라이즈의 경우 선택 사항입니다.
      연결 시간 제한 값을 입력합니다.
    13. 제출을 선택합니다.
      연결 및 자격 증명 별칭 목록이 표시됩니다. 이제 에 대한 GitHub 애플리케이션 취약성 통합 구성단계를 완료할 준비가 되었습니다. 연결 필드에 이전 단계에서 생성한 자격 증명을 입력합니다.