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

Vous pouvez partager des données à des fins de lecture entre différents clusters Amazon Redshift au sein d’un Compte AWS.

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;

    Utilisez ALTER DATASHARE pour partager des schémas, des tables, des vues et des fonctions dans un schéma donné. Les super-utilisateurs, les propriétaires d’unité de partage des données ou les utilisateurs disposant des autorisations ALTER ou ALL sur l’unité de partage des données peuvent modifier l’unité de partage des données pour y ajouter des objets 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 disposer des autorisations SELECT, USAGE ou ALL sur les objets.

    Vous pouvez également 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 clause INCLUDENEW pour ajouter des tables, des vues ou des fonctions SQL définies par l’utilisateur (UDF) créées dans un schéma spécifié à l’unité de partage des données. 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 global unique d’espace de noms (GUID) du cluster consommateur sur le 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 d’unité de partage des données dans une instruction GRANT.

    Les super-utilisateurs de cluster et les propriétaires d’objets d’unité de partage des données, ou les utilisateurs qui ont l’autorisation SHARE sur l’unité de partage des données, peuvent ajouter des consommateurs dans une unité de partage des données, ou en supprimer. Pour ce faire, ils utilisent GRANT USAGE ou REVOKE USAGE.

    Pour rechercher l’espace de noms du cluster que vous voyez actuellement, vous pouvez utiliser la commande SELECT CURRENT_NAMESPACE. 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 plus d'informations, consultez Suppression des unités de partage des données créées dans votre compte.

  8. Utilisez ALTER DATASHARE pour supprimer des objets des datashares à n'importe quel point du datashare. Utilisez REVOKE USAGE ON pour révoquer les autorisations de certains consommateurs sur l’unité de partage des données. Il révoque les autorisations USAGE sur les objets dans une unité de partage des données et arrête instantanément l’accès à tous les clusters consommateur. 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 exécutez DESC DATASHARE en tant qu’administrateur de cluster consommateur, vous devez spécifier l’option NAMESPACE pour afficher les unités de partage des données entrantes.

    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 unités de partage des données et SVV_DATASHARE_OBJECTS pour afficher les objets dans l’unité de partage des 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 plus d’informations, consultez 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 clause WITH PERMISSIONS quand vous créez 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 ne pouvez pas vous connecter à ces bases de données créées à partir d’unités de partage des données, et elles sont en lecture seule. Toutefois, vous pouvez vous connecter à une base de données locale sur votre cluster consommateur et effectuer une requête entre bases de données pour interroger les données des bases de données créées à partir des unités de partage des donné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 plus d’informations, consultez 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 la clause WITH PERMISSIONS, vous ne pouvez attribuer des autorisations sur l’ensemble de la base de données créée à partir de l’unité de partage des données qu’à vos utilisateurs et groupes. 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 de l’unité de partage des données. 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 avec la clause WITH PERMISSIONS à l’étape 2, vous devez attribuer des autorisations de niveau objet dans la base de données partagée. Un utilisateur disposant uniquement de l’autorisation USAGE ne peut accéder à aucun objet d’une base de données créée avec la clause WITH PERMISSIONS tant qu’il n’a pas obtenu d’autorisations de niveau objet supplémentaires.

    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 des pilotes JDBC ou ODBC ou des vues SVV_ALL et SVV_REDSHIFT.

    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 plus d'informations, consultez Exemples d’utilisation d’une requête 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 les instructions SELECT que sur les 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 plus d’informations, consultez 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;