Creació de rols
Contingut
Introducció
Els rols és la manera de crear una abstracció sobre els usuaris.
- Crearem rols
- Assignem privilegis als rols
- Assignem els rols als usuaris.
D'aquesta manera, quan tenim una política complerta de seguretat amb molts usuaris, podem utilitzar els rols. Igual que faríem amb la seguretat d'un sistema operatiu.
Refrència
Rols
Seguim l'exemple dels apunts:
mysql> CREATE DATABASE crm;
Query OK, 1 row affected (0,01 sec)
mysql> use crm
Database changed
mysql> CREATE TABLE customers(
id INT PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL,
phone VARCHAR(15) NOT NULL,
email VARCHAR(255)
);
Query OK, 0 rows affected (0,07 sec)
mysql> INSERT INTO customers(first_name,last_name,phone,email)
VALUES('John','Doe','(408)-987-7654','john.doe@mysqltutorial.org'),
('Lily','Bush','(408)-987-7985','lily.bush@mysqltutorial.org');
Query OK, 2 rows affected (0,03 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM customers;
+----+------------+-----------+----------------+-----------------------------+
| id | first_name | last_name | phone | email |
+----+------------+-----------+----------------+-----------------------------+
| 1 | John | Doe | (408)-987-7654 | john.doe@mysqltutorial.org |
| 2 | Lily | Bush | (408)-987-7985 | lily.bush@mysqltutorial.org |
+----+------------+-----------+----------------+-----------------------------+
Crearem tres rols diferenciats: un de desenvolupador, un amb permisos de lectura, i un amb permisos d'escriptura:
CREATE ROLE
crm_dev,
crm_read,
crm_write;
Donem els permisos als rols:
GRANT ALL ON crm.* TO crm_dev; GRANT SELECT ON crm.* TO crm_read; GRANT INSERT, UPDATE, DELETE ON crm.* TO crm_write;
I ara creem els usuaris:
mysql> -- developer user mysql> CREATE USER crm_dev1@localhost IDENTIFIED BY 'Secure$1782'; mysql> -- read access user mysql> CREATE USER crm_read1@localhost IDENTIFIED BY 'Secure$5432'; mysql> -- read/write users mysql> CREATE USER crm_write1@localhost IDENTIFIED BY 'Secure$9075'; mysql> CREATE USER crm_write2@localhost IDENTIFIED BY 'Secure$3452';
De moment, aquests usuaris encara no tenen cap permís.
Ara assignem els rols als usuaris:
GRANT crm_dev TO crm_dev1@localhost; GRANT crm_read TO crm_read1@localhost; GRANT crm_read, crm_write TO crm_write1@localhost, crm_write2@localhost;
I ara mirem com ha quedat l'assignació de privilegis als usuaris:
mysql> SHOW GRANTS FOR crm_dev1@localhost; +-----------------------------------------------+ | Grants for crm_dev1@localhost | +-----------------------------------------------+ | GRANT USAGE ON *.* TO `crm_dev1`@`localhost` | | GRANT `crm_dev`@`%` TO `crm_dev1`@`localhost` | +-----------------------------------------------+
Veiem que té assignat el rol de crm_dev, però no veiem quins privilegis representa. Amb la clàusula USING podem veure els privilegis:
mysql> SHOW GRANTS FOR crm_dev1@localhost USING crm_dev; +-----------------------------------------------------------+ | Grants for crm_dev1@localhost | +-----------------------------------------------------------+ | GRANT USAGE ON *.* TO `crm_dev1`@`localhost` | | GRANT ALL PRIVILEGES ON `crm`.* TO `crm_dev1`@`localhost` | | GRANT `crm_dev`@`%` TO `crm_dev1`@`localhost` | +-----------------------------------------------------------+
Els privilegis de crm_write1:
mysql> SHOW GRANTS FOR crm_write1@localhost USING crm_write; +---------------------------------------------------------------------+ | Grants for crm_write1@localhost | +---------------------------------------------------------------------+ | GRANT USAGE ON *.* TO `crm_write1`@`localhost` | | GRANT INSERT, UPDATE, DELETE ON `crm`.* TO `crm_write1`@`localhost` | | GRANT `crm_read`@`%`,`crm_write`@`%` TO `crm_write1`@`localhost` | +---------------------------------------------------------------------+
Els privilegis de crm_read1:
mysql> SHOW GRANTS FOR crm_read1@localhost USING crm_read; +----------------------------------------------------+ | Grants for crm_read1@localhost | +----------------------------------------------------+ | GRANT USAGE ON *.* TO `crm_read1`@`localhost` | | GRANT SELECT ON `crm`.* TO `crm_read1`@`localhost` | | GRANT `crm_read`@`%` TO `crm_read1`@`localhost` | +----------------------------------------------------+