驗證連線

本文說明如何確認服務帳戶和 AWS 帳戶已成功啟用,可存取 Assured Open Source Software 服務。

如要驗證您的 Google Cloud 服務帳戶或 (僅限免費層級) AWS 帳戶 ID 是否已啟用,可存取 Assured OSS 存放區和精選套件組合,請使用 API 列出可用的 Java 或 Python 套件。如要執行這項操作,您可以直接呼叫 API,或使用 Cloud Shell 執行 curl 指令列呼叫 API。

如果您使用免費方案,提交客戶啟用表單後,極少數情況下可能會發生權限遭拒錯誤,且持續一小時以上。

本文適用於付費版和免費版。

事前準備

  1. 安裝最新版本的 Google Cloud CLI。如果您先前已安裝 Google Cloud CLI,請執行下列指令,確認您使用的是最新版本:

    gcloud components update
    
  2. 如要使用 Google Cloud存取 Assured OSS,請為您已啟用 Assured OSS 的服務帳戶,啟用 Artifact Registry API 的父項 Google Cloud 專案。如果您使用進階級,系統會在設定期間啟用 API。

  3. 將下列網址加入網路的許可清單:

    • *.pkg.dev
    • artifactregistry.googleapis.com

設定驗證方法

如需 Google Cloud

  1. 產生並下載服務帳戶金鑰。建議您遵循管理服務帳戶金鑰的最佳做法

  2. 如果已登入 Google Cloud CLI,請撤銷所有現有驗證:

    gcloud auth revoke
    
  3. 向 Google Cloud進行驗證:

    gcloud auth login --cred-file=FILEPATH.json
    

    其中 FILEPATH 是服務帳戶金鑰的路徑。

  4. 更新應用程式預設憑證

    export GOOGLE_APPLICATION_CREDENTIALS=FILEPATH.json
    

    其中 FILEPATH 是服務帳戶金鑰的路徑。

適用於 AWS

這些步驟僅適用於 Assured OSS 的免費方案。

  1. 設定 EC2 執行個體,允許要求臨時憑證

    1. 登入 AWS 管理主控台
    2. 在 AWS 管理主控台中,前往 EC2 資訊主頁,然後選取目標 EC2 執行個體。
    3. 依序選取「Actions」>「Security」>「Modify IAM Role」
    4. 選取「Create New IAM Role」>「Create role」
    5. 在「信任的實體類型」部分,選取「AWS 服務」
    6. 選擇「EC2」EC2用途。
    7. 新增 AmazonEC2ReadOnlyAccess 權限,然後按一下「下一步」
    8. 為 IAM 角色提供有意義的名稱,然後按一下「Next」
    9. 返回「修改 IAM 角色」。選取新建立的角色,然後按一下「更新 IAM 角色」
  2. 產生憑證設定檔:

    gcloud iam workload-identity-pools create-cred-config \
    projects/ASSIGNED_PROJECT_NUMBER/locations/global/workloadIdentityPools/aoss-wif-pool/providers/aws-AWS_ACCOUNT_ID-provider \
    --service-account=aoss-wif-aws-AWS_ACCOUNT_ID-sa@ASSIGNED_PROJECT_ID.iam.gserviceaccount.com \
    --aws \
    --output-file=FILEPATH.json
    

    更改下列內容:

    • AWS_ACCOUNT_ID:AWS 帳戶的 12 位數編號 (例如 123456789012)。
    • FILEPATH:用於儲存設定的檔案。+ ASSIGNED_PROJECT_ID:系統指派給您的 Google Cloud 專案 ID,如啟用郵件所述。+ ASSIGNED_PROJECT_NUMBER:系統指派給您的 Google Cloud 專案 Google Cloud 編號,如啟用電子郵件所述。

    如果您使用 AWS IMDSv2,請在上述指令中加入 --enable-imdsv2 旗標。詳情請參閱「建立憑證設定」。

  3. 如果已登入 Google Cloud CLI,請撤銷所有現有驗證:

    gcloud auth revoke
    
  4. 向 Google Cloud進行驗證:

    gcloud auth login --cred-file=FILEPATH.json
    

    其中 FILEPATH 是指憑證設定檔的路徑。

  5. 更新應用程式預設憑證

    export GOOGLE_APPLICATION_CREDENTIALS=FILEPATH.json
    

    其中 FILEPATH 是服務帳戶金鑰或憑證設定檔的路徑。

