Le contrôle ultraprécis des accès Spanner combine les avantages d'Identity and Access Management (IAM) et du contrôle des accès basé sur les rôles SQL. Avec le contrôle ultraprécis des accès, vous définissez des rôles de base de données, accordez des droits à ces rôles et créez des stratégies IAM pour accorder des autorisations sur les rôles de base de données aux comptes principaux IAM. Cette page explique comment utiliser le contrôle ultraprécis des accès avec Spanner pour les bases de données utilisant le dialecte GoogleSQL et celles utilisant le dialecte PostgreSQL.
En tant qu'administrateur, vous devez activer le contrôle ultraprécis des accès pour les comptes principaux IAM individuels. Les comptes principaux pour lesquels le contrôle ultraprécis des accès est activé ("utilisateurs du contrôle ultraprécis des accès") doivent assumer un rôle de base de données pour accéder aux ressources Spanner.
L'accès aux ressources pour les utilisateurs qui n'utilisent pas le contrôle ultraprécis des accès est régi par des rôles IAM au niveau de la base de données. Le contrôle ultraprécis des accès est entièrement compatible et peut coexister avec le contrôle des accès IAM existant au niveau de la base de données. Vous pouvez l'utiliser pour accéder à des objets de base de données individuels. Pour contrôler l'accès à l'ensemble de la base de données, utilisez des rôles IAM.
Le contrôle ultraprécis des accès vous permet de contrôler l'accès aux tables, aux colonnes, aux vues et aux flux de modifications.
Pour gérer le contrôle ultraprécis des accès, vous utilisez les instructions LDD suivantes :
- Instructions
CREATEetDROPpour créer et supprimer des rôles de base de données. Les rôles de base de données sont des ensembles de droits. Vous pouvez créer jusqu'à 100 rôles pour une base de données. Instructions
GRANTetREVOKEpour accorder et révoquer des droits aux rôles de base de données. Les droits incluentSELECT,INSERT,UPDATE,DELETEetEXECUTE. Les noms des droits correspondent aux instructions SQL du même nom. Par exemple, un rôle disposant du droitINSERTpeut exécuter l'instruction SQLINSERTsur les tables spécifiées dans l'instructionGRANT.Les instructions LDD suivantes accordent
SELECTsur la tableemployeesau rôle de base de donnéeshr_rep.GoogleSQL
CREATE ROLE hr_rep; GRANT SELECT ON TABLE employees TO ROLE hr_rep;PostgreSQL
CREATE ROLE hr_rep; GRANT SELECT ON TABLE employees TO hr_rep;Pour en savoir plus sur les droits, consultez la documentation de référence sur les droits de contrôle des accès ultraprécis.
Instructions
GRANTpermettant d'attribuer des rôles à d'autres rôles afin de créer des hiérarchies de rôles, avec héritage des droits.
Cas d'utilisation
Voici des exemples de cas d'utilisation du contrôle ultraprécis des accès :
- Un système d'informations RH qui comporte des rôles d'analyste de la rémunération des ventes, de gestion des ventes et d'analyste RH, chacun disposant de niveaux d'accès différents aux données. Par exemple, les analystes de rémunération et la direction des ventes ne doivent pas voir les numéros de sécurité sociale.
- Une application de covoiturage avec différents comptes de service et privilèges pour les passagers et les conducteurs.
- Un registre qui autorise les opérations
SELECTetINSERT, mais pas les opérationsUPDATEetDELETE.
Ressources Spanner et leurs droits
Voici une liste des ressources Spanner et des droits de contrôle des accès ultraprécis des accès que vous pouvez leur accorder.
- Schémas
- Vous pouvez accorder le droit
USAGEsur les schémas à des rôles de base de données spécifiques. Pour un schéma autre que celui par défaut, les rôles de base de données doivent disposer du droitUSAGEpour accéder aux objets de la base de données. La vérification des droits se présente comme suit :
Avez-vous USAGE dans le schéma ?
Non : refusez l'accès.
Oui : disposez-vous également des droits appropriés sur la table ?
Non : refusez l'accès.
Oui : vous pouvez accéder à la table.
- Tables
- Vous pouvez accorder les droits
SELECT,INSERT,UPDATEetDELETEsur les tables aux rôles de base de données. Pour les tables entrelacées, un droit accordé sur la table parente ne se propage pas à la table enfant. - Colonnes
- Vous pouvez accorder les autorisations
SELECT,INSERTetUPDATEsur un sous-ensemble de colonnes d'une table. Le droit n'est alors valide que pour ces colonnes.DELETEn'est pas autorisé au niveau de la colonne. - Vues
- Vous pouvez accorder le droit
SELECTsur une vue. SeulSELECTest accepté pour les vues. Spanner est compatible avec les vues des droits de l'appelant et les vues des droits du définisseur. Si vous créez une vue avec des droits d'appelant, pour interroger la vue, le rôle ou l'utilisateur de la base de données doit disposer du droitSELECTsur la vue, ainsi que du droitSELECTsur les objets sous-jacents référencés dans la vue. Si vous créez une vue avec les droits du créateur, le rôle ou l'utilisateur de la base de données n'a besoin que du droitSELECTsur la vue pour l'interroger. Pour en savoir plus, consultez Présentation des vues. - Flux de modifications
- Vous pouvez accorder
SELECTsur les flux de modifications. Vous devez également accorderEXECUTEsur la fonction de lecture associée à un flux de modifications. Pour en savoir plus, consultez Contrôle ultraprécis des contrôle des accès pour les flux de modifications. - Séquences
- Vous pouvez accorder
SELECTetUPDATEsur des séquences. Pour en savoir plus, consultez Contrôle ultraprécis des contrôle des accès pour les séquences. - Modèles
- Vous pouvez accorder
EXECUTEsur des modèles. Pour en savoir plus, consultez Contrôle ultraprécis des contrôle des accès pour les modèles.
Rôles système pour le contrôle ultraprécis des accès
Le contrôle ultraprécis des accès dispose de rôles système prédéfinis pour chaque base de données. Comme les rôles de base de données définis par l'utilisateur, les rôles système peuvent contrôler l'accès aux ressources Spanner.
Par exemple, un utilisateur disposant d'un contrôle ultraprécis des accès doit se voir attribuer le rôle système spanner_sys_reader pour accéder à Key Visualizer, et le rôle système spanner_info_reader pour pouvoir voir les résultats non filtrés lorsqu'il interroge les tables INFORMATION_SCHEMA.
Pour en savoir plus, consultez Rôles système contrôle des accès ultraprécis des accès.
Hiérarchies et héritage des rôles de base de données
Vous pouvez créer des hiérarchies de rôles de base de données, dans lesquelles les rôles enfants héritent des droits des rôles parents. Les rôles enfants sont appelés membres du rôle parent.
Prenons l'exemple des instructions GRANT suivantes :
GoogleSQL
GRANT SELECT ON TABLE employees TO ROLE pii_access;
GRANT ROLE pii_access TO ROLE hr_manager, hr_director;
PostgreSQL
GRANT SELECT ON TABLE employees TO pii_access;
GRANT pii_access TO hr_manager, hr_director;
hr_manager et hr_director sont membres du rôle pii_access et héritent du droit SELECT sur la table employees.

