API7 Enterprise 3.2.14.4 : Limite de Permission pour une Gestion Affinée des Autorisations

Zhihuang Lin

Zhihuang Lin

August 15, 2024

Products

API7 Enterprise v3.2.14.4 est officiellement publiée, introduisant la notion de limite de permissions pour répondre au besoin d'une gestion plus granulaire des permissions des utilisateurs dans les entreprises.

Qu'est-ce qu'une limite de permissions ?

Une limite de permissions, comme son nom l'indique, est comme un mur de permissions qui définit la portée maximale des permissions qu'un utilisateur peut avoir. Elle est utilisée pour restreindre les actions que les utilisateurs ou les rôles peuvent effectuer dans le système. Son objectif principal est d'améliorer la sécurité du système et d'empêcher l'utilisation abusive des permissions. En définissant ce "mur", nous pouvons nous assurer que les utilisateurs ne peuvent opérer que dans le cadre de leurs responsabilités et ne peuvent pas accéder ou modifier des données du système au-delà de leur autorité.

Les limites de permissions peuvent réutiliser les politiques de permissions existantes dans le système ou créer de nouvelles politiques de permissions spécifiquement. Lorsqu'une limite de permissions est attribuée à un utilisateur, elle limite ses permissions mais ne lui accorde directement aucune permission.

Exemple

Supposons que nous créons une politique de permissions qui accorde des permissions d'opération et de visualisation des services sur tous les groupes de passerelles et que nous attribuons cette politique comme limite de permissions à l'utilisateur Tom.

{
  "statement": [
    // Permissions de visualisation sur tous les groupes de passerelles
    {
      "effect": "allow",
      "resources": [
        "arn:api7:gateway:gatewaygroup/<.*>"
      ],
      "actions": [
        "<.*>Get<.*>"
      ]
    },
    // Permissions d'opération sur tous les groupes de passerelles
    {
      "effect": "allow",
      "resources": [
        "*"
      ],
      "actions": [
        "arn:api7:gateway:gatewaygroup/<.*>/publishedservice/<.*>"
      ]
    }
  ]
}

Dans ce cas, les permissions maximales de Tom sont restreintes à cette politique de permissions. Même si une limite de permissions est définie, cela ne signifie pas que Tom possède déjà ces permissions. Ensuite, nous attribuons à Tom un rôle avec la politique de permissions suivante :

{
  "statement": [
    // Permissions de visualisation sur tous les groupes de passerelles
    {
      "effect": "allow",
      "resources": [
        "arn:api7:gateway:gatewaygroup/<.*>"
      ],
      "actions": [
        "<.*>Get<.*>"
      ]
    },
    // Permissions d'opération sur tous les groupes de passerelles
    {
      "effect": "allow",
      "resources": [
        "arn:api7:gateway:gatewaygroup/<.*>/publishedservice/<.*>"
      ],
      "actions": [
        "<.*>"
      ]
    },
    // Permissions d'opération pour les plugins personnalisés
    {
      "effect": "allow",
      "resources": [
        "arn:api7:gateway:gatewaysetting/*"
      ],
      "actions": [
        "gateway:<.*>CustomPlugin<.*>"
      ]
    }
  ]
}

Bien que Tom ait reçu des permissions d'opération, de visualisation et d'opération pour les plugins personnalisés sur tous les groupes de passerelles, il se rendra compte qu'il n'a pas les permissions pour modifier les plugins personnalisés. Cela est dû au fait que nous avons défini une limite de permissions pour Tom. À moins que la limite de permissions ne soit ajustée pour inclure les permissions liées aux plugins personnalisés, toute permission supplémentaire au-delà de la limite est invalide.

Comment utiliser la fonctionnalité de limite de permissions ?

Créer des politiques de permissions

Les limites de permissions peuvent directement réutiliser les politiques de permissions existantes dans le système. Avant d'attribuer une limite de permissions à un utilisateur, vous devez créer une politique de permissions. Cliquez sur "Politiques de permissions" dans le menu de l'organisation du système pour accéder à la page de liste.

Politiques de permissions

Ensuite, cliquez sur "Ajouter une politique de permissions" dans le coin supérieur droit de la liste pour accéder au formulaire de création.

Ajouter une politique

Remplissez les informations de base de la politique de permissions dans le formulaire et configurez les déclarations de politique correspondantes pour créer la politique de permissions. Théoriquement, la même politique de permissions peut être associée à plusieurs rôles et utilisée comme limite de permissions pour plusieurs utilisateurs, mais cette pratique n'est pas recommandée.

Configurer la politique

Pour plus d'introductions conceptuelles sur les politiques de permissions, consultez l'article What's New in API7 Enterprise 3.4.14: IAM for Granular Access Control. Pour des exemples courants de configuration de politiques, consultez le document Exemples de politiques de permissions. Pour les valeurs que peuvent prendre les ressources et les actions ainsi que les API correspondantes, consultez le document Actions et ressources des politiques de permissions.

