Package google.iam.v1

Index

IAMPolicy

Présentation des API

Gère les stratégies de gestion de l'authentification et des accès (IAM).

Toute mise en œuvre d'une API offrant des fonctionnalités de contrôle d'accès emploie l'interface google.iam.v1.IAMPolicy.

Modèle de données

Le contrôle d'accès est appliqué lorsqu'un principal (utilisateur ou compte de service) effectue une action sur une ressource exposée par un service. Les ressources, identifiées par des noms de type URI, constituent l'unité de spécification du contrôle d'accès. Les mises en œuvre de service permettent de choisir la précision du contrôle d'accès ainsi que les autorisations acceptées pour leurs ressources. Par exemple, un service de base de données peut autoriser la spécification du contrôle d'accès seulement au niveau de la table, tandis qu'un autre peut l'autoriser également au niveau de la colonne.

Structure de la stratégie

Voir google.iam.v1.Policy

De manière intentionnelle, il ne s'agit pas d'une API de type CRUD, car les stratégies de contrôle d'accès sont créées et supprimées de manière implicite avec les ressources auxquelles elles sont associées.

GetIamPolicy

rpc GetIamPolicy(GetIamPolicyRequest) returns (Policy)

Récupère la stratégie de contrôle d'accès d'une ressource. Renvoie une stratégie vide si la ressource existe, mais ne dispose d'aucune stratégie.

Champs d'application des autorisations

Requiert le niveau d'accès OAuth suivant :

  • https://www.googleapis.com/auth/cloud-platform

Pour en savoir plus, consultez Présentation de l'authentification.

SetIamPolicy

rpc SetIamPolicy(SetIamPolicyRequest) returns (Policy)

Définit la stratégie de contrôle d'accès de la ressource spécifiée. Remplace toute stratégie existante.

Peut renvoyer des erreurs NOT_FOUND, INVALID_ARGUMENT et PERMISSION_DENIED.

Champs d'application des autorisations

Requiert le niveau d'accès OAuth suivant :

  • https://www.googleapis.com/auth/cloud-platform

Pour en savoir plus, consultez Présentation de l'authentification.

TestIamPermissions

rpc TestIamPermissions(TestIamPermissionsRequest) returns (TestIamPermissionsResponse)

Renvoie les autorisations qu'un appelant a sur la ressource spécifiée. Si la ressource n'existe pas, renvoie un ensemble vide d'autorisations. Ne renvoie pas l'erreur NOT_FOUND.

Remarque : Cette opération a été conçue pour créer des interfaces utilisateur et des outils de ligne de commande qui tiennent compte des autorisations, et non pour vérifier des autorisations. Elle peut entraîner un phénomène de "fail open" (configuration ouverte) sans avertissement préalable.

Champs d'application des autorisations

Requiert le niveau d'accès OAuth suivant :

  • https://www.googleapis.com/auth/cloud-platform

Pour en savoir plus, consultez la page Présentation de l'authentification.

Liaison

Associe des members, ou des comptes principaux, à un role.

Champs
role

string

Rôle attribué à la liste de members ou aux comptes principaux. Par exemple, roles/viewer, roles/editor ou roles/owner.

members[]

string

Spécifie les identités demandant l'accès à une ressource Google Cloud. members peut avoir les valeurs suivantes :

  • allUsers : identifiant spécial qui représente toute personne ayant accès à Internet et possédant ou non un compte Google.

  • allAuthenticatedUsers : identifiant spécial qui représente toute personne authentifiée avec un compte Google ou un compte de service. N'inclut pas les identités qui proviennent de fournisseurs d'identité (IdP) externes via la fédération d'identité.

  • user:{emailid} : adresse e-mail qui représente un compte Google spécifique. Par exemple, alice@example.com.

  • serviceAccount:{emailid} : adresse e-mail qui représente un compte de service Google. Par exemple, my-other-app@appspot.gserviceaccount.com.

  • serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}] : identifiant d'un compte de service Kubernetes. Exemple :my-project.svc.id.goog[my-namespace/my-kubernetes-sa]

  • group:{emailid} : adresse e-mail qui représente un groupe Google. Exemple :admins@example.com

  • domain:{domain} : domaine G Suite (principal) qui représente tous les utilisateurs de ce domaine. Par exemple, google.com ou example.com.
  • deleted:user:{emailid}?uid={uniqueid} : adresse e-mail (plus un identifiant unique) représentant un utilisateur qui a été récemment supprimé. Par exemple, alice@example.com?uid=123456789012345678901. Si l'utilisateur est récupéré, cette valeur revient à user:{emailid} et l'utilisateur récupéré conserve son rôle dans la liaison.

  • deleted:serviceAccount:{emailid}?uid={uniqueid} : adresse e-mail (plus un identifiant unique) représentant un compte de service récemment supprimé. Par exemple, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. Si le compte de service est restauré, cette valeur revient à serviceAccount:{emailid} et le compte de service restauré conserve son rôle dans la liaison.

  • deleted:group:{emailid}?uid={uniqueid} : adresse e-mail (plus un identifiant unique) représentant un groupe Google récemment supprimé. Exemple :admins@example.com?uid=123456789012345678901 Si le groupe est récupéré, cette valeur revient à group:{emailid} et le groupe récupéré conserve son rôle dans la liaison.

