Service Management API는 Identity and Access Management(Cloud IAM)를 사용하여 관리형 서비스와 해당 하위 리소스에 대한 액세스를 제어합니다. 이 페이지에서는 Service Management API에서 제공하는 IAM 리소스, 역할, 권한과 이를 사용하여 액세스를 제어하는 방법을 설명합니다.
IAM 리소스
IAM은 리소스에 IAM 정책을 적용하여 리소스에서 누가 어떤 작업을 수행할 수 있는지를 제어합니다. Service Management API는 다음과 같은 리소스를 사용하여 기능을 제공합니다.
다른 리소스를 사용하고 관리하려면 다른 권한이 필요합니다. 자세한 내용은 다음 섹션을 참조하세요.
IAM 권한
Service Management API를 호출하려면 호출자에게 대상 리소스에 필요한 IAM 권한이 있어야 합니다.
다음 표에는 서비스에 적용되는 권한이 나와 있습니다.
권한 | 설명 |
---|---|
servicemanagement.services.delete |
서비스를 삭제합니다. |
servicemanagement.services.get |
서비스를 읽습니다. |
servicemanagement.services.create |
프로젝트에서 새 서비스를 만듭니다. |
servicemanagement.services.list |
프로젝트에서 서비스를 나열합니다. |
servicemanagement.services.update |
서비스를 업데이트합니다. |
servicemanagement.services.bind |
호출자가 제어하는 프로젝트에서 서비스를 보고 사용 설정합니다. |
servicemanagement.services.setIamPolicy |
서비스에 대한 IAM 액세스 정책을 설정합니다. |
servicemanagement.services.getIamPolicy |
서비스에 대한 IAM 액세스 정책을 읽습니다. |
servicemanagement.services.check |
서비스 소비자 상태를 확인합니다. services.check를 참조하세요. |
servicemanagement.services.quota |
서비스 소비자의 할당량을 할당합니다. services.allocateQuota를 참조하세요. |
servicemanagement.services.report |
서비스 사용량을 보고합니다. services.report를 참조하세요. |
다음 표에서는 해당되는 각 Service Management API 메소드의 필수 권한을 보여줍니다. 이 정보는 API 참조에도 문서화되어 있습니다.
메서드 | 필수 권한 |
---|---|
services.delete |
지정된 service_name 에 대한 servicemanagement.services.delete |
services.get |
지정된 service_name 에 대한 servicemanagement.services.get |
services.getConfig |
지정된 service_name 에 대한 servicemanagement.services.get |
services.undelete |
지정된 service_name 에 대한 servicemanagement.services.delete |
services.configs.create |
지정된 service_name 에 대한 servicemanagement.services.update |
services.configs.get |
지정된 service_name 에 대한 servicemanagement.services.get |
services.configs.list |
지정된 service_name 에 대한 servicemanagement.services.get |
services.configs.submit |
지정된 service_name 에 대한 servicemanagement.services.update |
services.rollouts.create |
지정된 service_name 에 대한 servicemanagement.services.update |
services.rollouts.get |
지정된 service_name 에 대한 servicemanagement.services.get |
services.rollouts.list |
지정된 service_name 에 대한 servicemanagement.services.get |
IAM 역할
Identity and Access Management에서는 사용자를 역할에 바인딩하여 권한을 부여합니다. 자세한 내용은 역할 이해를 참조하세요.
다음 표에는 서비스에 적용되는 역할이 나와 있습니다.
역할 | 권한 |
---|---|
roles/viewer |
servicemanagement.services.get servicemanagement.services.list |
roles/editor |
roles/viewer 의 모든 권한 및servicemanagement.services.bind servicemanagement.services.check servicemanagement.services.create servicemanagement.services.delete servicemanagement.services.quota servicemanagement.services.report servicemanagement.services.update |
roles/owner |
roles/editor 의 모든 권한 및servicemanagement.services.getIamPolicy servicemanagement.services.setIamPolicy |
roles/servicemanagement.admin |
monitoring.timeSeries.list resourcemanager.folders.get resourcemanager.folders.list resourcemanager.organizations.get resourcemanager.projects.get resourcemanager.projects.list serviceconsumermanagement.consumers.get serviceconsumermanagement.quota.get serviceconsumermanagement.quota.update serviceconsumermanagement.tenancyu.addResource serviceconsumermanagement.tenancyu.create serviceconsumermanagement.tenancyu.delete serviceconsumermanagement.tenancyu.list serviceconsumermanagement.tenancyu.removeResource servicemanagement.services.bind servicemanagement.services.check servicemanagement.services.create servicemanagement.services.delete servicemanagement.services.get servicemanagement.services.getIamPolicy servicemanagement.services.list servicemanagement.services.quota servicemanagement.services.report servicemanagement.services.setIamPolicy servicemanagement.services.update serviceusage.quotas.get serviceusage.services.get |
roles/servicemanagement.configEditor |
servicemanagement.services.get servicemanagement.services.update |
roles/servicemanagement.reporter |
servicemanagement.services.report |
roles/servicemanagement.serviceConsumer |
servicemanagement.services.bind |
roles/servicemanagement.serviceController |
servicemanagement.services.check servicemanagement.services.get servicemanagement.services.quota servicemanagement.services.report |
정책 관리
IAM은 계층 구조적으로 정책을 평가합니다. 즉, 하위 리소스는 항상 상위 항목의 정책을 상속합니다. Service Management API의 경우, 각 관리형 서비스는 서비스 프로듀서 프로젝트의 하위 리소스입니다. 따라서 서비스 프로듀서 프로젝트에 부여된 역할은 프로젝트에 속한 모든 관리형 서비스에 적용됩니다. 프로젝트 수준에서 역할을 부여하는 방법은 정책 관리를 참조하세요.
개별 서비스의 IAM 정책을 관리할 수도 있습니다. 다음 섹션에서는 Google Cloud Console, Service Management API, Google Cloud CLI를 사용하여 서비스 수준 역할을 관리하는 방법을 설명합니다.
Google Cloud Console을 사용하여 액세스 관리
Google Cloud Console에서 엔드포인트 페이지를 엽니다.
- 액세스를 관리할 서비스를 클릭합니다.
- 페이지 상단에 있는 '권한' 링크를 클릭합니다. 클릭할 때마다 정보 패널이 표시되거나 숨겨집니다.
- 정보 패널에서 모든 서비스 수준 역할에 대해 현재 구성원의 목록을 보고, 새 구성원을 추가하고, 구성원을 삭제할 수 있습니다.
gcloud CLI를 사용하여 액세스 관리
gcloud CLI에는 관리형 서비스의 IAM 정책을 관리하는 gcloud endpoints services
명령어가 포함되어 있습니다.
endpoints services get-iam-policy
- 서비스의 IAM 정책을 표시합니다.
endpoints services check-iam-policy
- 서비스의 IAM 정책을 확인합니다.
endpoints services add-iam-policy-binding
- 구성원을 역할에 추가합니다.
endpoints services remove-iam-policy-binding
- 역할에서 구성원을 삭제합니다.
예를 들면 다음과 같습니다.
# Show the IAM policy of service "endpointsapis.appspot.com".
gcloud endpoints services get-iam-policy endpointsapis.appspot.com
# The above command may produce an output similar to this:
bindings:
- members:
- user:email1@gmail.com
- group:group1@googlegroups.com
role: roles/servicemanagement.serviceConsumer
# Add a user to "roles/servicemanagement.serviceConsumer" role.
gcloud endpoints services add-iam-policy-binding endpointsapis.appspot.com --member "user:email1@gmail.com" --role "roles/servicemanagement.serviceConsumer"
# Add a group to "roles/servicemanagement.serviceConsumer" role.
gcloud endpoints services add-iam-policy-binding endpointsapis.appspot.com --member "group:group1@googlegroups.com" --role "roles/servicemanagement.serviceConsumer"
# Remove a user from "roles/servicemanagement.serviceConsumer" role.
gcloud endpoints services remove-iam-policy-binding endpointsapis.appspot.com --member "user:email1@gmail.com" --role "roles/servicemanagement.serviceConsumer"
# Remove a group from "roles/servicemanagement.serviceConsumer" role.
gcloud endpoints services remove-iam-policy-binding endpointsapis.appspot.com --member "group:group1@googlegroups.com" --role "roles/servicemanagement.serviceConsumer"
Service Management API를 사용하여 액세스 관리
Service Management API에는 서비스 수준 정책과 소비자 수준 정책을 관리할 수 있는 IAM Policy API가 포함되어 있습니다. gcurl
명령어를 사용하여 API 메서드를 실험할 수 있습니다.
초기 설정 단계는 시작하기를 참조하세요.
예를 들면 다음과 같습니다.
# View the current IAM policy on service "endpointsapis.appspot.com".
gcurl -d '{}' https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com:getIamPolicy
# View the current IAM policy on service "endpointsapis.appspot.com" and consumer "12345".
gcurl -d '{}' https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/consumers/12345:getIamPolicy