API로 역할 만들기

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

이 주제에서는 커스텀 역할을 만들고 관리 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에서 설정하세요.
  • free-api-product와 같은 특정 API 제품의 경우 /apiproducts/free-api-product에서 설정합니다.
  • 특정 환경의 키-값 맵의 경우 테스트 환경의 모든 키-값 맵에 /environments/test/keyvaluemaps/fooMap 또는 /environments/test/keyvaluemaps/* 등의 권한을 설정합니다.

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

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

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

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

구문 및 우선순위

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

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

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

  • /developers에 PUT
  • /developers/*에서 얻기

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

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

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

'개발'이라는 새 커스텀 역할을 만듭니다.

개발자가 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" } ] }'

개발 역할에 권한 추가

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

GET을 사용하면 사용자가 API 프록시 구성 파일, 관련 정책, 자바스크립트, 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 프록시 및 콘텐츠(예: 정책)를 볼 수 있도록 '테스트' 역할을 만듭니다.

$ 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을 사용하면 사용자는 구성 파일뿐 아니라 관련 정책, 자바스크립트, 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>는 에지 관리 서버의 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