condition

Expr

Condition associée à cette liaison.

Si la condition renvoie true, cette liaison s'applique à la requête actuelle

Si la condition renvoie false, cette liaison ne s'applique pas à la requête actuelle. Toutefois, une liaison de rôle différente peut accorder le même rôle à un ou plusieurs comptes principaux de cette liaison.

Pour savoir quelles ressources acceptent les conditions dans leurs stratégies IAM, consultez la documentation IAM.

GetIamPolicyRequest

Message de requête pour la méthode GetIamPolicy.

Champs
resource

string

OBLIGATOIRE : Ressource pour laquelle la stratégie est demandée. Consultez la section Noms des ressources pour connaître la valeur appropriée pour ce champ.

options

GetPolicyOptions

FACULTATIF : Objet GetPolicyOptions permettant de spécifier des options pour GetIamPolicy.

GetPolicyOptions

Encapsule les paramètres fournis à GetIamPolicy.

Champs
requested_policy_version

int32

Facultatif. Version maximale de la stratégie qui sera utilisée pour mettre en forme la stratégie.

Les valeurs acceptables sont 0, 1 et 3. Les requêtes spécifiant une valeur non valide seront rejetées.

Les requêtes de règles comportant des liaisons de rôle conditionnelles doivent spécifier la version 3. Les stratégies sans liaison de rôle conditionnelle peuvent spécifier une valeur valide ou laisser le champ non défini.

La stratégie de la réponse peut utiliser la version de stratégie que vous avez spécifiée ou une version antérieure. Par exemple, si vous spécifiez la version 3, mais que la stratégie ne comporte aucune liaison de rôle conditionnelle, la réponse utilise la version 1.

Pour savoir quelles ressources acceptent les conditions dans leurs stratégies IAM, consultez la documentation IAM.

Stratégie

Stratégie IAM (Identity and Access Management) qui spécifie les contrôles d'accès pour les ressources Google Cloud.

Un Policy est une collection de bindings. Un binding associe un ou plusieurs members, ou comptes principaux, à un seul role. Les comptes principaux peuvent être des comptes utilisateur, des comptes de service, des groupes Google et des domaines (tels que G Suite). Un role est une liste nommée d'autorisations. Chaque role peut être un rôle IAM prédéfini ou un rôle personnalisé créé par l'utilisateur.

Pour certains types de ressources Google Cloud, un objet binding peut également spécifier un objet condition, qui est une expression logique autorisant l'accès à une ressource seulement si l'expression renvoie la valeur true. Une condition peut ajouter des contraintes en fonction des attributs de la requête, de la ressource ou des deux. Pour savoir quelles ressources acceptent les conditions dans leurs stratégies IAM, consultez la documentation IAM.

Exemple JSON :

    {
      "bindings": [
        {
          "role": "roles/resourcemanager.organizationAdmin",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-project-id@appspot.gserviceaccount.com"
          ]
        },
        {
          "role": "roles/resourcemanager.organizationViewer",
          "members": [
            "user:eve@example.com"
          ],
          "condition": {
            "title": "expirable access",
            "description": "Does not grant access after Sep 2020",
            "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')",
          }
        }
      ],
      "etag": "BwWWja0YfJA=",
      "version": 3
    }