如要排解驗證相關問題,請參閱「排解驗證錯誤」。

列出 Assured OSS 中所有可用的 Java 套件

您可以使用 REST API 列出所有 Java 套件及其版本。

如要使用 Assured OSS 免費層級,請輸入下列 HTTP 要求:

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts"

如果是 Assured OSS Premium 級,請輸入下列 HTTP 要求:

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-java/packages

PROJECT_ID 替換為您設定 Assured OSS 時選取的專案 ID。

以下是連線至免費層級 Java 存放區的範例 curl 指令:

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts"

這個要求會傳回類似以下範例的回應:

  {
    "mavenArtifacts": [
      {
        "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts/com.alibaba:fastjson:1.2.83",
        "pomUri":
  "us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/com/alibaba/fastjson/1.2.83/fastjson-1.2.83.pom",
        "groupId": "com.alibaba",
        "artifactId": "fastjson",
        "version": "1.2.83",
        "createTime": "2022-06-24T09:10:05.166879Z",
        "updateTime": "2022-06-24T09:10:05.166879Z"
      },
      {
        "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts/org.apache.logging.log4j:log4j-api:2.17.1",
        "pomUri":
  "us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/org/apache/logging/log4j/log4j-api/2.17.1/log4j-api-2.17.1.pom",
        "groupId": "org.apache.logging.log4j",
        "artifactId": "log4j-api",
        "version": "2.17.1",
        "createTime": "2022-03-16T12:22:50.113695Z",
        "updateTime": "2022-03-16T12:22:50.113695Z"
      },
      {
        "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts/org.apache.logging.log4j:log4j-core:2.17.1",
      "pomUri":
  "us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/org/apache/logging/log4j/log4j-core/2.17.1/log4j-core-2.17.1.pom",
        "groupId": "org.apache.logging.log4j",
        "artifactId": "log4j-core",
        "version": "2.17.1",
        "createTime": "2022-03-16T12:26:40.317215Z",
        "updateTime": "2022-03-16T12:26:40.317215Z"
      }
    ]
  }

如果可用的套件數量眾多,API 回應可能會分頁顯示。如果清單不完整,回應中會傳回接續權杖 nextPageTokennextPageToken 代表最後傳回的結果。將 nextPageToken 的值傳遞至後續要求的 pageToken 參數時,系統會傳回下一頁的結果,從最後一個結果之後開始。

如要查看下一頁結果,或增加每頁傳回的物件數量,請使用下列網址:

  "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts?pageSize=NUMBER&pageToken=NEXT_PAGE_TOKEN"

更改下列內容:

  • NUMBER:每頁要退貨的項目數量。可接受的最大值為 1000。
  • NEXT_PAGE_TOKEN:JSON 回應中傳回的 nextPageToken 權杖值。

或者,您也可以使用下列指令碼,將上述 API 要求的結果分頁收集到檔案中:

tempFile=$(mktemp)
nextPageToken=""
while
    curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts?pageSize=1000&pageToken=$nextPageToken" > $tempFile
    nextPageToken=$(grep nextPageToken $tempFile | sed 's/  "nextPageToken": "//' | sed 's/.$//')
    grep -v nextPageToken $tempFile >> FILENAME1
    [ -n "$nextPageToken" ]
do
:
done

選用:將主要 Java 套件名稱的排序清單寫入 FILENAME2

下列額外的指令列動作會篩選傳回的原始 Java 套件清單,只列出主要套件名稱。

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts?pageSize=1000" \
      | grep artifactId | sort -f | uniq >  FILENAME2

選用:將排序後的 Java 套件版本清單寫入 FILENAME3

下列額外指令列動作會篩選傳回的原始 Java 套件清單,只列出套件版本。

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-java/mavenArtifacts?pageSize=1000" \
      | grep name | sort -f | uniq >  FILENAME3

列出 Assured OSS 中所有可用的 Python 套件

