직접 저장소 액세스를 사용하여 Python 패키지 다운로드

Assured OSS를 Security Command Center와 통합하면 Assured Open Source Software 패키지가 제어하는 프로젝트에서 생성된 Artifact Registry 저장소에 호스팅됩니다.

이 페이지에서는 Assured OSS의 Artifact Registry 저장소에 연결하여 Python 패키지에 직접 액세스하고 다운로드하는 방법을 설명합니다.

이 문서는 Assured OSS 유료 등급에만 적용됩니다. 무료 등급의 경우 무료 등급에서 직접 저장소 액세스를 사용하여 Python 패키지 다운로드를 참조하세요.

시작하기 전에

  1. Assured OSS를 Security Command Center와 통합합니다.

  2. 요청된 서비스 계정의 Assured OSS 연결을 검증합니다.

  3. 최신 버전의 Google Cloud CLI를 설치합니다.

  4. 이전에 이미 Google Cloud CLI를 설치한 경우 다음 명령어를 실행하여 최신 버전을 사용할 수 있는지 확인합니다.

    gcloud components update
    

인증 설정

다음 방법 중 하나를 사용하여 Assured OSS Python 패키지 저장소에 인증할 수 있습니다.

  • 키링으로 인증
  • 서비스 계정 키로 인증

다음 섹션에서는 이러한 인증 방법을 설정하는 방법을 설명합니다.

키링으로 인증

Python 키링을 사용하여 Artifact Registry에 인증하려면 키링으로 인증사용자 인증 정보 검색 순서의 정보를 참조하세요. 인증에 Python 키링을 사용하는 것이 좋습니다.

인증용 키링을 설정하려면 다음을 수행합니다.

  1. keyring 라이브러리를 설치합니다.

    pip install keyring
    
  2. Artifact Registry 백엔드를 설치합니다.

    pip install keyrings.google-artifactregistry-auth
    
  3. 백엔드를 나열하여 설치를 확인합니다.

    keyring --list-backends
    

    이 목록에는 다음 항목이 포함됩니다.

    • ChainerBackend(priority:10)
    • GooglePythonAuth(priority:9)
  4. 애플리케이션 기본 사용자 인증 정보 설정에 대한 자세한 내용은 인증 설정을 참조하세요.

    이 단계를 수행하면 저장소와 연결할 때 Assured OSS 사용자 인증 정보 도우미가 키를 가져옵니다.

서비스 계정 키로 인증

애플리케이션에서 사용자 이름과 비밀번호를 사용한 인증을 요구할 경우 서비스 계정 키로 인증합니다.

패키지 저장소 URL https://us-python.pkg.dev/PROJECT_ID/assuredoss-python/simple을 URL https://_json_key_base64:BASE64_KEY@us-python.pkg.dev/PROJECT_ID/assuredoss-python/simple로 바꿉니다.

다음을 바꿉니다.

  • PROJECT_ID를 Assured Open Source Software를 설정할 때 선택한 프로젝트의 ID로 바꿉니다.
  • BASE64_KEY를 전체 서비스 계정 JSON 키 파일의 base64 인코딩으로 바꿉니다. 전체 서비스 계정 JSON 키 파일을 base64 인코딩으로 변환하려면 다음 명령어를 사용합니다.

    BASE64_KEY=$(cat KEY_FILE_LOCATION | base64)
    

    KEY_FILE_LOCATION을 서비스 계정 JSON 키 파일의 위치로 바꿉니다.

패키지 설치

다음 안내에서는 종속 항목을 다운로드하기 위한 저장소로 PyPI를 사용한다고 가정합니다. 다른 저장소를 사용하는 경우 다른 단계를 사용하여 종속 항목을 다운로드해야 합니다.

Assured OSS에 기존 패키지 설치

다운로드할 Assured OSS Python 패키지를 지정하려면 requirements.txt 파일을 두 개 만듭니다. 샘플 파일은 다음과 같습니다.

  • requirements-google.txt

    # Packages present in Google's Artifact Registry
    
    urllib3==1.26.11 --hash=sha256:1cffe1aa066363a75c856f261c8fce62d87f7c40ce0f46453ea12bf652b12a13
    jsonschema==4.13.0 --hash=sha256:29895bfe55b93b75552fbdd1e09aa0c82b7c1c9395d4f267e10c7d43cd31a74e
    
  • requirements-pypi.txt

    # Packages present in Google's Artifact Registry are mentioned here so that pip
    # downloads their dependencies from PyPI.
    
    urllib3==1.26.11
    jsonschema==4.13.0
    
    # Below this comment, add any package version which you need but is NOT
    # present in Google's Artifact Registry and therefore needs to be downloaded from
    # PyPI.
    

패키지를 다운로드하려면 다음 명령어를 실행합니다.

  • Assured OSS용 Artifact Registry에 있는 필수 패키지를 다운로드하려면 다음을 실행합니다.

     pip install --require-hashes --requirement=requirements-google.txt --index-url https://_json_key_base64:BASE64_KEY@us-python.pkg.dev/PROJECT_ID/assuredoss-python repo/simple  -v --no-deps
    

    한 가지 예를 살펴보겠습니다.

    • --require-hashes은 선택사항입니다. 포함된 경우 requirements.txt 파일의 모든 패키지 및 모든 패키지 버전에 대해 해시가 지정됩니다.
    • -v은 선택사항입니다. 지정된 경우 명령어가 더 많은 출력을 제공합니다.
  • Assured OSS용 Artifact Registry에 없는 필수 패키지를 다운로드하려면 다음을 실행합니다.

     pip install --requirement=requirements-pypi.txt --index-url https://pypi.org/simple -v
    

    이 명령어는 이전 명령어를 사용하여 다운로드한 패키지의 누락된 종속 항목도 다운로드합니다.

