GitHub에서 비밀 스캔하기

GitHub에서 비밀 스캔하기

GitHub를 HCP Vault Radar의 데이터 소스로 연결하여 GitHub 저장소의 민감한 데이터와 비밀을 스캔할 수 있어요. Vault Radar는 GitHub Cloud와 GitHub Enterprise Server 스캔을 모두 지원해요. GitHub 조직을 자동으로 발견하는 데이터 소스 호스트로, 또는 단일 GitHub 조직에 연결된 데이터 소스로 GitHub에 연결할 수 있어요.

출처: 문서

본문

GitHub를 HCP Vault Radar의 데이터 소스로 연결하여 GitHub 저장소의 민감한 데이터와 비밀을 스캔할 수 있어요. Vault Radar는 GitHub Cloud와 GitHub Enterprise Server를 지원해요. GitHub 조직을 자동으로 발견하는 데이터 소스 호스트로, 또는 단일 GitHub 조직에 연결된 데이터 소스로 GitHub에 연결할 수 있어요.

HCP Vault Radar가 처음이라면 HCP Vault Radar 빠른 시작(quickstart) 튜토리얼 시리즈를 확인해 보세요.

메모: Vault Radar는 연결당 5000개 저장소의 제한이 있어요. 저장소가 5000개를 초과하면 Vault Radar는 가장 최근 활동이 있는 5000개 저장소를 선택해요.

보안 및 운영 고려사항

HCP Vault Radar에 GitHub를 데이터 소스로 추가할 때 GitHub App 또는 개인 액세스 토큰(PAT) 중 하나를 사용할 수 있어요.

GitHub App이 권장되는 인증 방법이에요. 범위가 제한된 권한을 가진 수명이 짧은 설치 액세스 토큰을 사용해 더 세분화된 접근 제어를 제공하기 때문이에요. 설치 액세스 토큰은 수명이 긴 사용자 자격 증명이 바람직하지 않은 사용 사례에 잘 맞아요.

PAT 인증은 설정이 더 쉽지만, 특정 GitHub 사용자에 연결된 수명이 긴 토큰을 사용하므로 토큰이 손상되면 보안 위험이 될 수 있어요. PAT 인증은 또한 더 넓은 권한을 제공하며, 사용자가 접근할 수 있는 모든 저장소에 접근할 수 있어요.

데이터 소스 vs 데이터 소스 호스트

HCP Vault Radar 데이터 소스와 함께 GitHub App 인증을 사용할 수 있어요. 데이터 소스는 연결당 단일 GitHub 조직을 지원해요. GitHub 조직이 여러 개라면 Vault Radar에 조직마다 데이터 소스를 하나씩 여러 개 추가할 수 있어요.

PAT 인증은 데이터 소스 또는 데이터 소스 호스트로 사용할 수 있어요. 데이터 소스 호스트는 단일 연결에서 여러 GitHub 조직을 지원해요.

이것은 어떤 인증 방법을 사용할지 결정할 때 고려해야 할 중요한 보안 및 운영 트레이드오프예요.

요구사항 GitHub App 인증 개인 액세스 토큰(PAT) 인증
여러 조직을 위한 단일 연결 ❌ ✅
조직별 연결 ✅ ✅
수명이 짧은 토큰 ✅ ❌
제한된 저장소 접근 ✅ ❌
조직 수준 거버넌스 ✅ ❌
독립적인 정체성 ✅ ❌
특정 GitHub 사용자에 연결 ❌ ✅

