Assured OSS는 사용 가능한 모든 패키지에 대한 보안 메타데이터를 제공합니다. 패키지의 각 버전에는 자체 메타데이터가 있습니다. 이 페이지에서는 메타데이터의 일부로 제공되는 정보와 이 메타데이터에 액세스하는 방법을 설명합니다.
다음 옵션 중 하나를 사용하여 보안 메타데이터에 액세스할 수 있습니다.
- Artifact Analysis API
- Cloud Storage
이 페이지는 무료 등급에만 적용됩니다.
보안 메타데이터
Artifact Analysis는 오픈소스 Grafeas 모델에 따라 메타데이터 스토리지를 제공합니다. 패키지의 각 버전에 대해 다음 정보가 제공됩니다.
Assured OSS에서 출시한 패키지의 각 버전에 대한 PackageNote입니다. 패키지 메모에는 다음이 포함됩니다.
distribution여기서 각distribution는 Assured OSS에서 제공하는 하나의 아티팩트에 해당합니다. 여기에는 바이너리 및 재현 가능한 소스의 위치와 다이제스트url(서명과 해시를 다운로드할 수 있는 위치)가 포함됩니다.- 빌드 출처, 테스트 증명, 취약점과 같은 메타데이터 링크가 포함된
relatedURL
BuildOccurrence 이 빌드 발생의 링크는
BUILD_OCCURRENCE라벨에 대해 패키지 메모의relatedURL섹션에 제공됩니다. 빌드 발생의intotoStatement에는 SLSA v0.2 출처가 포함됩니다.두 번째 BuildOccurrenance 이 빌드 발생의 링크는
ORIGINAL_SOURCE_PROVENANCE라벨에 대해 패키지 메모의relatedURL섹션에 제공됩니다. 이 파일에는 소스 형식의 원본 소스 (GitHub) 세부정보가 포함되어 있습니다.AttestationOccurrence입니다. 이 증명 어커런스에 대한 링크는
TEST_OCCURRENCE라벨에 대해 패키지 메모의relatedURL섹션에 제공됩니다. 증명에 있는 직렬화된 페이로드에는 패키지 버전에서 실행된 모든 보안 테스트를 나타내는 JSON이 포함됩니다.두 번째 AttestationOccurrence입니다. 이 증명 어커런스로 연결되는 링크는
PACKAGE_ATTESTATION_OCCURRENCE라벨에 대해 패키지 메모의relatedURL섹션에 제공됩니다. 증명의 JSON 직렬화된 페이로드는 패키지 메모의 페이로드와 서명입니다. 이 증명은 패키지 메모 콘텐츠의 무결성을 확인하는 데 사용됩니다.패키지와 연결된 모든 취약점에 대한 VulnerabilityNote 및 VulnerabilityOccurrence 메모와 발생을 결합하면 취약점 요약 또는 설명, 심각도, CVSSV3 점수, 영향을 받는 버전 및 수정된 버전 정보, 해결 방법과 같은 취약점에 관한 정보를 확인할 수 있습니다.
Artifact Analysis에서 보안 메타데이터 액세스
다양한 언어로 제공되는 Artifact Analysis API 클라이언트를 사용하여 Artifact Analysis에서 보안 메타데이터에 액세스할 수 있습니다. Artifact Analysis API용 Cloud 클라이언트 라이브러리를 시작하려면 필요한 Artifact Analysis 클라이언트 라이브러리 설치를 참고하세요.
보안 메타데이터에 액세스하려면 다음 단계를 따르세요.
1단계 - 인증 설정
애플리케이션 기본 사용자 인증 정보 (ADC)를 사용하여 인증을 설정합니다.
2단계 - 보안 메타데이터 가져오기
보안 메타데이터를 가져오려면 다음 정보를 사용하여 note_name 패키지를 만드세요.
- Project_ID: Google Cloud 프로젝트의 영숫자 식별자입니다.
- Package Language: Java 또는 Python 대문자여야 합니다.
- Package_ID: Java의 경우 groupId_artifactId, Python의 경우 packageName입니다. 이 값은 대소문자를 구분합니다. 패키지의 출시 이름에 유효한 대소문자는 Assured OSS의 모든 패키지 나열에서 확인할 수 있습니다.
- Version: 패키지 버전입니다.
note_name의 구조는 다음과 같아야 합니다.
projects/<project_id>/notes/<language>-<package_id>-<version>
예: projects/cloud-aoss/notes/JAVA-org.apache.commons_commons-compress-1.21
옵션 1:
Container Analysis 클라이언트 라이브러리를 사용하는 경우 getNotes을 note_name과 함께 사용하여 PackageNote를 쿼리합니다. PackageNote에는 다른 메모와 일정에 대한 링크가 있습니다.
옵션 2:
curl 명령어를 사용하는 경우 다음 명령어를 사용합니다.
curl -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" $URL
- Java의 경우 URL
https://containeranalysis.googleapis.com/v1/projects/cloud-aoss/notes/JAVA-org.jsoup_jsoup-1.15.2을 사용합니다. - Python의 경우 URL
https://containeranalysis.googleapis.com/v1/projects/cloud-aoss/notes/PYTHON-Flask-Cors-3.0.10을 사용합니다.
샘플 메타데이터
{
"name": "projects/cloud-aoss/notes/JAVA-org.jsoup_jsoup-1.15.2",
"kind": "PACKAGE",
"relatedUrl": [
{
"url": "projects/cloud-aoss/occurrences/621d7e7b-8e6c-4313-b24b-eae3a1d1b884",
"label": "ORIGINAL_SOURCE_PROVENANCE"
},
{
"url": "https://containeranalysis.googleapis.com/v1/projects/cloud-aoss/occurrences/a0967d97-634c-4066-b6da-0a723273a165",
"label": "BUILD_OCCURRENCE"
},
{
"url": "projects/cloud-aoss/occurrences/6005db73-7310-44f9-9a36-6ca0174732a1",
"label": "TEST_OCCURRENCE"
},
{
"url": "projects/cloud-aoss/notes/GHSA-gp7f-rwcx-9369",
"label": "VULNERABILITY_GHSA-gp7f-rwcx-9369"
}
],
"createTime": "2022-10-12T06:48:19.162016Z",
"updateTime": "2022-10-18T05:31:15.081736Z",
"package": {
"distribution": [
{
"cpeUri": "cpe:2.3:a:JAVA::org.jsoup:jsoup:1.15.2:*:*:*:*:*:*:*",
"url": "https://us-maven.pkg.dev/…/org/jsoup/jsoup/1.15.2/jsoup-1.15.2.jar",
"description": "..."
},
{
"cpeUri": "cpe:2.3:a:JAVA::org.jsoup:jsoup:1.15.2:*:*:*:*:*:*:*",
"url": "https://us-maven.pkg.dev/…/org/jsoup/jsoup/1.15.2/jsoup-1.15.2-sources.jar",
"description": "..."
}
]}}
relatedURL 맵에 제공된 메모 및 발생 이름을 사용하여 소스, 빌드, 테스트, 취약점과 관련된 추가 데이터를 가져옵니다. 이렇게 하려면 GetNote 및 GetOccurrence API 또는 curl 명령어를 사용합니다.
BUILD_OCCURRENCE의 경우 API를 사용할 때 https://containeranalysis.googleapis.com/v1/의 초기 접두사를 삭제합니다. 다른 항목의 경우 URL을 API 매개변수에서 note_name 또는 occurrence_name로 직접 사용합니다.
샘플 Python 스크립트
다운로드된 전체 메타데이터를 출력하는 샘플 Python 스크립트는 다음 Cloud Storage 위치에서 README 파일과 함께 사용할 수 있습니다.
gs://cloud-aoss/utils/python-download-metadata/v1.1
다음 단계에 따라 Google Cloud CLI를 사용하여 스크립트를 다운로드합니다.
애플리케이션 기본 사용자 인증 정보 (ADC)를 사용하여 인증을 설정합니다.
container-analysis 클라이언트 라이브러리를 설치합니다. 특히 이 명령어는 다음을 설치해야 합니다.
pip install google-cloud-containeranalysis다음 명령어를 사용하여 cloud-kms 및 cryptography 패키지를 설치합니다.
pip install --upgrade google-cloud-kms pip install --upgrade cryptography다음 명령어를 사용하여 시스템에
download_metadata.py를 다운로드합니다.gcloud storage cp gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata.py PATH_TO_LOCAL_STORE --recursivePATH_TO_LOCAL_STORE을 파일을 저장할 로컬 경로로 바꿉니다.
다음 명령어를 사용하여 스크립트 사용 안내가 포함된
README.md을 다운로드합니다.gcloud storage cp gs://cloud-aoss/utils/python-download-metadata/v1.1/README.md PATH_TO_LOCAL_STORE --recursivePATH_TO_LOCAL_STORE을 파일을 저장할 로컬 경로로 바꿉니다.
명령어 샘플
python ./download_metadata.py -l 'JAVA' -p 'org.apache.logging.log4j:log4j-core' -v '2.17.1'
컨테이너 분석 메타데이터의 서명을 확인하려면 스크립트에 다음 명령어를 추가합니다.
python ./download_metadata.py -l 'JAVA' -p 'org.apache.logging.log4j:log4j-core' -v '2.17.1' -s`