您可以使用 REST API 列出所有 Python 套件及其版本。這些套件適用於 Python 3.8。

如要使用 Assured OSS 免費層級,請輸入下列 HTTP 要求:

  GET https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages

如果是 Assured OSS Premium 級,請輸入下列 HTTP 要求:

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-python/packages"

PROJECT_ID 替換為您設定 Assured OSS 時選取的專案 ID。

如要列出環境專屬的所有套件,請使用 generator.sh 指令碼

以下是連線至免費層級的 Assured OSS Python 存放區的 curl 指令範例:

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages"

這個要求會傳回類似以下範例的回應:

  {
  "pythonPackages": [
    {
      "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages/Flask:2.1.2",
      "uri":
  "us-python.pkg.dev/cloud-aoss/cloud-aoss-python/flask/Flask-2.1.2-py3-none-any.whl",
        "packageName": "Flask",
        "version": "2.1.2",
        "createTime": "2022-07-13T11:06:54.163313Z",
        "updateTime": "2022-07-13T11:06:54.163313Z"
    },
    {
      "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages/ujson:5.3.0",
        "uri":
  "us-python.pkg.dev/cloud-aoss/cloud-aoss-python/ujson/ujson-5.3.0-cp38-cp38-linux_x86_64.whl",
        "packageName": "ujson",
        "version": "5.3.0",
        "createTime": "2022-07-13T11:06:17.263638Z",
        "updateTime": "2022-07-13T11:06:17.263638Z"
      },
      {
        "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages/ujson:5.4.0",
        "uri":
  "us-python.pkg.dev/cloud-aoss/cloud-aoss-python/ujson/ujson-5.4.0-cp38-cp38-linux_x86_64.whl",
        "packageName": "ujson",
        "version": "5.4.0",
        "createTime": "2022-07-13T11:09:00.865162Z",
        "updateTime": "2022-07-13T11:09:00.865162Z"
      },
      {
        "name":
  "projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages/urllib3:1.26.8",
        "uri":
  "us-python.pkg.dev/cloud-aoss/cloud-aoss-python/urllib3/urllib3-1.26.8-py2.py3-none-any.whl",
        "packageName": "urllib3",
        "version": "1.26.8",
        "createTime": "2022-07-13T11:05:56.529484Z",
        "updateTime": "2022-07-13T11:05:56.529484Z"
      }
    ]
  }

如果可用的套件數量眾多,API 回應可能會分頁顯示。如果清單不完整,回應中會傳回接續權杖 nextPageTokennextPageToken 代表上次傳回的結果。將 nextPageToken 的值傳遞至後續要求的 pageToken 參數時,系統會傳回下一頁的結果,從最後一個結果之後開始。

如要查看下一頁結果,或增加每頁傳回的物件數量,請在免費層級中使用下列網址:

  "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages?pageSize=NUMBER&pageToken=NEXT_PAGE_TOKEN"

更改下列內容:

  • NUMBER:每頁要退貨的項目數量。可接受的最大值為 1000。
  • NEXT_PAGE_TOKEN:JSON 回應中傳回的 nextPageToken 權杖值。

或者,您也可以使用下列指令碼,將上述 API 要求的結果分頁收集到檔案中。

tempFile=$(mktemp)
nextPageToken=""
while
    curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages?pageSize=1000&pageToken=$nextPageToken" > $tempFile
    nextPageToken=$(grep nextPageToken $tempFile | sed 's/  "nextPageToken": "//' | sed 's/.$//')
    grep -v nextPageToken $tempFile >> FILENAME4
    [ -n "$nextPageToken" ]
do
:
done

選用:將主要 Python 套件名稱的排序清單寫入 FILENAME5

下列額外的指令列動作會篩選傳回的原始 Python 套件清單,只列出主要套件名稱。

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages?pageSize=1000" \
      | grep packageName | sort -f | uniq > FILENAME5

選用:將 Python 套件版本的排序清單寫入 FILENAME6

下列額外的指令列動作會篩選傳回的原始 Python 套件清單,只列出套件版本。

  curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/cloud-aoss-python/pythonPackages?pageSize=1000" \
      | grep name | sort -f | uniq >  FILENAME6