사전 요구사항(Prerequisites)

  • HCP owner 또는 admin 역할을 가진 HCP IAM 사용자
  • 배포되고 실행 중인 Vault Radar agent (agent 스캔 전용)
  • 설치된 Python 3.10.20 이상 (GitHub App 인증 전용)
  • GitHub Cloud 또는 GitHub Enterprise Server용 GitHub App 인증의 경우 GitHub App을 만든다.
  • GitHub Cloud 또는 GitHub Enterprise Server용 GitHub PAT 인증의 경우 다음 권한 스코프로 PAT를 만든다: ``` repo > all admin:org > read:org admin:repo_hook > all admin:org_hook > all user > read:user
    
    

App 인증으로 GitHub 데이터 소스 추가하기

HCP Vault Radar cloud 스캔 또는 HCP Vault Radar agent 스캔을 사용해 GitHub Cloud 또는 GitHub Enterprise Server를 추가하고 스캔할 수 있어요. (GitHub Cloud / GitHub Enterprise Server 탭)

HCP Vault Radar cloud 스캔에서 app 인증을 사용할 때는 설정을 완료하기 위해 Python 3.10.20 이상이 필요하지 않아요.

HCP Vault Radar 설정하기

  1. HCP owner 또는 admin 역할을 가진 HCP IAM 사용자로 HCP 포털에 로그인해요.
  2. Vault Radar를 클릭해요.
  3. Settings를 클릭해요.
  4. Data sources를 클릭해요.
  5. Add data source를 클릭해요.
  6. HCP Vault Radar Scan을 선택해요.
  7. GitHub Cloud를 선택해요.
  8. Select authentication method 아래에서 드롭다운을 클릭하고 GitHub App으로 인증하려면 GitHub OAuth를 선택해요.
  9. Connect to GitHub를 클릭해요.
  10. GitHub로 리다이렉트되면 온보딩할 GitHub Org와 설치할 저장소를 선택해요.
  11. Vault Radar로 성공적으로 리다이렉트되면 Next를 클릭해요.
  12. All active repositories 또는 Select repositories to monitor 중 하나를 선택해요.
  13. Finish를 클릭해요.

GitHub app 인증 설정하기

HCP Vault Radar를 설정하기 전에 GitHub App을 만들고 등록해야 해요.

  1. githubchecks-app.gen.py를 다운로드한다. ```python import logging import sys from secrets import token_urlsafe from urllib.parse import urlencode, urlparse

    def init_logger(): logger = logging.getLogger(name) logger.setLevel(logging.INFO) h = logging.StreamHandler(sys.stdout) logger.addHandler(h) return logger

    logger = init_logger()

    if name == 'main': print("Please select an option GitHub Cloud or GitHub Enterprise Server:") print("1. GitHub Cloud") print("2. GitHub Enterprise Server") choice = input("Enter 1 or 2: ") name = 'HashiCorp Vault Radar Checks App' domain = 'github.com' webhook_url = 'https://api.hashicorp.cloud/2023-05-01/vault-radar/api/github-apps/events' if choice == '1': name = input('Enter a unique GitHub app name: ') elif choice == '2': domain = input('Enter your GitHub Enterprise Server domain name (i.e. github.companyname.com): ') domain = urlparse(domain if '//' in domain else f'//{domain}').netloc webhook_url = webhook_url + f"?domain={domain}" else: print("Invalid option") sys.exit() query_params = { 'name': name, 'webhook_secret': token_urlsafe(nbytes=32), 'webhook_url': webhook_url, 'public': True, 'webhook_active': True, 'url': 'https://www.hashicorp.com/', 'checks': 'write', 'events[]': ['check_run', 'check_suite', 'pull_request'], 'pull_requests': 'read', } query_param_string = urlencode(query_params, doseq=True, safe=':/?=[]') url = f'https://{domain}/settings/apps/new?{query_param_string}' logger.info(url)

    이 스크립트의 소스 코드는 HashiCorp guides GitHub 저장소에서 볼 수 있어요.
    
  2. 스크립트를 실행하고 안내를 따라요. ``` $ python3 github-checks-app-gen.py

  3. 메시지가 표시되면 1을 입력해 GitHub Cloud를 선택해요.

  4. Vault Radar GitHub App의 이름을 제공해요.

  5. URL을 새 브라우저 창/탭에 복사/붙여넣기해요.

  6. URL에서 webhook_secret=webhook_secret을 복사해요. 예시 출력: ``` Enter your GitHub Enterprise Server domain name (i.e. github.companyname.com): acme.github.com https://acme.github.com...webhook_secret=Z1KPOYifctpzOjfphKj_hqRlZbrDOBG9AU7hgj7iPrk...

  7. webhook_secret을 양식에 추가해요.

  8. Webhook URL에서 ?domain=github.com을 제거해요.

  9. 아래로 스크롤해 Create GitHub App을 클릭해요.

  10. 앱 설정 페이지에서 다음 값을 적어 두어요:

    • 위 URL의 웹훅 시크릿
    • App name
    • App ID
    • Private key
  11. 이 값들을 IBM Vault 같은 안전한 위치에 저장해요.

  12. agent에 개인 키 값의 환경 변수를 구성해요. 예시 구성: 쿠버네티스에서 agent를 실행한다면 agent 배포 매니페스트에 환경 변수를 추가해요. ``` env:

    • name: GH_RADAR_PRIVATE_KEY value: string-of-your-private-key
    > 팁: 모든 agent에서 같은 변수 이름을 사용해요. 이제 HCP Vault Radar에 GitHub를 데이터 소스로 추가할 준비가 됐어요.
    
    

HCP Vault Radar 설정하기 (agent 스캔)

  1. HCP owner 또는 admin 역할을 가진 HCP IAM 사용자로 HCP 포털에 로그인해요.
  2. Vault Radar를 클릭해요.
  3. Settings를 클릭해요.
  4. Data sources를 클릭해요.
  5. Add data source를 클릭해요.
  6. HCP Vault Radar Agent Scan을 선택해요.
  7. GitHub Cloud를 선택해요.
  8. Enter environment path to your GitHub personal access token 필드에 personal access token이 있는 환경 변수 경로를 입력해요. 예시: ``` env://GH_RADAR_PRIVATE_KEY
  9. Select authentication method 아래에서 드롭다운을 클릭하고 GitHub App으로 인증하려면 GitHub OAuth를 선택해요.
  10. Connect to GitHub를 클릭해요.
  11. GitHub로 리다이렉트되면 온보딩할 GitHub Org와 설치할 저장소를 선택해요.
  12. Vault Radar로 성공적으로 리다이렉트되면 Next를 클릭해요.
  13. All active repositories 또는 Select repositories to monitor 중 하나를 선택해요.
  14. Finish를 클릭해요.

