Assured OSS 무료 등급의 서명 확인

선별된 오픈소스 패키지의 무결성을 확인하려면 Assured Open Source Software(Assured OSS) 아티팩트의 서명을 확인하면 됩니다.

이 문서는 무료 등급에만 적용됩니다. 프리미엄 등급의 경우 보안 메타데이터 액세스 및 패키지 확인을 참조하세요.

패키지 확인

패키지 서명은 Cloud Storage 버킷에 zip 형식으로 패키지와 별도로 저장됩니다. Assured OSS 인증 도구(aoss-verifier)를 사용하거나 인증 스크립트를 사용하여 서명을 확인할 수 있습니다.

aoss-verifier 도구 사용

이 도구를 사용하기 전에 시스템에 Go가 설치되어 있는지 확인합니다. Go가 설치되어 있지 않으면 Go 웹사이트에서 Go를 설치합니다.

  1. 오픈소스 소프트웨어 패키지의 신뢰성과 무결성을 확인하려면 aoss-verifier 도구를 설치합니다.

  2. $(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 파일 확장자

    --disable_certificate_verification은 인증서 체인을 통해 리프 인증서와 루트 인증서의 일치를 건너뛰는 선택적 플래그입니다(사용되는 경우).

    --temp_downloads_path는 파일을 다운로드할 경로를 설정하는 선택적 플래그입니다. (TEMP_DOWNLOADS_DIR_PATH 대체). 이 플래그를 설정하지 않으면 파일이 현재 디렉터리의 tmp_downloads 폴더로 다운로드됩니다.

    --disable_deletes는 다운로드한 파일을 보관하는 선택적 플래그입니다. 기본적으로 이 도구는 다운로드한 모든 파일을 정리합니다.

자세한 내용은 README를 참고하세요.

확인 스크립트 사용

이 섹션에서는 인증 스크립트를 사용하여 다운로드한 패키지의 서명을 확인하는 방법을 설명합니다.

1단계: 서명 URL 가져오기

zip 파일의 URL은 각 패키지의 보안 메타데이터에서 확인할 수 있습니다. 다음 예시는 Container Analysis 메타데이터의 샘플입니다.

다음 예시와 같이 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 파일을 다운로드할 수 있습니다.

  1. 애플리케이션 기본 사용자 인증 정보(ADC)를 사용하여 인증을 설정합니다.

  2. 다음 명령어를 사용하여 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 패키지의 wheel 파일입니다. 이 파일은 확인을 위한 PATH_TO_DATA_FILE입니다.

4단계: 인증

수동 서명 확인의 단계를 사용하여 서명 ZIP을 수동으로 확인하거나 확인 스크립트를 사용할 수 있습니다.

확인 스크립트를 사용하여 확인하려면 다음 명령어를 실행합니다.

  1. 인증 스크립트를 다운로드하고 권한을 부여합니다.

      gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
      chmod +x signatureverification.sh
    
  2. 확인 스크립트를 실행하고 확인합니다. 서명 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를 설치합니다.

  1. aoss-verifier 도구를 설치합니다.

  2. $(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는 다운로드한 파일을 보관하는 선택적 플래그입니다. 기본적으로 이 도구는 다운로드한 모든 파일을 정리합니다.

자세한 내용은 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를 확인할 수 있습니다.

확인 스크립트를 사용하여 확인하려면 다음 명령어를 실행합니다.

  1. 인증 스크립트를 다운로드하고 권한을 부여합니다.

      gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
      chmod +x signatureverification.sh
    
  2. 확인 스크립트를 실행하고 확인합니다. 서명 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_LOCAL
      

      ROOT_CERT_LOCAL을 로컬 인증서 경로로 바꿉니다.

유틸리티 스크립트 확인

Assured OSS는 세 가지 유틸리티 스크립트를 제공합니다. 이 섹션에서는 이러한 스크립트의 서명을 확인하는 방법을 설명합니다.

Python Requirements.txt 생성기

gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator-sig.zip에서 이 파일의 서명에 액세스합니다. 수동 인증을 사용하거나 인증 스크립트를 사용하여 signature.zip를 확인할 수 있습니다. 확인 스크립트를 사용하여 서명을 빠르게 확인하려면 다음 단계를 따르세요.

  1. 인증 설정

  2. 아직 requirements.txt 생성기 스크립트 파일을 다운로드하지 않았으면 파일을 다운로드합니다.

     gcloud storage cp "gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator.sh" . --recursive
    
  3. 루트 인증서를 가져옵니다. 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 부분을 인증서를 다운로드할 로컬 경로로 바꾸세요.

  4. 아직 다운로드하지 않았다면 인증 스크립트를 다운로드합니다.

    gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
    chmod +x signatureverification.sh
    
  5. 확인 스크립트를 실행하고 확인합니다.

    ./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
    

    다음을 바꿉니다.

    • PATH_TO_DATA_FILE: 2단계에서 가져온 대로 확인하려는 generator.sh 스크립트의 로컬 경로.
    • ROOT_CERT_URL을 루트 인증서 URL로 바꿉니다. 이미 다운로드한 로컬 인증서를 사용하려면 다음 명령어를 실행합니다.
    –root_cert_local ROOT_CERT_LOCAL
    

    ROOT_CERT_LOCAL을 루트 인증서의 로컬 경로로 바꿉니다.

서명 확인 스크립트

gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification-sig.zip에서 이 파일의 서명에 액세스합니다. 수동 인증을 사용하거나 인증 스크립트를 사용하여 signature.zip를 확인할 수 있습니다. 확인 스크립트를 사용하여 서명을 빠르게 확인하려면 다음 단계를 따르세요.

  1. 인증 설정

  2. 서명 확인 스크립트 파일을 아직 다운로드하지 않았으면 파일을 다운로드합니다.

    gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
    chmod +x signatureverification.sh
    
  3. 루트 인증서를 가져옵니다. 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 부분을 인증서를 다운로드할 로컬 경로로 바꾸세요.

  4. 확인 스크립트를 실행하고 확인합니다.

    ./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_LOCAL
    

    ROOT_CERT_LOCAL을 루트 인증서의 로컬 경로로 바꿉니다.

메타데이터 스크립트 다운로드

gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata-sig.zip에서 이 파일의 서명에 액세스합니다. 수동 인증을 사용하거나 인증 스크립트를 사용하여 signature.zip를 확인할 수 있습니다. 확인 스크립트를 사용하여 서명을 빠르게 확인하려면 다음 단계를 따르세요.

  1. 인증 설정

  2. 아직 download_metadata.py 스크립트 파일을 다운로드하지 않았으면 파일을 다운로드합니다.

    gcloud storage cp "gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata.py" . --recursive
    
  3. 루트 인증서를 가져옵니다. 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 부분을 인증서를 다운로드할 로컬 경로로 바꾸세요.

  4. 확인 스크립트를 다운로드합니다.

    gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
    chmod +x signatureverification.sh
    
  5. 확인 스크립트를 실행하고 확인합니다.

    ./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
    

    다음을 바꿉니다.

    • PATH_TO_DATA_FILE: 2단계에서 가져온 대로 확인하려는 download_metadata.py 스크립트의 로컬 경로.
    • ROOT_CERT_URL을 루트 인증서 URL로 바꿉니다. 이미 다운로드한 로컬 인증서를 사용하려면 다음 명령어를 실행합니다.
    –root_cert_local ROOT_CERT_LOCAL
    

    ROOT_CERT_LOCAL을 루트 인증서의 로컬 경로로 바꿉니다.

다음 단계