Hierarquia de permissões do IAM no Apigee Spaces

Esta página se aplica à Apigee e à Apigee híbrida.

Confira a documentação da Apigee Edge.

Esta página descreve como as hierarquias de permissão do gerenciamento de identidade e acesso (IAM) são aplicadas aos recursos da API da Apigee (proxies de API, fluxos compartilhados e produtos de API) e aos filhos deles ao usar o Apigee Spaces.

Interação do IAM com o Apigee Spaces

Em geral, as políticas do IAM que regem o acesso a recursos são herdadas pela hierarquia de recursos Google Cloud . As políticas específicas do IAM que se aplicam a um determinado recurso incluem:

  • Todas as políticas aplicadas diretamente ao recurso
  • Todas as políticas que o recurso herda dos ancestrais

Hierarquia de recursos e permissões na Apigee

Na Apigee, o topo da hierarquia de recursos é o recurso organização. Os recursos filhos de uma organização incluem proxies de API, fluxos compartilhados e produtos de API. Quando você usa a Apigee sem o Spaces, as permissões são aplicadas ao projeto Google Cloud , que se correlaciona diretamente com o recurso da organização da Apigee. Como resultado, as políticas do IAM que regem o acesso a um determinado proxy de API, fluxo compartilhado ou produto de API incluem as políticas herdadas da organização, além das políticas aplicadas diretamente ao recurso específico.

Hierarquia de recursos e permissões com o Spaces

Quando você usa o Apigee com o Spaces, o recurso Space é adicionado à hierarquia. Considere um cenário em que uma organização da Apigee tem três proxies de API, proxy-a, proxy-b e proxy-c. Neste exemplo, proxy-b e proxy-c estão associados a space-red e space-blue, respectivamente. Quando você associa um recurso de API a um Space, o atributo space é definido no recurso.

Quando você faz uma chamada de API para receber os detalhes de proxy-c, o endpoint de API reflete a hierarquia de recursos real, em que o proxy de API é filho da organização com um atributo Space, conforme mostrado no exemplo a seguir:

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"
}

Embora o caminho para um recurso de API associado a um espaço permaneça o mesmo, a hierarquia de permissões do IAM muda. No nosso cenário de exemplo, as verificações de permissão do IAM vão funcionar como se o recurso da API fosse filho do espaço. Como resultado, as políticas do IAM que se aplicam ao recurso da API incluem as políticas herdadas do espaço, além de qualquer política aplicada diretamente ao espaço, conforme mostrado na figura a seguir:

Hierarquia do IAM para espaços
Figura 1: hierarquia de permissões do IAM eficaz para recursos de API ao usar o Spaces

Verificações da política do IAM para recursos do espaço

Como observado em uma seção anterior, quando os proxies, os fluxos compartilhados e os produtos de API são associados a um espaço, eles são tratados como recursos filhos do espaço durante as verificações de política do IAM. Essa hierarquia de recursos eficaz se aplica a todos os sub-subordinados de proxies de API, fluxos compartilhados e produtos de API.

Por exemplo, os atributos do produto da API são recursos filhos de um produto da API. Para listar todos os atributos do produto da API product-a na organização da Apigee org1, que é associado ao espaço da Apigee space-blue, o caminho do recurso real é GET organizations/org1/apiproduct/product-a/attributes. No entanto, o caminho verificado para permissões do IAM é organizations/org1/spaces/space-blue/apiproduct/product-a/attributes.

Verificações da política do IAM para implantações

O recurso Ambiente não está associado ao Spaces. No entanto, algumas APIs foram atualizadas para permitir o acesso refinado a implantações e sessões de depuração de proxies de API e fluxos compartilhados.

As mudanças nas verificações de permissão do IAM para as seguintes operações de implantação em recursos em um Espaço estão descritas abaixo:

