Partage de l'accès en lecture aux données au sein d'un Compte AWS - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Partage de l'accès en lecture aux données au sein d'un Compte AWS

Avec Amazon Redshift, vous pouvez partager l'accès en lecture aux données entre différents utilisateurs ou groupes de bases de données au sein d'un même AWS compte. Cette fonctionnalité vous permet de contrôler les privilèges d'accès aux données à un niveau granulaire, en veillant à ce que seuls les utilisateurs ou les groupes autorisés puissent lire des ensembles de données spécifiques.

Pour partager des données à des fins de lecture en tant qu’administrateur de cluster producteur ou propriétaire de base de données
  1. Créez des unités de partage des données dans votre cluster. Pour plus d'informations, consultez CREATE DATASHARE.

    CREATE DATASHARE salesshare;

    Les super-utilisateurs de cluster et les propriétaires de base de données peuvent créer des datashares. Chaque datashare est associé à une base de données lors de sa création. Seuls les objets de cette base de données peuvent être partagés dans ce datashare. Plusieurs datashares peuvent être créés sur la même base de données avec la même précision d'objets ou une précision différente. Il n’y a pas de limite au nombre d’unités de partage des données qu’un cluster peut créer.

    Vous pouvez également créer des datashares via la console Amazon Redshift. Pour plus d'informations, consultez Créer des unités de partage des données.

  2. Déléguer des autorisations pour opérer sur l’unité de partage des données. Pour plus d’informations, consultez GRANT ou REVOKE.

    L’exemple suivant attribue des autorisations à dbuser sur salesshare.

    GRANT ALTER, SHARE ON DATASHARE salesshare TO dbuser;

    Les super-utilisateurs de cluster et les propriétaires de l’unité de partage des données peuvent accorder ou révoquer des autorisations de modification sur l’unité de partage des données à d’autres utilisateurs.

  3. Ajoutez ou supprimez des objets des unités de partage des données. Pour ajouter des objets à une unité de partage des données, ajoutez le schéma avant d’ajouter des objets. Lorsque vous ajoutez un schéma, Amazon Redshift n’ajoute pas tous les objets qu’il contient. Assurez-vous de les ajouter explicitement. Pour plus d'informations, consultez ALTER DATASHARE.

    ALTER DATASHARE salesshare ADD SCHEMA PUBLIC; ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift; ALTER DATASHARE salesshare ADD ALL TABLES IN SCHEMA PUBLIC;

    Vous pouvez également ajouter des vues à une unité de partage des données.

    CREATE VIEW public.sales_data_summary_view AS SELECT * FROM public.tickit_sales_redshift; ALTER DATASHARE salesshare ADD TABLE public.sales_data_summary_view;

    ALTERDATASHAREÀ utiliser pour partager des schémas, des tables, des vues et des fonctions dans un schéma donné. Les superutilisateurs, les propriétaires de partage de données ou les utilisateurs disposant d'une ALL autorisation sur le partage de données peuvent modifier le partage de données pour y ajouter des objets ALTER ou en supprimer. Les utilisateurs doivent avoir les autorisations nécessaires pour ajouter ou supprimer des objets de l’unité de partage des données. Les utilisateurs doivent également être les propriétaires des objets ou avoir SELECT ou USAGE des ALL autorisations sur les objets.

    Vous pouvez également l'utiliser GRANT pour ajouter des objets au partage de données. Cet exemple montre comment :

    GRANT SELECT ON TABLE public.tickit_sales_redshift TO DATASHARE salesshare;

    Cette syntaxe est fonctionnellement équivalente à. ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;

    Utilisez la INCLUDENEW clause pour ajouter au partage de données les nouvelles tables, vues ou fonctions SQL définies par l'utilisateur (UDFs) créées dans un schéma spécifié. Seuls les super-utilisateurs peuvent modifier cette propriété pour chaque paire datashare-schéma.

    ALTER DATASHARE salesshare ADD SCHEMA PUBLIC; ALTER DATASHARE salesshare SET INCLUDENEW = TRUE FOR SCHEMA PUBLIC;

    Vous pouvez également utiliser la console Amazon Redshift pour ajouter ou supprimer des objets des unités de partage des données. Pour plus d’informations, consultez Ajouter des objets d’unité de partage des données aux unités de partage des données, Supprimer des objets d’unité de partage des données des unités de partage des données et Modification des unités de partage des données créées dans votre compte.

  4. Ajoutez ou supprimez des consommateurs des unités de partage des données. L’exemple suivant ajoute l’espace de noms de cluster consommateur à salesshare. L'espace de noms est l'identifiant unique global (GUID) de l'espace de noms du cluster de consommateurs du compte. Pour plus d’informations, consultez GRANT ou REVOKE.

    GRANT USAGE ON DATASHARE salesshare TO NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';

    Vous ne pouvez accorder des autorisations qu'à un seul consommateur de partage de données dans une GRANT déclaration.

    Les superutilisateurs du cluster et les propriétaires d'objets de partage de données ou les utilisateurs SHARE autorisés à accéder au partage de données peuvent ajouter des consommateurs à un partage de données ou en retirer. Pour ce faire, ils utilisent GRANT USAGE ou REVOKEUSAGE.

    Pour trouver l'espace de noms du cluster que vous voyez actuellement, vous pouvez utiliser la NAMESPACE commande SELECT CURRENT _. Pour trouver l'espace de noms d'un autre cluster au sein d'un même cluster Compte AWS, rendez-vous sur la page de détails du cluster de console Amazon Redshift. Sur cette page, recherchez le champ d’espace de noms nouvellement ajouté.

    Vous pouvez également utiliser la console Amazon Redshift pour ajouter ou supprimer des consommateurs de données pour les unités de partage des données. Pour plus d’informations, consultez Ajouter des consommateurs de données aux unités de partage des données et Supprimer des consommateurs de données des unités de partage des données.

  5. (Facultatif) Ajoutez des restrictions de sécurité à l’unité de partage des données. L’exemple suivant montre que le cluster consommateur avec un accès IP public est autorisé à lire l’unité de partage des données. Pour plus d'informations, consultez ALTER DATASHARE.

    ALTER DATASHARE salesshare SET PUBLICACCESSIBLE = TRUE;

    Vous pouvez modifier les propriétés du type de consommateurs après la création de l’unité de partage des données. Par exemple, vous pouvez définir que les clusters qui souhaitent consommer des données d’une unité de partage des données donné ne peuvent pas être accessibles publiquement. Les requêtes provenant de clusters consommateur qui ne respectent pas les restrictions de sécurité spécifiées dans l’unité de partage des données sont rejetées au moment de l’exécution de la requête.

    Vous pouvez également utiliser la console Amazon Redshift pour modifier les datashares. Pour plus d'informations, consultez Modification des unités de partage des données créées dans votre compte.

  6. Répertorie les unités de partage des données créées dans le cluster et examine le contenu de l’unité de partage des données.

    L’exemple suivant montre comment afficher les informations d’une unité de partage des données nommée salesshare. Pour plus d’informations, consultez DESC DATASHARE et SHOW DATASHARES.

    DESC DATASHARE salesshare; producer_account | producer_namespace | share_type | share_name | object_type | object_name | include_new -------------------+--------------------------------------+------------+------------+-------------+--------------------------------+------------------- 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_users_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_venue_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_category_redshift| 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_date_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_event_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_listing_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_sales_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | schema | public | t 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | view | public.sales_data_summary_view |

    L'exemple suivant montre comment afficher les datashares sortants dans un cluster producteur.

    SHOW DATASHARES LIKE 'sales%';

    La sortie ressemble à ce qui suit.

    share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account | producer_namespace -----------+--------------+-----------------+-------------------+------------+---------------------+----------------------+-----------+------------------+--------------------------------------- salesshare | 100 | dev | | OUTBOUND | 2020-12-09 02:27:08 | True | | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d

    Pour plus d’informations, consultez DESC DATASHARE et SHOW DATASHARES.

    Vous pouvez également utiliser SVV_DATASHARES, SVV_DATASHARE_CONSUMERS, et SVV_DATASHARE_OBJECTS pour afficher les datashares, les objets du datashare et les consommateurs de datashare.

  7. Supprimer des unités de partage des données. Pour plus d'informations, consultez DROP DATASHARE.

    Vous pouvez supprimer les objets d’unité de partage des données à tout moment à l’aide de DROP DATASHARE. Les super-utilisateurs de cluster et les propriétaires d’unité de partage des données peuvent supprimer des unités de partage des données.

    L’exemple suivant supprime une unité de partage des données appelé salesshare.

    DROP DATASHARE salesshare;

    Vous pouvez également utiliser la console Amazon Redshift pour supprimer des unités de partage des données. Pour de plus amples informations, veuillez consulter Suppression des unités de partage des données créées dans votre compte.

  8. ALTERDATASHAREÀ utiliser pour supprimer des objets d'un partage de données à tout moment du partage de données. Utilisez REVOKE USAGE ON pour révoquer les autorisations relatives au partage de données accordées à certains consommateurs. Il révoque USAGE les autorisations sur les objets d'un partage de données et arrête instantanément l'accès à tous les clusters de consommateurs. Répertorier des unités de partage des données et des requêtes de métadonnées, telles que la liste des bases de données et des tables, ne renvoie pas les objets partagés après la révocation de l’accès.

    ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;

    Vous pouvez également utiliser la console Amazon Redshift pour modifier les datashares. Pour plus d'informations, consultez Modification des unités de partage des données créées dans votre compte.

  9. Révoquez l’accès à l’unité de partage des données depuis les espaces de noms si vous ne souhaitez plus partager les données avec les consommateurs.

    REVOKE USAGE ON DATASHARE salesshare FROM NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';

    Vous pouvez également utiliser la console Amazon Redshift pour modifier les datashares. Pour plus d'informations, consultez Modification des unités de partage des données créées dans votre compte.