Assured OSS에서 사용 가능한 모든 Python 패키지 나열

API를 사용하여 Artifact Registry 저장소에 있는 모든 Python 패키지 목록을 가져오려면 Assured OSS에서 사용 가능한 모든 Python 패키지 나열을 참조하세요.

requirements-google.txt 파일 생성

이 섹션에서는 Python 패키지를 다운로드하는 데 필요한 requirements-google.txt 파일을 생성하는 방법에 대한 추가 정보를 제공합니다. 해시를 다운로드하고 환경의 requirements-google.txt 파일을 생성하려면 다음 두 가지 옵션 중 하나를 사용하면 됩니다.

  • 스크립트를 사용하여 모든 아티팩트의 단일 요구사항 파일 생성합니다.

  • 각 아티팩트에 대해 개별 요구사항 파일을 다운로드합니다.

다음 섹션에서는 이러한 옵션을 자세히 설명합니다.

옵션 1: 스크립트를 사용하여 모든 아티팩트의 단일 요구사항 파일 생성

generator.sh 스크립트를 사용하여 Linux 운영체제용 Assured OSS에서 사용 가능한 모든 Python 패키지(해시 포함)를 위한 단일 requirements-google.txt 파일을 생성합니다. 패키지는 Python 버전, 머신 아키텍처, 운영체제와 같은 제약조건을 충족해야 합니다. 그런 다음 필요하지 않은 패키지 버전을 삭제하고 결과 파일을 사용할 수 있습니다.

generator.sh 스크립트는 다음 두 가지 방법으로 도움이 됩니다.

  • Assured OSS에서 사용 가능하며 시스템에 성공적으로 설치할 수 있는 Python 패키지 버전의 최신 목록이 생성됩니다.
  • 모든 해시와 함께 requirements-google.txt 파일이 생성됩니다.

필수 스크립트와 README.md 파일은 gsutil 명령줄 도구를 사용하여 다운로드할 수 있는 Cloud Storage 버킷(gs://cloud-aoss/utils/python-requirements-txt/v1.0)에 있습니다.

스크립트 및 README.md 파일을 다운로드하려면 다음 단계를 따르세요.

  1. 다음 명령어를 사용하여 Cloud Storage 버킷에 액세스하도록 서비스 계정으로 인증합니다.

    gcloud auth activate-service-account --key-file KEY_FILE
    

    KEY_FILE을 설정 중에 제공된 서비스 계정의 사용자 인증 정보가 포함된 파일의 경로로 바꿉니다.

  2. 다음 명령어를 사용하여 머신에 generator.sh를 다운로드합니다.

    gsutil cp -r gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator.sh PATH_TO_LOCAL_STORE
    

    PATH_TO_LOCAL_STORE를 다운로드한 파일을 저장할 로컬 경로로 바꿉니다.

  3. 다음 명령어를 사용하여 README.md 파일을 다운로드합니다.

    gsutil cp -r gs://cloud-aoss/utils/python-requirements-txt/v1.0/README.md PATH_TO_LOCAL_STORE
    

    PATH_TO_LOCAL_STORE를 다운로드한 파일을 저장할 로컬 경로로 바꿉니다. 스크립트 사용 방법에 대한 안내가 README.md 파일에 포함되어 있습니다.

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

  • requirements-google.txt 파일을 생성하려면 다음 명령어를 실행합니다.

     chmod +x generator.sh
     ./generator.sh
    
  • CSV 파일의 패키지 정보를 가져오려면 다음 명령어를 실행합니다.

    chmod +x generator.sh
    ./generator.sh -i
    

옵션 2: 각 필수 아티팩트의 requirements.txt 다운로드

각 Python 아티팩트에 대해 개별 requirements.txt(해시 포함) 파일을 다운로드한 후 단일 requirements.txt 파일로 결합할 수도 있습니다.

아티팩트 해시는 gsutil 명령줄 도구를 사용하여 다운로드할 수 있는 Cloud Storage 버킷에서 제공됩니다. 각 패키지 및 버전의 해시는 gs://cloud-aoss/python/PACKAGE_NAME/VERSION Cloud Storage 버킷 위치에 있습니다.

requirements.txt 파일을 다운로드하려면 다음 단계를 따르세요.

  1. 다음 명령어를 사용하여 Cloud Storage 버킷에 액세스하도록 서비스 계정으로 인증합니다.

    gcloud auth activate-service-account --key-file KEY_FILE
    

    KEY_FILE을 서비스 계정 사용자 인증 정보가 포함된 파일의 경로로 바꿉니다.

  2. 다음 명령어를 사용하여 특정 패키지 및 버전의 requirements.txt를 로컬 머신에 다운로드합니다.

    gsutil cp -r gs://cloud-aoss/python/PACKAGE_NAME/VERSION PATH_TO_LOCAL_STORE
    

    다음을 바꿉니다.

    • PACKAGE_NAME: 패키지 이름
    • VERSION: 패키지의 버전
    • PATH_TO_LOCAL_STORE: 파일을 다운로드할 로컬 경로

    명령어 샘플:

    gsutil cp -r gs://cloud-aoss/python/bleach/5.0.0 /tmp/bleach

    샘플 requirements.txt 파일:

    bleach==5.0.0 \
     --hash=sha256:6d286e765bfd3e309209cfa1d063e4d46afa966dea8cb97431c02b1e3067d812
    

    이러한 각 requirements.txt 파일의 콘텐츠는 단일 requirements-google.txt 파일로 결합될 수 있습니다.

다음 단계