Le partage d'un compte Alibaba Cloud au sein d'une équipe expose vos paires AccessKey à des risques de sécurité. Privilégiez l'octroi d'autorisations Service Mesh (ASM) spécifiques aux utilisateurs et aux rôles Resource Access Management (RAM), en fonction de leurs besoins réels : création d'instances, mise à jour des configurations ou gestion des autorisations RBAC.
Quand utiliser ce guide
Définissez le périmètre des autorisations selon les actions que l'identité RAM doit effectuer :
| Scénario | Autorisations requises |
|---|---|
| Gérer uniquement les instances ASM | Suivez cette rubrique pour attacher des stratégies système ou personnalisées dédiées à ASM. |
| Gérer à la fois les instances ASM et les clusters ACK (par exemple, ajouter ou supprimer des clusters dans un maillage) | Octroyez les autorisations ASM décrites dans cette rubrique et les autorisations ACK en suivant Utiliser RAM pour autoriser l'accès aux clusters et aux ressources cloud. |
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un utilisateur RAM et un rôle RAM
Une connaissance de base de la structure et de la syntaxe des stratégies RAM
Stratégies système
ASM propose deux stratégies système intégrées :
| Stratégie | Autorisations |
|---|---|
| AliyunASMReadOnlyAccess | Accès en lecture seule aux instances ASM. L'identité RAM peut consulter les informations des instances, mais ne peut pas modifier les configurations. |
| AliyunASMFullAccess | Accès complet aux instances ASM. L'identité RAM dispose des mêmes autorisations ASM que le compte Alibaba Cloud. |
Attacher une stratégie système
Les étapes suivantes utilisent AliyunASMReadOnlyAccess à titre d'exemple. Pour attacher une autre stratégie système, remplacez le nom de la stratégie à l'étape 4.
Pour plus d'informations, consultez les rubriques Accorder des autorisations à un utilisateur RAM et Accorder des autorisations à un rôle RAM.
Dans le volet de navigation de gauche, choisissez .
-
Dans le panneau Grant Permission , configurez les paramètres suivants :
-
Sélectionnez System Policy dans la liste déroulante All Types , saisissez AliyunASMReadOnlyAccess dans la zone de recherche, puis sélectionnez AliyunASMReadOnlyAccess.
RemarqueVous pouvez attacher un maximum de cinq stratégies simultanément. Répétez cette procédure pour en attacher davantage.
Cliquez sur OK.
Cliquez sur Close.
Stratégies personnalisées
Utilisez des stratégies personnalisées pour un contrôle d'accès granulaire, par exemple pour accorder toutes les autorisations ASM à l'exception de la gestion des autorisations RBAC.
Étape 1 : Créer une stratégie personnalisée
Connectez-vous à la console RAM en tant qu'administrateur RAM.
Dans le volet de navigation de gauche, choisissez .
Sur la page Policies , cliquez sur Create Policy.
-
Sur la page Create Policy , cliquez sur l'onglet JSON Editor.
L'éditeur JSON s'affiche. Le modèle de stratégie par défaut inclut un élément
Version(défini sur"1") et un tableauStatement. Chaque instruction comprend les élémentsEffect(par défaut"Allow"),Action,ResourceetCondition. Vous devez renseigner les élémentsActionetResource. -
Saisissez le document de stratégie dans l'éditeur, puis cliquez sur OK.
L'exemple ci-dessous accorde toutes les autorisations ASM, à l'exception de la gestion des autorisations RBAC. Une identité RAM disposant de cette stratégie peut effectuer toutes les opérations sur les instances ASM, mais ne peut pas attribuer d'autorisations RBAC à d'autres identités.
Chaque champ de la stratégie remplit une fonction spécifique :
Champ Description EffectIndique si les actions spécifiées sont autorisées ou refusées. ActionDéfinit les opérations API à autoriser. Les caractères génériques ( *) correspondent à plusieurs opérations.ResourceCible les ressources concernées. Utilisez *pour toutes les ressources, ou spécifiez un ARN pour limiter la portée de la stratégie à une seule ressource.ConditionConditions optionnelles devant être satisfaites pour que la stratégie prenne effet. { "Statement": [ { "Effect": "Allow", "Action": [ "servicemesh:Add*", "servicemesh:CRBatchDeletion", "servicemesh:Create*", "servicemesh:Delete*", "servicemesh:Describe*", "servicemesh:Enable*", "servicemesh:Disable*", "servicemesh:Get*", "servicemesh:InvokeApiServer", "servicemesh:List*", "servicemesh:Modify*", "servicemesh:Re*", "servicemesh:Run*", "servicemesh:Set*", "servicemesh:Sync*", "servicemesh:Update*", "servicemesh:Upgrade*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "log:ListLogStores", "log:ListDashboard", "log:GetDashboard", "log:ListSavedSearch", "log:ListProject" ], "Resource": "*" }, { "Effect": "Allow", "Action": "log:GetLogStoreLogs", "Resource": "acs:log:*:*:project/*/logstore/audit-*" }, { "Effect": "Allow", "Action": "log:GetLogStoreLogs", "Resource": "acs:log:*:*:project/*/logstore/istio-*" }, { "Action": "ram:CreateServiceLinkedRole", "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "ram:ServiceName": "servicemesh.aliyuncs.com" } } } ], "Version": "1" }Pour en savoir plus sur la syntaxe des stratégies, consultez la rubrique Structure et syntaxe des stratégies.
Dans la section Basic Information , saisissez un nom dans le champ Name (par exemple, ASMPolicy1), puis cliquez sur OK.
Étape 2 : Attacher la stratégie personnalisée
Si vous souhaitez attacher la stratégie personnalisée à un rôle RAM plutôt qu'à un utilisateur RAM, consultez la rubrique Accorder des autorisations à un rôle RAM.
Connectez-vous à la console RAM en tant qu'administrateur RAM.
Dans le volet de navigation de gauche, choisissez .
-
Dans le panneau Add Permissions , configurez les paramètres suivants :
Sélectionnez Custom Policy dans la liste déroulante All Types , saisissez
ASMPolicy1dans la zone de recherche, puis sélectionnez ASMPolicy1.
Cliquez sur OK.
Exemples de stratégies personnalisées
Les exemples suivants couvrent des scénarios d'autorisation courants. Remplacez les valeurs fictives par vos identifiants de ressources réels avant d'appliquer ces stratégies.
Accorder des autorisations sur une seule instance ASM
Limitez une identité RAM à la gestion d'une seule instance ASM spécifique.
Remplacez <ServicemeshId> par l'ID de l'instance ASM cible.
{
"Statement": [
{
"Effect": "Allow",
"Action": "servicemesh:*",
"Resource": "acs:servicemesh:*:*:servicemesh/<ServicemeshId>"
},
{
"Effect": "Allow",
"Action": "servicemesh:DescribeServiceMeshes",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "log:GetLogStoreLogs",
"Resource": "acs:log:*:*:project/*/logstore/audit-<ServicemeshId>"
},
{
"Effect": "Allow",
"Action": "log:GetLogStoreLogs",
"Resource": "acs:log:*:*:project/*/logstore/istio-<ServicemeshId>"
}
],
"Version": "1"
}
Fonctionnement de cette stratégie :
La première instruction accorde toutes les actions
servicemesh:*, mais uniquement sur l'ARN de l'instance spécifiée.La deuxième instruction accorde
servicemesh:DescribeServiceMeshessur toutes les ressources, ce qui est nécessaire pour lister les maillages dans la console.Les deux dernières instructions accordent l'accès aux journaux, limité à l'instance spécifiée.
Accorder un accès en lecture et écriture aux ressources Istio
Permettez à une identité RAM de gérer les ressources Istio via la console ASM sans modifier d'autres paramètres ASM, tels que les configurations de fonctionnalités.
Cette stratégie s'appuie sur AliyunASMReadOnlyAccess en y ajoutant l'action servicemesh:InvokeApiServer , qui active la gestion des ressources Istio.
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"servicemesh:List*",
"servicemesh:Describe*",
"servicemesh:Get*",
"servicemesh:InvokeApiServer"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"log:ListLogStores",
"log:ListDashboard",
"log:GetDashboard",
"log:ListSavedSearch"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "log:GetLogStoreLogs",
"Resource": "acs:log:*:*:project/*/logstore/audit-*"
}
],
"Version": "1"
}
Accorder des autorisations de gestion RBAC
Autorisez une identité RAM à gérer les autorisations RBAC d'autres utilisateurs et rôles RAM via la console ASM, sans lui donner accès à la gestion des instances ASM.
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"servicemesh:DescribeUserPermissions",
"servicemesh:GrantUserPermissions",
"servicemesh:DescribeServiceMeshes",
"servicemesh:DescribeUsersWithPermissions"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "ims:ListUserBasicInfos",
"Resource": "*"
}
],
"Version": "1"
}