Método Verificação de permissões do IAM do espaço
organizations.deployments.list Sem alterações
organizations.apis.deployments.list apigee.deployments.list em organizations/$ORG/spaces/$SPACE/apis/$API
organizations.apis.revisions.deployments.list apigee.deployments.list em organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV
organizations.environments.deployments.list Sem alterações
organizations.environments.deployments.get Sem alterações
organizations.environments.apis.deployments.list apigee.deployments.list em organizations/$ORG/environments/$ENV
OU

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

organizations.environments.apis.revisions.deployments.get apigee.deployments.get em organizations/$ORG/environments/$ENV

OU

apigee.deployments.get em organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

organizations.environments.apis.revisions.deployments.deploy apigee.deployments.create em organizations/$ORG/environments/$ENV

AND

apigee.proxyrevisions.deploy em organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

organizations.environments.apis.revisions.deployments.generateDeployChangeReport apigee.deployments.create em organizations/$ORG/environments/$ENV

AND

apigee.proxyrevisions.deploy em organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

organizations.environments.apis.revisions.deployments.generateUndeployChangeReport apigee.deployments.delete em organizations/$ORG/environments/$ENV

AND

apigee.proxyrevisions.undeploy em organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

organizations.environments.apis.revisions.deployments.undeploy apigee.deployments.delete em organizations/$ORG/environments/$ENV

AND

apigee.proxyrevisions.undeploy em organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

organizations.environments.sharedflows.deployments.list apigee.deployments.list em organizations/$ORG/environments/$ENV
OU
apigee.deployments.list em
organizations/$ORG/spaces/$SPACE/sharedflows/$SF
organizations.environments.sharedflows.revisions.deployments.deploy apigee.deployments.create em organizations/$ORG/environments/$ENV

AND

apigee.sharedflowrevisions.deploy em organizations/$ORG/spaces/$SPACE/sharedflow/$SF/revisions/$REV

organizations.environments.sharedflows.revisions.deployments.get apigee.deployments.get em organizations/$ORG/environments/$ENV

OU

apigee.deployments.get em

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

organizations.environments.sharedflows.revisions.deployments.undeploy apigee.deployments.delete em organizations/$ORG/environments/$ENV

AND

apigee.sharedflowrevisions.undeploy em organizations/$ORG/spaces/$SPACE/sharedflow/$SF/revisions/$REV

organizations.sharedflows.deployments.list apigee.deployments.list em
organizations/$ORG/spaces/$SPACE/sharedflows/$SF
organizations.sharedflows.revisions.deployments.list apigee.deployments.list em
organizations/$ORG/spaces/$SPACE/sharedflows/$SF/revisions/$REV

Verificações de permissão para sessões de depuração

Se um proxy de API estiver associado a um Space, as verificações de permissão do IAM para as sessões de depuração do proxy vão mudar, conforme descrito na tabela a seguir:

Método Verificação de permissões do IAM do espaço
organizations.environments.apis.revisions.debugsessions.create apigee.tracesessions.create em organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

AND

organizations/$ORG/environments/$ENV

organizations.environments.apis.revisions.debugsessions.get apigee.tracesessions.get em organizations/$ORG/environments/$ENV
E organizations/$ORG/spaces/$SPACE/apis/$API
organizations.environments.apis.revisions.debugsessions.deleteData apigee.tracesessions.delete em organizations/$ORG/environments/$ENV
AND

apigee.tracesessions.delete em

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

organizations.environments.apis.revisions.debugsessions.list apigee.tracesessions.list em organizations/$ORG/environments/$ENV

OU

apigee.tracesessions.list em organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

organizations.environments.apis.revisions.debugsessions.data.get apigee.tracesessions.get em organizations/$ORG/environments/$ENV

AND

apigee.tracesessions.get em organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

organizations.environments.apis.revisions.debugsessions.data.list apigee.tracesessions.get em organizations/$ORG/environments/$ENV

E

apigee.tracesessions.get em organizations/$ORG/spaces/$SPACE/apis/$API