列出 Assured OSS 中所有可用的 Go 套件

您可以使用 REST API 列出所有 Go 套件及其版本。

如要使用 Assured OSS 免費方案,請輸入下列 HTTP 要求:

curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
"https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages"

如要使用 Assured OSS Premium 級,請輸入下列 HTTP 要求:

curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-go/packages

PROJECT_ID 替換為您設定 Assured OSS 時選取的專案 ID。

以下是連線至免費層級 Go 存放區的 curl 指令範例:

curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages

這個要求會傳回類似以下的回應:

{
  "packages": [
    {
      "name": "projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/cloud.google.com%2Fgo%2Fauth",
      "createTime": "2025-08-05T06:04:54.442071Z",
      "updateTime": "2025-08-05T06:04:54.442071Z"
    },
    {
      "name": "projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/cloud.google.com%2Fgo%2Fauth%2Foauth2adapt",
      "createTime": "2025-08-05T06:04:41.242052Z",
      "updateTime": "2025-08-05T06:04:41.242052Z"
    },
    {
      "name": "projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/cloud.google.com%2Fgo%2Fcompute%2Fmetadata",
      "createTime": "2025-08-05T06:05:31.140186Z",
      "updateTime": "2025-08-05T06:05:31.140186Z"
    },
    {
      "name": "projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/cloud.google.com%2Fgo%2Fiam",
      "createTime": "2025-08-05T06:04:54.455300Z",
      "updateTime": "2025-08-05T06:04:54.455300Z"
    },
    {
      "name": "projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/cloud.google.com%2Fgo%2Flogging",
      "createTime": "2025-08-05T06:05:36.186851Z",
      "updateTime": "2025-08-05T06:05:36.186851Z"
    }
  ]
}

如果有多個套件可用,API 回應可能會分頁顯示。如果清單不完整,回應中會傳回續傳權杖 nextPageTokennextPageToken 代表傳回的最後一個結果。 將 nextPageToken 的值傳遞至後續要求的 pageToken 參數時,系統會傳回下一頁的結果,從最後一個結果之後開始。

如要查看下一頁結果,或增加每頁傳回的物件數量,請使用下列網址:

"https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages?pageSize=NUMBER&pageToken=NEXT_PAGE_TOKEN"

更改下列內容:

  • NUMBER:每頁要退貨的項目數量。可接受的最大值為 1000。
  • NEXT_PAGE_TOKEN:JSON 回應中傳回的 nextPageToken 權杖值。

或者,您也可以使用下列指令碼,將 API 要求的結果分頁收集到檔案中:

tempFile=$(mktemp)
nextPageToken=""
while
    curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    "https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages?pageSize=1000&pageToken=$nextPageToken" > $tempFile
    nextPageToken=$(grep nextPageToken $tempFile | sed 's/  "nextPageToken": "//' | sed 's/.$//')
    grep -v nextPageToken $tempFile >> FILENAME7
    [ -n "$nextPageToken" ]
do
:
done

選用:將主要 Go 套件名稱的排序清單寫入 FILENAME8

下列動作會篩選傳回的 Go 模組原始清單,為您提供主要套件名稱清單:

curl -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
"https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages?pageSize=1000" \
      | grep name | sort -f | uniq >  FILENAME8

選用:將 Go 套件版本排序清單寫入 FILENAME9

雖然無法直接發出 HTTP 要求來列出所有 Go 套件版本,但您可以列出特定 Go 套件的所有版本。您可以透過迭代列出 FILENAME8 清單中識別的每個 Go 套件版本,產生所有 Go 套件版本的完整清單。

下列動作會篩選傳回的原始 Go 套件版本清單,為您提供套件版本清單:

grep -o "packages/.*" FILENAME8 | tr -d '",' | cut -d '/' -f 2 | while read package_name; do curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" https://artifactregistry.googleapis.com/v1/projects/cloud-aoss/locations/us/repositories/assuredoss-go-free/packages/$package_name/versions | grep name | sort -f | uniq >> FILENAME9; done

後續步驟