Apigee 스페이스의 IAM 권한 계층 구조

이 페이지는 ApigeeApigee Hybrid에 적용됩니다.

Apigee Edge 문서 보기

이 페이지에서는 Apigee 스페이스를 사용할 때 Identity and Access Management(IAM) 권한 계층 구조가 Apigee API 리소스(API 프록시, 공유 흐름, API 제품)와 해당 하위 요소에 적용되는 방법을 설명합니다.

Apigee 스페이스와 IAM 상호작용

일반적으로 리소스에 대한 액세스를 제어하는 IAM 정책은 Google Cloud 리소스 계층 구조를 통해 상속됩니다. 특정 리소스에 적용되는 특정 IAM 정책에는 다음 두 가지가 모두 포함됩니다.

  • 리소스에 직접 적용된 모든 정책
  • 리소스가 상위 리소스에서 상속하는 모든 정책

Apigee의 리소스 및 권한 계층 구조

Apigee에서 리소스 계층 구조 최상위는 조직 리소스입니다. 조직의 하위 리소스에는 API 프록시, 공유 흐름, API 제품이 포함됩니다. 스페이스 없이 Apigee를 사용하는 경우 권한은 Apigee 조직 리소스와 직접적으로 연관된 Google Cloud 프로젝트에 적용됩니다. 따라서 지정된 API 프록시, 공유 흐름 또는 API 제품에 대한 액세스를 제어하는 IAM 정책에는 특정 리소스에 직접 적용되는 정책 외에도 조직에서 상속된 모든 정책이 포함됩니다.

스페이스의 리소스 및 권한 계층 구조

스페이스와 함께 Apigee를 사용하면 스페이스 리소스가 계층 구조에 추가됩니다. Apigee 조직에 API 프록시 3개(proxy-a, proxy-b, proxy-c)가 있다고 가정해 보겠습니다. 이 예시에서 proxy-bproxy-c는 각각 space-redspace-blue와 연결됩니다. API 리소스를 스페이스와 연결하면 리소스에 space 속성이 설정됩니다.

API를 호출하여 proxy-c 세부정보를 가져오면 API 엔드포인트에 실제 리소스 계층 구조가 반영됩니다. 여기서 API 프록시는 다음 예시와 같이 스페이스 속성이 있는 조직의 하위 요소입니다.

curl -X GET -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/org1/apis/proxy-c"
{
  "metaData": {
    "createdAt": "1725665197737",
    "lastModifiedAt": "1725665462105",
    "subType": "Proxy"
  },
  "name": "proxy-c",
  "revision": [
    "1"
  ],
  "apiProxyType": "PROGRAMMABLE",
  "space": "space-blue"
}

스페이스와 연결된 API 리소스에 대한 경로는 동일하게 유지되지만 유효한 IAM 권한 계층 구조는 변경됩니다. 예시 시나리오에서 IAM 권한 확인은 API 리소스가 스페이스의 하위 요소인 것처럼 작동합니다. 따라서 다음 그림과 같이 API 리소스에 적용되는 IAM 정책에는 스페이스에서 상속된 정책과 스페이스에 직접 적용된 정책이 모두 포함됩니다.

스페이스의 IAM 계층 구조
그림 1: 스페이스 사용 시 API 리소스의 유효한 IAM 권한 계층 구조

스페이스 리소스에 대한 IAM 정책 확인

이전 섹션의 설명처럼 API 프록시, 공유 흐름, API 제품이 스페이스와 연결되면 IAM 정책 확인 중에 스페이스의 하위 리소스로 취급됩니다. 이 유효 리소스 계층 구조는 API 프록시, 공유 흐름, API 제품의 모든 하위 항목에 적용됩니다.

예를 들어 API 제품 속성은 API 제품의 하위 리소스입니다. Apigee 스페이스 space-blue와 연결된 Apigee 조직 org1 내 API 제품 product-a의 모든 속성을 나열하려면 실제 리소스 경로는 GET organizations/org1/apiproduct/product-a/attributes입니다. 그러나 IAM 권한을 확인하는 경로는 organizations/org1/spaces/space-blue/apiproduct/product-a/attributes입니다.

배포에 대한 IAM 정책 확인

환경 리소스는 스페이스와 연결되어 있지 않습니다. 하지만 API 프록시 및 공유 흐름의 배포 및 디버그 세션에 대한 세분화된 액세스를 사용 설정하도록 일부 기존 API가 업데이트되었습니다.

스페이스의 리소스에 대한 다음 배포 작업의 IAM 권한 확인 변경사항은 다음에 설명되어 있습니다.