Attribuer des limites de permissions

Après avoir créé des politiques de permissions, vous pouvez attribuer des limites de permissions. Cliquez sur "Utilisateurs" dans le menu de l'organisation pour accéder à la page de liste des utilisateurs.

Utilisateurs

Nous pouvons directement attribuer des limites de permissions aux nouveaux utilisateurs lors de leur invitation. Le formulaire d'invitation inclut un nouveau champ pour les limites de permissions, et l'utilisateur se verra attribuer cette limite de permissions par défaut lors de sa connexion au système.

Définir la limite

Pour les utilisateurs existants, vous pouvez cliquer sur l'icône d'édition de la limite de permissions sur la page de détails de l'utilisateur pour configurer sa limite de permissions.

Modifier la limite de permissions

Lors de la configuration des permissions pour un utilisateur, vous pouvez ajouter la condition permission_boundaries à des permissions d'opération spécifiques. Par exemple, dans les actions iam:InviteUser (inviter un utilisateur) ou iam:UpdateUserBoundary (mettre à jour la limite de permissions d'un utilisateur), vous pouvez affiner le contrôle des permissions en ajoutant la condition permission_boundaries.

Sous cette condition, vous pouvez spécifier l'ID de la politique de permissions qui doit être définie pour l'utilisateur. Ainsi, lors d'opérations comme l'invitation d'un nouvel utilisateur ou la mise à jour de la limite de permissions d'un autre utilisateur, le système appliquera l'attribution de la limite de permissions appropriée en fonction de ces règles prédéfinies.

Voici un exemple démontrant comment y parvenir :

{
  "statement": [
    {
      "effect": "allow",
      "resources": ["arn:api7:iam:user/<.*>"],
      "actions": [
        "iam:InviteUser",
        "iam:UpdateUserBoundary"
      ],
      "conditions": {
        "permission_boundaries": {
          "type": "AllOfStrings",
          "options": [
            "d3698967-1d28-4e37-b5e7-ef00a93304cc",
            "f863a233-f732-4af0-bb21-3fbe4013be69"
          ]
        }
      }
    }
  ]
}

Mappage des limites de permissions

En plus de configurer directement des limites de permissions spécifiques dans le système, API7 Enterprise prend également en charge le Mappage des limites de permissions, qui attribue automatiquement les limites de permissions correspondantes en fonction de l'identité et des permissions de l'utilisateur dans le fournisseur d'identité (IdP). Sur la page des paramètres de l'organisation, cliquez sur "Ajouter une option de connexion". Quel que soit le fournisseur sélectionné, un interrupteur "Mappage des limites de permissions" est ajouté en bas du formulaire de configuration. Une fois activé, vous pouvez configurer le mappage des limites de permissions.

Mappage des limites de permissions

  • Politique de permissions : Il s'agit de la ressource de politique de permissions définie dans API7 Enterprise, utilisée pour contrôler l'accès et la portée des opérations des utilisateurs. Dans le mappage des limites de permissions, nous pouvons mapper les configurations du fournisseur d'identité externe à ces limites de permissions pour attribuer les limites de permissions correspondantes aux utilisateurs lors de leur connexion.

  • Attribut de limite de permissions mappé : L'identifiant des informations de limite de permissions de l'utilisateur renvoyées par le fournisseur d'identité, utilisé pour localiser les données de limite de permissions de l'utilisateur dans la réponse du fournisseur d'identité. Par exemple, en spécifiant un nom d'attribut comme "role" ou "groups", le système pourra extraire la valeur de la limite de permissions de la réponse du fournisseur d'identité en fonction de ce nom d'attribut.

  • Opération : La méthode utilisée pour faire correspondre la valeur de la limite de permissions à partir de l'attribut de limite de permissions du fournisseur d'identité. Plusieurs méthodes sont prises en charge, comme la correspondance exacte, la correspondance floue, la correspondance de tableau, etc. Si le fournisseur d'identité renvoie un tableau de chaînes de valeurs de limites de permissions, nous pouvons choisir "Correspondance exacte dans un tableau" pour trouver une correspondance.

  • Valeur de limite de permissions mappée : La valeur spécifique représentant la limite de permissions de l'utilisateur dans le fournisseur d'identité.

Résumé

Globalement, les limites de permissions sont des outils essentiels pour assurer la sécurité du système et prévenir l'abus de permissions. En définissant clairement la portée des permissions des utilisateurs, nous pouvons protéger les ressources clés du système contre les accès non autorisés et nous assurer que chaque utilisateur ne peut opérer que dans le cadre de son autorisation. Dans des environnements système complexes, l'utilisation efficace des limites de permissions fournira une protection robuste pour la sécurité des données d'une entreprise.

Tags: