본문으로 건너뛰기

검색

빠르게 훑어볼 때는 ⌘K(macOS) 또는 Ctrl+K(Windows, Linux)를 누릅니다. 본격적으로 볼 검색 화면도 같은 팔레트에서 엽니다. 페이지 그룹의 첫 줄인 "검색 화면 열기"를 고르면 되고, 입력해 둔 검색어가 있으면 함께 넘어갑니다. 둘은 답하는 질문이 다릅니다. 팔레트는 여러 종류를 조금씩 보여 주어 어디론가 이동하게 하고, 검색 화면은 한 종류를 전부 보여 주어 처리하게 합니다.

결과가 나온 그룹의 끝에는 모든 결과 보기도 있습니다. 누르면 같은 검색어가 적용되고 그 그룹에 해당하는 탭이 선택된 검색 화면으로 이동합니다.

네 개의 탭

찾는 대상행을 누르면
프로젝트이름, 슬러그, 클론 URL. 보관된 프로젝트도 표시되며 그렇다고 표시됩니다.프로젝트 상세 화면
컴포넌트패키지 이름 또는 purl. 프로젝트별 최근 성공한 스캔에서 찾습니다.해당 프로젝트의 Components 탭(패키지로 걸러진 상태)
취약점CVE ID 또는 요약. 프로젝트의 최근 성공한 스캔에서 찾습니다.findings 상세 화면
라이선스SPDX ID 또는 라이선스 이름. 최근 성공한 스캔에서 찾습니다.프로젝트의 Compliance 탭

스캔과 무관하게 찾는 탭은 프로젝트뿐입니다. 프로젝트 목록 자체를 대상으로 하기 때문입니다. 컴포넌트, 취약점, 라이선스는 모두 프로젝트별 최근 성공한 스캔만 보고, 이력 전체는 보지 않습니다. 의도한 설계입니다. 처리 목록에 이후 스캔에서 이미 처리된 CVE가 다시 올라오면 안 되고, 폐기된 스냅샷의 라이선스는 현재 의무사항을 잘못 알려 주기 때문입니다. 같은 이유로 몇 릴리스 전에 걷어낸 패키지도 이제 여기서 찾을 수 없습니다. 한때 있었다는 것을 확인하거나 언제 걷어냈는지 보려면 해당 프로젝트를 열어 스캔 이력을 확인하세요.

각 탭이 둘 중 어느 쪽인지는 결과 위 줄에 적혀 있습니다. 여기 컴포넌트 탭은 컴포넌트 인벤토리와 같은 범위(최근 성공한 스캔)를 보므로 평소에는 결과가 일치합니다. 둘이 다르다면 스캔 범위가 아니라 행을 보여 주는 방식 차이입니다. 이 화면은 매칭 하나당 한 행, 인벤토리는 조직 전체에서 패키지 하나당 한 행입니다.

소속 팀이 접근할 수 있는 프로젝트만 보입니다.

패싯으로 좁히기

탭 아래의 패싯 칩에는 건수가 함께 표시됩니다. high 42는 그 필터를 적용하면 42건이 남는다는 뜻이지 지금 보이는 것 중 42건이라는 뜻이 아닙니다. 건수는 조건에 맞는 전체를 기준으로 계산합니다.

어떤 패싯이 있는지는 탭마다 다릅니다. 취약점은 심각도와 상태, 컴포넌트는 종류, 라이선스는 분류입니다. 탭을 바꾸면 패싯은 해제됩니다. 새 탭이 보여 줄 수 없는 필터를 그대로 끌고 가지 않기 위해서입니다.

검색어, 탭, 쪽 번호, 패싯이 모두 URL에 담기므로 새로 고침하거나 북마크하거나 공유해도 그대로 유지됩니다.

결과 건수

결과 위에 표시되는 총건수와 패싯 칩의 건수는 1,000건까지만 정확히 셉니다. 1,000건 미만이면 정확한 값이고, 1,000건에 도달하거나 넘으면 **1000+**로 표시됩니다. 실제 값이 아니라 하한입니다. 총건수에는 점선 밑줄이, 해당 패싯 칩에는 "+" 기호가 붙어 정확한 값과 하한을 구분할 수 있습니다.

이렇게 하면 여러 프로젝트에 걸쳐 있는 흔한 패키지 이름이나 카탈로그의 절반에 영향을 주는 CVE처럼 매칭이 아주 많은 검색어도 비용을 낮게 유지합니다. 데이터베이스는 매 키 입력마다 전체를 다 세는 대신, 최소 1,000건이 있다는 것을 확인하는 순간 세기를 멈춥니다. 쪽 이동도 같은 하한을 따릅니다. 상한이 나타내는 건수만큼 다 넘겨 보고 나면, 그 뒤에 결과가 더 있어도 다음 버튼은 더 이상 다음 쪽을 내주지 않습니다.

검색 저장하기

검색 저장을 누르면 지금 조건에 이름을 붙여 보관합니다. 저장한 검색은 대시보드에 나타나고, 누르면 저장 당시의 필터가 그대로 복원됩니다.

저장한 검색은 팀이 아니라 개인의 것입니다. 저장되는 것은 조건이고 결과는 열 때마다 본인의 팀 범위로 다시 계산하므로, 행을 공유해도 조건이 공유될 뿐 다른 사람의 findings가 공유되지는 않습니다.

최대 20개까지 저장할 수 있습니다. 한도에 도달하면 이름을 입력한 뒤 실패하는 대신 저장 버튼이 미리 비활성화됩니다.

동작 확인

  1. GET /v1/search/results?kind=components&q=loditems_components, total, page, size, facets를 담아 200으로 응답합니다.
  2. 알 수 없는 kind를 넘기면 422가 돌아옵니다.
  3. GET /v1/saved-searches가 저장한 검색 목록과 개인별 limit을 함께 반환합니다.

함께 보기

  • 컴포넌트 인벤토리 — 매칭 하나당 한 행이 아니라, 조직 전체에서 패키지 하나당 한 행으로 보는 화면.
  • 대시보드 — 저장한 검색이 나타나는 곳.