ack-ram-tool est un outil en ligne de commande fourni par Container Service for Kubernetes (ACK) qui vous aide à gérer les autorisations RAM et le contrôle d'accès basé sur les rôles (RBAC) dans vos clusters ACK. Lorsqu'un utilisateur quitte votre organisation ou n'a plus besoin d'accéder au cluster, utilisez ack-ram-tool pour rechercher ses liaisons RBAC et les nettoyer, y compris la révocation de son kubeconfig, avant que des autorisations obsolètes ne deviennent une faille de sécurité.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Étape 1 : Installer ack-ram-tool
Téléchargez le client ack-ram-tool adapté à votre système d'exploitation et à votre architecture.
-
Accordez les autorisations d'exécution au binaire :consultez la section Credentials
-
Déplacez le binaire vers un répertoire inclus dans votre PATH :
mkdir -p $HOME/bin && cp ./ack-ram-tool $HOME/bin/ack-ram-tool && export PATH=$HOME/bin:$PATH
-
(Facultatif) Rendez la modification du PATH persistante :
echo 'export PATH=$HOME/bin:$PATH' >> ~/.bash_profile
-
Vérifiez l'installation. La commande renvoie la version du client.
Étape 2 : Configurer les identifiants Alibaba Cloud
Les utilisateurs RAM et les utilisateurs CloudSSO peuvent configurer leurs identifiants à l'aide de l'une des méthodes suivantes.
Si des variables d'environnement liées aux identifiants sont présentes, ack-ram-tool les utilise par défaut. Pour les ignorer, ajoutez l'indicateur --ignore-env-credentials à toute commande ack-ram-tool. Pour obtenir la liste complète des variables d'environnement prises en charge, consultez la section Credentials .
Utilisateur RAM
ack-ram-tool utilise les identifiants Alibaba Cloud configurés localement pour s'authentifier auprès de RAM. Pour obtenir des instructions de configuration, consultez la section Alibaba Cloud CLI.
Utilisateur CloudSSO
Utilisez acs-sso, l'outil CLI fourni par CloudSSO, pour vous connecter et obtenir des identifiants. Pour plus d'informations, consultez la section Use the CLI to log on to CloudSSO and access Alibaba Cloud resources.
L'interface CLI Alibaba Cloud prend en charge un mode d'identification externe qui appelle une commande externe pour récupérer dynamiquement les identifiants. Exécutez la commande suivante pour configurer la connexion automatique CloudSSO sur votre machine locale :
aliyun configure --mode External --profile sso
Les invites interactives se présentent comme suit :
Configuring profile 'sso' in 'External' authenticate mode...
Process Command [acs-sso login --profile sso]:
Default Region Id [cn-shanghai]:
Default Output Format [json]: json (Only support json)
Default Language [zh|en] en:
Saving profile[sso] ...Done.
Configure Done!!!
..............888888888888888888888 ........=8888888888888888888D=..............
...........88888888888888888888888 ..........D8888888888888888888888I...........
.........,8888888888888ZI: ...........................=Z88D8888888888D..........
.........+88888888 ..........................................88888888D..........
.........+88888888 .......Welcome to use Alibaba Cloud.......O8888888D..........
.........+88888888 ............. ************* ..............O8888888D..........
.........+88888888 .... Command Line Interface(Reloaded) ....O8888888D..........
.........+88888888...........................................88888888D..........
..........D888888888888DO+. ..........................?ND888888888888D..........
...........O8888888888888888888888...........D8888888888888888888888=...........
............ .:D8888888888888888888.........78888888888888888888O ..............
Étape 3 : Configurer les autorisations pour les identifiants
ack-ram-tool requiert à la fois des autorisations RAM et des autorisations RBAC au niveau du cluster.
-
Attribuez la stratégie RAM suivante à l'utilisateur RAM. Pour obtenir des instructions, consultez la section Gérer les autorisations des utilisateurs RAM.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cs:*"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ram:ListUsers",
"ram:ListRoles"
],
"Resource": "*"
}
]
}
-
Accordez à l'utilisateur RAM l'autorisation d'administrateur RBAC pour le cluster :
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur console ACKAuthorizations.
Sur la page Authorizations, cliquez sur l'onglet RAM User, recherchez l'utilisateur RAM cible, puis cliquez sur Modify Permissions dans la colonne Actions.
Sur la page Permission Management, cliquez sur Add Permissions, sélectionnez le Cluster et l'espace de noms cibles, définissez Permission Management sur Administrator, puis cliquez sur Submit.
Étape 4 : Analyser les liaisons RBAC
Utilisez ack-ram-tool rbac scan-user-permissions pour identifier les utilisateurs RAM et les rôles RAM qui conservent des liaisons RBAC dans votre cluster. La sortie de l'analyse inclut une colonne UID : copiez l'UID de l'utilisateur dont vous souhaitez supprimer les autorisations, puis utilisez-le à l'étape 5.
Les colonnes de sortie sont les suivantes : UID, UserType, UserName et Binding.
| UserType |
Description |
| RamRole |
Rôle RAM |
| RamUser |
Utilisateur RAM |
| Root |
Compte Alibaba Cloud |
Analyser les utilisateurs supprimés (par défaut)
Par défaut, l'analyse renvoie uniquement les utilisateurs RAM et les rôles RAM supprimés.
ack-ram-tool rbac scan-user-permissions -c <cluster ID>
Sortie attendue :
2023-12-12T15:34:37+08:00 INFO start to scan users and bindings for cluster c401890df511a4362bf24bece4da****
2023-12-12T15:34:43+08:00 WARN by default, only deleted users are included. Use the --all-users flag to include all users
UID UserType UserName Binding
30086537005566**** (deleted) RamRole ClusterRoleBinding/-/30086537005566****-clusterrolebinding
24320678733226**** (deleted) RamUser ClusterRoleBinding/-/24320678733226****-clusterrolebinding
Analyser tous les utilisateurs et rôles
Ajoutez --all-users pour inclure les utilisateurs RAM et les rôles RAM actifs dans les résultats.
ack-ram-tool rbac scan-user-permissions --all-users -c <cluster ID>
Sortie attendue :
2023-12-12T15:36:00+08:00 INFO Start to scan users and bindings for cluster c401890df511a4362bf24bece4da6****
UID UserType UserName Binding
30032484611590**** (deleted) RamRole ClusterRoleBinding/-/30032484611590****-clusterrolebinding
20492499986425**** (deleted) RamUser ClusterRoleBinding/-/20492499986425****-clusterrolebinding
27203272572548**** RamUser scan ClusterRoleBinding/-/27203272572548****-clusterrolebinding
113802571552**** Root ClusterRoleBinding/-/113802571552****-cluster-admin-clusterrolebinding
29068913515444**** RamUser test-ack-ram-check ClusterRoleBinding/-/29068913515444****-clusterrolebinding
Analyser tous les clusters
Remplacez l'ID du cluster par all pour analyser tous les clusters de votre compte Alibaba Cloud.
ack-ram-tool rbac scan-user-permissions -c all
Sortie attendue :
2023-12-12T16:44:55+08:00 INFO start to scan users and bindings for all clusters
2023-12-12T16:44:55+08:00 INFO start to get all clusters, users and roles
2023-12-12T16:44:58+08:00 INFO ---- c401890df511a4362bf24bece4da6**** (test-pro111323223) ----
2023-12-12T16:44:58+08:00 INFO [c401890df511a4362bf24bece4da6****] start to scan bindings for cluster c401890df511a4362bf24bece4da6****
2023-12-12T16:45:00+08:00 WARN [c401890df511a4362bf24bece4da6****] by default, only deleted users are included. Use the --all-users flag to include all users
ClusterId: c401890df511a4362bf24bece4da6****
UID UserType UserName Binding
30086537005566**** (deleted) RamRole ClusterRoleBinding/-/30086537005566****-clusterrolebinding
20492499986425**** (deleted) RamUser ClusterRoleBinding/-/20492499986425****-clusterrolebinding
2023-12-12T16:45:00+08:00 INFO ---- c137a979dec21472c8279c903cfc**** (test-pro) ----
2023-12-12T16:45:00+08:00 INFO [c137a979dec21472c8279c903cfce****] start to scan bindings for cluster c137a979dec21472c8279c903cfce****
2023-12-12T16:45:01+08:00 WARN [c137a979dec21472c8279c903cfce****] by default, only deleted users are included. Use the --all-users flag to include all users
ClusterId: c137a979dec21472c8279c903cfce****
UID UserType UserName Binding
30086537005566**** (deleted) RamRole ClusterRoleBinding/-/30086537005566****-clusterrolebinding
24320678733226**** (deleted) RamUser ClusterRoleBinding/-/24320678733226****-clusterrolebinding
Étape 5 : Nettoyer les autorisations
Utilisez ack-ram-tool rbac cleanup-user-permissions pour supprimer les liaisons RBAC d'un utilisateur RAM ou d'un rôle RAM spécifique et révoquer son kubeconfig. Indiquez le <UID> obtenu lors de l'analyse à l'étape 4.
Important
Si le journal contient this user has been active in the past 7 days, cela signifie que l'utilisateur cible a accédé au cluster au cours des sept derniers jours. Procédez avec prudence.
Avant de supprimer une liaison, ack-ram-tool sauvegarde son fichier JSON d'origine dans un dossier du répertoire actuel nommé selon l'ID du cluster.
Nettoyer les autorisations dans un seul cluster
ack-ram-tool rbac cleanup-user-permissions -c <cluster ID> -u <UID>
Sortie attendue :
Détails
2023-12-12T18:17:10+08:00 INFO start to scan users and bindings
2023-12-12T18:17:15+08:00 WARN we will clean up RBAC bindings as follows:
UID UserType UserName Binding
25908395708943**** RamUser ack-admin ClusterRoleBinding/-/25908395708943****-clusterrolebinding
2023-12-12T18:17:15+08:00 WARN we will clean up kubeconfig permissions for users as follows:
UID: 25908395708943****
2023-12-12T18:17:15+08:00 INFO start to check cluster audit log for user 25908395708943****
2023-12-12T18:17:16+08:00 WARN this user has been active in the past 7 days, and the last activity time was: 2023-12-12T10:27:56+08:00. You will find the relevant audit log details below:
sls project: k8s-log-c137a979dec21472c8279c903cfce****
sls logstore: audit-c137a979dec21472c8279c903cfce****
last activity: 2023-12-12T10:27:56+08:00 (auditID: 8f6f1483-77f3-44b3-85cb-f23d1a76e****)
? Are you sure you want to clean up these bindings and permissions? Yes
2023-12-12T18:17:37+08:00 INFO start to backup binding ClusterRoleBinding/-/25908395708943****-clusterrolebinding
2023-12-12T18:17:38+08:00 INFO the origin binding ClusterRoleBinding/-/25908395708943****-clusterrolebinding have been backed up to file c137a979dec21472c8279c903cfce****/ClusterRoleBinding--25908395708943****-clusterrolebinding.json
2023-12-12T18:17:38+08:00 INFO start to clean up kubeconfig permissions for uid 25908395708943****
2023-12-12T18:17:38+08:00 INFO finished clean up kubeconfig permissions for uid 25908395708943****
2023-12-12T18:17:38+08:00 INFO all bindings and permissions have been cleaned up
Nettoyer les autorisations dans tous les clusters
ack-ram-tool rbac cleanup-user-permissions -c all -u <UID>
Sortie attendue :
Détails
2023-12-12T19:28:23+08:00 INFO start to scan users and bindings for all clusters
2023-12-12T19:28:23+08:00 INFO start to get all clusters, users and roles
2023-12-12T19:28:24+08:00 INFO ---- c401890df511a4362bf24bece4da6**** (test-pro111323223) ----
2023-12-12T19:28:24+08:00 INFO [c401890df511a4362bf24bece4da6****] start to clean up bindings and permissions for cluster c401890df511a4362bf24bece4da6****
2023-12-12T19:28:24+08:00 INFO [c401890df511a4362bf24bece4da6****] start to scan users and bindings
2023-12-12T19:28:25+08:00 WARN [c401890df511a4362bf24bece4da6****] we will clean up RBAC bindings as follows:
UID UserType UserName Binding
25908395708943**** RamUser ack-admin ClusterRoleBinding/-/25908395708943****-clusterrolebinding
2023-12-12T19:28:25+08:00 WARN [c401890df511a4362bf24bece4da6****] we will clean up kubeconfig permissions for users as follows:
UID: 259083957089437690
2023-12-12T19:28:25+08:00 INFO [c401890df511a4362bf24bece4da6****] start to check cluster audit log for user 25908395708943****
2023-12-12T19:28:25+08:00 WARN [c401890df511a4362bf24bece4da6****] this user has been active in the past 7 days, and the last activity time was: 2023-12-12T10:27:56+08:00. You will find the relevant audit log details below:
sls project: k8s-log-c401890df511a4362bf24bece4da****
sls logstore: audit-c401890df511a4362bf24bece4da6****
last activity: 2023-12-12T10:27:56+08:00 (auditID: 8f6f1483-77f3-44b3-85cb-f23d1a76****)
? Are you sure you want to clean up these bindings and permissions? Yes
2023-12-12T19:28:49+08:00 INFO [c401890df511a4362bf24bece4da6****] start to backup binding ClusterRoleBinding/-/25908395708943**** -clusterrolebinding
2023-12-12T19:28:49+08:00 INFO [c401890df511a4362bf24bece4da6****] the origin binding ClusterRoleBinding/-/25908395708943****-clusterrolebinding have been backed up to file c401890df511a4362bf24bece4da6**** /ClusterRoleBinding--259083957089437XXX-clusterrolebinding.json
2023-12-12T19:28:49+08:00 INFO [c401890df511a4362bf24bece4da6****] start to clean up kubeconfig permissions for uid 25908395708943****
2023-12-12T19:28:49+08:00 INFO [c401890df511a4362bf24bece4da6****] finished clean up kubeconfig permissions for uid 25908395708943****
2023-12-12T19:28:49+08:00 INFO [c401890df511a4362bf24bece4da6****] all bindings and permissions have been cleaned up
2023-12-12T19:28:49+08:00 INFO ---- c137a979dec21472c8279c903cfce**** (test-pro) ----
2023-12-12T19:28:49+08:00 INFO [c137a979dec21472c8279c903cfce****] start to clean up bindings and permissions for cluster c137a979dec21472c8279c903cfce****
2023-12-12T19:28:49+08:00 INFO [c137a979dec21472c8279c903cfce****] start to scan users and bindings
2023-12-12T19:28:51+08:00 WARN [c137a979dec21472c8279c903cfce****] we will clean up RBAC bindings as follows:
UID UserType UserName Binding
25908395708943**** RamUser ack-admin ClusterRoleBinding/-/25908395708943**** -clusterrolebinding
2023-12-12T19:28:51+08:00 WARN [c137a979dec21472c8279c903cfce****] we will clean up kubeconfig permissions for users as follows:
UID: 25908395708943****
2023-12-12T19:28:51+08:00 INFO [c137a979dec21472c8279c903cfce****] start to check cluster audit log for user 25908395708943****
2023-12-12T19:28:51+08:00 WARN [c137a979dec21472c8279c903cfce****] this user has been active in the past 7 days, and the last activity time was: 2023-12-12T17:55:50+08:00. You will find the relevant audit log details below:
sls project: k8s-log-c137a979dec21472c8279c903cfce****
sls logstore: audit-c137a979dec21472c8279c903cfce****
last activity: 2023-12-12T17:55:50+08:00 (auditID: 8f6f1483-77f3-44b3-85cb-f23d1a76****)
? Are you sure you want to clean up these bindings and permissions? Yes
2023-12-12T19:28:52+08:00 INFO [c137a979dec21472c8279c903cfce****] start to backup binding ClusterRoleBinding/-/25908395708943****-clusterrolebinding
2023-12-12T19:28:52+08:00 INFO [c137a979dec21472c8279c903cfce****] the origin binding ClusterRoleBinding/-/25908395708943****-clusterrolebinding have been backed up to file c137a979dec21472c8279c903cfce**** /ClusterRoleBinding--25908395708943**** -clusterrolebinding.json
2023-12-12T19:28:52+08:00 INFO [c137a979dec21472c8279c903cfce****] start to clean up kubeconfig permissions for uid 25908395708943****
2023-12-12T19:28:52+08:00 INFO [c137a979dec21472c8279c903cfce****] finished clean up kubeconfig permissions for uid 25908395708943****
2023-12-12T19:28:52+08:00 INFO [c137a979dec21472c8279c903cfce****] all bindings and permissions have been cleaned up