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ões do Identity and Access Management (IAM) são aplicadas aos recursos de 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 aos recursos são herdadas pela Google Cloud hierarquia de recursos. As políticas específicas do IAM que se aplicam a um determinado recurso incluem o seguinte:

  • 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 o Apigee sem o Spaces, as permissões são aplicadas ao projeto Google Cloud , que se correlaciona diretamente com o recurso da organização do 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 todas 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 os espaços

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 real de recursos, em que o proxy de API é filho da organização com um atributo de espaço, 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 efetiva muda. No nosso cenário de exemplo, as verificações de permissão do IAM vão se comportar como se o recurso da API fosse um filho do espaço. Como resultado, as políticas do IAM aplicadas ao recurso de API incluem as políticas herdadas do espaço, além de todas as políticas aplicadas diretamente ao espaço, conforme mostrado na figura a seguir:

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

Verificações de políticas do IAM para recursos do espaço

Como observado em uma seção anterior, quando proxies de API, fluxos compartilhados e 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 efetiva se aplica a todos os subelementos 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 está associada ao espaço da Apigee space-blue, o caminho real do recurso é 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 de política do IAM para implantações

O recurso Environment não está associado aos Spaces. No entanto, algumas APIs atuais foram atualizadas para permitir acesso refinado a implantações e sessões de depuração para 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 de um espaço estão descritas abaixo:

Método Verificação de permissão 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
OR

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
OR
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 serão alteradas, conforme descrito na tabela a seguir:

Método Verificação de permissão 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
AND 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