使用 Git 原始碼管理

Secure Source Manager 支援所有 Git SCM 用戶端指令,並內建提取要求和問題追蹤功能。支援 HTTPS 和 SSH 驗證

必要的角色

如要取得使用 Git 與 Secure Source Manager 存放區互動所需的權限,請要求系統管理員授予您下列 IAM 角色:

  • Secure Source Manager 執行個體存取者 (roles/securesourcemanager.instanceAccessor) 在 Secure Source Manager 執行個體上
  • 如要複製存放區: 存放區的「Secure Source Manager 存放區讀取者」 (roles/securesourcemanager.repoReader)
  • 如要推送至存放區: 存放區的「Secure Source Manager 存放區寫入者」 (roles/securesourcemanager.repoWriter)

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

如要瞭解如何授予 Secure Source Manager 角色,請參閱「使用 IAM 控管存取權」和「授予使用者執行個體存取權」。

安裝 Git 和 Google Cloud CLI

  1. 安裝 Git

  2. 如果 Git 安裝程式提示您選擇憑證輔助程式,請選取「None (Do not use a credential helper)」(無 (不使用憑證輔助程式))

  3. 安裝 gcloud CLI

  4. 如要透過 HTTPS 使用 Git,必須使用 gcloud CLI 395.0.0 以上版本。如要檢查 gcloud CLI 版本,請執行下列指令:

    gcloud --version
    
  5. 如要更新 gcloud CLI,請執行下列指令。

    gcloud components update
    
  6. 更新完成後,請執行 gcloud init初始化 gcloud CLI

    詳情請參閱 gcloud CLI 說明文件中的更新元件

設定憑證

如果您使用第三方識別資訊提供者和員工身分聯盟驗證 Secure Source Manager,則不需要完成本節內容,而是必須建立工作團隊身分集區登入設定

執行下列指令,將 Secure Source Manager 驗證輔助程式新增至全域 Git 設定:

Linux

git config --global credential.'https://*.*.sourcemanager.dev'.helper gcloud.sh

舊版 Git 可能不支援萬用字元。如要新增驗證輔助程式 (不含萬用字元),請執行下列指令:

git config --global credential.'https://INSTANCE_ID-PROJECT_NUMBER-git.LOCATION.sourcemanager.dev'.helper gcloud.sh

更改下列內容:

  • INSTANCE_ID 改為您的 Secure Source Manager 執行個體名稱。
  • PROJECT_NUMBER 改成您的專案編號。如需專案編號的相關說明,請參閱「識別專案」。
  • LOCATION,其中包含執行個體的所在地區。如要進一步瞭解區域,請參閱「位置」一文。

Windows

git config --global credential.https://*.*.sourcemanager.dev.helper gcloud.cmd

舊版 Git 可能不支援萬用字元。如要新增驗證輔助程式 (不含萬用字元),請執行下列指令:

git config --global credential.https://INSTANCE_ID-PROJECT_NUMBER-git.LOCATION.sourcemanager.dev.helper gcloud.cmd

更改下列內容:

  • INSTANCE_ID 改為您的 Secure Source Manager 執行個體名稱。
  • PROJECT_NUMBER 改成您的專案編號。如需專案編號的相關說明,請參閱「識別專案」。
  • LOCATION,其中包含執行個體的所在地區。如要進一步瞭解區域,請參閱「位置」一文。

使用 Secure Source Manager 執行 Git 指令時,驗證輔助程式會使用 gcloud CLI 擷取您的Google Cloud 憑證。

如要在初始憑證設定後重新驗證,請執行下列 gcloud CLI 指令:

gcloud auth login

使用服務帳戶從 Compute Engine VM 進行驗證

您可以透過附加的服務帳戶,從 Compute Engine 虛擬機器 (VM) 進行驗證。

設定 VM 和服務帳戶

如果您使用 Compute Engine 預設服務帳戶,請建立具有必要 OAuth 範圍的 VM:

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --scopes=openid,https://www.googleapis.com/auth/userinfo.profile,https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/cloud-platform

更改下列內容:

  • VM_NAME:VM 的名稱。
  • PROJECT_ID:您的 Google Cloud 專案 ID。
  • ZONE:VM 的可用區。

如果使用自訂服務帳戶,請先建立服務帳戶,再建立 VM。

  1. 建立服務帳戶:

    gcloud iam service-accounts create SA_NAME --project=PROJECT_ID
    

    SA_NAME 換成服務帳戶的名稱。

  2. 授予使用服務帳戶的權限。如要建立含有服務帳戶的 VM,您必須擁有服務帳戶的服務帳戶使用者角色 (roles/iam.serviceAccountUser)。將這個角色授予建立 VM 的主體:

    gcloud iam service-accounts add-iam-policy-binding SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --member="user:USER_EMAIL" \
        --role="roles/iam.serviceAccountUser"
    

    USER_EMAIL 替換為建立 VM 的使用者電子郵件地址。

  3. 建立 VM:

    gcloud compute instances create VM_NAME \
        --project=PROJECT_ID \
        --zone=ZONE \
        --scopes=openid,https://www.googleapis.com/auth/userinfo.profile,https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/cloud-platform \
        --service-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

將 IAM 角色授予服務帳戶

授予服務帳戶 Secure Source Manager 執行個體和存放區的存取權:

  1. 授予執行個體存取權:

    SA_EMAIL=$(gcloud compute instances describe VM_NAME --project=PROJECT_ID --zone=ZONE --format="get(serviceAccounts[0].email)")
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:$SA_EMAIL" \
        --role=roles/securesourcemanager.instanceAccessor
    
  2. 授予存放區讀取權限。

    如要授予特定存放區的讀取權限,請執行下列指令:

    gcloud ssm repos add-iam-policy-binding REPOSITORY_ID \
        --instance=INSTANCE_ID \
        --location=LOCATION \
        --member="serviceAccount:$SA_EMAIL" \
        --role=roles/securesourcemanager.repoReader
    

    更改下列內容:

    • REPOSITORY_ID:存放區 ID。
    • INSTANCE_ID:Secure Source Manager 執行個體 ID。
    • LOCATION:Secure Source Manager 執行個體的區域。

    如要授予寫入權限,請使用 roles/securesourcemanager.repoWriter 角色。

    建議您在存放區層級授予存取權,以遵循最低權限原則。如要授予專案中所有存放區的存取權,請參閱「使用 IAM 控管存取權」。

IAM 權限可能需要幾分鐘才會全面生效。

在 VM 上設定 Git

  1. 使用 SSH 連線至 VM:

    gcloud compute ssh VM_NAME --project=