在免费层级中,有保障的开源软件提供的软件包托管在 Google 管理的 Artifact Registry 代码库中。
本页面介绍了如何关联到该 Assured OSS 专用的 Artifact Registry 代码库,以便直接访问和下载 Python 软件包。
本文档仅适用于免费层级。对于高级层级,请参阅使用直接代码库访问权限下载 Python 软件包。
准备工作
请让您的管理员向您授予组织的 Service Account Key Admin (
roles/iam.serviceAccountKeyAdmin) IAM 角色。您需要此权限才能获取服务账号密钥的 base64 编码字符串。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。配置 Assured OSS。对于免费层级,请提交客户启用表单,以启用对 Assured OSS 的访问权限。
验证所请求的服务账号与 Assured OSS 的连接。
为用于访问 Assured OSS 的服务账号的父项目 Google Cloud启用 Artifact Registry API。
安装最新版本的 Google Cloud CLI。 如果您之前安装了 Google Cloud CLI,请运行以下命令,确保您拥有最新版本:
gcloud components update
设置身份验证
您可以使用以下方法之一向 Assured OSS Python 软件包代码库进行身份验证:
- 使用 Python 密钥环进行身份验证
- 使用服务账号密钥进行身份验证
以下部分介绍了如何设置这些身份验证方法。
使用 Python 密钥环进行身份验证
如需使用 Python 向 Artifact Registry 进行身份验证,我们建议使用 Python 密钥环。如需了解详情,请参阅使用密钥环进行身份验证和凭据搜索顺序。
如需设置用于身份验证的 Python keyring,请执行以下操作:
安装
keyring库:pip install keyring安装 Artifact Registry 后端:
pip install keyrings.google-artifactregistry-auth列出后端以确认安装:
keyring --list-backends该列表应包含以下内容:
ChainerBackend(priority:10)GooglePythonAuth(priority:9)
-
此步骤可确保 Assured OSS 凭证帮助程序在与代码库连接时获取您的密钥。
使用服务账号密钥进行身份验证
如果应用需要使用用户名和密码进行身份验证,请使用服务账号密钥进行身份验证。
将软件包代码库网址 https://us-python.pkg.dev/cloud-aoss/cloud-aoss-python/simple 替换为网址 https://_json_key_base64:$BASE64_KEY@us-python.pkg.dev/cloud-aoss/cloud-aoss-python/simple
安装软件包
以下说明假定您使用 PyPI 和 requirements.txt 下载并管理依赖项。如果您使用的是任何其他依赖项管理流程,则必须使用不同的步骤。
在 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:29895bfe55b93b75552fbdd1e09aa0c82b7c1c9395d4f267e10c7d43cd31a74erequirements-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.
如需下载软件包,请运行以下命令:
如需下载 Artifact Registry 中适用于 Assured OSS 的必需软件包,请运行以下命令:
pip install --require-hashes --requirement=requirements-google.txt \ --index-url https://_json_key_base64:$BASE64_KEY@us-python.pkg.dev/cloud-aoss/cloud-aoss-python/simple -v \ --no-deps请考虑以下事项:
--require-hashes为可选项。如果包含,则在requirements.txt文件中为所有软件包和所有软件包版本指定哈希。-v为可选项。如果指定,该命令会提供更多输出。我们建议您在requirements.txt文件中使用 SHA-256 哈希固定依赖项,以确保安全性和可重现性。
如需下载 Assured OSS 的 Artifact Registry 中没有的必需软件包,请运行以下命令:
pip install --requirement=requirements-pypi.txt --index-url https://pypi.org/simple -v此命令还会下载您使用上一个命令下载的软件包的缺失依赖项。
访问 Assured OSS 专用 Artifact Registry 代码库中未提供的软件包
Assured OSS 经过预配置,将 Assured OSS 作为首选仓库,将 Maven Central 或 PyPI 等规范化公共仓库作为次要仓库。
如需使用此功能(预览版),您可以指向单个网址:
https://us-python.pkg.dev/cloud-aoss/python/simple
列出 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 文件位于 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--recursive示例
requirements.txt文件:bleach==5.0.0 \ --hash=sha256:6d286e765bfd3e309209cfa1d063e4d46afa966dea8cb97431c02b1e3067d812每个此类
requirements.txt文件的内容可以合并到单个requirements-google.txt文件中。