Modello di privilegi basato sui ruoli per for My RDS SQL - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Modello di privilegi basato sui ruoli per for My RDS SQL

A partire RDS dalla SQL versione My 8.0.36, non è possibile modificare direttamente le tabelle nel database. mysql In particolare, non è possibile creare utenti del database eseguendo operazioni con il linguaggio di manipolazione dei dati (DML) sulle tabelle. grant Utilizzate invece le istruzioni di SQL gestione del mio account come CREATE USERGRANT, e REVOKE per concedere privilegi basati sui ruoli agli utenti. Inoltre, nel database mysql, non è possibile creare altri tipi di oggetti come le stored procedure. È comunque possibile interrogare le tabelle di mysql. Se si utilizza la replica dei log binari, le modifiche apportate direttamente alle mysql tabelle sull'istanza DB di origine non vengono replicate nel cluster di destinazione.

In alcuni casi, l'applicazione potrebbe utilizzare scorciatoie per creare utenti o altri oggetti inserendoli nelle tabelle di mysql. In tal caso, modifica il codice dell'applicazione per utilizzare le istruzioni corrispondenti come CREATE USER.

Per esportare i metadati per gli utenti del database durante la migrazione da un SQL database My esterno, utilizzate uno dei seguenti metodi:

  • Utilizzate l'utilità di dump delle istanze di My SQL Shell con un filtro per escludere utenti, ruoli e concessioni. L'esempio seguente mostra la sintassi dei comandi da utilizzare. Assicurati che outputUrl sia vuoto.

    mysqlsh user@host -- util.dumpInstance(outputUrl,{excludeSchemas:['mysql'],users: true})

    Per ulteriori informazioni, consulta Instance Dump Utility, Schema Dump Utility e Table Dump Utility nel My SQL Reference Manual.

  • Usa l'utilità client. mysqlpump Questo esempio include tutte le tabelle ad eccezione delle tabelle del database mysql di sistema. Include CREATE USER anche GRANT istruzioni per riprodurre tutti SQL gli utenti My nel database migrato.

    mysqlpump --exclude-databases=mysql --users

    L'utilità mysqlpump client non è più disponibile con My SQL 8.4. Utilizza invece mysqldump.

Per semplificare la gestione delle autorizzazioni per molti utenti o applicazioni, è possibile utilizzare l'istruzione CREATE ROLE per creare un ruolo con una serie di autorizzazioni. Puoi quindi utilizzare le istruzioni GRANT e SET ROLE e la funzione current_role per assegnare ruoli a utenti o applicazioni, cambiare il ruolo corrente e verificare quali ruoli sono in vigore. Per ulteriori informazioni sul sistema di autorizzazione basato sui ruoli in My SQL 8.0, consulta Using Roles in My Reference Manual. SQL

Importante

Si consiglia di non utilizzare l'utente master direttamente nelle applicazioni. Rispetta piuttosto la best practice di utilizzare un utente del database creato con i privilegi minimi richiesti per l'applicazione.

A partire dalla versione 8.0.36, RDS for My SQL include un ruolo speciale con tutti i seguenti privilegi. Il ruolo è denominato rds_superuser_role. Questo ruolo è già concesso all'utente amministrativo principale di ogni istanza DB. Il ruolo rds_superuser_role include i seguenti privilegi per tutti gli oggetti del database:

  • ALTER

  • APPLICATION_PASSWORD_ADMIN

  • ALTER ROUTINE

  • CREATE

  • CREATE ROLE

  • CREATE ROUTINE

  • CREATE TEMPORARY TABLES

  • CREATE USER

  • CREATE VIEW

  • DELETE

  • DROP

  • DROP ROLE

  • EVENT

  • EXECUTE

  • INDEX

  • INSERT

  • LOCK TABLES

  • PROCESS

  • REFERENCES

  • RELOAD

  • REPLICATION CLIENT

  • REPLICATION SLAVE

  • ROLE_ADMIN

  • SET_USER_ID

  • SELECT

  • SHOW DATABASES

  • SHOW VIEW

  • TRIGGER

  • UPDATE

  • XA_RECOVER_ADMIN

La definizione del ruolo include anche la WITH GRANT OPTION in modo che un utente amministrativo possa concedere tale ruolo ad altri utenti. In particolare, l'amministratore deve concedere tutti i privilegi necessari per eseguire la replica dei log binari con il SQL cluster My come destinazione.

Suggerimento

Per visualizzare i dettagli completi delle autorizzazioni, utilizzare la seguente dichiarazione.

SHOW GRANTS FOR rds_superuser_role@'%';

Quando concedi l'accesso utilizzando i ruoli in RDS My SQL version 8.0.36 e successive, attivi il ruolo anche utilizzando l'SET ROLE role_nameistruzione or. SET ROLE ALL L'esempio seguente mostra come. Sostituire il nome del ruolo appropriato per CUSTOM_ROLE.

# Grant role to user mysql> GRANT CUSTOM_ROLE TO 'user'@'domain-or-ip-address' # Check the current roles for your user. In this case, the CUSTOM_ROLE role has not been activated. # Only the rds_superuser_role is currently in effect. mysql> SELECT CURRENT_ROLE(); +--------------------------+ | CURRENT_ROLE() | +--------------------------+ | `rds_superuser_role`@`%` | +--------------------------+ 1 row in set (0.00 sec) # Activate all roles associated with this user using SET ROLE. # You can activate specific roles or all roles. # In this case, the user only has 2 roles, so we specify ALL. mysql> SET ROLE ALL; Query OK, 0 rows affected (0.00 sec) # Verify role is now active mysql> SELECT CURRENT_ROLE(); +--------------------------------------------------+ | CURRENT_ROLE() | +--------------------------------------------------+ | `CUSTOM_ROLE`@`%`,`rds_superuser_role`@`%` | +--------------------------------------------------+