Le contrôle des accès ultraprécis de Spanner allie les avantages d'Identity and Access Management (IAM) au contrôle des accès traditionnel basé sur les rôles SQL. Grâce à un contrôle des accès ultraprécis, vous pouvez définir des rôles de base de données, accorder des droits sur ces rôles et créer des stratégies IAM pour accorder des autorisations sur les rôles de base de données aux comptes principaux IAM.
En tant qu'administrateur, vous devez activer le contrôle précis des accès pour chaque compte principal IAM. Les comptes principaux pour lesquels le contrôle ultraprécis des accès est activé ("utilisateurs précis du contrôle des accès") doivent assumer un rôle de base de données pour accéder aux ressources Spanner.
Pour les utilisateurs qui ne disposent pas d'un contrôle des accès précis, l'accès aux ressources est régi par les rôles IAM au niveau de la base de données. Le contrôle des accès ultraprécis est entièrement compatible et peut coexister avec le contrôle des accès IAM existant au niveau de la base de données.
Grâce à un contrôle des accès ultraprécis, vous pouvez contrôler l'accès aux tables, aux colonnes, aux vues et aux flux de modifications.
Pour gérer un contrôle des accès ultraprécis, utilisez les instructions LDD suivantes:
- Instructions
CREATE
etDROP
pour 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 par base de données. Instructions
GRANT
etREVOKE
pour accorder et révoquer des droits vers et depuis des rôles de base de données. Les droits incluentSELECT
,INSERT
,UPDATE
,DELETE
etEXECUTE
. Les noms de droits correspondent aux instructions SQL portant le même nom. Par exemple, un rôle doté du droitINSERT
peut exécuter l'instruction SQLINSERT
sur les tables spécifiées dans l'instructionGRANT
.Les instructions LDD suivantes accordent le rôle de base de données
hr_rep
àSELECT
sur la tableemployees
.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 des droits.
Instructions
GRANT
permettant 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 pour un contrôle précis des accès:
- Un système d'information RH ayant des rôles d'analyste de la rémunération des ventes, de gestion des ventes et d'analyste RH, chacun avec des niveaux d'accès différents aux données. Par exemple, les analystes de la rémunération et la direction des ventes ne doivent pas voir les chiffres de sécurité sociale.
- Une application de partage de course avec différents comptes de service et privilèges pour les passagers et les conducteurs.
- Registre qui autorise les opérations
SELECT
etINSERT
, mais pas les opérationsUPDATE
etDELETE
.
Ressources Spanner et leurs droits
Voici une liste des ressources Spanner et des droits de contrôle des accès précis des accès que vous pouvez leur accorder.
- Tables
- Vous pouvez accorder aux rôles de base de données les droits
SELECT
,INSERT
,UPDATE
etDELETE
sur les tables. Pour les tables entrelacées, un droit accordé sur la table parente ne se propage pas dans la table enfant. - Colonnes
- Vous pouvez attribuer
SELECT
,INSERT
etUPDATE
à un sous-ensemble de colonnes d'une table. Le droit n'est alors valide que pour ces colonnes.DELETE
n'est pas autorisé au niveau de la colonne. - Vues
- Vous pouvez accorder le droit
SELECT
à une vue. SeulSELECT
est compatible avec les vues. Spanner est compatible à la fois avec les vues des droits du demandeur et les vues des droits de la définition. Si vous créez une vue disposant des droits de demandeur, pour interroger la vue, l'utilisateur ou le rôle de base de données doit disposer du droitSELECT
sur la vue, ainsi que du droitSELECT
sur les objets sous-jacents référencés dans la vue. Si vous créez une vue avec des droits de définition, pour interroger la vue, le rôle de base de données ou l'utilisateur n'a besoin que du droitSELECT
sur la vue. Pour en savoir plus, consultez la section Présentation des vues. - Modifier les flux
- Vous pouvez accorder l'autorisation
SELECT
pour les flux de modifications. Vous devez également accorderEXECUTE
sur la fonction de lecture associée à un flux de modifications. Pour en savoir plus, consultez la section Contrôle précis des contrôle des accès pour les flux de modifications. - Séquences
- Vous pouvez accorder
SELECT
etUPDATE
sur les séquences. Pour en savoir plus, consultez la section Contrôle précis des contrôle des accès pour les séquences. - Modèles
- Vous pouvez accorder l'autorisation
EXECUTE
sur les modèles. Pour en savoir plus, consultez la section Contrôle précis des contrôle des accès pour les modèles.
Rôles système précis pour le contrôle des accès
Un contrôle des accès ultraprécis 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 ultraprécis du contrôle des accès doit disposer du rôle système spanner_sys_reader
pour accéder à Key Visualizer, et a besoin du rôle système spanner_info_reader
pour afficher les résultats non filtrés lorsqu'il interroge les tables INFORMATION_SCHEMA
.
Pour en savoir plus, consultez Rôles système précis pour le contrôle 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, où 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, qui hériteront du droit SELECT
sur employees
.
La profondeur des hiérarchies de rôles n'est pas limitée, mais les performances des requêtes peuvent se dégrader avec des structures hiérarchiques de rôles larges et profondes.
Sauvegarde et restauration
Les sauvegardes Spanner incluent des définitions des 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 d'un contrôle précis des accès
Vous trouverez ci-dessous les principales étapes à suivre pour commencer à sécuriser les données avec un contrôle des accès précis. Pour en savoir plus, consultez Configurer un contrôle des accès précis.
Vous devez disposer du rôle 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 des droits à ces rôles.
- (Facultatif) Créez des hiérarchies de rôles avec héritage en attribuant des rôles à d'autres rôles.
- Procédez comme suit pour chaque compte principal devant être un utilisateur précis du contrôle des accès :
- Activez le contrôle pré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. Il s'agit d'une opération unique 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 dispose de tous les rôles de base de données requis, si le compte principal dispose de rôles IAM au niveau de la base de données, envisagez de les révoquer 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 pré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 ni les droits de base de données, et les opérations d'importation ne peuvent pas les importer. Vous devrez configurer les rôles et les droits manuellement 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 du contrôle des accès ultraprécis.
- Les opérations
UPDATE
etDELETE
nécessitentSELECT
sur toutes les colonnes de clé.
Étapes suivantes
Pour en savoir plus, consultez les pages suivantes :
- Contrôle précis des contrôle des accès aux flux de modifications
- Configurer un contrôle des accès ultraprécis
- Documentation de référence sur les droits de contrôle des accès précis des accès
- Rôles système précis pour le contrôle des accès
- Instructions
GRANT
etREVOKE
GoogleSQL - Instructions
GRANT
etREVOKE
PostgreSQL - Contrôle précis des contrôle des accès aux séquences
- Contrôle précis des contrôle des accès aux modèles