메서드 스페이스 IAM 권한 확인
organizations.deployments.list 변경사항 없음
organizations.apis.deployments.list organizations/$ORG/spaces/$SPACE/apis/$API에 대한 apigee.deployments.list
organizations.apis.revisions.deployments.list organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV에 대한 apigee.deployments.list
organizations.environments.deployments.list 변경사항 없음
organizations.environments.deployments.get 변경사항 없음
organizations.environments.apis.deployments.list organizations/$ORG/environments/$ENV
에 대한 apigee.deployments.list또는

organizations/$ORG/spaces/$SPACE/apis/$API

organizations.environments.apis.revisions.deployments.get organizations/$ORG/environments/$ENV에 대한 apigee.deployments.get

또는

organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV에 대한 apigee.deployments.get

organizations.environments.apis.revisions.deployments.deploy organizations/$ORG/environments/$ENV에 대한 apigee.deployments.create

AND

organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV에 대한 apigee.proxyrevisions.deploy

organizations.environments.apis.revisions.deployments.generateDeployChangeReport organizations/$ORG/environments/$ENV에 대한 apigee.deployments.create

AND

organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV에 대한 apigee.proxyrevisions.deploy

organizations.environments.apis.revisions.deployments.generateUndeployChangeReport organizations/$ORG/environments/$ENV에 대한 apigee.deployments.delete

AND

organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV에 대한 apigee.proxyrevisions.undeploy

organizations.environments.apis.revisions.deployments.undeploy organizations/$ORG/environments/$ENV에 대한 apigee.deployments.delete

AND

organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV에 대한 apigee.proxyrevisions.undeploy

organizations.environments.sharedflows.deployments.list organizations/$ORG/environments/$ENV에 대한 apigee.deployments.list
또는
organizations/$ORG/spaces/$SPACE/sharedflows/$SF에 대한 apigee.deployments.list
organizations.environments.sharedflows.revisions.deployments.deploy organizations/$ORG/environments/$ENV에 대한 apigee.deployments.create

AND

organizations/$ORG/spaces/$SPACE/sharedflow/$SF/revisions/$REV에 대한 apigee.sharedflowrevisions.deploy

organizations.environments.sharedflows.revisions.deployments.get organizations/$ORG/environments/$ENV에 대한 apigee.deployments.get

또는

에 대한 apigee.deployments.get

organizations/$ORG/spaces/$SPACE/sharedflows/$SF/revisions/$REV

organizations.environments.sharedflows.revisions.deployments.undeploy organizations/$ORG/environments/$ENV에 대한 apigee.deployments.delete

AND

organizations/$ORG/spaces/$SPACE/sharedflow/$SF/revisions/$REV에 대한 apigee.sharedflowrevisions.undeploy

organizations.sharedflows.deployments.list organizations/$ORG/spaces/$SPACE/sharedflows/$SF에 대한
apigee.deployments.list
organizations.sharedflows.revisions.deployments.list organizations/$ORG/spaces/$SPACE/sharedflows/$SF/revisions/$REV에 대한
apigee.deployments.list

디버그 세션 권한 확인

API 프록시가 스페이스와 연결된 경우 다음 표의 설명처럼 프록시의 디버그 세션에 대한 IAM 권한이 변경되었습니다.

메서드 스페이스 IAM 권한 확인
organizations.environments.apis.revisions.debugsessions.create organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV에 대한 apigee.tracesessions.create

AND

organizations/$ORG/environments/$ENV

organizations.environments.apis.revisions.debugsessions.get organizations/$ORG/environments/$ENV organizations/$ORG/spaces/$SPACE/apis/$API에 대한
apigee.tracesessions.get
organizations.environments.apis.revisions.debugsessions.deleteData organizations/$ORG/environments/$ENV에 대한 Apigee.tracesessions.delete
AND

에 대한 apigee.tracesessions.delete

organizations/$ORG/spaces/$SPACE/apis/$API

organizations.environments.apis.revisions.debugsessions.list organizations/$ORG/environments/$ENV에 대한 apigee.tracesessions.list

또는

organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV에 대한 apigee.tracesessions.list

organizations.environments.apis.revisions.debugsessions.data.get organizations/$ORG/environments/$ENV에 대한 apigee.tracesessions.get

AND

organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV에 대한 apigee.tracesessions.get

organizations.environments.apis.revisions.debugsessions.data.list organizations/$ORG/environments/$ENV에 대한 apigee.tracesessions.get

AND

organizations/$ORG/spaces/$SPACE/apis/$API에 대한 apigee.tracesessions.get