이 페이지에서는 Secure Source Manager 리소스의 주 구성원에게 Identity and Access Management (IAM) 역할을 부여하는 방법을 설명합니다. 다른 Google Cloud 리소스에 대한 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참고하세요.
Secure Source Manager 인스턴스와 저장소에는 자체 역할이 있습니다. 프로젝트에서 인스턴스 역할을 처음 부여할 때는 gcloud CLI 도구 또는 REST API를 사용해야 합니다. gcloud CLI 도구, REST API 또는 Secure Source Manager 웹 인터페이스를 통해 저장소 역할을 부여할 수 있습니다.
gcloud CLI, 웹 인터페이스 또는 REST API를 사용하여 Secure Source Manager 역할을 부여하면 Google Cloud 콘솔에서 프로젝트에 역할이 표시됩니다.
필요한 역할
인스턴스 또는 저장소의 IAM 정책을 업데이트하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
인스턴스 IAM 역할 부여:
Secure Source Manager 인스턴스에 Secure Source Manager 인스턴스 소유자 (
roles/securesourcemanager.instanceOwner
) 역할 부여 -
저장소 IAM 역할 부여: 저장소에 대한 Secure Source Manager 저장소 관리자 (
roles/securesourcemanager.repoAdmin
) 역할
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
Secure Source Manager 역할 부여에 대한 자세한 내용은 IAM으로 액세스 제어 및 사용자에게 인스턴스 액세스 권한 부여를 참고하세요.
주 구성원 지정
주 구성원은 리소스에 액세스할 수 있는 ID를 나타냅니다. 주 구성원마다 고유 식별자가 있습니다. 주 구성원 식별자는 다음 형식을 취합니다.
PRINCIPAL-TYPE:ID
예를 들면 user:my-user@example.com
입니다. 주 구성원에 대한 자세한 내용은 IAM 작동 방식을 참고하세요.
주 구성원 유형 user
의 경우 직원 ID 제휴를 사용하지 않는 한 식별자의 도메인 이름은 Google Workspace 도메인 또는 Cloud ID 도메인이어야 합니다. Cloud ID 도메인을 설정하는 방법을 알아보려면 Cloud ID 개요를 참고하세요.
직원 ID 제휴 보안 주체
직원 ID 제휴를 사용하여 Secure Source Manager에 액세스하는 경우 주 구성원이 다르게 표시됩니다. ID 그룹을 나타내는 주 구성원에 대한 액세스 권한 부여에 대해 자세히 알아보려면 IAM 정책에서 직원 풀 사용자 표현을 참고하세요.
예를 들어 다음 명령어는 us-central1
리전의 my-project
프로젝트에 있는 인스턴스 my-instance
의 워크포스 풀 my-pool
에 대해 사용자 user@example.com
에게 인스턴스 액세스 권한 역할 (roles/securesourcemanager.instanceAccessor
)을 부여합니다.
gcloud beta source-manager instances add-iam-policy-binding my-instance \
--project=my-project \
--region=us-central1 \
--member=principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com \
--role=roles/securesourcemanager.instanceAccessor
ID 공급자 (IdP) 속성을 기반으로 직원 ID 풀 내의 사용자 또는 그룹에 권한을 부여하거나 Common Expression Language (CEL)을 사용하여 OIDC 속성을 커스텀 속성에 매핑하여 IAM 정책에서 승인 전략을 정의할 수 있습니다. 속성 매핑에 대한 자세한 내용은 속성 매핑을 참고하세요.
인스턴스 역할 부여 또는 취소
인스턴스 역할을 부여하거나 취소하려면 읽기-수정-쓰기 패턴을 사용하여 리소스의 허용 정책을 업데이트합니다.
getIamPolicy()
를 호출하여 현재 허용 정책을 읽습니다.- 텍스트 편집기를 사용하거나 프로그래매틱 방식으로 허용 정책을 수정하여 주 구성원 또는 역할 바인딩을 추가하거나 삭제합니다.
setIamPolicy()
를 호출하여 업데이트된 허용 정책을 작성합니다.
gcloud
현재 허용 정책을 읽고
/tmp/instances.json
에 저장하려면 다음 명령어를 실행합니다.gcloud beta source-manager instances get-iam-policy INSTANCE_ID \ --project=PROJECT_ID \ --region=REGION \ --format=json > /tmp/instance.json
다음을 바꿉니다.
INSTANCE_ID
을 인스턴스 ID로 바꿉니다.PROJECT_ID
를 인스턴스의 프로젝트 ID 또는 프로젝트 번호로 바꿉니다.REGION
을 인스턴스가 있는 리전으로 바꿉니다. 사용 가능한 Secure Source Manager 리전은 위치 문서를 참고하세요.
출력에는 기존 바인딩이 포함되며, 바인딩이 없는 경우 다음과 비슷한
etag
값이 포함됩니다.{ "etag": "BwUjHYKJUiQ=" }
특정 사용자에게 역할을 부여하거나 이 사용자의 역할을 취소하려면 프로그래매틱 방식으로 또는 텍스트 편집기를 사용하여 인스턴스 허용 정책의 로컬 복사본을 수정합니다.
다른 변경사항을 덮어쓰지 않게 하려면 허용 정책의
etag
필드를 수정하거나 삭제하지 마세요.etag
필드는 허용 정책의 현재 상태를 식별합니다. 업데이트된 허용 정책을 설정하면 IAM은 요청에 있는etag
값을 기존etag
와 비교하고 값이 일치하는 경우에만 허용 정책에 기록합니다.허용 정책이 부여하는 역할을 수정하려면 허용 정책에서 역할 바인딩을 수정해야 합니다. 역할 바인딩의 형식은 다음과 같습니다.
{ "role": "ROLE_NAME", "members": [ "PRINCIPAL_1", "PRINCIPAL_2", ... "PRINCIPAL_N" ] }
자리표시자의 값은 다음과 같습니다.
ROLE_NAME
: 부여할 역할의 이름입니다. 다음 형식을 사용합니다.roles/securesourcemanager.IDENTIFIER
PRINCIPAL_1
,PRINCIPAL_2
,...PRINCIPAL_N
: 역할을 부여할 주 구성원의 식별자입니다.
예를 들어 다음 정책은
instanceOwner
역할을user1@gmail.com
에 부여하고instanceManager
역할을 사용자user2@gmail.com
,user3@gmail.com
, 서비스 계정my-other-app@appspot.gserviceaccount.com
에 부여합니다.{ "etag": "BwUjHYKJUiQ=", "bindings": [ { "role": "roles/securesourcemanager.instanceOwner", "members": [ "user:user1@gmail.com" ] }, { "role": "roles/resourcemanager.instanceManager", "members": [ "user:user2@gmail.com", "user:user3@gmail.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] } ] }
선택한 역할을 부여하고 취소하도록 저장된 허용 정책을 수정한 후 다음 명령어를 실행하여 인스턴스 허용 정책을 업데이트합니다.
gcloud beta source-manager instances set-iam-policy INSTANCE_ID \ --project=PROJECT_ID \ --region=REGION \ /tmp/instance.json
다음을 바꿉니다.
INSTANCE_ID
을 인스턴스 ID로 바꿉니다.PROJECT_ID
를 인스턴스의 프로젝트 ID 또는 프로젝트 번호로 바꿉니다.REGION
을 인스턴스가 있는 리전으로 바꿉니다. 사용 가능한 Secure Source Manager 리전은 위치 문서를 참고하세요.
API
다음
instances.getIamPolicy
명령어를 실행하여 현재 정책을 읽습니다.curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID:getIamPolicy > /tmp/instance.json
다음을 바꿉니다.
PROJECT_ID
인스턴스의 프로젝트 ID 또는 프로젝트 번호REGION
인스턴스가 있는 리전입니다. 사용 가능한 Secure Source Manager 리전은 위치 문서를 참고하세요.INSTANCE_ID
: 인스턴스 ID
출력에는 기존 바인딩이 포함되며, 바인딩이 없는 경우 다음과 유사한
etag
값이 포함됩니다.{ "etag": "BwUjHYKJUiQ=" }
특정 사용자에게 역할을 부여하거나 이 사용자의 역할을 취소하려면 프로그래매틱 방식으로 또는 텍스트 편집기를 사용하여 인스턴스 허용 정책의 로컬 복사본을 수정합니다.
다른 변경사항을 덮어쓰지 않게 하려면 허용 정책의
etag
필드를 수정하거나 삭제하지 마세요.etag
필드는 허용 정책의 현재 상태를 식별합니다. 업데이트된 허용 정책을 설정하면 IAM은 요청에 있는etag
값을 기존etag
와 비교하고 값이 일치하는 경우에만 허용 정책에 기록합니다.허용 정책이 부여하는 역할을 수정하려면 허용 정책에서 역할 바인딩을 수정해야 합니다. 역할 바인딩의 형식은 다음과 같습니다.
{ "role": "ROLE_NAME", "members": [ "PRINCIPAL_1", "PRINCIPAL_2", ... "PRINCIPAL_N" ] }
자리표시자의 값은 다음과 같습니다.
ROLE_NAME
: 부여할 역할의 이름입니다. 다음 형식을 사용합니다.roles/securesourcemanager.IDENTIFIER
PRINCIPAL_1
,PRINCIPAL_2
,...PRINCIPAL_N
: 역할을 부여할 주 구성원의 식별자입니다.
예를 들어 다음 정책은
instanceOwner
역할을user1@gmail.com
에 부여하고instanceManager
역할을 사용자user2@gmail.com
,user3@gmail.com
, 서비스 계정my-other-app@appspot.gserviceaccount.com
에 부여합니다.{ "policy": { "etag": "BwUjHYKJUiQ=", "bindings": [ { "role": "roles/securesourcemanager.instanceOwner", "members": [ "user:user1@gmail.com" ] }, { "role": "roles/resourcemanager.instanceManager", "members": [ "user:user2@gmail.com", "user:user3@gmail.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] } ] } }
선택한 역할을 부여하고 취소하도록 허용 정책을 수정한 다음에는
instances.setIamPolicy()
를 호출하여 업데이트를 수행합니다.다음
instances.setIamPolicy
명령어를 사용하여 인스턴스에 새 정책을 설정합니다.curl \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID:setIamPolicy \ -d @/tmp/instance.json
다음을 바꿉니다.
PROJECT_ID
인스턴스의 프로젝트 ID 또는 프로젝트 번호입니다.REGION
인스턴스가 있는 리전입니다. 사용 가능한 Secure Source Manager 리전은 위치 문서를 참고하세요.INSTANCE_ID
: 인스턴스 ID
저장소 역할 부여 또는 취소
사용자 및 서비스 계정에 저장소 역할을 부여하거나 취소하려면 Secure Source Manager 웹 인터페이스에서 역할을 할당하거나 Secure Source Manager API를 사용하여 저장소 허용 정책을 업데이트하면 됩니다. 그룹에 저장소 역할을 부여하려면 Secure Source Manager API를 사용해야 합니다.
사용자에게 저장소 역할을 부여하려면 먼저 인스턴스 역할을 부여해야 합니다. 인스턴스 역할 부여에 대한 자세한 내용은 인스턴스 역할 부여 또는 취소를 참고하세요.
웹 인터페이스
웹 인터페이스를 사용하여 사용자 또는 서비스 계정에 저장소 수준 역할을 부여하려면 다음 단계를 따르세요.
- Google 담당자가 제공한 인스턴스 URL로 이동합니다.
- 내 저장소 페이지에서 저장소를 선택합니다.
- 권한 탭을 클릭합니다.
- 사용자 및 권한 섹션에서 사용자 추가를 클릭합니다.
- 주 구성원 추가 필드에 역할을 부여할 사용자 또는 서비스 계정의 이메일을 입력합니다.
- 역할 할당 메뉴에서 할당할 역할을 선택합니다.
- 저장을 클릭합니다.
역할을 추가하려면 수정 수정 아이콘을 클릭하고 역할 할당 메뉴를 사용하여 역할을 추가합니다.
API
Secure Source Manager API repositories.getIamPolicy
메서드는 저장소의 허용 정책을 가져옵니다.
- 다음
repositories.getIamPolicy
명령어를 실행하여 현재 정책을 읽고/tmp/repository.json
에 저장합니다.
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://securesourcemanager.googleapis.com/v1/projects/REPOSITORY_PROJECT/locations/REGION/repositories/REPOSITORY_ID:getIamPolicy > /tmp/repository.json
다음을 바꿉니다.
REPOSITORY_PROJECT
저장소의 프로젝트 ID 또는 프로젝트 번호입니다.REGION
저장소가 있는 리전입니다.REPOSITORY_ID
: 저장소 ID
출력에는 기존 바인딩이 포함되며, 바인딩이 없는 경우 다음과 유사한 etag
값이 포함됩니다.
{
"etag": "BwUjHYKJUiQ="
}
/tmp/repository.json
에 저장된 저장소의 허용 정책 로컬 복사본을 프로그래매틱 방식으로 또는 텍스트 편집기를 사용하여 수정하여 부여하거나 취소할 역할을 반영합니다.다른 변경사항을 덮어쓰지 않게 하려면 허용 정책의
etag
필드를 수정하거나 삭제하지 마세요.etag
필드는 허용 정책의 현재 상태를 식별합니다. 업데이트된 허용 정책을 설정하면 IAM은 요청에 있는etag
값을 기존etag
와 비교하고 값이 일치하는 경우에만 허용 정책에 기록합니다.허용 정책이 부여하는 역할을 수정하려면 허용 정책에서 역할 바인딩을 수정해야 합니다. 역할 바인딩의 형식은 다음과 같습니다.
{ "role": "ROLE_NAME", "members": [ "PRINCIPAL_1", "PRINCIPAL_2", ... "PRINCIPAL_N" ] }
자리표시자의 값은 다음과 같습니다.
ROLE_NAME
: 부여할 역할의 이름입니다. 다음 형식을 사용합니다.roles/securesourcemanager.<var>IDENTIFIER</var>
PRINCIPAL_1
,PRINCIPAL_2
,...PRINCIPAL_N
: 역할을 부여할 주 구성원의 식별자입니다.
다음 예에서는 사용자
email1@gmail.com
에repoAdmin
역할을 부여하고 사용자email2@gmail.com
,group1@gmail.com
, 서비스 계정my-other-app@appspot.gserviceaccount.com
에repoWriter
역할을 부여합니다.{ "policy": { "etag": "BwUjHYKJUiQ=", "bindings": [ { "role": "roles/securesourcemanager.repoAdmin", "members": [ "user:email1@gmail.com" ] }, { "role": "roles/resourcemanager.repoWriter", "members": [ "user:email2@gmail.com", "group:group1@gmail.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] } ] } }
수정된
/tmp/repository.json
파일을 저장합니다.setIamPolicy
명령어를 사용하여 새 정책을 설정합니다.curl \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://securesourcemanager.googleapis.com/v1/projects/REPOSITORY_PROJECT/locations/REGION/repositories/REPOSITORY_ID:setIamPolicy \ -d @/tmp/repository.json
다음을 바꿉니다.
REPOSITORY_PROJECT
저장소의 프로젝트 ID 또는 프로젝트 번호입니다.REGION
저장소가 있는 리전입니다. 사용 가능한 Secure Source Manager 리전은 위치 문서를 참고하세요.REPOSITORY_ID
: 저장소 ID
다음 단계
- Secure Source Manager의 IAM을 사용한 액세스 제어에 대해 자세히 알아보세요.