Hiérarchie des autorisations IAM dans Apigee Spaces

Cette page s'applique à Apigee et à Apigee hybrid.

Consultez la documentation d' Apigee Edge.

Cette page décrit comment les hiérarchies d'autorisations Identity and Access Management (IAM) sont appliquées aux ressources d'API Apigee (proxys d'API, flux partagés et produits d'API) et à leurs enfants lorsque vous utilisez Apigee Spaces.

Interaction d'IAM avec Apigee Spaces

En général, les stratégies IAM régissant l'accès aux ressources sont héritées via la hiérarchie des ressources Google Cloud . Les stratégies IAM spécifiques qui s'appliquent à une ressource donnée incluent les éléments suivants :

  • Toutes les règles directement appliquées à la ressource
  • Toutes les règles que la ressource hérite de ses ancêtres

Hiérarchie des ressources et des autorisations dans Apigee

Dans Apigee, le sommet de la hiérarchie des ressources est la ressource organization. Les ressources enfants d'une organisation incluent les proxys d'API, les flux partagés et les produits d'API. Lorsque vous utilisez Apigee sans Spaces, les autorisations sont appliquées au projet Google Cloud , qui correspond directement à la ressource d'organisation Apigee. Par conséquent, les règles IAM régissant l'accès à un proxy d'API, un flux partagé ou un produit d'API donnés incluent toutes les règles héritées de l'organisation, en plus de celles directement appliquées à la ressource spécifique.

Hiérarchie des ressources et des autorisations avec les espaces

Lorsque vous utilisez Apigee avec Spaces, la ressource "Space" est ajoutée à la hiérarchie. Prenons l'exemple d'une organisation Apigee comportant trois proxys d'API : proxy-a, proxy-b et proxy-c. Dans cet exemple, proxy-b et proxy-c sont respectivement associés à space-red et space-blue. Lorsque vous associez une ressource d'API à un espace, l'attribut space est défini sur la ressource.

Lorsque vous effectuez un appel d'API pour obtenir les détails de proxy-c, votre point de terminaison d'API reflète la hiérarchie des ressources réelles, où le proxy d'API est un enfant de l'organisation avec un attribut "Space", comme illustré dans l'exemple suivant :

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

Bien que le chemin d'accès à une ressource d'API associée à un espace reste le même, la hiérarchie des autorisations IAM effectives change. Dans notre scénario d'exemple, les vérifications des autorisations IAM se comportent comme si la ressource d'API était un enfant de l'espace. Par conséquent, les stratégies IAM qui s'appliquent à la ressource API incluent celles héritées de l'espace, en plus de celles directement appliquées à l'espace, comme illustré dans la figure suivante :

Hiérarchie IAM pour les espaces
Figure 1 : Hiérarchie des autorisations IAM effectives pour les ressources d'API lorsque vous utilisez des espaces

Vérifications des stratégies IAM pour les ressources Space

Comme indiqué dans une section précédente, lorsque des proxys d'API, des flux partagés et des produits d'API sont associés à un espace, ils sont traités comme des ressources enfants de l'espace lors des vérifications des règles IAM. Cette hiérarchie de ressources effective s'applique à tous les sous-enfants des proxys d'API, des flux partagés et des produits d'API.

Par exemple, les attributs de produit d'API sont des ressources enfants d'un produit d'API. Pour lister tous les attributs du produit d'API product-a dans l'organisation Apigee org1, qui est associée à l'espace Apigee space-blue, le chemin d'accès à la ressource est GET organizations/org1/apiproduct/product-a/attributes. Toutefois, le chemin d'accès pour lequel les autorisations IAM sont vérifiées est organizations/org1/spaces/space-blue/apiproduct/product-a/attributes.

Vérifications des stratégies IAM pour les déploiements

La ressource Environment n'est pas associée aux espaces. Toutefois, certaines API existantes ont été mises à jour pour permettre un accès précis aux déploiements et aux sessions de débogage pour les proxys d'API et les flux partagés.

Les modifications apportées aux vérifications des autorisations IAM pour les opérations de déploiement suivantes sur les ressources d'un espace sont décrites ci-dessous :

Méthode Vérification des autorisations IAM pour les espaces
organizations.deployments.list Aucune modification
organizations.apis.deployments.list apigee.deployments.list sur organizations/$ORG/spaces/$SPACE/apis/$API
organizations.apis.revisions.deployments.list apigee.deployments.list sur organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV
organizations.environments.deployments.list Aucune modification
organizations.environments.deployments.get Aucune modification
organizations.environments.apis.deployments.list apigee.deployments.list sur organizations/$ORG/environments/$ENV
OU

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

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

OR

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

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

AND

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

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

AND

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

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

AND

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

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

AND

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

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

AND

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

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

OU

apigee.deployments.get sur

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

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

AND

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

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

Vérification des autorisations pour les sessions de débogage

Si un proxy d'API est associé à un espace, les vérifications des autorisations IAM pour les sessions de débogage du proxy ont changé, comme décrit dans le tableau suivant :

Méthode Vérification des autorisations IAM pour les espaces
organizations.environments.apis.revisions.debugsessions.create apigee.tracesessions.create sur organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

AND

organizations/$ORG/environments/$ENV

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

apigee.tracesessions.delete sur

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

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

OR

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

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

AND

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

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

ET

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