Exemple YAML :

    bindings:
    - members:
      - user:mike@example.com
      - group:admins@example.com
      - domain:google.com
      - serviceAccount:my-project-id@appspot.gserviceaccount.com
      role: roles/resourcemanager.organizationAdmin
    - members:
      - user:eve@example.com
      role: roles/resourcemanager.organizationViewer
      condition:
        title: expirable access
        description: Does not grant access after Sep 2020
        expression: request.time < timestamp('2020-10-01T00:00:00.000Z')
    etag: BwWWja0YfJA=
    version: 3

Pour obtenir une description d'IAM et de ses fonctionnalités, consultez la documentation IAM.

Champs
version

int32

Spécifie le format de la règle.

Les valeurs valides sont 0, 1 et 3. Les requêtes spécifiant une valeur non valide sont rejetées.

Toute opération qui affecte les liaisons de rôle conditionnelles doit spécifier la version 3. Cette exigence s'applique aux opérations suivantes :

  • Obtenir une règle qui inclut une liaison de rôle conditionnelle
  • Ajouter une liaison de rôle conditionnelle à une règle
  • Modifier une liaison de rôle conditionnelle dans une règle
  • Suppression de toute liaison de rôle, avec ou sans condition, d'une règle incluant des conditions

Important : Si vous utilisez des conditions IAM, vous devez inclure le champ etag chaque fois que vous appelez setIamPolicy. Si vous omettez ce champ, IAM vous permet de remplacer une règle de version 3 par une règle de version 1, et toutes les conditions de la règle de version 3 sont perdues.

Si une règle n'inclut aucune condition, les opérations associées à cette règle peuvent spécifier une version valide ou laisser le champ non défini.

Pour savoir quelles ressources acceptent les conditions dans leurs stratégies IAM, consultez la documentation IAM.

bindings[]

Binding

Associe une liste de members, ou des comptes principaux, à un role. Si vous le souhaitez, vous pouvez spécifier une condition qui détermine comment et quand les bindings sont appliqués. Chacun des bindings doit contenir au moins un compte principal.

Le bindings d'une Policy peut faire référence à un maximum de 1 500 comptes principaux. Au maximum, 250 de ces comptes principaux peuvent être des groupes Google. Chaque occurrence d'un compte principal est prise en compte dans ces limites. Par exemple, si bindings accorde 50 rôles différents à user:alice@example.com et non à un autre compte  principal, vous pouvez ajouter 1 450 comptes principaux à bindings dans Policy.

etag

bytes

etag permet d'effectuer un contrôle de simultanéité positive, pour éviter que les mises à jour simultanées d'une stratégie ne s'écrasent les unes les autres. Afin d'éviter les situations de concurrence, il est fortement suggéré que les systèmes utilisent etag dans le cycle lecture-modification-écriture pour effectuer des mises à jour de stratégies : un etag est renvoyé dans la réponse à getIamPolicy, et les systèmes doivent mettre cet élément dans la requête destinée à setIamPolicy de sorte à s'assurer que leur modification sera appliquée à la même version de la stratégie.

Important : Si vous utilisez des conditions IAM, vous devez inclure le champ etag chaque fois que vous appelez setIamPolicy. Si vous omettez ce champ, IAM vous permet de remplacer une règle de version 3 par une règle de version 1, et toutes les conditions de la règle de version 3 sont perdues.

SetIamPolicyRequest

Message de requête pour la méthode SetIamPolicy.

Champs
resource

string

OBLIGATOIRE : Ressource pour laquelle la stratégie est spécifiée. Consultez la section Noms des ressources pour connaître la valeur appropriée pour ce champ.

policy

Policy

OBLIGATOIRE : Stratégie complète à appliquer au paramètre resource. La taille de la stratégie est limitée à quelques dizaines de Ko. Une stratégie vide est une stratégie valide, mais certains services Google Cloud (tels que les projets) peuvent la rejeter.

TestIamPermissionsRequest

Message de requête pour la méthode TestIamPermissions.

Champs
resource

string

OBLIGATOIRE : Ressource pour laquelle vous demandez les détails de la stratégie. Consultez la section Noms des ressources pour connaître la valeur appropriée pour ce champ.

permissions[]

string

Ensemble des autorisations à vérifier pour la ressource resource. Les autorisations comportant des caractères génériques (comme * ou storage.*) ne sont pas acceptées. Pour en savoir plus, consultez la Présentation d'IAM.

TestIamPermissionsResponse

Message de réponse pour la méthode TestIamPermissions.

Champs
permissions[]

string

Sous-ensemble des autorisations TestPermissionsRequest.permissions dont dispose l'appelant.