使用 SSH 公開金鑰進行驗證

使用者和服務帳戶可以使用 SSH 公開金鑰,向 Secure Source Manager 存放區進行驗證。本頁說明如何產生 SSH 金鑰組,然後在 Secure Source Manager 網頁介面中新增為驗證方法。

Secure Source Manager 支援 RSA、ECDSA 和 Ed25519 SSH 金鑰類型。

必要的角色

如要取得使用 SSH 公開金鑰進行驗證所需的權限,請要求管理員授予下列 IAM 角色:

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

這些預先定義的角色具備使用 SSH 公開金鑰驗證所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要使用安全殼層公開金鑰進行驗證,必須具備下列權限:

  • securesourcemanager.sshkeys.createAny 在 Secure Source Manager 執行個體上
  • 如要將 SSH 金鑰指派給服務帳戶: iam.serviceAccounts.actAs 服務帳戶

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

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

產生金鑰組

SSH 金鑰組包含本機系統上的私密金鑰,以及您透過 Google Cloud註冊的公開金鑰。

Linux 或 macOS

  1. 在本機系統上安裝 OpenSSH

  2. 在命令提示字元中,輸入下列指令:

    ssh-keygen -t KEY_TYPE -C "USER_EMAIL"
    

    其中:

    • USER_EMAIL 是你的電子郵件地址。
    • KEY_TYPErsaecdsaed25519

    例如:

    ssh-keygen -t rsa -C "user@example.com"
    
    1. 系統提示時,請輸入公開金鑰檔案的位置和檔案名稱。 如要接受預設位置和檔案名稱,請按 Enter 鍵。

    2. 系統提示時,請將通關密語留空,然後按 Enter 鍵。

Windows

  1. 如果沒有,請在本機系統上安裝 OpenSSH 用戶端 (Windows 10 以上版本內建) 和 Git for Windows。下列操作說明使用 OpenSSH 和 Git for Windows。

  2. 在 PowerShell 或命令提示字元中,執行下列指令:

    ssh-keygen -t KEY_TYPE -C "USER_EMAIL"
    

    其中:

    • USER_EMAIL 是你的電子郵件地址。
    • KEY_TYPErsaecdsaed25519

    例如:

    ssh-keygen -t rsa -C "user@example.com"
    
    1. 系統提示時,請輸入公開金鑰檔案的位置和檔案名稱。 如要接受預設位置和檔案名稱 (`%USERPROFILE%.ssh`),請按 Enter 鍵。

    2. 系統提示時,請將通關密語留空,然後按 Enter 鍵。

將安全殼層金鑰新增至安全殼層代理程式

如要使用產生的安全殼層金鑰組,請將金鑰新增至安全殼層代理程式。如果沒有將金鑰儲存在預設位置,請將金鑰新增至 SSH 代理程式,協助 SSH 找出金鑰。

Linux 或 macOS

  1. 在背景中啟動 ssh-agent

    eval "$(ssh-agent -s)"
    

    指令會傳回代理程式程序 ID (PID),例如:

    Agent pid 3245
    

    視環境而定,您可能需要使用其他指令,例如:

    • 如要使用根存取權,請在啟動 ssh-agent 前執行 sudo -s -H
    • 如要直接執行 ssh-agent,請使用 exec ssh-agent bashexec ssh-agent zsh
  2. 將安全殼層私密金鑰新增至 ssh-agent

    ssh-add ~/.ssh/FILENAME
    

    其中 FILENAME 是私密金鑰檔案的名稱,例如 id_rsaid_ed25519

Windows

  1. 開始 ssh-agent

    • 如果您使用 Git Bash,請啟動 ssh-agent

      eval "$(ssh-agent -s)"
      
    • 如果您使用 PowerShell 或命令提示字元,請啟動 ssh-agent 服務。在 PowerShell 中執行下列指令:

      Set-Service ssh-agent -StartupType Automatic; Start-Service ssh-agent
      
  2. 將安全殼層私密金鑰新增至 ssh-agent

    • 如果您使用 Git Bash:

      ssh-add ~/.ssh/FILENAME
      
    • 如果您使用 PowerShell 或命令提示字元:

      ssh-add $env:USERPROFILE\.ssh\FILENAME
      

    其中 FILENAME 是私密金鑰檔案的名稱,例如 id_rsaid_ed25519

為使用者新增安全殼層金鑰

  1. 在 Secure Source Manager 網頁介面中,按一下執行個體或存放區頁面的「更多選項」選單。
  2. 按一下「使用者 SSH 金鑰」

    「使用者 SSH 金鑰」頁面隨即開啟,並顯示您建立的所有現有金鑰清單。

  3. 在「使用者 SSH 金鑰」頁面中,按一下「新增金鑰」

  4. 在「新增 SSH 金鑰」頁面中,輸入金鑰的下列值:

    1. 標題:為金鑰新增描述性標題。
    2. 安全殼層公開金鑰:貼上公開金鑰字串。如要取得公開金鑰字串,請在文字編輯器中開啟公開金鑰檔案 (FILENAME.pub),或執行下列任一指令:

      Linux 或 macOS

      cat ~/.ssh/FILENAME.pub
      

      Windows

      cat $env:USERPROFILE\.ssh\FILENAME.pub
      

      FILENAME 替換為金鑰檔案的名稱。

只要您擁有存放區的必要權限,就能使用 SSH 金鑰向任何 Secure Source Manager 存放區進行驗證。

為服務帳戶新增 SSH 金鑰

如要透過程式存取存放區,可以為服務帳戶新增 SSH 金鑰。

  1. 如果您沒有要使用的服務帳戶,請建立服務帳戶
  2. 在 Secure Source Manager 網頁介面中,按一下「更多選項」選單。
  3. 按一下「服務帳戶 SSH 金鑰」。系統會開啟「服務帳戶 SSH 金鑰」頁面,並顯示您新增的現有金鑰清單。
  4. 在「服務帳戶 SSH 金鑰」頁面中,按一下「新增金鑰」
  5. 在「Add service account SSH key」(新增服務帳戶 SSH 金鑰) 頁面中,輸入金鑰的下列值:

    1. 名稱:索引鍵的說明標題
    2. 服務帳戶:要使用 SSH 金鑰的服務帳戶電子郵件,格式為 SA_NAME@PROJECT_ID.iam.gserviceaccount.com

      地點

      • SA_NAME 是服務帳戶名稱。
      • PROJECT_ID 是建立服務帳戶的專案 ID。
    3. 安全殼層公開金鑰:您的公開安全殼層金鑰。如要瞭解如何產生安全殼層 (SSH) 金鑰組,請參閱「產生金鑰組」。

  6. 如果服務帳戶與 Secure Source Manager 執行個體不在同一個專案中,請將下列其中一個角色或權限授予 Secure Source Manager 的服務代理程式,以便使用服務帳戶:

    • iam.serviceAccounts.signJwt權限
    • 服務帳戶憑證建立者 (roles/iam.serviceAccountTokenCreator) 角色

    執行下列指令,將 IAM 政策新增至 Secure Source Manager 服務帳戶,並授予服務帳戶憑證建立者角色。

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT \
        --member="serviceAccount:service-INSTANCE_PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountTokenCreator"
    

    其中 SERVICE_ACCOUNT 是您要使用的服務帳戶,INSTANCE_PROJECT_NUMBER 則是 Secure Source Manager 執行個體的專案編號。

    SERVICE_ACCOUNT 的格式應為數字服務帳戶 ID 或電子郵件地址,例如:123456789876543212345 或 my-iam-account@somedomain.com。

後續步驟