將 Cloud Source Repositories 角色和權限轉換為 Secure Source Manager

本指南說明 Cloud Source Repositories (CSR) 使用者如何將存取權控管機制轉換為 Secure Source Manager (SSM)。如要按照本指南操作,您應該瞭解 IAM 和 CSR,並具備 SSM 的基本知識。

資源模型

CSR 有一項 Google Cloud 資源,是專案的子項:

  • 存放區,projects/<var>project</var>/repositories/<var>repo</var>

SSM 有兩項資源,是專案的區域化子項:

  • 例如:projects/<var>project</var>/locations/<var>location</var>/instances/<var>instance</var>
  • 存放區:最直接等同於 CSR 存放區,且必須附加至 (但不是子項) 同一專案和位置的 SSM 執行個體,projects/<var>project</var>/locations/<var>location</var>/repositories/<var>repo</var>

SSM 還有其他資源,但這些資源會以存放區的子項形式建模。本指南將這些檔案視為存放區的一部分。

角色

CSR 有三種角色:roles/source.readerroles/source.writerroles/source.admin。您可以將讀取者和寫入者角色繫結至存放區或專案。您應只將管理員角色繫結至專案,因為 source.repos.create 權限僅適用於專案範圍。

SSM 為使用者主體提供 11 個角色,相較於 Cloud Source Repositories,角色數量大幅增加。您可以將這些角色歸為兩類 (加上超級使用者角色)。

超級使用者角色 (roles/securesourcemanager.admin) 可授予所有 SSM 權限。您必須將這個角色繫結至專案,因為如果繫結至存放區,執行個體權限就不會套用;如果繫結至執行個體,存放區權限就不會套用。

SSM 執行個體角色

執行個體角色會授予存取 Secure Source Manager 執行個體 UI 的權限,並允許使用 Git 連線至該執行個體。您必須授予使用者至少一個執行個體角色,才能允許他們存取執行個體上的存放區。您可以將這些角色繫結至執行個體資源或專案。

角色 權限
roles/securesourcemanager.instanceAccessor 存取執行個體及其存放區。存放區層級角色必須具備這項權限,才能正常運作。
roles/securesourcemanager.instanceManager 管理執行個體層級的設定。
roles/securesourcemanager.instanceOwner 可完整控管執行個體設定。
roles/securesourcemanager.instanceRepoCreator 在執行個體上建立存放區。
roles/securesourcemanager.sshKeyUser 管理用於驗證執行個體的安全殼層金鑰。不會單獨授予執行個體存取權。

SSM 存放區角色

存放區角色會授予 Secure Source Manager 執行個體內存放區的權限。您可以將這些角色繫結至存放區資源或專案,但 repoCreator 必須繫結至專案。

角色 權限
roles/securesourcemanager.repoAdmin 可完整控管存放區,包括存放區設定和使用者存取權。
roles/securesourcemanager.repoPullRequestApprover 核准存放區的提取要求。
roles/securesourcemanager.repoReader 讀取存放區內容,以及查看提取要求和問題。
roles/securesourcemanager.repoWriter 讀取及寫入存放區內容,並管理提取要求和問題。
roles/securesourcemanager.repoCreator 在專案中建立新存放區。

將 CSR 角色對應至 SSM

如要有效使用 SSM,您至少需要兩種角色:一個是執行個體角色,另一個是存放區角色。CSR 角色與 SSM 角色之間沒有一對一的對應關係。這些配方僅提供來源控制的同等存取權,不適用於提取要求、問題或執行個體管理等 SSM 功能。

在 CSR 中,您可以跨多個專案建立存放區。在 Secure Source Manager 中,執行個體上的所有存放區都屬於與執行個體相同的專案。如果您在 Secure Source Manager 的專案層級繫結任何角色,系統會將該角色的權限授予該執行個體上的每個存放區。如要只授予特定存放區權限,請使用存放區層級繫結。

對應 source.reader

如果您在存放區層級繫結這個角色,請在存放區資源上繫結 securesourcemanager.repoReader,並在主機執行個體上繫結 securesourcemanager.instanceAccessor,以重新建立相同層級的存取權。如果您在專案層級繫結角色,在專案層級繫結 repoReaderinstanceAccessor 即可授予執行個體上所有存放區的讀取權。

對應 source.writer

如果您在存放區層級繫結這個角色,請在存放區資源上繫結 securesourcemanager.repoWriter,並在主機執行個體上繫結 securesourcemanager.instanceAccessor,以重新建立相同層級的存取權。如果您在專案層級繫結角色,在專案層級繫結 repoWriterinstanceAccessor 即可授予執行個體中所有存放區的寫入權。

對應 source.admin

您只能在專案層級繫結這個角色。您可以在專案層級繫結 securesourcemanager.instanceAccessorsecuresourcemanager.repoAdminsecuresourcemanager.instanceRepoCreatorsecuresourcemanager.repoCreator 的組合,重新建立該項目。這組角色可授予在專案中任何執行個體上建立存放區的權限,以及授予管理員在專案中任何執行個體上存取所有存放區的權限。如要授予所有 SSM 權限 (與 source.admin 授予所有 CSR 權限的方式相同),請在專案層級繫結超級使用者角色 securesourcemanager.admin

SSM 和 CSR 的差異

本節概述 Secure Source Manager 處理角色和權限的方式與 Cloud Source Repositories 相比的主要差異。

隱含角色授予

建立新的存放區資源時,系統會自動將新建立存放區資源的 repoAdmin 角色授予呼叫主體。

新增資源類型

SSM 的功能比 CSR 多,這些功能會以新的資源類型為模型。 除了問題和提取要求的註解外,這些功能還包括分支保護規則、掛鉤、問題和提取要求。這些資源是存放區資源的子項。存放區角色包含這些資源的權限。 舉例來說,repoAdminrepoWriter 提供寫入權限,而 repoReader 只授予讀取權限。

精細角色

SSM 包含精細的角色,可提供特定存取權控管機制。

  • roles/securesourcemanager.repoPullRequestApprover 僅授予核准提取要求的權限。搭配 repoReaderinstanceAccessor 使用此角色,可讓使用者存取執行個體、瀏覽存放區,以及核准提取要求,但無法修改其他資料。
  • roles/securesourcemanager.repoCreator 僅授予在專案中建立存放區的權限。由於存放區必須附加至執行個體,您也必須擁有 roles/securesourcemanager.instanceRepoCreator,才能將存放區附加至執行個體。搭配 roles/securesourcemanager.repoCreator 使用 instanceRepoCreator,即可授予建立存放區的權限,並將存放區附加至執行個體。

後續步驟