Container Compute Service (ACS) s'appuie sur deux couches d'autorisation : Resource Access Management (RAM) pour les opérations sur les ressources cloud et le contrôle d'accès basé sur les rôles (RBAC) pour les ressources Kubernetes au sein des clusters. Un utilisateur RAM ou un rôle RAM doit disposer d'autorisations issues de ces deux couches pour gérer les clusters et les charges de travail.
Interaction entre les deux couches
Les clusters ACS sont des clusters Serverless Container Service for Kubernetes (ACK). Toutes les opérations de gestion de cluster font appel aux API ACK ; par conséquent, les autorisations doivent être configurées à la fois au niveau du cloud (RAM) et au niveau du cluster (RBAC).
| Couche | Périmètre | Contrôle | Attribution via |
|---|---|---|---|
| Autorisation RAM | Ressources cloud (plan de contrôle) | Cycle de vie du cluster, gestion RBAC, supervision, journaux et événements | Politiques système RAM ou politiques personnalisées |
| Autorisation RBAC | Ressources Kubernetes (plan de données) | Charges de travail, mise en réseau, stockage, namespaces, ConfigMaps et Secrets | ClusterRoles prédéfinis ou personnalisés dans la console ACS |
Finalisez la configuration de l'autorisation RAM avant d'attribuer les autorisations RBAC.
Périmètre de l'autorisation RAM
L'autorisation RAM accorde des permissions pour les opérations d'exploitation et de maintenance (O&M) des clusters :
Créer, consulter et supprimer des clusters
Gérer l'autorisation RBAC
Superviser les clusters et gérer les journaux et événements
Périmètre de l'autorisation RBAC
L'autorisation RBAC accorde des permissions au niveau du namespace ou à l'échelle du cluster sur les ressources Kubernetes :
Ressources de charge de travail : Deployment, StatefulSet, Job, CronJob, pod, ReplicaSet et HorizontalPodAutoscaler (HPA)
Ressources réseau : Service, Ingress et NetworkPolicy
Ressources de stockage : volume persistant (PV), revendication de volume persistant (PVC) et StorageClass
Autres ressources : Namespace, ConfigMap et Secret
Autorisation RAM
Par défaut, les utilisateurs RAM et les rôles RAM ne peuvent pas appeler les API des services cloud. Attachez des politiques RAM pour accorder l'accès requis.
Politiques système
Les politiques système accordent des permissions larges et prédéfinies, adaptées à un accès O&M couvrant tous les clusters d'un compte. Accorder des autorisations à un utilisateur RAM ou à un rôle RAM.
| Politique système | Permissions accordées | Remarque sur le périmètre |
|---|---|---|
| AliyunCSFullAccess | Accès complet à toutes les opérations API ACK | Inclut tous les clusters ACK, pas uniquement les clusters ACS. N'accorde pas d'autorisations RBAC sur les ressources Kubernetes. |
| AliyunCSReadOnlyAccess | Accès en lecture seule à toutes les opérations API ACK | Inclut tous les clusters ACK, pas uniquement les clusters ACS. |
| AliyunACCFullAccess | Accès complet à toutes les opérations API ACS | Limité aux clusters ACS. |
| AliyunACCReadOnlyAccess | Accès en lecture seule à toutes les opérations API ACS | Limité aux clusters ACS. |
| AliyunVPCReadOnlyAccess | Accès en lecture seule à Virtual Private Cloud (VPC) | Requis pour sélectionner un VPC lors de la création d'un cluster ACS. |
| AliyunContainerRegistryFullAccess | Accès complet aux images de conteneur dans Container Registry (ACR) | À l'échelle du compte. |
| AliyunLogReadOnlyAccess | Accès en lecture seule à Simple Log Service (SLS) | Requis pour sélectionner un projet de journal pour les journaux d'audit ou afficher les résultats de l'inspection de configuration. |
| AliyunRAMFullAccess | Accès complet à RAM | Requis pour gérer l'autorisation des autres utilisateurs et rôles RAM. |
| AliyunEBSFullAccess | Accès complet à Elastic Block Storage (EBS) | Requis pour utiliser les fonctionnalités de stockage sur disque. |
| AliyunARMSReadOnlyAccess | Accès en lecture seule à Application Real-Time Monitoring Service (ARMS) | Requis pour afficher les données de supervision de Managed Service for Prometheus. |
| AliyunKMSReadOnlyAccess | Accès en lecture seule à Key Management Service (KMS) | Requis pour sélectionner les clés de chiffrement lors de la création d'un cluster ACS. |
AliyunCSFullAccess et AliyunCSReadOnlyAccess couvrent tous les clusters ACK, et pas seulement les clusters ACS. Évaluez si ce périmètre est approprié avant d'attacher ces politiques.
Politiques personnalisées
Les politiques personnalisées offrent un contrôle granulaire sur des opérations API et des ressources spécifiques. Utilisez-les lorsque les utilisateurs ou rôles RAM nécessitent des permissions restreintes pour le développement basé sur SDK.
L'exemple suivant accorde un accès en lecture seule à un compartiment Object Storage Service (OSS) nommé myphotos :
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:ListBuckets",
"oss:GetBucketStat",
"oss:GetBucketInfo",
"oss:GetBucketTagging",
"oss:GetBucketAcl"
],
"Resource": "acs:oss:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"oss:ListObjects",
"oss:GetBucketAcl"
],
"Resource": "acs:oss:*:*:myphotos"
},
{
"Effect": "Allow",
"Action": [
"oss:GetObject",
"oss:GetObjectAcl"
],
"Resource": "acs:oss:*:*:myphotos/*"
}
]
}
Accès au niveau des pods avec RRSA
RAM Roles for Service Accounts (RRSA) associe un rôle RAM à un ServiceAccount Kubernetes, permettant ainsi aux pods utilisant ce ServiceAccount d'appeler des API de services cloud désignées. Utiliser RRSA pour autoriser différents pods à accéder à différents services cloud.
Autorisation RBAC
Une fois l'autorisation RAM configurée, accordez des permissions RBAC pour contrôler les actions qu'un utilisateur ou un rôle RAM peut effectuer sur les ressources Kubernetes. Attribuez les autorisations RBAC depuis la page d'autorisation de la console ACS.
Rôles prédéfinis
ACS propose les rôles prédéfinis suivants, ainsi qu'une option personnalisée. Chacun correspond à un ClusterRole. Accorder des autorisations RBAC aux utilisateurs RAM ou aux rôles RAM.
| Rôle | Périmètre | Accorde | N'accorde pas |
|---|---|---|---|
| Administrator | Tous les namespaces | Accès en lecture et écriture à toutes les ressources | -- |
| O&M engineer | Tous les namespaces | Accès en lecture et écriture aux ressources visibles dans la console ; accès en lecture seule aux nœuds, PV, namespaces et quotas | Accès en écriture aux nœuds, PV, namespaces et quotas |
| Developer | Namespaces spécifiés ou tous les namespaces | Accès en lecture et écriture aux ressources visibles dans la console | Accès en dehors du namespace assigné (lorsque limité au namespace) |
| Restricted user | Namespaces spécifiés ou tous les namespaces | Accès en lecture seule aux ressources visibles dans la console | Accès en écriture à toute ressource |
| Custom role | Défini par ClusterRole | Déterminé par le ClusterRole sélectionné | Permissions non incluses dans le ClusterRole |
Avant d'attribuer un rôle personnalisé, examinez les permissions du ClusterRole pour vérifier que seul l'accès requis est accordé. Personnaliser un rôle RBAC.
Rôles et ClusterRoles
Le RBAC Kubernetes utilise deux types de ressources de rôle :
Role -- ressource limitée à un namespace qui définit les permissions au sein d'un seul namespace. Spécifiez le namespace cible lors de la création d'un Role.
ClusterRole -- ressource non limitée à un namespace qui définit les permissions à l'échelle du cluster.
Un ClusterRole peut être utilisé de trois manières :
Accorder des permissions sur des ressources limitées à un namespace au sein de namespaces individuels.
Accorder des permissions sur des ressources limitées à un namespace dans tous les namespaces.
Accorder des permissions sur des ressources à l'échelle du cluster.
Utilisez un Role lorsque les permissions doivent être limitées à un seul namespace. Utilisez un ClusterRole lorsque les permissions s'étendent à l'ensemble du cluster.
ACK permet d'utiliser uniquement des ClusterRoles pour accorder des autorisations RBAC. Les Roles ne peuvent pas être utilisés pour l'autorisation RBAC.
Pour créer un ClusterRole personnalisé, consultez la rubrique Personnaliser un rôle RBAC. Pour attacher un ClusterRole à un utilisateur ou un rôle RAM, consultez la rubrique Accorder des autorisations RBAC aux utilisateurs RAM ou aux rôles RAM.