Pour partager des données à des fins de lecture en tant qu’administrateur de cluster consommateur
  1. Répertorier les unités de partage des données mises à votre disposition et afficher leur contenu. Pour plus d’informations, consultez DESC DATASHARE et SHOW DATASHARES.

    L’exemple suivant montre comment afficher les informations des unités de partage des données entrants d’un espace de noms producteur spécifié. Lorsque vous vous lancez DESC DATASHARE en tant qu'administrateur d'un cluster de consommateurs, vous devez spécifier l'NAMESPACEoption permettant d'afficher les partages de données entrants.

    DESC DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d'; producer_account | producer_namespace | share_type | share_name | object_type | object_name | include_new -------------------+--------------------------------------+------------+------------+-------------+---------------------------------+------------------ 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_users_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_venue_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_category_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_date_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_event_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_listing_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_sales_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | schema | public | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | view | public.sales_data_summary_view |

    Seuls les super-utilisateurs de cluster peuvent le faire. Vous pouvez également utiliser SVV _ DATASHARES pour afficher les partages de données et SVV _ DATASHARE _ OBJECTS pour afficher les objets contenus dans le partage de données.

    L'exemple suivant affiche les datashares entrants dans un cluster consommateur.

    SHOW DATASHARES LIKE 'sales%'; share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account | producer_namespace ------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+-------------------------------------- salesshare | | | | INBOUND | | t | | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d
  2. En tant que super-utilisateur de base de données, vous pouvez créer des bases de données locales qui font référence aux unités de partage des données. Pour de plus amples informations, veuillez consulter CREATE DATABASE.

    CREATE DATABASE sales_db FROM DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';

    Si vous souhaitez un contrôle plus précis de l'accès aux objets de la base de données locale, utilisez la WITH PERMISSIONS clause lors de la création de la base de données. Cela vous permet d’accorder des autorisations de niveau objet pour les objets de la base de données à l’étape 4.

    CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';

    Vous pouvez voir les bases de données que vous avez créées à partir de l’unité de partage des données en interrogeant la vue SVV_REDSHIFT_DATABASES. Vous pouvez vous connecter directement à ces bases de données ou vous connecter à une base de données locale sur votre cluster client et effectuer une requête entre bases de données pour interroger les données des bases de données partagées. Vous ne pouvez pas créer une unité de partage des données au-dessus des objets de base de données créés à partir d’une unité de partage des données existant. Toutefois, vous pouvez copier les données dans une table distincte du cluster consommateur, effectuer le traitement nécessaire, puis partager les nouveaux objets créés.

    Vous pouvez également utiliser la console Amazon Redshift pour créer des bases de données à partir des unités de partage des données. Pour plus d'informations, consultez Créer des bases de données à partir d’unités de partage des données.

  3. (Facultatif) Créez des schémas externes pour faire référence et attribuer des autorisations détaillées à des schémas spécifiques dans la base de données consommateur importée sur le cluster consommateur. Pour de plus amples informations, veuillez consulter CREATE EXTERNAL SCHEMA.

    CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE 'sales_db' SCHEMA 'public';
  4. Selon les besoins, accordez aux utilisateurs et rôles du cluster consommateur des autorisations sur les bases de données et références de schéma créées à partir des unités de partage des données. Pour plus d’informations, consultez GRANT ou REVOKE.

    GRANT USAGE ON DATABASE sales_db TO Bob;
    GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;

    Si vous avez créé votre base de données sans WITHPERMISSIONS, vous ne pouvez attribuer des autorisations sur l'ensemble de la base de données créée à partir du partage de données qu'à vos utilisateurs et à vos rôles. Dans certains cas, vous avez besoin de contrôles précis sur un sous-ensemble d'objets de base de données créés à partir du datashare. Si tel est le cas, vous pouvez créer une référence de schéma externe tournée vers des schémas spécifiques dans l’unité de partage des données (comme décrit à l’étape précédente) et fournir des autorisations détaillées au niveau du schéma.

    Vous pouvez également créer des vues à liaison tardive sur les objets partagés et les utiliser pour attribuer des autorisations détaillées. Vous pouvez également envisager que les clusters producteur créent des unités de partage des données supplémentaires pour vous avec la précision requise.

    Si vous avez créé votre base de données WITH PERMISSIONS à l'étape 2, vous devez attribuer des autorisations au niveau des objets de la base de données partagée. Un utilisateur disposant uniquement de l'USAGEautorisation ne peut accéder à aucun objet d'une base de données créée avec WITH PERMISSIONS tant qu'il n'a pas obtenu d'autorisations supplémentaires au niveau des objets.

    GRANT SELECT ON sales_db.public.tickit_sales_redshift to Bob;
  5. Interroger les données dans les objets partagés dans les unités de partage des données.

    Les utilisateurs et les rôles disposant d’autorisations sur les bases de données consommateur et les schémas sur les clusters consommateur peuvent explorer et naviguer entre les métadonnées de tous les objets partagés. Ils peuvent également explorer et naviguer entre les objets locaux dans un cluster consommateur. Pour ce faire, ils utilisent ODBC les pilotes JDBC or ou les REDSHIFT vues SVV SVV _ ALL et _.

    Les clusters producteur peuvent avoir de nombreux schémas dans la base de données, les tables et les vues au sein de chaque schéma. Les utilisateurs du côté consommateur ne peuvent voir que le sous-ensemble d’objets mis à disposition via l’unité de partage des données. Ces utilisateurs ne peuvent pas voir l’intégralité des métadonnées du cluster producteur. Cette approche permet de fournir un contrôle détaillé de la sécurité des métadonnées avec le partage des données.

    Vous continuez à vous connecter aux bases de données de cluster locales. Mais maintenant, vous pouvez également lire à partir des bases de données et des schémas qui sont créés à partir de l’unité de partage des données en utilisant la notation database.schema.table en trois parties. Vous pouvez effectuer des requêtes qui s’étendent sur toutes les bases de données qui sont visibles pour vous. Il peut s’agir de bases de données locales sur le cluster ou de bases de données créées à partir des unités de partage des données. Les clusters consommateur ne peuvent pas se connecter aux bases de données créées à partir des unités de partage des données.

    Vous pouvez accéder aux données à l’aide d’une qualification complète. Pour de plus amples informations, veuillez consulter Exemples de requêtes entre bases de données.

    SELECT * FROM sales_db.public.tickit_sales_redshift ORDER BY 1,2 LIMIT 5; salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission | saletime ---------+--------+----------+---------+---------+--------+---------+-----------+------------+--------------------- 1 | 1 | 36861 | 21191 | 7872 | 1875 | 4 | 728.00 | 109.20 | 2008-02-18 02:36:48 2 | 4 | 8117 | 11498 | 4337 | 1983 | 2 | 76.00 | 11.40 | 2008-06-06 05:00:16 3 | 5 | 1616 | 17433 | 8647 | 1983 | 2 | 350.00 | 52.50 | 2008-06-06 08:26:17 4 | 5 | 1616 | 19715 | 8647 | 1986 | 1 | 175.00 | 26.25 | 2008-06-09 08:38:52 5 | 6 | 47402 | 14115 | 8240 | 2069 | 2 | 154.00 | 23.10 | 2008-08-31 09:17:02

    Vous ne pouvez utiliser SELECT des instructions que sur des objets partagés. Toutefois, vous pouvez créer des tables dans le cluster consommateur en interrogeant les données des objets partagés dans une base de données locale différente.

    En plus des requêtes, les consommateurs peuvent créer des vues sur des objets partagés. Seules les vues à liaison tardive ou les vues matérialisées sont prises en charge. Amazon Redshift ne prend pas en charge les vues standard sur les données partagées. Les vues créées par les consommateurs peuvent s’étendre sur plusieurs bases de données locales ou bases de données créées à partir d’unités de partage des données. Pour de plus amples informations, veuillez consulter CREATE VIEW.

    // Connect to a local cluster database // Create a view on shared objects and access it. CREATE VIEW sales_data AS SELECT * FROM sales_db.public.tickit_sales_redshift WITH NO SCHEMA BINDING; SELECT * FROM sales_data;