使用第三方應用程式連線至存放區時,必須向 Artifact Registry 進行驗證。
您不需要為 Cloud Build 或 Google CloudGoogle Kubernetes Engine 和 Cloud Run 等執行階段環境設定驗證,但應確認已設定必要的權限。
Node.js 支援兩種方法,可驗證對 Artifact Registry 存放區的要求:
事前準備
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
- (選用) 設定 gcloud CLI 指令的預設值。
- 如要從 Windows 連線至存放區,請安裝 PowerShell。
- 建立服務帳戶,代表應用程式執行作業。
- 如果您是第一次使用 npm,請參閱總覽,瞭解範圍套件和驗證設定檔。
產生驗證權杖
如要在 Artifact Registry 中驗證套件,您必須先產生驗證權杖。接著,您就能在從套件向 Artifact Registry 提出要求時使用這個權杖。
您可以使用 oauth2 權杖或 Google Cloud 權杖,在 oauth2l 外部產生存取權杖 Google Cloud。
存取權杖的效期為 60 分鐘。請在執行與存放區互動的指令前不久,產生存取權杖。如果存取權杖已過期,您必須產生新的存取權杖。
使用 gcloud 產生權杖
如要使用 Google Cloud產生 oauth2 存取權杖,請執行下列指令:
export ACCESS_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
現在,從 Node.js 套件向 Artifact Registry 提出要求時,可以參照 ACCESS_TOKEN。
產生權杖 (不使用 gcloud)
如要只使用 oauth2l CLI 產生存取權杖,請執行下列操作:
執行下列指令,安裝最新版
oauth2l:go install github.com/google/oauth2l@latest執行下列指令:
export ACCESS_TOKEN="oauth2l fetch --scope cloud-platform"Google Cloud 會產生 SHA256 雜湊權杖,並儲存在
ACCESS_TOKEN變數中。現在從 Node.js 套件向 Artifact Registry 發出要求時,可以參照ACCESS_TOKEN。
使用服務帳戶金鑰設定密碼驗證
如果 Node.js 應用程式需要使用指定的使用者名稱和密碼進行驗證,請採用這種做法。
服務帳戶金鑰是長效型憑證,請遵守下列規範,限制存放區的存取權:
- 建議使用專用服務帳戶與存放區互動。
- 授予服務帳戶所需的最低 Artifact Registry 角色。例如,將 Artifact Registry 讀取者角色指派給僅下載構件的服務帳戶。
- 如果貴組織中的群組需要對特定存放區具備不同層級的存取權,請在存放區層級 (而非專案層級) 授予存取權。
- 遵循管理憑證的最佳做法。
如要建立服務帳戶並設定驗證:
建立服務帳戶來代表應用程式執行動作,或選擇用於自動化的現有服務帳戶。
您需要服務帳戶金鑰檔案的位置,才能設定 Artifact Registry 的驗證。如果是現有帳戶,您可以在「Service Accounts」(服務帳戶) 頁面查看金鑰及建立新金鑰。
授予服務帳戶特定的 Artifact Registry 角色,提供存放區存取權。
如要在目前的 gcloud CLI 工作階段中啟用服務帳戶,請執行下列指令:
gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE地點
- ACCOUNT 是使用者或服務帳戶。
- KEY-FILE 是服務帳戶 JSON 金鑰檔案的路徑。
執行下列指令,列出存放區設定:
gcloud artifacts print-settings npm [--project=PROJECT] \ [--repository=REPOSITORY] [--location=LOCATION] --scope=@SCOPE-NAME --json-key=KEY-FILE地點
- PROJECT 是專案 ID。如果省略這個旗標,系統會使用目前或預設的專案。
- REPOSITORY 是存放區 ID。如果您已設定預設 Artifact Registry 存放區,則在指令中省略這個旗標時,系統會使用該存放區。
- LOCATION 是存放區的單一區域或多區域位置。
SCOPE-NAME 是要與存放區建立關聯的 npm 範圍名稱。
使用範圍可確保您一律從正確的存放區發布及安裝套件。
未限定範圍的套件會與預設 npm 登錄檔建立關聯,通常是 npm 公開登錄檔。如未指定範圍,傳回的設定會將 Artifact Registry 存放區設為預設登錄檔。如果 Node.js 專案需要從公開 npm 登錄檔和 Artifact Registry 存放區安裝套件,可能會導致問題。
KEY-FILE 是服務帳戶 JSON 金鑰檔案的路徑。
將傳回的設定新增至 Node.js 專案的 .npmrc 設定檔。這個檔案通常與
package.json位於同一目錄。請務必在 Node.js 專案中加入這些設定,以便發布套件,以及從 npm 存放區安裝依附元件。如要連結其他 Node.js 存放區,請重複上述步驟取得設定,並新增至
.npmrc檔案。