在 GKE 中設定跨專案存取權

本頁面說明如何授權 Binary Authorization 存取與目前專案不同的 Google Cloud 專案中的政策和容器映像檔。舉例來說,如果您從其他專案擁有的 Artifact Registry 或 Container Registry (已淘汰) 存放區,在 Google Kubernetes Engine (GKE) 叢集中部署映像檔,則必須授予專案中的 Binary Authorization 服務存取權,才能取得來源存放區中的映像檔中繼資料。

術語

本文使用下列術語:

  • 服務代理程式: 由 Google Cloud管理的服務帳戶。二進位授權會使用服務代理程式與 Google Cloud資源 (例如 GKE 叢集) 互動。
  • 政策專案: 包含二進位授權政策的 Google Cloud 專案。
  • 叢集專案: 含有 GKE 叢集的 Google Cloud 專案。
  • 構件專案: 包含 Artifact Registry 或 Container Registry (已淘汰) 存放區的專案。 Google Cloud

需要跨專案存取權的情境

在下列情況中,您必須授予跨專案權限:

  • 政策專案與叢集專案不同。
  • 叢集專案與構件專案不同。

事前準備

  1. 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
  2. 安裝 Google Cloud CLI。

  3. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  4. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  5. 建立或選取 Google Cloud 專案

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
    • 建立專案:如要建立專案,您需要具備專案建立者角色 (roles/resourcemanager.projectCreator),其中包含 resourcemanager.projects.create 權限。瞭解如何授予角色
    • 建立 Google Cloud 專案:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替換為您要建立的 Google Cloud 專案名稱。

    • 選取您建立的 Google Cloud 專案:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替換為 Google Cloud 專案名稱。

  6. 確認專案已啟用計費功能 Google Cloud

  7. 啟用 Binary Authorization API:

    啟用 API 時所需的角色

    如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    gcloud services enable binaryauthorization.googleapis.com
  8. 安裝 Google Cloud CLI。

  9. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  10. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  11. 建立或選取 Google Cloud 專案

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
    • 建立專案:如要建立專案,您需要具備專案建立者角色 (roles/resourcemanager.projectCreator),其中包含 resourcemanager.projects.create 權限。瞭解如何授予角色
    • 建立 Google Cloud 專案:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替換為您要建立的 Google Cloud 專案名稱。

    • 選取您建立的 Google Cloud 專案:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替換為 Google Cloud 專案名稱。

  12. 確認專案已啟用計費功能 Google Cloud

  13. 啟用 Binary Authorization API:

    啟用 API 時所需的角色

    如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    gcloud services enable binaryauthorization.googleapis.com

叢集專案與政策專案不同

在政策專案中,將二進位授權政策評估者 (roles/binaryauthorization.policyEvaluator) 角色授予叢集專案中的二進位授權服務代理程式。

gcloud projects add-iam-policy-binding POLICY_PROJECT_ID \
  --member="serviceAccount:service-$(gcloud projects describe CLUSTER_PROJECT_ID --format='value(projectNumber)')@gcp-sa-binaryauthorization.iam.gserviceaccount.com" \
  --role=roles/binaryauthorization.policyEvaluator

請替換下列項目:

  • POLICY_PROJECT_ID:包含政策的專案 ID。
  • CLUSTER_PROJECT_ID:叢集的專案 ID。

叢集專案與構件專案不同

在構件專案中,將 Artifact Registry 讀取者 (roles/artifactregistry.reader) 角色授予叢集專案中的 Binary Authorization 服務代理程式。

gcloud projects add-iam-policy-binding ARTIFACT_PROJECT_ID \
    --member="serviceAccount:service-$(gcloud projects describe CLUSTER_PROJECT_ID --format='value(projectNumber)')@gcp-sa-binaryauthorization.iam.gserviceaccount.com" \
    --role=roles/artifactregistry.reader

請替換下列項目:

  • ARTIFACT_PROJECT_ID:包含 Artifact Registry 存放區的專案 ID。
  • CLUSTER_PROJECT_ID:執行 GKE 叢集的專案 ID。