Service Management API 액세스 제어

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.disable 다음 프로젝트 권한: serviceusage.services.disable
services.enable 다음 프로젝트 권한: serviceusage.services.enable
다음 서비스 권한: servicemanagement.services.bind
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.delete
servicemanagement.services.create
servicemanagement.services.update
servicemanagement.services.bind
servicemanagement.services.check
servicemanagement.services.quota
servicemanagement.services.report
roles/owner roles/editor의 모든 권한 및

servicemanagement.services.setIamPolicy
servicemanagement.services.getIamPolicy
roles/servicemanagement.configEditor servicemanagement.services.get
servicemanagement.services.update
roles/servicemanagement.serviceConsumer servicemanagement.services.bind
roles/servicemanagement.serviceController servicemanagement.services.get
servicemanagement.services.check
servicemanagement.services.quota
servicemanagement.services.report

정책 관리

IAM은 정책을 계층적으로 평가합니다. 하위 리소스는 항상 상위 항목의 정책을 상속합니다. Service Management API의 경우, 각 관리형 서비스는 서비스 프로듀서 프로젝트의 하위 리소스입니다. 따라서 서비스 프로듀서 프로젝트에 부여된 역할은 프로젝트에 속한 모든 관리형 서비스에 적용됩니다. 프로젝트 수준에서 역할을 부여하는 방법은 정책 관리를 참조하세요.

개별 서비스의 IAM 정책을 관리할 수도 있습니다. 다음 섹션에서는 Google Cloud Console, Service Management API, Google Cloud SDK를 사용하여 서비스 수준 역할을 관리하는 방법을 설명합니다.

Google Cloud Console을 사용하여 액세스 관리

  1. Google Cloud Console에서 엔드포인트 페이지를 엽니다.

    엔드포인트 페이지 열기

  2. 액세스를 관리할 서비스를 클릭합니다.
  3. 페이지 상단에 있는 '권한' 링크를 클릭합니다. 클릭할 때마다 정보 패널이 표시되거나 숨겨집니다.
  4. 정보 패널에서 모든 서비스 수준 역할에 대해 현재 구성원의 목록을 보고, 새 구성원을 추가하고, 구성원을 삭제할 수 있습니다.

Cloud SDK를 사용하여 액세스 관리

Cloud SDK에는 관리형 서비스의 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