API로 역할 만들기

Apigee Edge 문서입니다.
Apigee X 문서로 이동
info

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

권한 설정 정보

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

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

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

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

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

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

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

문법 및 우선순위

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

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

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

  • /developers에 대한 PUT
  • /developers/*에 대한 GET

즉, 개발자 관리자는 다음 작업을 할 수 있습니다.

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

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

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

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

$ 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" } ] }'

개발 역할에 권한 추가

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

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

path 속성은 권한을 설정할 아티팩트를 지정합니다. 예를 들면 /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 프록시 및 해당 콘텐츠(예: 정책 포함)를 볼 수 있도록 '테스트' 역할을 만듭니다.

$ 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를 볼 수 있습니다. '테스트' 역할에 이 권한을 추가하면 품질 엔지니어가 테스트 중인 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 Management Server의 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 프록시를 만들도록 요청합니다. '테스트' 역할은 사용자에게 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"}'

개발 역할에 사용자 추가

이제 '개발' 역할로 사용자를 프로비저닝합니다.

$ 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 프록시를 만듭니다. '개발' 역할은 사용자가 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