이 페이지에서는 Assured OSS 아티팩트의 서명을 확인하는 방법을 설명합니다.
이 페이지는 무료 등급에만 적용됩니다. 프리미엄 등급의 경우 보안 메타데이터 액세스 및 패키지 확인을 참고하세요.
패키지 확인
패키지 서명은 패키지와 별도로 Cloud Storage 버킷에 zip 형식으로 저장됩니다.
Assured OSS 인증 도구 (aoss-verifier)를 사용하거나 인증 스크립트를 사용하여 서명을 확인할 수 있습니다.
aoss-verifier 도구 사용
이 도구를 사용하기 전에 시스템에 Go가 설치되어 있는지 확인하세요. Go가 설치되어 있지 않으면 Go 웹사이트에서 Go를 설치합니다.
오픈소스 소프트웨어 패키지의 신뢰성과 무결성을 확인하려면 aoss-verifier 도구를 설치하세요.
$(go env GOPATH)/bin를 내보내고aoss-verifier verify-package명령어를 실행합니다.aoss-verifier verify-package \ --language LANGUAGE \ --package_id PACKAGE_ID \ --version VERSION \ --artifact_path ARTIFACT_PATH \ [--disable_certificate_verification] \ [--temp_downloads_path TEMP_DOWNLOADS_DIR_PATH] \ [--disable_deletes]다음을 바꿉니다.
- LANGUAGE: 프로그래밍 패키지 언어입니다(
java또는python). 값은 소문자여야 합니다. - PACKAGE_ID: Java의 경우 groupId:artifactId, Python의 경우 packageName입니다. 값은 소문자여야 합니다.
- VERSION: 패키지 버전입니다.
- ARTIFACT_PATH: 확인하려는 로컬 디렉터리의 데이터 파일 경로입니다. 다음 파일 이름 확장자를 사용합니다.
- Java 패키지의
jar파일 확장자 - Python 패키지의
whl파일 확장자
- Java 패키지의
--disable_certificate_verification은 인증서 체인을 통해 리프 인증서와 루트 인증서의 일치를 건너뛰는 선택적 플래그입니다(사용되는 경우).--temp_downloads_path는 파일을 다운로드할 경로를 설정하는 선택적 플래그입니다. (TEMP_DOWNLOADS_DIR_PATH 대체). 이 플래그를 설정하지 않으면 파일이 현재 디렉터리의tmp_downloads폴더로 다운로드됩니다.--disable_deletes는 다운로드한 파일을 보관하는 선택적 플래그입니다. 기본적으로 이 도구는 다운로드한 모든 파일을 정리합니다.- LANGUAGE: 프로그래밍 패키지 언어입니다(
자세한 내용은 README를 참고하세요.
확인 스크립트 사용
이 섹션에서는 확인 스크립트를 사용하여 다운로드한 패키지의 서명을 확인하는 방법을 설명합니다.
1단계: 서명 URL 가져오기
ZIP 파일의 URL은 각 패키지의 보안 메타데이터에서 확인할 수 있습니다. 다음 예는 컨테이너 분석 메타데이터의 샘플입니다.
다음 예와 같이 description: digestUrl 필드에서 서명 zip URL을 확인할 수 있습니다.
package {
distribution {
cpe_uri: "cpe:2.3:a:JAVA::com.fasterxml.jackson.core:jackson-databind:2.13.3:*:*:*:*:*:*:*"
maintainer: "<nil>"
url: "https://us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/com/fasterxml/jackson/core/jackson-databind/2.13.3/jackson-databind-2.13.3.jar"
description: "{\n \"artifactMetadataList\": [\n {\n \"digestUrl\": \"gs://cloud-aoss/java/com.fasterxml.jackson.core:jackson-databind/2.13.3/jackson-databind-2.13.3_binary_2022-10-12T06:54:05Z.zip\"\n }\n ]\n}"
}
distribution {
cpe_uri: "cpe:2.3:a:JAVA::com.fasterxml.jackson.core:jackson-databind:2.13.3:*:*:*:*:*:*:*"
url: "https://us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/com/fasterxml/jackson/core/jackson-databind/2.13.3/jackson-databind-2.13.3-sources.jar"
description: "{\n \"digestUrl\": \"gs://cloud-aoss/java/com.fasterxml.jackson.core:jackson-databind/2.13.3/jackson-databind-2.13.3-sources_source_2022-10-12T06:54:05Z.zip\"\n}"
}
}
Cloud Storage 메타데이터 (buildInfo.json file)의 샘플 예시입니다. 다음 예시와 같이 externalRefs : referenceLocator 필드에서 서명 zip URL을 가져올 수 있습니다.
"packages": [
{
"SPDXID": "SPDXRef-Package-logback-core-1.2.11.jar",
"checksums": [
{
"algorithm": "SHA256",
"checksumValue": "c847e0e310acda8bc1347c9d9cc051e91210b9f943e131fceb5034c2f0c9a5d8"
}
],
"downloadLocation": "https://us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/ch/qos/logback/logback-core/1.2.11/logback-core-1.2.11.jar",
"externalRefs": [
{
"referenceCategory": "SECURITY",
"referenceLocator": "cpe:2.3:a:*:JAVA\\:\\:ch\\.qos\\.logback\\:logback\\-core:1\\.2\\.11:*:*:*:*:*:*:*",
"referenceType": "cpe23Type"
},
{
"referenceCategory": "OTHER",
"referenceLocator": "gs://cloud-aoss/java/ch.qos.logback:logback-core/1.2.11/logback-core-1.2.11_binary_2022-10-12T14:19:11Z.zip",
"referenceType": "digestURL"
}
],
수동 확인을 위해 로컬 서명 zip을 사용하거나 확인 스크립트를 사용하기 위해 Cloud Storage URL을 직접 사용할 수 있습니다. 다음 단계에 따라 signature.zip 파일을 다운로드할 수 있습니다.
애플리케이션 기본 사용자 인증 정보 (ADC)를 사용하여 인증을 설정합니다.
다음 명령어를 사용하여
signature.zip를 다운로드합니다.gcloud storage cp SIGNATURE_ZIP_URL PATH_TO_LOCAL_STORE --recursive다음을 바꿉니다.
- SIGNATURE_ZIP_URL: 서명 zip URL입니다.
- PATH_TO_LOCAL_STORE: 파일을 다운로드할 로컬 경로입니다.
2단계: 루트 인증서 가져오기
루트 인증서에 액세스하려면 다음 URL을 사용하세요.
https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
인증서를 로컬로 다운로드하거나 인증서 링크를 직접 사용할 수 있습니다. 인증서를 다운로드하려면 다음 명령어를 실행합니다.
curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
PATH_TO_LOCAL_STORE을 인증서를 다운로드할 로컬 경로로 바꿉니다.
3단계: 패키지 파일 위치 가져오기
확인할 파일은 Java 패키지의 jar와 Python 패키지의 휠 파일입니다. 이 파일이 인증을 위한 PATH_TO_DATA_FILE이 됩니다.
4단계: 확인
수동 서명 확인의 단계를 사용하여 서명 zip을 수동으로 확인할 수도 있고 확인 스크립트를 사용할 수도 있습니다.
확인 스크립트를 사용하여 확인하려면 다음 명령어를 실행합니다.
인증 스크립트를 다운로드하고 권한을 부여합니다.
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.sh확인 스크립트를 실행하고 확인합니다. 서명 zip 및 루트 인증서에 원격 URL 또는 로컬 경로를 사용할 수 있습니다.
./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url SIGNATURE_ZIP_URL --root_cert_url ROOT_CERT_URL다음을 바꿉니다.
- PATH_TO_DATA_FILE을 3단계에서 식별된 패키지 파일의 경로로 바꿉니다.
- SIGNATURE_ZIP_URL을 1단계에서 가져온 서명 zip URL로 바꿉니다.
- ROOT_CERT_URL를 2단계에서 가져온 루트 인증서 URL로 바꿉니다.
메타데이터 확인
이 섹션에서는 Cloud Storage를 사용하여 액세스한 Assured OSS 메타데이터의 서명을 확인하는 방법을 설명합니다.
aoss-verifier 도구 사용
aoss-verifier 도구를 사용하여 메타데이터를 확인합니다.
이 도구를 사용하기 전에 Go를 설치합니다.
aoss-verifier 도구를 설치합니다.
$(go env GOPATH)/bin을 내보내고aoss-verifier verify-metadata명령어를 실행합니다.aoss-verifier verify-metadata \ --metadata_type TYPE \ --language LANGUAGE \ --package_id PACKAGE_ID \ --version VERSION \ [--disable_certificate_verification] \ [--temp_downloads_path TEMP_DOWNLOADS_DIR_PATH] \ [--disable_deletes]다음을 바꿉니다.
- TYPE: 가능한 값은
buildinfo,vexinfo,healthinfo입니다. - LANGUAGE: 프로그래밍 패키지 언어입니다(
java또는python). 값은 소문자여야 합니다. - PACKAGE_ID: Java의 경우 형식은 groupId:artifactId입니다. Python의 경우 형식은 packageName입니다. 값은 소문자여야 합니다.
- VERSION: 패키지 버전입니다.
--disable_certificate_verification은 인증서 체인을 통해 리프 인증서와 루트 인증서의 일치를 건너뛰는 선택적 플래그입니다(사용되는 경우).--temp_downloads_path는 파일을 다운로드할 경로를 설정하는 선택적 플래그입니다 (TEMP_DOWNLOADS_DIR_PATH 대체). 이 플래그를 설정하지 않으면 파일이 현재 디렉터리의tmp_downloads폴더로 다운로드됩니다.--disable_deletes는 다운로드한 파일을 보관하는 선택적 플래그입니다. 기본적으로 이 도구는 다운로드한 모든 파일을 정리합니다.- TYPE: 가능한 값은
자세한 내용은 README를 참조하세요.
확인 스크립트 사용
이 섹션에서는 확인 스크립트를 사용하여 보안 메타데이터 파일을 확인하는 방법을 설명합니다.
1단계: 서명 zip 및 메타데이터 파일 가져오기
메타데이터 액세스와 같이 메타데이터에 액세스할 수 있습니다. 메타데이터 파일은 signature.zip 파일과 함께 제공됩니다.
예 - buildInfo.zip 콘텐츠
buildInfo.json
signature.zip
buildInfo.json은 확인해야 하는 메타데이터 파일이고 signature.zip은 서명 zip입니다.
2단계: 루트 인증서 가져오기
다음 URL 링크를 사용하여 루트 인증서를 가져옵니다.
https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
인증서를 로컬로 다운로드하거나 인증서 링크를 직접 사용할 수 있습니다. 인증서를 다운로드하려면 다음 명령어를 실행합니다.
curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
PATH_TO_LOCAL_STORE을 인증서를 다운로드할 로컬 경로로 바꿉니다.
3단계: 확인
signature.zip는 수동 확인을 사용하거나 확인 스크립트를 사용하여 확인할 수 있습니다.
확인 스크립트를 사용하여 확인하려면 다음 명령어를 실행합니다.
인증 스크립트를 다운로드하고 권한을 부여합니다.
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.sh확인 스크립트를 실행하고 확인합니다. 서명 zip의 로컬 경로를 사용해야 합니다. 루트 인증서의 경우 URL 또는 로컬 경로를 사용할 수 있습니다. 데이터 파일은 확인 중인 메타데이터 파일(
buildInfo.json,vexInfo.json또는healthInfo.json)입니다../signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_local_path SIGNATURE_LOCAL_PATH --root_cert_url ROOT_CERT_URL다음을 바꿉니다.
PATH_TO_DATA_FILE을 1단계에서 획득한 것으로 확인되는 메타데이터 파일과 비교합니다.
SIGNATURE_LOCAL_PATH을 1단계에서 획득한 서명 zip URL로 바꿉니다.
ROOT_CERT_URL을 2단계에서 가져온 루트 인증서 URL로 바꿉니다.
이미 다운로드한 로컬 인증서를 사용하려면 다음 옵션을 대신 사용하세요.
--root_cert_local ROOT_CERT_LOCALROOT_CERT_LOCAL을 로컬 인증서 경로로 바꿉니다.
유틸리티 스크립트 확인
Assured OSS는 세 가지 유틸리티 스크립트를 제공합니다. 이 섹션에서는 이러한 스크립트의 서명을 확인하는 방법을 설명합니다.
Python Requirements.txt 생성기
gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator-sig.zip에서 이 파일의 서명에 액세스합니다. signature.zip는 수동 확인을 사용하거나 확인 스크립트를 사용하여 확인할 수 있습니다.
인증 스크립트를 사용하여 서명을 빠르게 인증하려면 다음 단계를 따르세요.
requirements.txt생성기 스크립트 파일을 아직 다운로드하지 않았다면 파일을 다운로드합니다.gcloud storage cp "gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator.sh" . --recursive루트 인증서를 가져옵니다. URL 링크는
https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt입니다. 인증서를 로컬로 다운로드하거나 인증서 링크를 직접 사용할 수 있습니다. 인증서를 다운로드하려면 다음 명령어를 실행합니다.curl -o PATH_TO_LOCAL_STORE/ca.crt "https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt"PATH_TO_LOCAL_STORE을 인증서를 다운로드할 로컬 경로로 바꿉니다.
아직 다운로드하지 않은 경우 인증 스크립트를 다운로드합니다.
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.sh확인 스크립트를 실행하고 확인합니다.
./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url "gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator-sig.zip" --root_cert_url ROOT_CERT_URL다음을 바꿉니다.
- 2단계에서 획득한
generator.sh스크립트의 로컬 경로로 바꿉니다.PATH_TO_DATA_FILE - ROOT_CERT_URL을 루트 인증서 URL로 바꿉니다. 이미 다운로드한 로컬 인증서를 사용하려면 다음 명령어를 실행합니다.
–root_cert_local ROOT_CERT_LOCALROOT_CERT_LOCAL을 루트 인증서의 로컬 경로로 바꿉니다.
- 2단계에서 획득한
서명 확인 스크립트
gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification-sig.zip에서 이 파일의 서명에 액세스합니다. signature.zip는 수동 확인을 사용하거나 확인 스크립트를 사용하여 확인할 수 있습니다.
인증 스크립트를 사용하여 서명을 빠르게 인증하려면 다음 단계를 따르세요.
서명 확인 스크립트 파일을 아직 다운로드하지 않은 경우 파일을 다운로드합니다.
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.sh루트 인증서를 가져옵니다. URL 링크는
https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt입니다. 인증서를 로컬로 다운로드하거나 인증서 링크를 직접 사용할 수 있습니다. 인증서를 다운로드하는 명령어:curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crtPATH_TO_LOCAL_STORE을 인증서를 다운로드할 로컬 경로로 바꿉니다.
확인 스크립트를 실행하고 확인합니다.
./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification-sig.zip" --root_cert_url ROOT_CERT_URL다음을 바꿉니다.
PATH_TO_DATA_FILE를 사용하여 2단계에서 획득한 인증 스크립트의 로컬 경로를 확인합니다. ROOT_CERT_URL을 루트 인증서 URL로 바꿉니다. 이미 다운로드한 로컬 인증서를 사용하려면 다음 옵션을 대신 사용하세요.
–root_cert_local ROOT_CERT_LOCALROOT_CERT_LOCAL을 루트 인증서의 로컬 경로로 바꿉니다.
메타데이터 스크립트 다운로드
gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata-sig.zip에서 이 파일의 서명에 액세스합니다. signature.zip는 수동 확인을 사용하거나 확인 스크립트를 사용하여 확인할 수 있습니다.
인증 스크립트를 사용하여 서명을 빠르게 인증하려면 다음 단계를 따르세요.
아직
download_metadata.py스크립트 파일을 다운로드하지 않았다면 파일을 다운로드합니다.gcloud storage cp "gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata.py" . --recursive루트 인증서를 가져옵니다. URL 링크는
https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt입니다. 인증서를 로컬로 다운로드하거나 인증서 링크를 직접 사용할 수 있습니다.인증서를 다운로드하려면 다음 명령어를 실행합니다.
curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crtPATH_TO_LOCAL_STORE을 인증서를 다운로드할 로컬 경로로 바꿉니다.
확인 스크립트를 다운로드합니다.
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.sh확인 스크립트를 실행하고 확인합니다.
./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata-sig.zip --root_cert_url ROOT_CERT_URL다음을 바꿉니다.
- 2단계에서 획득한
download_metadata.py스크립트의 로컬 경로로 바꿉니다.PATH_TO_DATA_FILE - ROOT_CERT_URL을 루트 인증서 URL로 바꿉니다. 이미 다운로드한 로컬 인증서를 사용하려면 다음 명령어를 실행합니다.
–root_cert_local ROOT_CERT_LOCALROOT_CERT_LOCAL을 루트 인증서의 로컬 경로로 바꿉니다.
- 2단계에서 획득한