이 가이드에서는 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 |
인스턴스 인증을 위한 SSH 키를 관리합니다. 자체적으로 인스턴스 액세스 권한을 부여하지 않습니다. |
SSM 저장소 역할
저장소 역할은 Secure Source Manager 인스턴스 내의 저장소에 대한 권한을 부여합니다. 이러한 역할을 저장소 리소스 또는 프로젝트에 바인딩할 수 있습니다. 단, repoCreator는 프로젝트에 바인딩해야 합니다.
| 역할 | 권한 |
|---|---|
roles/securesourcemanager.repoAdmin |
저장소 설정 및 사용자 액세스를 비롯한 저장소에 대한 전체 제어 권한 |
roles/securesourcemanager.repoPullRequestApprover |
저장소에서 pull 요청을 승인합니다. |
roles/securesourcemanager.repoReader |
저장소 콘텐츠를 읽고 pull 요청과 문제를 볼 수 있습니다. |
roles/securesourcemanager.repoWriter |
저장소 콘텐츠를 읽고 쓰고, 풀 요청과 문제를 관리합니다. |
roles/securesourcemanager.repoCreator |
프로젝트 내에 새 저장소를 만듭니다. |
CSR 역할을 SSM에 매핑
SSM을 효과적으로 사용하려면 인스턴스 역할 하나와 저장소 역할 하나 등 최소 두 가지 역할이 필요합니다. CSR 역할에서 SSM 역할로의 1:1 매핑은 없습니다. 이러한 레시피는 소스 제어에만 동등한 액세스를 제공하며, 풀 요청, 문제, 인스턴스 관리와 같은 SSM 기능에는 동등한 액세스를 제공하지 않습니다.
CSR에서는 여러 프로젝트에 저장소를 만들 수 있었습니다. Secure Source Manager에서 인스턴스의 모든 저장소는 인스턴스와 동일한 프로젝트에 속합니다. Secure Source Manager에서 프로젝트 수준으로 역할을 바인딩하면 해당 역할의 권한이 인스턴스의 모든 저장소에 부여됩니다. 특정 저장소에만 권한을 부여해야 하는 경우 저장소 수준 바인딩을 사용하세요.
소스.리더 매핑
저장소 수준에서 이 역할을 바인딩한 경우 저장소 리소스에 securesourcemanager.repoReader를 바인딩하고 호스트 인스턴스에 securesourcemanager.instanceAccessor를 바인딩하여 동일한 수준의 액세스 권한을 다시 만듭니다. 프로젝트 수준에서 역할을 바인딩한 경우 프로젝트 수준에서 repoReader 및 instanceAccessor을 바인딩하면 인스턴스의 모든 저장소에 대한 읽기 액세스 권한이 부여됩니다.
소스 작성자 매핑
저장소 수준에서 이 역할을 바인딩한 경우 저장소 리소스에 securesourcemanager.repoWriter를 바인딩하고 호스트 인스턴스에 securesourcemanager.instanceAccessor를 바인딩하여 동일한 수준의 액세스 권한을 다시 만듭니다. 프로젝트 수준에서 역할을 바인딩한 경우 프로젝트 수준에서 repoWriter 및 instanceAccessor을 바인딩하면 인스턴스의 모든 저장소에 대한 쓰기 액세스 권한이 부여됩니다.
소스.admin 매핑
이 역할은 프로젝트 수준에서만 바인딩합니다. 프로젝트 수준에서 securesourcemanager.instanceAccessor, securesourcemanager.repoAdmin, securesourcemanager.instanceRepoCreator, securesourcemanager.repoCreator의 조합을 바인딩하여 다시 만들 수 있습니다. 이 역할 조합은 프로젝트의 모든 인스턴스에서 저장소를 생성할 수 있는 권한을 부여하고, 관리자에게 프로젝트의 모든 인스턴스에 있는 모든 저장소에 대한 권한을 부여합니다. source.admin가 모든 CSR 권한을 부여한 것과 동일한 방식으로 모든 SSM 권한을 부여하려면 프로젝트 수준에서 슈퍼 사용자 역할 securesourcemanager.admin을 바인딩합니다.
SSM과 CSR의 차이점
이 섹션에서는 Cloud Source Repositories와 비교하여 Secure Source Manager가 역할과 권한을 처리하는 방식의 주요 변경사항을 간략하게 설명합니다.
암시적 역할 부여
새 저장소 리소스를 만들면 호출 주 구성원에게 새로 생성된 저장소 리소스에 대한 repoAdmin 역할이 자동으로 부여됩니다.
새 리소스 유형
SSM에는 CSR보다 많은 기능이 있으며 이러한 기능은 새로운 리소스 유형으로 모델링됩니다.
이러한 기능에는 문제 및 풀 요청에 대한 댓글 외에도 브랜치 보호 규칙, 후크, 문제, 풀 요청이 포함됩니다. 이러한 리소스는 저장소 리소스의 하위 요소입니다. 저장소 역할에는 이러한 리소스에 대한 권한이 포함됩니다.
예를 들어 repoAdmin 및 repoWriter은 쓰기 액세스 권한을 제공하는 반면 repoReader는 읽기 액세스 권한만 부여합니다.
세분화된 역할
SSM에는 특정 액세스 제어를 제공하는 세분화된 역할이 포함되어 있습니다.
roles/securesourcemanager.repoPullRequestApprover는 풀 요청을 승인할 권한만 부여합니다. 이 역할을repoReader및instanceAccessor와 함께 사용하여 사용자가 다른 데이터를 수정하지 않고 인스턴스에 액세스하고, 저장소를 탐색하고, 풀 요청을 승인하도록 허용합니다.roles/securesourcemanager.repoCreator는 프로젝트에서 저장소를 만들 수 있는 권한만 부여합니다. 저장소는 인스턴스에 연결해야 하므로 인스턴스에 저장소를 연결할roles/securesourcemanager.instanceRepoCreator도 있어야 합니다.instanceRepoCreator와 함께roles/securesourcemanager.repoCreator를 사용하여 저장소를 만들고 인스턴스에 연결할 권한을 부여합니다.