将 Assured OSS 与 Security Command Center 集成后,Assured Open Source Software 软件包会托管在您控制的项目中创建的 Artifact Registry 代码库中。
本页介绍了如何连接到 Artifact Registry 代码库以便使用 Assured OSS 直接访问和下载 Python 软件包。
本文档仅适用于 Assured OSS 高级层级。对于免费层级,请参阅使用免费层级的直接代码库访问权限下载 Python 软件包。
准备工作
安装最新版本的 Google Cloud CLI。
如果您之前安装了 Google Cloud CLI,请运行以下命令以确保您拥有最新版本:
gcloud components update
设置身份验证
您可以使用以下任一方法对 Assured OSS Python 软件包仓库进行身份验证:
- 使用密钥串进行身份验证
- 使用服务账号密钥进行身份验证
以下部分介绍了如何设置这些身份验证方法。
使用密钥环进行身份验证
如需使用 Python 密钥库对 Artifact Registry 进行身份验证,请参阅使用密钥库进行身份验证以及凭据搜索顺序相关信息。我们建议您使用 Python 密钥库进行身份验证。
如需设置密钥环以进行身份验证,请执行以下操作:
安装
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/PROJECT_ID/assuredoss-python/simple
替换为网址 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 软件包,请创建两个 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.
如需下载软件包,请运行以下命令:
如需下载 Artifact Registry for Assured OSS 中提供的所需软件包,请运行以下命令:
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
为可选项。如果指定了,该命令会提供更多输出。
如需下载 Artifact Registry for Assured OSS 中不存在的所需软件包,请运行以下命令:
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
脚本有以下两种帮助方式:
- 该工具会生成最新的 Python 软件包版本列表,其中包含可成功安装在系统上的 Assured OSS 软件包。
- 它会生成
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
文件中。