Si les stratégies système de Microservices Engine (MSE) ne répondent pas à vos besoins, créez des stratégies personnalisées pour appliquer le principe du moindre privilège. Les stratégies personnalisées offrent un contrôle granulaire des autorisations et renforcent la sécurité d'accès aux ressources. Cette rubrique explique comment utiliser les stratégies personnalisées pour MSE et propose des exemples concrets.
Qu'est-ce qu'une stratégie personnalisée ?
Les stratégies Resource Access Management (RAM) se divisent en deux catégories : les stratégies système et les stratégies personnalisées. Vous gérez ces dernières selon les exigences de votre activité.
Après avoir créé une stratégie personnalisée, attachez-la à un utilisateur RAM, un groupe d'utilisateurs RAM ou un rôle RAM. Les autorisations définies dans la stratégie sont ainsi accordées au principal concerné.
Supprimez uniquement les stratégies RAM non attachées à un principal. Si la stratégie est déjà attachée, détachez-la du principal avant de la supprimer.
Les stratégies personnalisées prennent en charge le contrôle de version. Gérez les versions de vos stratégies personnalisées grâce au mécanisme de gestion des versions fourni par RAM.
Références
Créer une stratégie personnalisée via l'onglet Éditeur visuel
Connectez-vous à la console RAM en tant qu'utilisateur RAM disposant de droits d'administration.
Dans le volet de navigation de gauche, accédez à .
Sur la page Policies, cliquez sur Create Policy.
Sur la page Create Policy, sélectionnez l'onglet Visual editor.
-
Configurez la stratégie.
Dans la section Effect, sélectionnez Allow ou Deny.
-
Dans la section Service, choisissez un service Alibaba Cloud.
RemarqueLa section Service affiche la liste des services Alibaba Cloud disponibles.
-
Dans la section Actions, sélectionnez All action(s) ou Select action(s).
Le système affiche les actions configurables en fonction du service Alibaba Cloud sélectionné précédemment. Si vous optez pour Select action(s), vous devez choisir explicitement les actions souhaitées.
-
Dans la section Resources, sélectionnez All Resources ou Specified resource(s).
Les ressources configurables s'affichent selon les actions choisies dans la section Action. En cas de sélection de Specified resource(s), cliquez sur Add resource pour configurer un ou plusieurs noms de ressource Alibaba Cloud (ARN). Vous pouvez également cliquer sur Match all afin de sélectionner toutes les ressources pour chaque action retenue.
RemarqueLes ARN de ressources requis pour une action portent la mention Required. Nous vous recommandons vivement de configurer ces ARN marqués comme obligatoires pour garantir l'application correcte de la stratégie personnalisée.
-
Dans la section Condition, cliquez sur Add Condition pour définir des conditions.
Les conditions incluent des conditions communes à Alibaba Cloud et des conditions spécifiques au service. Le système affiche les conditions configurables selon le service Alibaba Cloud et les actions sélectionnées. Il vous suffit de choisir une clé de condition, puis de renseigner les paramètres Operator et Value.
Cliquez sur Add statement et répétez les étapes précédentes pour configurer plusieurs instructions de stratégie personnalisée.
-
Vérifiez et optimisez le contenu de la stratégie personnalisée.
-
Optimisation de base
Le système optimise automatiquement l'instruction de stratégie. Lors de l'optimisation de base, il effectue les opérations suivantes :
Suppression des conditions inutiles.
Suppression des tableaux inutiles.
-
(Facultatif) Optimisation avancée
Pour lancer une optimisation avancée, placez le curseur sur Optional: advanced optimize et cliquez sur Execute. L'optimisation avancée comprend les tâches suivantes :
Séparation des ressources ou des conditions incompatibles avec les actions.
Affinement du périmètre des ressources.
Déduplication ou fusion des instructions de stratégie.
-
Saisissez le Name et les Remarks de la stratégie.
Cliquez sur OK.
Exemples de stratégies personnalisées courantes pour Microservices Registry
-
Accorder à un utilisateur une autorisation en lecture seule sur les services présents dans des instances spécifiques.
{ "Version": "1", "Statement": [ { "Action": [ "mse:QueryNacosNaming" ], "Resource": [ "acs:mse:*:*:instance/${instanceId1}", "acs:mse:*:*:instance/${instanceId2}" ], "Effect": "Allow" } ] } -
Accorder à un utilisateur des autorisations de lecture et de mise à jour sur les services présents dans des instances spécifiques.
{ "Version": "1", "Statement": [ { "Action": [ "mse:QueryNacosNaming", "mse:UpdateNacosNaming" ], "Resource": [ "acs:mse:*:*:instance/${instanceId1}", "acs:mse:*:*:instance/${instanceId2}" ], "Effect": "Allow" } ] }Remarque${instanceId1}et${instanceId2}représentent les ID des instances de registre. -
Accorder à un utilisateur une autorisation en lecture seule sur les services d'un namespace spécifique au sein d'une instance.
{ "Statement": [ { "Effect": "Allow", "Action": "mse:QueryNacosNaming", "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}" } ], "Version": "1" } -
Accorder à un utilisateur des autorisations de lecture et de mise à jour pour les services du groupe
${group}dans un namespace spécifique d'une instance.{ "Statement": [ { "Effect": "Allow", "Action": [ "mse:QueryNacosNaming", "mse:UpdateNacosNaming" ], "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}" } ], "Version": "1" } -
Accorder à un utilisateur une autorisation en lecture seule pour le service
${serviceName}du groupe${group}.{ "Statement": [ { "Effect": "Allow", "Action": "mse:QueryNacosNaming", "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}/naming/${serviceName}" } ], "Version": "1" } -
Accorder à un utilisateur des autorisations de lecture et de mise à jour pour le service
${serviceName}du groupe${group}.{ "Statement": [ { "Effect": "Allow", "Action": [ "mse:QueryNacosNaming", "mse:UpdateNacosNaming" ], "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}/naming/${serviceName}" } ], "Version": "1" }
Exemples de stratégies personnalisées courantes pour Microservices Governance
Accès en lecture seule à toutes les applications
Attribuez cette stratégie aux membres de l'équipe chargés de surveiller l'état et les métriques des applications, sans droit de modification des configurations.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mse:QueryNamespace",
"mse:GetApplicationListWithMetircs",
"mse:ListNamespaces",
"mse:GetEventFilterOptions",
"mse:ListEventRecords",
"mse:GetEventDetail",
"mse:FetchLogConfig",
"mse:QueryBusinessLocations",
"mse:GetApplicationInstanceList",
"mse:listGrayTag",
"mse:QueryServiceDetailWithMetrics",
"mse:GetEventDetail",
"mse:ListEventsPage",
"mse:ListEventsByType",
"mse:GetApplicationTagList"
],
"Resource": "acs:mse:*:*:*"
},
{
"Effect": "Allow",
"Action": "mse:GetApplicationList",
"Resource": "acs:mse:*:*:namespace/${ns}"
}
]
}
Accès complet à une application spécifique
Attribuez cette stratégie aux propriétaires d'applications qui gèrent leur propre application sans pouvoir modifier celles des autres. Elle combine des permissions complètes pour une application donnée avec un accès en lecture seule pour le reste.
La stratégie comporte trois instructions :
Instruction 1 : Permissions complètes (
mse:*) limitées à l'application cible.Instructions 2 et 3 : Accès en lecture seule à toutes les applications pour permettre la navigation dans la console.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "mse:*",
"Resource": "acs:mse:*:*:namespace/${ns}/application/${appName}"
},
{
"Effect": "Allow",
"Action": [
"mse:QueryNamespace",
"mse:GetApplicationListWithMetircs",
"mse:ListNamespaces",
"mse:GetEventFilterOptions",
"mse:ListEventRecords",
"mse:GetEventDetail",
"mse:FetchLogConfig",
"mse:QueryBusinessLocations",
"mse:GetApplicationInstanceList",
"mse:listGrayTag",
"mse:QueryServiceDetailWithMetrics",
"mse:GetEventDetail",
"mse:ListEventsPage",
"mse:ListEventsByType",
"mse:GetApplicationTagList"
],
"Resource": "acs:mse:*:*:*"
},
{
"Effect": "Allow",
"Action": "mse:GetApplicationList",
"Resource": "acs:mse:*:*:namespace/${ns}"
}
]
}
Accès complet à un namespace spécifique
Attribuez cette stratégie aux testeurs qui gèrent toutes les applications d'un environnement de test, tout en restreignant l'accès aux ressources de production.
La stratégie comprend trois instructions :
Instruction 1 : Permissions complètes pour toutes les applications du namespace cible.
Instruction 2 : Accès en lecture seule aux ressources globales de la console, y compris les listes d'applications, les configurations de voies de trafic (swimming lanes), les politiques d'authentification et les listes de services.
Instruction 3 : Autorisations au niveau du namespace pour la liste des applications et la gestion des voies de trafic.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "mse:*",
"Resource": "acs:mse:*:*:namespace/${ns}/application/*"
},
{
"Effect": "Allow",
"Action": [
"mse:QueryNamespace",
"mse:GetApplicationListWithMetircs",
"mse:ListNamespaces",
"mse:GetEventFilterOptions",
"mse:ListEventRecords",
"mse:GetEventDetail",
"mse:FetchLogConfig",
"mse:QueryBusinessLocations",
"mse:GetApplicationInstanceList",
"mse:listGrayTag",
"mse:QueryServiceDetailWithMetrics",
"mse:GetEventDetail",
"mse:ListEventsPage",
"mse:ListEventsByType",
"mse:GetApplicationTagList",
"mse:QueryAllSwimmingLaneGroup",
"mse:QueryAllSwimmingLane",
"mse:ListAppBySwimmingLaneGroupTags",
"mse:ListAppBySwimmingLaneGroupTag",
"mse:QuerySwimmingLaneById",
"mse:GetTagsBySwimmingLaneGroupId",
"mse:ListSwimmingLaneGateway",
"mse:ListSwimmingLaneGatewayRoute",
"mse:ListAuthPolicy",
"mse:GetServiceList",
"mse:GetServiceListPage"
],
"Resource": "acs:mse:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"mse:GetApplicationList",
"mse:CreateOrUpdateSwimmingLaneGroup",
"mse:CreateOrUpdateSwimmingLane",
"mse:DeleteSwimmingLaneGroup",
"mse:DeleteSwimmingLaneGroup",
"mse:DeleteSwimmingLane"
],
"Resource": "acs:mse:*:*:namespace/${ns}"
}
]
}
Exemples de stratégies pour Cloud-native Gateway
Accorder à un utilisateur ou à un rôle des autorisations sur toutes les ressources
Pour octroyer à un utilisateur ou à un rôle RAM des permissions d'opération sur tous les cloud-native gateways, attachez-lui l'une des stratégies système suivantes :
Autorisation en lecture seule : AliyunMSEReadOnlyAccess
Autorisations en lecture et écriture : AliyunMSEFullAccess
Accorder à un utilisateur ou à un rôle des autorisations sur des ressources de passerelle spécifiques
Pour limiter les permissions d'opération d'un utilisateur ou d'un rôle RAM à une passerelle spécifique, attribuez-lui des autorisations au niveau des ressources.
-
Exemple 1 : Accorder à un utilisateur RAM une autorisation en lecture seule sur le cloud-native gateway nommé gw-8090caa2a3ab447a8bc5fdf3****.
{ "Version": "1", "Statement": [ { "Action": [ "mse:Query*", "mse:List*", "mse:Get*", "mse:Select*", "mse:Pull*", "mse:GatewayBlackWhite*", "mse:GatewayHealthCheckList", "mse:GatewayQueryMonitor", "mse:UploadWasmFile" ], "Resource": "acs:mse:*:*:instance/gw-8090caa2a3ab447a8bc5fdf3********", "Effect": "Allow" }, { "Action": [ "mse:QueryDefaultAlertStatus", "mse:ListGatewayZone", "mse:ListUpgradableGatewayVersions", "mse:ListTagResources", "mse:ListGatewayIngressMigrateTask", "mse:ListEventRecords", "mse:GetEventFilterOptions", "mse:GetEventDetail", "mse:GetGatewaySelection", "mse:GetGatewayAlarms", "mse:GetGatewayMigrateNamespacedServices", "mse:GetGatewayIngressMigrateTaskDetail", "mse:GetPluginGuide", "mse:GetRegExpCheck", "mse:GetRegExpTest", "mse:CheckPluginLua" ], "Resource": "acs:mse:*:*:*", "Effect": "Allow" }, { "Action": [ "log:DescribeService", "log:ListProject", "log:GetProductDataCollection" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "arms:SearchContactGroup" ], "Resource": "*", "Effect": "Allow" } ] } -
Exemple 2 : Accorder à un utilisateur RAM des autorisations en lecture et écriture sur un cloud-native gateway nommé gw-8090caa2a3ab447a8bc5fdf3****.
{ "Version": "1", "Statement": [ { "Action": [ "mse:*" ], "Resource": "acs:mse:*:*:instance/gw-8090caa2a3ab447a8bc5fdf3********", "Effect": "Allow" }, { "Action": [ "mse:QueryDefaultAlertStatus", "mse:CreateDefaultAlert", "mse:ListGatewayZone", "mse:ListUpgradableGatewayVersions", "mse:ListEventRecords", "mse:GetEventFilterOptions", "mse:GetEventDetail", "mse:GetGatewaySelection", "mse:GetGatewayAlarms", "mse:GetGatewayMigrateNamespacedServices", "mse:GetPluginGuide", "mse:GetRegExpCheck", "mse:GetRegExpTest", "mse:CheckPluginLua", "mse:*TagResources", "mse:*CustomPlugin", "mse:*GatewayIngressMigrateTask*" ], "Resource": "acs:mse:*:*:*", "Effect": "Allow" }, { "Action": [ "log:DescribeService", "log:ListProject", "log:GetProductDataCollection", "log:OpenProductDataCollection" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "arms:SearchContactGroup" ], "Resource": "*", "Effect": "Allow" } ] }
Remarques d'utilisation
Les autorisations ci-dessus permettent uniquement d'effectuer les opérations requises dans la console MSE. Les fonctionnalités spécifiques des cloud-native gateways dépendent d'autres services cloud. Configurez les autorisations de votre utilisateur ou rôle RAM en vous appuyant sur la documentation relative aux permissions de ces autres services cloud, afin de permettre l'utilisation complète des fonctionnalités des cloud-native gateways. Le tableau suivant établit la correspondance entre les services cloud dont dépendent les cloud-native gateways et les modules associés.
Service Alibaba Cloud | Module Cloud-native Gateway | Références |
Simple Log Service |
| |
ARMS |
|