Rendre les objets de base de données détectables dans la Recherche universelle¶
La recherche universelle vous aide à détecter les objets de la base de données dans le compte. Par défaut, vous ne pouvez détecter que les objets auxquels vous avez déjà obtenu l’accès. Même si vous avez accès à plusieurs comptes au sein de votre organisation Snowflake, vous ne pouvez pas voir les objets en dehors du compte auquel vous êtes connecté, car les autorisations d’accès ne sont pas valables pour tous les comptes.
Les administrateurs peuvent permettre aux utilisateurs de détecter des objets auxquels ils n’ont pas encore accès, y compris des objets dans d’autres comptes de votre organisation Snowflake, en gérant la visibilité des objets.
Note
Vous pouvez associer des objets à des informations de contact de sorte que si un utilisateur effectue une recherche et n’a pas le privilège d’accéder à un objet, il peut sélectionner Request Access pour afficher les informations de contact.
Propriété OBJECT_VISIBILITY¶
La propriété OBJECT_VISIBILITY contrôle la visibilité des objets dans le compte, permettant aux utilisateurs ne disposant pas de privilèges d’accès explicites de trouver des objets et de demander l’accès. L’amélioration de la visibilité des objets dans le compte peut simplifier la collaboration et rationaliser les demandes d’accès.
La propriété OBJECT_VISIBILITY peut être définie sur un compte, une base de données ou un schéma et suit le modèle d’héritage de Snowflake : les paramètres d’un niveau supérieur (par exemple, les comptes) s’appliquent automatiquement aux niveaux inférieurs (par exemple, les bases de données), sauf s’ils sont remplacés.
Vous pouvez définir OBJECT_VISIBILITY sur l’une des valeurs suivantes :
Une spécification YAML décrivant la visibilité dans l’un des formats suivants :
$$ organization_targets: - all_accounts_including_external $$
Or
$$ organization_targets: - account: <account_name_1> - account: <account_name_2> - ... - organization_user_group: <org_user_group_1> - organization_user_group: <org_user_group_2> $$
Dans la syntaxe ci-dessus :
all_accounts_including_external: Spécifie que tous les utilisateurs de tous les comptes de l’organisation peuvent voir l’objet. Ceci inclut tous les comptes au sein de l’organisation, même ceux auxquels des parties externes ont pu avoir accès, tels que les comptes de lecteurs.account: account_name: Spécifie que tous les utilisateurs du compte spécifié peuvent voir l’objet. Vous pouvez spécifier plusieurs comptes. Remarque :accountcorrespond au nom du compte, et non à son emplacement. Vous devez indiquer uniquement le nom du compte, sans mentionner le nom de l’organisation.09-22organization_user_group: org_user_group: Spécifie que le groupe d’utilisateurs de l’organisation spécifié peut voir l’objet dans tous les comptes de l’organisation où le groupe d’utilisateurs de l’organisation a été importé.
PRIVILEGED: Spécifie que seuls les rôles du compte actuel auxquels un privilège explicite sur l’objet a été accordé peuvent voir l’objet. Il s’agit du comportement par défaut de Snowflake.
Vous pouvez rétablir la visibilité PRIVILEGED d’un objet à tout moment.
Pour des informations spécifiques sur la syntaxe, les notes sur l’utilisation et des exemples, reportez-vous aux rubriques suivantes :
commandes CREATE¶
commandes ALTER¶
Exigences en matière de contrôle d’accès¶
Les rôles utilisant cette propriété doivent avoir les privilèges suivants définis au minimum :
Privilège |
Objet |
Remarques |
|---|---|---|
MANAGE VISIBILITY |
Compte |
Par défaut, seul le rôle SECURITYADMIN dispose de ce privilège. Ce privilège peut être accordé à d’autres rôles si nécessaire. |
OWNERSHIP |
Base de données ou schéma |
Requis pour exécuter une instruction ALTER DATABASE ou ALTER SCHEMA pour définir la visibilité d’un objet. OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
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.
Exemples¶
Rendre une base de données largement visible¶
L’instruction suivante rend la base de données product_analytics visible par tous les utilisateurs du compte actuel (ACME_ENGINEERING) :
ALTER DATABASE product_analytics
SET OBJECT_VISIBILITY =
$$
organization_targets:
- account: acme_engineering
$$;
L’instruction suivante rend la base de données visible à tous les utilisateurs dans deux comptes supplémentaires au sein de l’organisation (ACME_MARKETING et ACME_SALES) :
ALTER DATABASE product_analytics
SET OBJECT_VISIBILITY =
$$
organization_targets:
- account: acme_engineering
- account: acme_marketing
- account: acme_sales
$$;
L’instruction suivante rend la base de données visible à tous les utilisateurs de tous les comptes au sein de l’organisation ACME :
ALTER DATABASE product_analytics
SET OBJECT_VISIBILITY =
$$
organization_targets:
- all_accounts_including_external
$$;
Rendre une base de données visible à des groupes d’utilisateurs spécifiques au sein d’une organisation¶
L’instruction suivante rend la base de données visible à des groupes d’utilisateurs spécifiques de l’organisation dans tous les comptes au sein de l’organisation ACME où le groupe d’utilisateurs de l’organisation a été importé :
ALTER DATABASE product_analytics
SET OBJECT_VISIBILITY =
$$
organization_targets:
- organization_user_group: engineering
- organization_user_group: marketing
- organization_user_group: sales
$$;
Limitations¶
Les objets qui sont détectables et non accessibles ne sont affichés que dans la Recherche universelle. Ils ne sont pas visibles sur l’explorateur d’objets de base de données ou dans les commandes SQL qui affichent des métadonnées (commandes SHOW, etc.).
Pour un schéma, vous pouvez définir la propriété OBJECT_VISIBILITY sur PRIVILEGED pour remplacer tout paramètre de visibilité plus large qui peut être hérité du niveau du compte ou de la base de données, garantissant ainsi que le schéma reste accessible uniquement par le propriétaire.
La propriété OBJECT_VISIBILITY ne peut pas être définie ou remplacée en dessous du niveau du schéma. Au niveau du schéma, les utilisateurs peuvent soit voir tous les objets, soit aucun.
La recherche peut prendre quelques heures pour refléter les modifications apportées à la visibilité des objets.