Assured OSS を Security Command Center と統合すると、Assured Open Source Software パッケージが、管理するプロジェクト内に作成された Artifact Registry リポジトリにホストされます。
このページでは、Assured OSS の Artifact Registry リポジトリに接続して、Python パッケージに直接アクセスしてダウンロードする方法について説明します。
このドキュメントは、Assured OSS のプレミアム ティアにのみ適用されます。無料枠については、無料枠の直接リポジトリ アクセスを使用して Python パッケージをダウンロードするをご覧ください。
始める前に
リクエストされたサービス アカウントの Assured OSS への接続を検証します。
Google Cloud CLI の最新バージョンをインストールします。
すでに Google Cloud CLI をインストールしている場合は、次のコマンドを実行して、最新バージョンがインストールされていることを確認してください。
gcloud components update
認証の設定
次のいずれかの方法で Assured OSS Python パッケージ リポジトリに対して認証できます。
- キーリングによる認証
- サービス アカウント キーによる認証
以降のセクションでは、これらの認証方法の設定方法について説明します。
キーリングによる認証
Artifact Registry に対する認証を行うように Python キーリングを使用するには、キーリングによる認証および認証情報の検索の順番の情報をご覧ください。認証には Python キーリングを使用することをおすすめします。
認証用のキーリングを設定するには、次の手順に従います。
keyring
ライブラリをインストールします。pip install keyring
Artifact Registry バックエンドをインストールします。
pip install keyrings.google-artifactregistry-auth
バックエンドを一覧表示してインストールを確認します。
keyring --list-backends
このリストには以下が含まれます。
ChainerBackend(priority:10)
GooglePythonAuth(priority:9)
アプリケーションのデフォルト認証情報の設定については、認証の設定をご覧ください。
この手順により、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
は、base64 でエンコードされたサービス アカウントの JSON キーファイルに置き換えます。サービス アカウントの JSON キーファイル全体を base64 エンコードに変換するには、次のコマンドを使用します。BASE64_KEY=$(cat KEY_FILE_LOCATION | base64 -w 0)
KEY_FILE_LOCATION
は、サービス アカウント JSON キーファイルの場所に置き換えます。
パッケージをインストール
以下の手順では、依存関係をダウンロードするリポジトリとして PyPI を使用していることを前提としています。別のリポジトリを使用している場合は、別の手順で依存関係をダウンロードする必要があります。
Assured OSS の既存のパッケージをインストールする
ダウンロードする Assured OSS Python パッケージを指定するには、2 つの 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
ファイル内のすべてのパッケージおよびすべてのパッケージ バージョンに対してハッシュが指定されます。BASE64_KEY
は、base64 でエンコードされたサービス アカウント JSON ファイルに置き換えます。-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
ファイルを生成するには、次の 2 つのオプションのいずれかを使用します。
スクリプトを使用して、すべてのアーティファクトに対して 1 つの要件ファイルを生成する
アーティファクトごとに個別の要件ファイルをダウンロードします。
以降のセクションでは、これらのオプションについて詳しく説明します。
オプション 1: スクリプトを使用して、すべてのアーティファクトに対して 1 つの要件ファイルを生成する
generator.sh
スクリプトを使用して、Linux オペレーティング システム用 Assured OSS で利用可能なすべての Python パッケージ(およびそれらのハッシュ)用の単一の requirements-google.txt
ファイルを生成します。パッケージは、Python のバージョン、マシン アーキテクチャ、オペレーティング システムなどの制約を満たす必要があります。その後、不要なパッケージのバージョンを削除して、結果のファイルを使用できます。
generator.sh
スクリプトは、次の 2 つの形で役立ちます。
- システムに正常にインストールできる、Assured OSS で使用できる Python パッケージ バージョンの最新のリストを生成します。
requirements-google.txt
ファイルおよびすべてのハッシュを生成します。
必要なスクリプトとその README.md
ファイルは Cloud Storage バケット(gs://cloud-aoss/utils/python-requirements-txt/v1.0
)で利用可能で、Google Cloud CLI を使用してダウンロードできます。
スクリプトと README.md
ファイルをダウンロードする手順は次のとおりです。
次のコマンドを使用して、サービス アカウントで認証を行い、Cloud Storage バケットにアクセスします。
gcloud auth activate-service-account --key-file KEY_FILE
KEY_FILE
は、設定時に指定したサービス アカウントの認証情報を含むファイルのパスに置き換えます。次のコマンドを使用して、
generator.sh
をマシンにダウンロードします。gcloud storage cp gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator.sh PATH_TO_LOCAL_STORE --recursive
PATH_TO_LOCAL_STORE
は、ダウンロードしたファイルを保存するローカルパスに置き換えます。次のコマンドを使用して
README.md
ファイルをダウンロードします。gcloud storage cp gs://cloud-aoss/utils/python-requirements-txt/v1.0/README.md PATH_TO_LOCAL_STORE --recursive
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
ファイルに結合することもできます。
アーティファクト ハッシュは Cloud Storage バケットで利用可能で、gcloud CLI を使用してダウンロードできます。各パッケージとバージョンのハッシュは、gs://cloud-aoss/python/PACKAGE_NAME/VERSION
Cloud Storage バケットのロケーションにあります。
requirements.txt
ファイルをダウンロードするには、次の手順に従います。
次のコマンドを使用して、サービス アカウントで認証を行い、Cloud Storage バケットにアクセスします。
gcloud auth activate-service-account --key-file KEY_FILE
KEY_FILE
は、サービス アカウントの認証情報を含むファイルのパスに置き換えます。次のコマンドを使用して、特定のパッケージとバージョンの
requirements.txt
をローカルマシンにダウンロードします。gcloud storage cp gs://cloud-aoss/python/PACKAGE_NAME/VERSION PATH_TO_LOCAL_STORE --recursive
以下を置き換えます。
PACKAGE_NAME
: パッケージ名VERSION
: パッケージのバージョンPATH_TO_LOCAL_STORE
: ファイルをダウンロードするローカルパス
サンプル コマンド:
gcloud storage cp gs://cloud-aoss/python/bleach/5.0.0 /tmp/bleach
--recursiverequirements.txt
ファイルのサンプル:bleach==5.0.0 \ --hash=sha256:6d286e765bfd3e309209cfa1d063e4d46afa966dea8cb97431c02b1e3067d812
このような
requirements.txt
ファイルのコンテンツは、1 つのrequirements-google.txt
ファイルに結合できます。