Le contrôle précis des accès dans Spanner combine les avantages Identity and Access Management (IAM) avec Contrôle des accès basé sur les rôles SQL. Avec un contrôle des accès précis, vous définissez des rôles de base de données, attribuer des droits aux rôles les stratégies IAM permettant d'accorder des autorisations sur des rôles de base de données Comptes principaux IAM.
En tant qu'administrateur, vous devez activer un contrôle des accès précis pour chaque compte IAM comptes principaux. 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 pour les utilisateurs ne disposant pas d'un contrôle des accès ultraprécis est régi par rôle 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 les Contrôle des accès IAM 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'intégralité de la base de données, utilisez 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 un contrôle des accès ultraprécis, utilisez le LDD suivant : :
- Les 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 rôles de base de données. Les droits incluentSELECT
,INSERT
,UPDATE
,DELETE
etEXECUTE
Noms des droits correspondent aux instructions SQL similaires. Par exemple, un rôle associé au rôle Le droitINSERT
permet d'exécuter l'instruction SQLINSERT
sur les tables qui sont spécifiées dans l'instructionGRANT
.Les instructions LDD suivantes accordent l'autorisation
SELECT
sur la tableemployees
. au 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 Documentation de référence détaillée sur les droits liés au contrôle des accès
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 a des rôles d’analyste de rémunération des ventes, la gestion des ventes et l’analyste RH, chacun ayant différents niveaux d’accès 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é 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
SELECT
etINSERT
, mais pas les opérationsUPDATE
etDELETE
.
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 celui par défaut, les rôles de base de données doivent disposer du droit d'accèsUSAGE
les objets de base de données. La vérification des droits se présente comme suit:
Avez-vous USAGE
sur le schéma ?
Non: refuser l'accès.
Oui: Disposez-vous également des droits nécessaires sur la table ?
Non: refuser l'accès.
Oui: vous pouvez accéder à la table.
- Tables
- Vous pouvez accorder les droits
SELECT
,INSERT
,UPDATE
etDELETE
sur des 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
etUPDATE
sur un sous-ensemble de colonnes d'une tableau. Le droit 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. SeulSELECT
est pris en charge pour de vues. Spanner accepte à la fois les vues des droits du demandeur et les vues des droits d'auteur. 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 droitSELECT
sur la vue, ainsi que du droit DroitSELECT
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 droitSELECT
sur la vue. Pour en savoir plus, consultez Présentation des vues - Modifier les flux
- Vous pouvez accorder l'autorisation
SELECT
sur les flux de modifications. Vous devez également accorder l'autorisationEXECUTE
sur le 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 accorder des autorisations
SELECT
etUPDATE
sur les séquences. Pour plus d'informations, consultez la page Contrôle ultraprécis des accès aux séquences. - Modèles
- Vous pouvez accorder l'autorisation
EXECUTE
sur les modèles. Pour plus d'informations, consultez la section 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. Tout 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 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 d'un le 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 des membres du rôle pii_access
et héritent du rôle
Droit SELECT
sur la table employees
.
hr_manager
et hr_director
peuvent également avoir des membres, qui doivent
héritent 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 larges et profondes.
Sauvegarde et restauration
Les sauvegardes Spanner incluent le rôle de base de données et définitions. 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 privilèges 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 d'un contrôle des accès précis
Voici les grandes é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 roles/spanner.admin
ou
roles/spanner.databaseAdmin
pour effectuer ces tâches.
- Créer des rôles de base de données et leur accorder des droits.
- 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 qui doit disposer du rôle d'utilisateur du contrôle des accès ultraprécis:
<ph type="x-smartling-placeholder">
- </ph>
- Activez un contrôle des accès précis 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 principal. - Accorder des autorisations IAM sur une ou plusieurs les rôles de base de données au compte principal.
- Une fois que tous les rôles de base de données requis ont été attribués au compte principal, 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 soit géré par une seule méthode.
- Activez un contrôle des accès précis 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 opérations 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 TABLEAU de la console Google Cloud n'est pas disponible pour pour un contrôle des accès précis.
- Les opérations
UPDATE
etDELETE
nécessitentSELECT
sur toutes les colonnes de clé.
Étape suivante
Pour en savoir plus, consultez les pages suivantes :
- Accéder à une base de données avec un contrôle des accès précis
- Contrôle ultraprécis des contrôle des accès pour les flux de modifications
- Configurer un contrôle des accès précis
- Documentation de référence détaillée sur les droits liés au contrôle des accès
- Rôles système de contrôle des accès ultraprécis
- Instructions
GRANT
etREVOKE
GoogleSQL - Instructions PostgreSQL
GRANT
etREVOKE
- Contrôle ultraprécis des contrôle des accès aux séquences
- Contrôle ultraprécis des contrôle des accès aux modèles