apache / apache/cloudstack

Security: ACS user access to all databases

Ouverte
#8,240 9 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
archive component:database status:needs-investigation type:security
Langage dominant
Java
Étoiles
3.1k
Forks
1.4k
Merge moyen
6 j 19 h
PR mergées (30 j)
32

Description

##### ISSUE TYPE

* Bug Report
* Improvement Request
* Enhancement Request

##### COMPONENT NAME

~~~
Core, MySQL
~~~

##### CLOUDSTACK VERSION

~~~
4.19.0.0-snapshot.20231113
~~~

##### CONFIGURATION

##### OS / ENVIRONMENT

Ubuntu 22.04

##### SUMMARY

ACS requires access to all MySQL databases, which creates a huge security hole for a shared MySQL instance.

Trying to limit the scope of ACS access yields in the access denied error (see below).

##### STEPS TO REPRODUCE

~~~
> `sudo cloudstack-setup-databases cloud:cloud@mysql --deploy-as=root`

/usr/share/cloudstack-management/setup/create-database.sql
lines: 64-65
GRANT process ON *.* TO cloud@`localhost`;
GRANT process ON *.* TO cloud@`%`;

// This works with the full access
GRANT ALL ON *.* TO 'root'@'hyp0' WITH GRANT OPTION

// This yields in an error:
- GRANT ALL ON mysql.* TO 'root'@'hyp0' WITH GRANT OPTION
- GRANT ALL ON billing.* TO 'root'@'hyp0' WITH GRANT OPTION
- GRANT ALL ON cloud.* TO 'root'@'hyp0' WITH GRANT OPTION
- GRANT ALL ON cloud_usage.* TO 'root'@'hyp0' WITH GRANT OPTION
~~~

##### EXPECTED RESULTS

~~~
ACS configs own databases only without an error
~~~

##### ACTUAL RESULTS

~~~
ACS wants a full access and gives an error when a limited db access is provided

We apologize for below error:
table:
/usr/share/cloudstack-management/setup/create-database.sql

Error:
b"ERROR 1045 (28000) at line 64: Access denied for user 'root'@'hyp0' (using password: NO)\n"
~~~

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par /usr/share/cloudstack-management/setup/create-database.sql, en particulier les lignes 64-65, et reproduisez la commande de configuration avec les privilèges MySQL limités indiqués. Déterminez de quelles bases de données et de quels privilèges ACS a besoin ; la tâche est terminée lorsque la configuration de CloudStack réussit avec uniquement la portée de base de données requise et sans accès aux bases de données sans rapport.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
mysql, sql
Domaine
databases, security
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.