hr_manager et hr_director peuvent également avoir des membres, et ces membres hériteraient du droit SELECT sur employees.
Il n'y a pas de limite à la profondeur des hiérarchies de rôles, mais les performances des requêtes peuvent se dégrader avec des structures de hiérarchie de rôles profondes et larges.
Sauvegarde et restauration
Les sauvegardes Spanner incluent les définitions de rôles de base de données. Lorsqu'une base de données est restaurée à partir d'une sauvegarde, les rôles de base de données sont recréés avec les droits qui leur ont été accordés. Toutefois, les stratégies IAM ne font pas partie des sauvegardes de base de données. Vous devez donc accorder de nouveau l'accès aux rôles de base de données aux comptes principaux de la base de données restaurée.
Présentation de la configuration du contrôle ultraprécis des accès
Voici les principales étapes à suivre pour commencer à sécuriser les données avec un contrôle ultraprécis des accès. Pour en savoir plus, consultez Configurer le contrôle ultraprécis des accès.
Vous devez disposer des rôles IAM roles/spanner.admin ou roles/spanner.databaseAdmin pour effectuer ces tâches.
- Créez des rôles de base de données et accordez-leur des privilèges.
- Facultatif : Créez des hiérarchies de rôles avec héritage en attribuant des rôles à d'autres rôles.
- Effectuez ces étapes pour chaque compte principal qui doit être un utilisateur du contrôle des accès ultraprécis :
- Activez le contrôle ultraprécis des accès pour le compte principal.
Le compte principal se voit alors automatiquement attribuer le rôle de base de données
public, qui ne dispose d'aucun droit par défaut. Cette opération n'est à effectuer qu'une seule fois pour chaque compte principal. - Accordez au compte principal des autorisations IAM sur un ou plusieurs rôles de base de données.
- Une fois que le compte principal s'est vu attribuer tous les rôles de base de données requis, s'il dispose de rôles IAM au niveau de la base de données, envisagez de révoquer les rôles au niveau de la base de données afin que le contrôle des accès du compte principal ne soit géré que par une seule méthode.
- Activez le contrôle ultraprécis des accès pour le compte principal.
Le compte principal se voit alors automatiquement attribuer le rôle de base de données
Limites
- Les opérations d'exportation n'exportent pas les rôles et les droits de base de données, et les opérations d'importation ne peuvent pas les importer. Vous devez configurer manuellement les rôles et les droits une fois l'importation terminée.
- L'onglet Données de la page TABLE de la console Google Cloud n'est pas disponible pour les utilisateurs disposant d'un contrôle ultraprécis des accès.
Étapes suivantes
- Accéder à une base de données avec un contrôle ultraprécis des accès
- Contrôle ultraprécis des contrôle des accès pour les flux de modifications
- Configurer le contrôle ultraprécis des accès
- Liste des droits de contrôle des accès ultraprécis des accès
- Rôles système contrôle des accès ultraprécis des accès
- Instructions
GRANTetREVOKEGoogleSQL - Instructions
GRANTetREVOKEPostgreSQL - Contrôle ultraprécis des contrôle des accès pour les séquences
- Contrôle ultraprécis des contrôle des accès pour les modèles