Function Compute prend en charge le contrôle d'accès basé sur les attributs (ABAC) au moyen de tags. En associant des politiques limitées par tag à des groupes d'utilisateurs Resource Access Management (RAM), vous pouvez isoler la gestion des fonctions entre les équipes.
Fonctionnement
Le contrôle d'accès basé sur les tags repose sur trois clés de condition de politique RAM qui fonctionnent conjointement pour imposer des limites de tag :
| Clé de condition | Élément contrôlé |
|---|---|
acs:RequestTag/<tag-key> |
Exige la présence du tag spécifié lorsqu'un utilisateur RAM crée une fonction. La fonction doit être taguée dès sa création. |
acs:ResourceTag/<tag-key> |
Limite toutes les opérations de gestion aux fonctions portant déjà le tag spécifié. |
fc:TagResources / fc:UntagResources (Deny) |
Empêche les utilisateurs RAM d'ajouter ou de supprimer des tags. Sans cette restriction, un utilisateur pourrait modifier les tags d'une fonction afin d'accéder à des ressources situées hors de son périmètre autorisé. |
Ces trois éléments forment ensemble un périmètre de permission fermé : les utilisateurs ne peuvent créer que des fonctions taguées, agir uniquement sur les fonctions portant leur tag, et ne peuvent pas modifier les tags pour contourner ces limites.
Cas d'utilisation
Une entreprise gère plusieurs fonctions sous un même compte Alibaba Cloud et doit restreindre chaque équipe aux seules fonctions dont elle est propriétaire :
Équipe de développement : peut uniquement consulter et gérer les fonctions taguées pour l'environnement de développement.
Équipe d'exploitation et maintenance : peut uniquement consulter et gérer les fonctions taguées pour l'environnement de production.
Le tableau suivant présente le plan de configuration :
| Équipe | Groupe d'utilisateurs RAM | Politique d'accès | Tag |
|---|---|---|---|
| Équipe de développement | developer |
FCPolicyForDevTeam |
team:dev |
| Équipe d'exploitation et maintenance | operator |
FCPolicyForOpsTeam |
team:ops |
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un compte Alibaba Cloud avec un accès administrateur.
L'accès à la console Function Compute et à la console RAM.
N'associez pas de politiques à privilèges élevés telles que AliyunFCFullAccess ou AliyunFCReadOnlyAccess aux utilisateurs RAM. Ces politiques contournent les conditions basées sur les tags et permettent à l'utilisateur de voir toutes les fonctions, ce qui compromet l'isolation des permissions offerte par cette configuration.
Les sous-ressources et configurations d'une fonction — telles que les alias, les déclencheurs, les configurations asynchrones, les configurations de concurrence, les instances, les attachements VPC et les tâches asynchrones — héritent des paramètres de contrôle d'accès de la fonction. Seuls les utilisateurs RAM disposant des tags correspondants peuvent les gérer.
Configurer le contrôle d'accès basé sur les tags
Étape 1 : Tagger vos fonctions
Connectez-vous à la console Function Compute avec votre compte Alibaba Cloud. Créez des fonctions et associez-y des tags afin d'identifier l'équipe à laquelle chacune appartient :
Associez le tag
team:devaux fonctions destinées à l'équipe de développement.Associez le tag
team:opsaux fonctions destinées à l'équipe d'exploitation et maintenance.
Pour obtenir des instructions sur l'association des tags, consultez Configurer les tags.
Étape 2 : Créer des utilisateurs RAM
Connectez-vous à la console RAM avec votre compte Alibaba Cloud et créez deux utilisateurs RAM, un pour chaque équipe. Consultez Créer un utilisateur RAM.
Étape 3 : Créer des groupes d'utilisateurs RAM et ajouter des membres
Créez deux groupes d'utilisateurs nommés developer et operator. Ajoutez les utilisateurs RAM correspondants à chaque groupe. Les utilisateurs RAM héritent automatiquement des permissions de leur groupe.
Consultez Créer un groupe d'utilisateurs RAM et Ajouter un utilisateur RAM à un groupe d'utilisateurs RAM.
Étape 4 : Créer des politiques personnalisées
Connectez-vous à la console RAM avec votre compte Alibaba Cloud et créez une politique personnalisée.
Chaque politique contient quatre instructions qui, ensemble, imposent la limite de tag :
Autoriser toutes les actions FC lorsque le tag
teamcorrespond lors de la création de la ressource (acs:RequestTag).Autoriser toutes les actions FC sur les ressources portant déjà le tag
teamcorrespondant (acs:ResourceTag).Autoriser le listage des tags et la récupération des paramètres du compte (nécessaire au fonctionnement du filtrage par tag dans la console).
Refuser la modification des tags : sans cette règle, un utilisateur pourrait retagger n'importe quelle fonction pour accéder à des ressources hors de son périmètre.
FCPolicyForDevTeam (pour le groupe d'utilisateurs developer) :
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "fc:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"acs:RequestTag/team": [
"dev"
]
}
}
},
{
"Effect": "Allow",
"Action": "fc:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"acs:ResourceTag/team": [
"dev"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"fc:ListTaggedResources",
"tag:ListTagKeys",
"fc:GetAccountSettings"
],
"Resource": "*"
},
{
"Effect": "Deny",
"Action": [
"fc:UntagResources",
"fc:TagResources"
],
"Resource": "*"
}
]
}
FCPolicyForOpsTeam (pour le groupe d'utilisateurs operator) :
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "fc:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"acs:RequestTag/team": [
"ops"
]
}
}
},
{
"Effect": "Allow",
"Action": "fc:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"acs:ResourceTag/team": [
"ops"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"fc:ListTaggedResources",
"tag:ListTagKeys",
"fc:GetAccountSettings"
],
"Resource": "*"
},
{
"Effect": "Deny",
"Action": [
"fc:UntagResources",
"fc:TagResources"
],
"Resource": "*"
}
]
}
Pour configurer et utiliser des produits tels que OSS, NAS et VPC dans Function Compute, accordez également les permissions requises pour ces produits. Consultez Politiques d'accès et exemples .
Étape 5 : Associer des politiques aux groupes d'utilisateurs
Associez FCPolicyForDevTeam au groupe d'utilisateurs
developeret FCPolicyForOpsTeam au groupe d'utilisateursoperator.Associez les politiques système AliyunRAMFullAccess et AliyunECSFullAccess aux deux groupes d'utilisateurs. Celles-ci permettent aux utilisateurs RAM des groupes de créer des fonctions avec les tags spécifiés, de créer des utilisateurs et des groupes RAM, ainsi que de créer et d'associer des politiques d'accès.
Consultez Accorder des permissions à un groupe d'utilisateurs RAM.
La figure suivante présente les politiques recommandées pour le groupe d'utilisateurs developer.

Étape 6 : Vérifier la configuration
Connectez-vous à la console Function Compute en tant que chaque utilisateur RAM. Consultez Se connecter à la console de gestion Alibaba Cloud en tant qu'utilisateur RAM.
Dans le volet de navigation de gauche, choisissez Function Management > Functions.
Dans la barre de menu supérieure, sélectionnez la région où se trouvent les fonctions taguées.
Sur la page Functions, cliquez sur Tag Filtering et filtrez par Tag Key
teamet la Tag Value correspondante (devouops).
Un utilisateur RAM ne peut consulter et gérer des fonctions qu'en filtrant par un tag inclus dans les politiques accordées à son groupe d'utilisateurs. Sans filtrage par tag, aucune fonction n'est visible.
Sélectionnez la même région que celle des fonctions lors de l'exécution des opérations. L'accès interrégional ne fonctionne pas avec cette configuration.
La figure suivante montre un utilisateur RAM développeur filtrant les fonctions autorisées par le tag team:dev.
