Présentation du contrôle ultraprécis des accès

Le contrôle des accès précis de 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 précis des accès, vous définissez des rôles de base de données, accordez des privilèges aux rôles et créez des stratégies IAM pour accorder des autorisations sur les rôles de base de données aux principaux IAM.

En tant qu'administrateur, vous devez activer le contrôle précis des accès pour les comptes principaux IAM individuels. Comptes principaux pour lesquelles le contrôle ultraprécis des accès est activé ("utilisateurs avec contrôle ultraprécis des accès") doivent supposer qu'une base de données pour accéder aux ressources Spanner.

L'accès aux ressources des utilisateurs qui ne sont pas des utilisateurs de contrôle des accès précis est régi par les rôles IAM au niveau de la base de données. Le contrôle des accès pré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. 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.

Grâce à un contrôle des accès précis, vous pouvez contrôler l'accès aux tables, aux colonnes, aux vues et flux de modifications.

Pour gérer le contrôle des accès précis, vous utilisez les instructions DDL suivantes :

  • Instructions CREATE et DROP 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 pour une base de données.
  • Instructions GRANT et REVOKE pour accorder et révoquer des droits vers et depuis rôles de base de données. Les droits d'accès incluent SELECT, INSERT, UPDATE, DELETE et EXECUTE. Noms des droits correspondent aux instructions SQL similaires. Par exemple, un rôle disposant du privilège INSERT peut exécuter l'instruction SQL INSERT sur les tables spécifiées dans l'instruction GRANT.

    Les instructions LDD suivantes accordent l'autorisation SELECT sur la table employees. au rôle de base de données hr_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 référence des droits de contrôle des accès ultraprécis.

  • Les instructions GRANT pour attribuer des rôles à d'autres rôles afin de créer des hiérarchies de de rôles, avec héritage des droits.

Cas d'utilisation

Voici des exemples de cas d'utilisation permettant un contrôle précis des accès:

  • Un système d'information RH qui comporte des rôles pour l'analyste de la rémunération des ventes, la gestion des ventes et l'analyste RH, chacun avec des niveaux d'accès différents aux données. Par exemple, les analystes de rémunération et la direction des ventes ne devraient pas voir les réseaux numéros de sécurité.
  • Une application de covoiturage avec des comptes de service et des privilèges différents pour les passagers et les conducteurs.
  • Un registre qui autorise les opérations SELECT et INSERT, mais pas les opérations UPDATE et DELETE.

Ressources Spanner et leurs droits

Voici une liste des ressources Spanner et des options de contrôle des accès ultraprécises des droits d'accès que vous pouvez leur accorder.

Schémas
Vous pouvez accorder le droit USAGE sur les schémas à des rôles de base de données spécifiques. Pour un schéma autre que par défaut, les rôles de base de données doivent disposer du droit USAGE pour accéder aux objets de base de données. La vérification des droits se présente comme suit:

Avez-vous USAGE dans le schéma ?

Non: refuser l'accès.

Oui: Disposez-vous également des droits nécessaires sur la table ?

Non : refusez l'accès.

Oui : vous pouvez accéder au tableau.

Tables
Vous pouvez accorder les privilèges SELECT, INSERT, UPDATE et DELETE sur les tables aux rôles de base de données. Pour les tables entrelacées, un privilège accordé sur le ne se propage pas à la table enfant.
Colonnes
Vous pouvez accorder des autorisations SELECT, INSERT et UPDATE sur un sous-ensemble de colonnes d'une tableau. Le privilège n'est alors valide que pour ces colonnes. DELETE n'est pas autorisées au niveau des colonnes.
Vues
Vous pouvez accorder le droit SELECT sur une vue. Seule la valeur SELECT est acceptée 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 les droits du demandeur, pour interroger la vue, rôle de base de données ou utilisateur doit disposer du droit SELECT sur la vue, ainsi que du droit Droit SELECT sur les objets sous-jacents référencés dans la vue. Si vous créer une vue disposant des droits du paramètre pour interroger la vue, le rôle de base de données ou l'utilisateur n'a besoin que du droit SELECT sur la vue. Pour en savoir plus, consultez la section Présentation des vues.
Modifier les flux
Vous pouvez accorder SELECT sur les flux de modifications. Vous devez également accorder EXECUTE à la fonction de lecture associée à un flux de modifications. Pour plus d'informations, consultez la section Contrôle ultraprécis des contrôle des accès pour les flux de modifications.
Séquences
Vous pouvez attribuer SELECT et UPDATE aux séquences. Pour en savoir plus, consultez la section Contrôle des accès précis pour les séquences.
Modèles
Vous pouvez accorder l'autorisation EXECUTE sur les modèles. Pour plus d'informations, consultez la page Contrôle ultraprécis des accès aux modèles.

Rôles système de contrôle des accès ultraprécis

Le contrôle ultraprécis des accès inclut des 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 des accès ultraprécis doit disposer du rôle spanner_sys_reader. rôle système pour accéder à Key Visualizer et nécessite le système spanner_info_reader d'être en mesure d'afficher des résultats non filtrés lors de l'interrogation INFORMATION_SCHEMA tables.

Pour en savoir plus, consultez la page Rôles système de contrôle des accès précis.

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.

Héritage des droits

hr_manager et hr_director peuvent également avoir des membres, et ces membres hériteraient 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érarchisées larges et profondes.

Sauvegarde et restauration

Les sauvegardes Spanner incluent des 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, IAM ne font pas partie des sauvegardes de base de données, vous devez donc accorder de nouveau l'accès aux comptes principaux de la base de données restaurée.

Présentation de la configuration du contrôle précis des accès

Voici les étapes générales à suivre pour commencer à sécuriser les données à l'aide d'un contrôle précis des accès. Pour en savoir plus, consultez la section Configurer le contrôle des accès ultraprécis.

Vous devez disposer du rôle roles/spanner.admin ou roles/spanner.databaseAdmin pour effectuer ces tâches.

  1. Créer des rôles de base de données et leur accorder des droits.
  2. Facultatif: Créez des hiérarchies de rôles avec héritage en attribuant des rôles à d'autres rôles.
  3. Procédez comme suit pour chaque compte principal qui doit disposer du rôle d'utilisateur du contrôle des accès ultraprécis:
    1. Activez le contrôle des accès précis pour l'entité principale. 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 principal.
    2. Accordez des autorisations IAM sur un ou plusieurs rôles de base de données au principal.
    3. Une fois que le compte principal a reçu 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 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.

Limites

  • Les opérations d'exportation n'exportent pas les rôles et les privilèges 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 d'accès précis.

Étape suivante

Pour en savoir plus, consultez les pages suivantes :