本指南說明 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.reader、roles/source.writer 和 roles/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,以重新建立相同層級的存取權。如果您在專案層級繫結角色,在專案層級繫結 repoReader 和 instanceAccessor 即可授予執行個體上所有存放區的讀取權。
對應 source.writer
如果您在存放區層級繫結這個角色,請在存放區資源上繫結 securesourcemanager.repoWriter,並在主機執行個體上繫結 securesourcemanager.instanceAccessor,以重新建立相同層級的存取權。如果您在專案層級繫結角色,在專案層級繫結 repoWriter 和 instanceAccessor 即可授予執行個體中所有存放區的寫入權。
對應 source.admin
您只能在專案層級繫結這個角色。您可以在專案層級繫結 securesourcemanager.instanceAccessor、securesourcemanager.repoAdmin、securesourcemanager.instanceRepoCreator 和 securesourcemanager.repoCreator 的組合,重新建立該項目。這組角色可授予在專案中任何執行個體上建立存放區的權限,以及授予管理員在專案中任何執行個體上存取所有存放區的權限。如要授予所有 SSM 權限 (與 source.admin 授予所有 CSR 權限的方式相同),請在專案層級繫結超級使用者角色 securesourcemanager.admin。
SSM 和 CSR 的差異
本節概述 Secure Source Manager 處理角色和權限的方式與 Cloud Source Repositories 相比的主要差異。
隱含角色授予
建立新的存放區資源時,系統會自動將新建立存放區資源的 repoAdmin 角色授予呼叫主體。
新增資源類型
SSM 的功能比 CSR 多,這些功能會以新的資源類型為模型。
除了問題和提取要求的註解外,這些功能還包括分支保護規則、掛鉤、問題和提取要求。這些資源是存放區資源的子項。存放區角色包含這些資源的權限。
舉例來說,repoAdmin 和 repoWriter 提供寫入權限,而 repoReader 只授予讀取權限。
精細角色
SSM 包含精細的角色,可提供特定存取權控管機制。
roles/securesourcemanager.repoPullRequestApprover僅授予核准提取要求的權限。搭配repoReader和instanceAccessor使用此角色,可讓使用者存取執行個體、瀏覽存放區,以及核准提取要求,但無法修改其他資料。roles/securesourcemanager.repoCreator僅授予在專案中建立存放區的權限。由於存放區必須附加至執行個體,您也必須擁有roles/securesourcemanager.instanceRepoCreator,才能將存放區附加至執行個體。搭配roles/securesourcemanager.repoCreator使用instanceRepoCreator,即可授予建立存放區的權限,並將存放區附加至執行個體。