PAT 인증으로 GitHub 데이터 소스 호스트 추가하기

HCP Vault Radar cloud 스캔 또는 HCP Vault Radar agent 스캔을 사용해 GitHub Cloud 또는 GitHub Enterprise Server를 추가하고 스캔할 수 있어요. (GitHub Cloud / GitHub Enterprise Server 탭)

GitHub 조직의 저장소를 스캔하려면 GitHub Cloud를 데이터 소스로 추가해요. (HCP Vault Radar cloud 스캔 / agent 스캔 탭)

  1. HCP owner 또는 admin 역할을 가진 HCP IAM 사용자로 HCP 포털에 로그인해요.
  2. Vault Radar를 클릭해요.
  3. Settings를 클릭해요.
  4. Data Source Hosts를 클릭해요.
  5. Add data source host를 클릭해요.
  6. HCP Vault Radar Scan을 선택해요.
  7. GitHub Cloud를 선택해요.
  8. Enter your GitHub personal access token 필드에 personal access token을 입력해요.
  9. Next를 클릭해요.
  10. All data sources 또는 Select data sources 중 하나를 선택해요.
  11. Finish를 클릭해요.

(agent 스캔)

  1. HCP owner 또는 admin 역할을 가진 HCP IAM 사용자로 HCP 포털에 로그인해요.
  2. Vault Radar를 클릭해요.
  3. Settings를 클릭해요.
  4. Data Source Hosts를 클릭해요.
  5. Add data source host를 클릭해요.
  6. Vault Radar Agent Scan을 선택해요.
  7. GitHub Cloud를 선택해요.
  8. Enter environment path to your GitHub personal access token 필드에 personal access token이 있는 환경 변수 경로를 입력해요. 예시: ``` env://GITHUB_TOKEN
  9. Next를 클릭해요.
  10. All data sources 또는 Select data sources 중 하나를 선택해요.
  11. Finish를 클릭해요.

GitHub 조직의 저장소를 스캔하려면 GitHub Enterprise Server를 데이터 소스로 추가해요. (HCP Vault Radar cloud 스캔 / agent 스캔 탭)

  1. HCP owner 또는 admin 역할을 가진 HCP IAM 사용자로 HCP 포털에 로그인해요.
  2. Vault Radar를 클릭해요.
  3. Settings를 클릭해요.
  4. Data Source Hosts를 클릭해요.
  5. Add data source host를 클릭해요.
  6. HCP Vault Radar Scan을 선택해요.
  7. GitHub Enterprise Server를 선택해요.
  8. 다음 정보를 입력해요:
    • Enter your GitHub domain name: GitHub Enterprise Server의 정규화된 도메인 이름.
    • Enter your GitHub personal access token: GitHub Enterprise Server의 액세스 토큰.
  9. Next를 클릭해요.
  10. All data sources 또는 Select data sources 중 하나를 선택해요.
  11. Finish를 클릭해요.

(agent 스캔)

  1. HCP owner 또는 admin 역할을 가진 HCP IAM 사용자로 HCP 포털에 로그인해요.
  2. Vault Radar를 클릭해요.
  3. Settings를 클릭해요.
  4. Data Source Hosts를 클릭해요.
  5. Add data source host를 클릭해요.
  6. Vault Radar Agent Scan을 선택해요.
  7. GitHub Enterprise Server를 선택해요.
  8. 다음 정보를 입력해요:
    • Enter your GitHub domain name: GitHub Enterprise Server의 정규화된 도메인 이름.
    • Enter environment path to your GitHub personal access token: GitHub Enterprise Server의 액세스 토큰. 예시: ``` env://GITHUB_TOKEN
  9. Next를 클릭해요.
  10. All data sources 또는 Select data sources 중 하나를 선택해요.
  11. Finish를 클릭해요.

