API로 역할 만들기

Apigee Edge 문서입니다.
Go to the Apigee X 문서로 이동합니다.
info

이 주제에서는 관리 API를 통해 커스텀 역할을 만들고 사용자에게 역할을 할당하는 방법을 설명합니다. 또한 API를 통해 역할 할당을 테스트하는 방법도 보여줍니다. (커스텀 역할 개요는 UI에서 커스텀 역할 만들기를 참고하세요.)

권한 설정 정보

역할 권한은 관리 UI URI가 아닌 관리 API URI에 설정됩니다. 예를 들어 Edge 조직의 앱 개발자 항목에 PUT, GET 또는 DELETE 권한을 설정하려면 개발자의 관리 API 경로는 https://api.enterprise.apigee.com/v1/organizations/{org_name}/developers이므로 /developers 리소스에 권한을 설정합니다. (이 주제의 관리 API 호출에서 설명하는 것처럼 권한은 특정 조직으로 범위가 지정되므로 권한을 정의할 때 경로의 조직 부분을 포함할 필요가 없습니다.)

특정 항목에 권한을 설정할 수도 있습니다. 예를 들면 다음과 같습니다.

  • 단일 개발자에 대한 권한을 설정하려면 /developers/steve@example.com에 설정합니다.
  • 무료 API 제품과 같은 특정 API 제품의 경우 에 설정합니다./apiproducts/free-api-product
  • 특정 환경의 키-값 맵의 경우 /environments/test/keyvaluemaps/fooMap과 같은 항목에 권한을 설정하거나 테스트 환경의 모든 키-값 맵에 대해 /environments/test/keyvaluemaps/*에 권한을 설정합니다.

API를 사용하여 설정하는 권한은 다음과 같습니다.

  • 커스텀 역할의 사용자가 권한에 따라 관리 API 호출을 하도록 허용합니다. 예를 들어 역할에서 모든 API 프록시에 대한 읽기 전용 액세스를 허용하는 경우 해당 역할의 사용자는 API 프록시 나열 API를 사용할 수 있지만 API 프록시 만들기 API는 사용할 수 없습니다.
  • 커스텀 역할의 사용자가 관리 UI에서 보고 실행할 수 있는 작업을 결정합니다. 예를 들어 API 프록시에 대한 읽기 전용 액세스는 API 프록시 페이지에서 +API 프록시 및 삭제 버튼에 대한 액세스를 사용 중지합니다.

권한을 설정할 수 있는 리소스 및 경로를 보려면 다양한 리소스 URL에서 관리 API 참조를 살펴보세요.

역할 관리에 대한 전체 참조 정보는 사용자 역할 API를 참고하세요.

구문 및 우선순위

별표 와일드 카드 (*)를 사용하여 권한 설정에서 '다음에 오는 모든 항목'을 나타낼 수 있습니다. 하지만 더 구체적인 권한(/developers/* 등)을 설정하지 않고 상위 리소스(/developers 등)에만 권한을 설정하면 권한이 /developers부터 그 이후의 모든 항목에 적용됩니다.

PUT은 권한에서 POST 역할도 합니다.

리소스에 일반 권한과 더 세분화된 권한을 혼합할 수 있습니다. 권한이 겹치는 경우 더 세분화된 설정 이 우선 적용됩니다. 예를 들어 'developeradmin' 역할에 다음과 같은 권한이 설정되어 있다고 가정해 보겠습니다.

  • /developers에 PUT
  • /developers/*에 GET

즉, developeradmin은 다음 작업을 할 수 있습니다.

  • 개발자를 만들 수 있지만 특정 개발자 또는 하위 항목은 업데이트할 수 없습니다 (해당 경로에 더 구체적인 GET 권한이 있기 때문).
  • 모든 개발자 목록을 가져오는 것은 아니지만 개발자 또는 하위 항목을 가져올 수 있습니다.

API로 설정할 수 있는 권한의 전체 목록은 권한 참조를 참고하세요.

'development'라는 새 커스텀 역할 만들기

개발자가 API 프록시를 보고, 만들고, 업데이트할 수 있도록 'development' 역할을 만듭니다.

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles -H "Content-type:application/json" -X POST -d'{ "role" : [ { "name" : "development" } ] }'

개발 역할에 권한 추가

전체 Edge 아티팩트 그룹(/apps, /apis, /apiproducts 등)과 개별 아티팩트 (예: 특정 앱, API 프록시 또는 API 제품)에 설정할 수 있는 권한은 GET, PUT, DELETE입니다.

GET을 사용하면 사용자가 API 프록시 구성 파일, 연결된 정책, JavaScript, XSLT 파일 등을 비롯한 모든 API를 볼 수 있습니다. API에 대한 PUT 권한을 사용하면 개발자가 API 프록시를 만들고, 수정하고, 가져오고, 내보내고, 배포하고, 배포 취소할 수 있습니다.

경로 속성은 권한을 설정하는 아티팩트를 지정합니다. 예를 들어 /applications, /apps, /apiproducts, /developers 또는 /reports입니다.

curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles/development/permissions -H "Content-type:application/json" -X POST -d'{"path" : "/applications","permissions" : [ "put", "get" ]}'

역할 만들기: 테스트

품질 엔지니어가 API 프록시 및 콘텐츠 (예: 정책)를 볼 수 있도록 'testing' 역할을 만듭니다.

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles -H "Content-type:application/json" -X POST -d'{ "role" : [ { "name" : "testing" } ] }'

테스트 역할에 권한 추가

GET을 사용하면 사용자가 구성 파일, 연결된 정책, JavaScript, XSLT 파일 등을 비롯한 모든 API를 볼 수 있습니다. 'testing' 역할에 이 권한을 추가하면 품질 엔지니어가 테스트 중인 API의 콘텐츠를 볼 수 있습니다. 하지만 이 역할의 사용자는 API 프록시를 만들고, 수정하고, 가져오고, 내보내고, 배포하고 배포 취소할 수 없습니다.

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles/testing/permissions -H "Content-type:application/json" -X POST -d'{"path" : "/applications","permissions" : [ "get" ]}'

Edge의 온프레미스 설치의 경우 사용자가 Edge UI에 로그인할 수 있도록 설정해야 하는 최소 권한 집합은 다음과 같습니다:

{"path" : "/","permissions" : [ "get" ]}
{"path" : "/*","permissions" : [ ]}
{"path" : "/environments","permissions" : [ "get" ]}
{"path" : "/userroles","permissions" : [ "get" ]}

다음 cURL 명령어를 사용하여 이러한 권한을 설정합니다.

curl -H "Content-Type:application/json" -u email:password \
-X POST \
http://<ms-IP>:8080/v1/organizations/{org_name}/userroles/testing/resourcepermissions  \
-d '{
 "resourcePermission" : [ 
   {
    "path" : "/",
    "permissions" : [ "get" ]
   }, 
{
    "path" : "/*",
    "permissions" : []
   },
{
    "path" : "/environments",
    "permissions" : [ "get" ]
   },
   {
    "path" : "/userroles",
    "permissions" : [ "get"]
   }
  ]
}'

여기서 <ms-IP> 는 Edge 관리 서버의 IP 주소 또는 DNS 이름입니다.

테스트 역할에 사용자 추가

사용자에게 사용자 역할을 프로비저닝하려면 다음 안내를 따르세요.

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/users/justauser@apigee.com/userroles -H "Content-type:application/json" -X POST -d'{"role" : [ {"name" : "testing"} ] }'

사용자로 API 보기

사용자를 가장하고 API 서비스에 API 프록시를 보라는 요청을 합니다. 사용자는 콘텐츠와 함께 API를 볼 수 있어야 합니다.
$ curl -u justauser@apigee.com:secret https://api.enterprise.apigee.com/v1/o/{org_name}/apis
$ curl -u justauser@apigee.com:secret https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/policies

테스트 역할의 사용자로 API 만들기

사용자를 가장하고 API 서비스에 API 프록시를 만들라는 요청을 합니다. 역할 'testing'에서는 사용자가 API를 만들 수 없으므로 API 서비스에서 요청이 거부됩니다.

$ curl -u justauser@apigee.com:secret -H "Content-Type: application/json" https://api.enterprise.apigee.com/v1/o/{org_name}/apis -X POST -d'{"name" : "rbacTestApi"}'

개발 역할에 사용자 추가

이제 사용자에게 'development' 역할을 프로비저닝합니다.

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/users/justauser@apigee.com/userroles -H "Content-type:application/json" -X POST -d'{"role" : [ {"name" : "development"} ] }'

개발 역할의 사용자로 API 만들기

사용자를 가장하고 API 플랫폼에 API 프록시를 만들라는 요청을 반복합니다. 역할 'development'에서는 사용자가 API를 만들 수 있으므로 요청이 성공합니다.

$ curl -u justauser@apigee.com:secret -H "Content-Type: application/json" https://api.enterprise.apigee.com/v1/o/{org_name}/apis -X POST -d'{"name" : "rbacTestApi"}'

사용자의 사용자 역할 가져오기

조직 관리자는 언제든지 모든 조직에서 사용자의 사용자 역할 목록을 확인할 수 있습니다.

$ curl -u email:password -X GET https://api.enterprise.apigee.com/v1/users/justauser@apigee.com/userroles