Partager des données dans des vues non sécurisées¶
Pour profiter pleinement des gains de performances des optimisations de requêtes sur les vues que vous partagez, vous pouvez créer un partage qui vous permet de partager des vues non sécurisées avec d’autres comptes.
Note
Lorsque cela est possible, utilisez des vues sécurisées pour renforcer la sécurité de vos données. Voir Utiliser des objets sécurisés pour contrôler l’accès aux données.
Vous ne pouvez ajouter des vues non sécurisées qu’aux partages qui ont été explicitement configurés pour autoriser les objets non sécurisés. Vous ne pouvez pas partager d’autres objets non sécurisés, comme les fonctions non sécurisées. Voir Limitations du partage de vues non sécurisées.
Création d’un partage qui autorise les objets non sécurisés¶
Pour partager des vues non sécurisées, créez un partage qui autorise les objets non sécurisés.
Par exemple, exécutez la procédure suivante :
CREATE OR REPLACE SHARE allow_non_secure_views
SECURE_OBJECTS_ONLY=FALSE
COMMENT="Share views that require query optimization";
Note
Pour la syntaxe complète, voir Syntaxe pour le partage de vues non sécurisées dans cette rubrique.
Après avoir créé un partage qui permet de partager des vues, utilisez la commande GRANT <privilège> … TO SHARE pour accorder une vue à un partage. Par exemple, pour accorder une vue intitulée non_secure_view
au partage, procédez comme suit :
GRANT SELECT ON VIEW non_secure_view TO SHARE allow_non_secure_views;
Vous pouvez également accorder le privilège SELECT sur la vue à un rôle de base de données, puis accorder ce rôle de base de données au partage. Par exemple, pour accorder les privilèges SELECT sur la vue non_secure_view
au rôle de base de données performance_engineer
et ensuite accorder le rôle au partage, procédez comme suit :
GRANT SELECT ON VIEW non_secure_view TO DATABASE ROLE performance_engineer;
GRANT DATABASE ROLE performance_engineer TO SHARE allow_non_secure_views;
Conversion d’un partage existant pour permettre le partage de vues non sécurisées¶
Vous pouvez convertir un partage existant avec des vues sécurisées en partage prenant en charge le partage de vues non sécurisées.
Par exemple, pour convertir un partage existant secure_views_only
en partage qui prend en charge le partage de vues non sécurisées, procédez comme suit :
Utilisez la commande SHOW GRANTS pour déterminer les objets qui sont accordés au partage et les comptes ayant accès au partage, respectivement :
SHOW GRANTS TO SHARE secure_views_only; SHOW GRANTS OF SHARE secure_views_only;
CopyConvertissez le partage existant en partage qui permet le partage de vues :
ALTER SHARE secure_views_only SET SECURE_OBJECTS_ONLY = FALSE, COMMENT = "Convert to allow sharing non-secure views that require query optimization";
CopyConvertissez, si vous le souhaitez, une vue sécurisée existante en vue. Dans cet exemple, modifiez
secure_view2
en vue non sécurisée :ALTER VIEW secure_view2 UNSET SECURE;
Copy
Pour plus de détails, voir Conversion d’une vue sécurisée dans un partage en vue non sécurisée.
Conversion d’une vue sécurisée dans un partage en vue non sécurisée¶
Si vous souhaitez convertir une vue sécurisée existante en vue, vous pouvez le faire avant ou après avoir accordé la vue à un partage.
Pour convertir une vue sécurisée existante dans un partage en vue, les conditions suivantes doivent être remplies :
La vue sécurisée ne doit être accordée qu’aux partages qui sont configurés pour autoriser le partage d’objets non sécurisés.
La vue sécurisée ne peut pas être accordée à ce qui suit :
Rôles de base de données accordés aux partages qui n’autorisent pas le partage d’objets non sécurisés.
Partages qui ne permettent pas de partager des objets non sécurisés.
Par exemple, pour une vue sécurisée existante intitulée high_performance_view
, désactivez la propriété SECURE :
ALTER VIEW high_performance_view UNSET SECURE;
Vous pouvez également recréer la vue sécurisée en tant que vue :
CREATE OR REPLACE VIEW high_performance_view WITH COPY GRANTS;
Limitations du partage de vues non sécurisées¶
Si vous envisagez de partager des vues, tenez compte des éléments suivants :
Après avoir créé un partage avec la propriété SECURE_OBJECTS_ONLY définie sur FALSE, vous ne pouvez pas désactiver cette propriété ni définir cette propriété sur TRUE.
Vous ne pouvez partager que des vues non sécurisées. D’autres objets non sécurisés, comme les fonctions, ne peuvent pas être partagés.
Syntaxe pour le partage de vues non sécurisées¶
CREATE [ OR REPLACE ] SHARE <name>
[ SECURE_OBJECTS_ONLY = <boolean> ]
[ COMMENT = '<string_literal>' ]
Paramètres requis¶
name
Indique l’identificateur du partage ; doit être unique pour le compte dans lequel le partage est créé.
De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles. Par exemple,
"My object"
. Les identificateurs entre guillemets doubles sont également sensibles à la casse.Pour plus d’informations sur les exigences relatives à l’identificateur, voir Exigences relatives à l’identificateur.
Paramètres facultatifs¶
SECURE_OBJECTS_ONLY = boolean
Spécifie s’il faut autoriser uniquement l’octroi d’objets sécurisés ou autoriser également l’octroi d’objets non sécurisés au partage.
Par défaut : vrai
COMMENT = 'string_literal'
Spécifie un commentaire pour le partage.
Par défaut : aucune valeur
Exigences en matière de contrôle d’accès¶
Un rôle utilisé pour exécuter cette commande SQL doit avoir les privilèges suivants définis au minimum ainsi :
Privilège |
Objet |
Remarques |
---|---|---|
CREATE SHARE |
Compte |
Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed. |
Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.
Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.
Pour plus d’informations spécifiques sur les exigences en matière de contrôle d’accès pour Snowflake Secure Data Sharing, voir Autoriser les rôles non ACCOUNTADMIN à effectuer des tâches de partage de données.
Notes sur l’utilisation¶
Vous ne pouvez pas voir la valeur de la propriété SECURE_OBJECTS_ONLY lorsque vous exécutez SHOW SHARES. Utilisez la propriété COMMENT pour noter la valeur de la propriété SECURE_OBJECTS_ONLY.
Les notes existantes pour CREATE SHARE s’appliquent également.
Exemples¶
Pour un exemple sur la façon de créer un partage avec des vues non sécurisées, voir Création d’un partage qui autorise les objets non sécurisés.
Pour un exemple d’utilisation de ALTER SHARE, voir Conversion d’un partage existant pour permettre le partage de vues non sécurisées.