리소스에 그룹 할당하기

데이터 소스를 추가한 후에는 admin 역할을 가진 HCP 사용자가 각 데이터 소스 내의 모니터링되는 각 리소스에 그룹을 할당해야 해요. 각 리소스는 하나의 그룹에만 할당할 수 있어요.

메모: HCP IAM admin 역할을 가진 사용자는 다른 그룹의 구성원일 필요가 없어요. admin 역할의 계정은 Vault Radar에 대한 전체 접근 권한을 가져요.

아직 그룹이 없다면 Identity and Access Management groups 문서를 참조해 그룹을 만들어 주세요.

  1. Project 대시보드로 이동해요.
  2. Access control (IAM)을 클릭해요.
  3. Add new assignment를 클릭해요.
  4. Search for an assignee 검색 필드에서 그룹 이름을 검색해요.
  5. 검색 결과에서 그룹 이름을 클릭해요.
  6. Select service 풀다운 메뉴를 클릭하고 Vault Radar를 선택해요.
  7. Select role 풀다운 메뉴를 클릭하고 Vault Radar Developer 역할을 선택해요.
  8. Save를 클릭해요.
  9. Back to Dashboard를 클릭해요.
  10. Vault Radar를 클릭해요.
  11. Resources를 클릭해요.
  12. 그룹에 할당할 리소스를 선택하고 Assign groups를 클릭해요.
  13. Assign resource to group 풀다운 메뉴를 클릭해요.
  14. 리소스에 접근이 필요한 그룹을 선택해요.
  15. Viewer 또는 Contributor 역할 중 하나를 선택해요.
  16. OK를 클릭해요.

데이터 소스 호스트 업데이트하기

  1. Settings로 이동해요.
  2. Data Source Hosts를 클릭해요.
  3. 데이터 소스 호스트 오른쪽의 세로 줄임표를 클릭해요.
  4. 모니터링되는 데이터 소스를 업데이트하려면 Edit data sources를 클릭해요.
  5. 토큰을 업데이트하려면 Edit data source host details를 클릭해요.
  6. 데이터 소스 호스트를 삭제하려면 Delete data source host를 클릭해요.

데이터 소스 업데이트하기

  1. Settings로 이동해요.
  2. Data sources를 클릭해요.
  3. 데이터 소스 오른쪽의 세로 줄임표를 클릭해요.
  4. 모니터링되는 데이터 소스를 업데이트하려면 Edit data sources를 클릭해요.
  5. 인증 방법을 업데이트하려면 Select authentication method 드롭다운에서 새 인증 방법을 선택해요.
  6. 토큰을 업데이트하려면 Edit data source host details를 클릭해요.
  7. 데이터 소스를 삭제하려면 Delete data source를 클릭해요.

튜토리얼(Tutorials)

환경에서 HCP Vault Radar를 평가하고 구현하는 방법을 튜토리얼로 배워보세요.

  • HCP Vault Radar quickstart - 가상의 커피 회사 HashiCups가 HCP Vault Radar를 온보딩하고 데이터 소스에서 비밀을 스캔하는 과정을 따라가요.
  • HCP Vault Radar operations - HashiCups 운영 팀이 Vault Radar agent로 데이터 소스를 스캔하고 HCP Vault와 결과를 연관지어 비밀을 관리하는 방법을 배워요.
  • HCP Vault Radar developer - HashiCups 개발자들이 비밀 노출을 이해하고 잠재적 위험을 식별하며 소프트웨어 개발 수명 주기 동안 유출된 비밀을 방지하는 방법을 배워요.

더 알아보기 (Learn more)