Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Gemeinsamer Lesezugriff auf Daten innerhalb eines AWS-Konto
Mit Amazon Redshift können Sie den Lesezugriff auf Daten mit verschiedenen Datenbankbenutzern oder Gruppen innerhalb desselben AWS Kontos teilen. Mit dieser Funktion können Sie die Datenzugriffsrechte auf detaillierter Ebene steuern und so sicherstellen, dass nur autorisierte Benutzer oder Gruppen bestimmte Datensätze lesen können.
So geben Sie Daten für Lesezwecke als Administrator eines Produzenten-Clusters oder als Datenbankbesitzer frei:
Erstellen von Datashares im Cluster Weitere Informationen finden Sie unter CREATE DATASHARE.
CREATE DATASHARE salesshare;
Cluster-Superuser und Datenbankbesitzer können Datashares erstellen. Jedes Datashare wird während der Erstellung einer Datenbank zugeordnet. Nur Objekte aus dieser Datenbank können in diesem Datashare freigegeben werden. Mehrere Datashares können in derselben Datenbank mit derselben oder unterschiedlicher Granularität von Objekten erstellt werden. Es gibt keine Beschränkung für die Anzahl der Datashares, die ein Cluster erstellen kann.
Sie können auch die Amazon-Redshift-Konsole verwenden, um Datashares zu erstellen. Weitere Informationen finden Sie unter Erstellen von Datenaustauschen.
Delegieren Sie Berechtigungen, um mit Datashares zu arbeiten. Weitere Informationen finden Sie unter GRANT oder REVOKE.
Im folgenden Beispiel werden
dbuser
Berechtigungen insalesshare
gewährt.GRANT ALTER, SHARE ON DATASHARE salesshare TO dbuser;
Cluster-Superuser und die Besitzer des Datashares können zusätzlichen Benutzern Änderungsberechtigungen für den Datashare erteilen oder widerrufen.
Hinzufügen zu oder Entfernen von Objekten in Datashares. Um Objekte zu einem Datashare hinzuzufügen, fügen Sie das Schema vor den Objekten hinzu. Wenn Sie ein Schema hinzufügen, fügt Amazon Redshift nicht alle untergeordneten Objekte hinzu. Fügen Sie diese explizit hinzu. Weitere Informationen finden Sie unter 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;
Sie können auch Ansichten zu einem Datashare hinzufügen.
CREATE VIEW public.sales_data_summary_view AS SELECT * FROM public.tickit_sales_redshift; ALTER DATASHARE salesshare ADD TABLE public.sales_data_summary_view;
Wird verwendet, ALTER DATASHARE um Schemas sowie Tabellen, Ansichten und Funktionen in einem bestimmten Schema gemeinsam zu nutzen. Superuser, Besitzer von Datenfreigaben oder Benutzer, die über ALTER oder über die ALL entsprechende Berechtigung für die Datenfreigabe verfügen, können die Datenfreigabe ändern, um Objekte hinzuzufügen oder Objekte daraus zu entfernen. Benutzer sollten über die Berechtigung verfügen, Objekte zum Datashare hinzuzufügen oder daraus zu entfernen. Benutzer sollten auch die Eigentümer der Objekte sein oder über Berechtigungen für die Objekte verfügenSELECT. USAGE ALL
Sie können es auch verwendenGRANT, um Objekte zum Datenaustausch hinzuzufügen. Dieses Beispiel zeigt, wie:
GRANT SELECT ON TABLE public.tickit_sales_redshift TO DATASHARE salesshare;
Diese Syntax entspricht funktionell.
ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;
Verwenden Sie die INCLUDENEW Klausel, um neue Tabellen, Ansichten oder SQL benutzerdefinierte Funktionen (UDFs), die in einem bestimmten Schema erstellt wurden, dem Datashare hinzuzufügen. Nur Superuser können diese Eigenschaft für jedes Datashare-Schema-Paar ändern.
ALTER DATASHARE salesshare ADD SCHEMA PUBLIC; ALTER DATASHARE salesshare SET INCLUDENEW = TRUE FOR SCHEMA PUBLIC;
Sie können auch die Amazon-Redshift-Konsole verwenden, um Datashares hinzuzufügen oder zu entfernen. Weitere Informationen finden Sie unter Hinzufügen von Datashare-Objekten zu Datashares, Entfernen von Datashare-Objekten aus Datashares und Bearbeiten von Datashares, die in Ihrem Konto erstellt wurden.
Hinzufügen oder Entfernen von Verbrauchern zu Datashares. Im folgenden Beispiel wird der Konsumenten-Cluster-Namespace zu
salesshare
hinzugefügt. Der Namespace ist der global eindeutige Namespace-Identifier (GUID) des Consumer-Clusters im Konto. Weitere Informationen finden Sie unter GRANT oder REVOKE.GRANT USAGE ON DATASHARE salesshare TO NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
In einer Anweisung können Sie nur einem DataShare-Verbraucher Berechtigungen erteilen. GRANT
Cluster-Superuser und Eigentümer von Datashare-Objekten oder Benutzer, die über SHARE Berechtigungen für das Datashare verfügen, können Nutzer zu einer Datenfreigabe hinzufügen oder Benutzer daraus entfernen. Dazu verwenden sie oder. GRANT USAGE REVOKE USAGE
Um den Namespace des Clusters zu finden, den Sie gerade sehen, können Sie den NAMESPACE Befehl SELECT CURRENT _ verwenden. Um den Namespace eines anderen Clusters innerhalb desselben Clusters zu finden AWS-Konto, gehen Sie zur Detailseite des Amazon Redshift Redshift-Konsolen-Clusters. Suchen Sie auf dieser Seite das neu hinzugefügte Namespace-Feld.
Sie können auch die Amazon-Redshift-Konsole verwenden, um Datenkonsumenten für Datashares zu entfernen oder sie hinzuzufügen. Weitere Informationen erhalten Sie unter Hinzufügen von Datenverbrauchern zu Datashares und Entfernen von Datenkonsumenten aus Datashares.
(Optional) Fügen Sie Sicherheitseinschränkungen zum Datashare hinzu. Das folgende Beispiel zeigt, dass der Konsumenten-Cluster mit einem öffentlichen IP-Zugriff den Datashare lesen darf. Weitere Informationen finden Sie unter ALTER DATASHARE.
ALTER DATASHARE salesshare SET PUBLICACCESSIBLE = TRUE;
Nach der Erstellung des Datashares können Sie die Eigenschaften des Konsumententyps bearbeiten. Sie können beispielsweise festlegen, dass Cluster, die Daten aus einem bestimmten Datashare verwenden möchten, nicht öffentlich zugänglich sein können. Abfragen von Konsumenten-Clustern, die die im Datashare angegebenen Sicherheitseinschränkungen nicht erfüllen, werden bei der Abfragenlaufzeit abgelehnt.
Sie können auch die Amazon-Redshift-Konsole verwenden, um Datashares zu bearbeiten. Weitere Informationen finden Sie unter Bearbeiten von Datashares, die in Ihrem Konto erstellt wurden.
Listen Sie im Cluster erstellte Datashares auf, und schauen Sie sich den Inhalt des Datashares an.
Im folgenden Beispiel werden die Informationen eines Datashares mit dem Namen
salesshare
angezeigt. Weitere Informationen erhalten Sie unter DESC DATASHARE und 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 |
Im folgenden Beispiel werden die ausgehenden Datashares in einem Produzenten-Cluster angezeigt.
SHOW DATASHARES LIKE 'sales%';
Die Ausgabe sieht folgendermaßen oder ähnlich aus.
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
Weitere Informationen erhalten Sie unter DESC DATASHARE und SHOW DATASHARES.
Sie können auch SVV_DATASHARES, SVV_DATASHARE_CONSUMERS und SVV_DATASHARE_OBJECTS verwenden, um die Datashares, die Objekte im Datashare und die Datashare-Konsumenten anzuzeigen.
Löschen Sie Datashares. Weitere Informationen finden Sie unter DROP DATASHARE.
Sie können die Datashare-Objekte jederzeit mit DROP DATASHARE löschen. Cluster-Superuser und Besitzer von Datashares können Datashares löschen.
Im folgenden Beispiel wird ein Datashare namens
salesshare
entfernt.DROP DATASHARE salesshare;
Sie können auch die Amazon-Redshift-Konsole verwenden, um Datashares zu löschen. Weitere Informationen finden Sie unter Löschen von -Datashares, die in Ihrem Konto erstellt wurden.
Wird verwendet ALTERDATASHARE, um Objekte aus Datenfreigaben zu einem beliebigen Zeitpunkt aus der Datenfreigabe zu entfernen. Verwenden Sie REVOKE USAGE ON, um bestimmten Verbrauchern die Berechtigungen für den Datashare zu entziehen. Es widerruft USAGE Berechtigungen für Objekte innerhalb eines Datashare und stoppt sofort den Zugriff auf alle Consumer-Cluster. Das Auflisten von Datashares und Metadatenabfragen, wie z. B. das Auflisten von Datenbanken und Tabellen, gibt die freigegebenen Objekte nach dem Widerrufen des Zugriffs nicht zurück.
ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;
Sie können auch die Amazon-Redshift-Konsole verwenden, um Datashares zu bearbeiten. Weitere Informationen finden Sie unter Bearbeiten von Datashares, die in Ihrem Konto erstellt wurden.
Widerrufen Sie den Zugriff auf das Datashare aus Namespaces, wenn Sie die Daten nicht mehr mit den Konsumenten teilen möchten.
REVOKE USAGE ON DATASHARE salesshare FROM NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
Sie können auch die Amazon-Redshift-Konsole verwenden, um Datashares zu bearbeiten. Weitere Informationen finden Sie unter Bearbeiten von Datashares, die in Ihrem Konto erstellt wurden.
So geben Sie Daten für Lesezwecke als Konsumenten-Cluster-Administrator frei:
Listen Sie die Datashares auf, die Ihnen zur Verfügung gestellt werden, und zeigen Sie deren Inhalt an. Weitere Informationen erhalten Sie unter DESC DATASHARE und SHOW DATASHARES.
Im folgenden Beispiel werden die Informationen zu eingehenden Datashares eines angegebenen Produzenten-Namespaces angezeigt. Wenn Sie DESC DATASHARE als Consumer-Cluster-Administrator arbeiten, müssen Sie die NAMESPACE Option zum Anzeigen eingehender Datenfreigaben angeben.
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 |
Nur Cluster-Superuser können dies tun. Sie können auch SVV _ verwendenDATASHARES, um die Datashares anzuzeigen, und SVV _ DATASHARE _, OBJECTS um die Objekte innerhalb der Datenfreigabe anzuzeigen.
Im folgenden Beispiel werden die eingehenden Datashares in einem Konsumenten-Cluster angezeigt.
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
Als Datenbank-Superuser können Sie lokale Datenbanken erstellen, die auf die Datashares verweisen. Weitere Informationen finden Sie unter CREATE DATABASE.
CREATE DATABASE sales_db FROM DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
Wenn Sie den Zugriff auf die Objekte in der lokalen Datenbank detaillierter steuern möchten, verwenden Sie die WITH PERMISSIONS Klausel beim Erstellen der Datenbank. Auf diese Weise können Sie in Schritt 4 Berechtigungen auf Objektebene für Objekte in der Datenbank gewähren.
CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
Sie können Datenbanken sehen, die Sie durch Abfrage der SVV_REDSHIFT_DATABASES-Ansicht aus dem Datashare erstellt haben. Sie können eine direkte Verbindung zu diesen Datenbanken herstellen, oder Sie können eine Verbindung zu einer lokalen Datenbank in Ihrem Consumer-Cluster herstellen und eine datenbankübergreifende Abfrage durchführen, um die Daten aus den Datashare-Datenbanken abzufragen. Sie können keinen Datashare auf Datenbankobjekten erstellen, die aus einem vorhandenen Datashare erstellt wurden. Sie können die Daten jedoch in eine separate Tabelle im Konsumenten-Cluster kopieren, alle erforderlichen Verarbeitungsvorgänge durchführen und dann die neu erstellten Objekte freigeben.
Sie können auch die Amazon-Redshift-Konsole verwenden, um Datenbanken aus Datashares zu erstellen. Weitere Informationen finden Sie unter Erstellen von Datenbanken aus Datashares.
(Optional) Erstellen Sie externe Schemas, um auf bestimmte Schemas in der Konsumenten-Datenbank zu verweisen, die im Konsumenten-Cluster importiert wurden, und weisen Sie granulare Berechtigungen zu. Weitere Informationen finden Sie unter CREATE EXTERNAL SCHEMA.
CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE 'sales_db' SCHEMA 'public';
Gewähren Sie Benutzern und Rollen im Konsumenten-Cluster nach Bedarf Berechtigungen für Datenbanken und Schemareferenzen, die aus den Datashares erstellt wurden. Weitere Informationen finden Sie unter GRANT oder REVOKE.
GRANT USAGE ON DATABASE sales_db TO Bob;
GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
Wenn Sie Ihre Datenbank ohne diese Option erstellt haben WITHPERMISSIONS, können Sie Ihren Benutzern und Rollen nur Berechtigungen für die gesamte Datenbank zuweisen, die aus dem Datashare erstellt wurde. In einigen Fällen benötigen Sie feinkörnige Steuerelemente für eine Teilmenge von Datenbankobjekten, die aus dem Datashare erstellt wurden. Wenn dies der Fall ist, können Sie eine externe Schemareferenz erstellen, die auf bestimmte Schemas im Datashare verweist (wie im vorherigen Schritt beschrieben) und detaillierte Berechtigungen auf Schemaebene bereitstellen.
Sie können auch spätbindende Ansichten über freigegebene Objekte erstellen und diese verwenden, um detaillierte Berechtigungen zuzuweisen. Sie können auch erwägen, dass Produzenten-Cluster zusätzliche Datashares mit der erforderlichen Granularität erstellen.
Wenn Sie Ihre Datenbank mit WITH PERMISSIONS in Schritt 2 erstellt haben, müssen Sie den Objekten in der gemeinsam genutzten Datenbank Berechtigungen auf Objektebene zuweisen. Ein Benutzer, der nur über die USAGE entsprechende Berechtigung verfügt, kann erst dann auf Objekte in einer Datenbank zugreifen, die mit erstellt wurde, WITH PERMISSIONS wenn ihm zusätzliche Berechtigungen auf Objektebene erteilt wurden.
GRANT SELECT ON sales_db.public.tickit_sales_redshift to Bob;
Abfragen von Daten in den freigegebenen Objekten in Datashares.
Benutzer und Rollen mit Berechtigungen für Konsumenten-Datenbanken und Schemata in Konsumenten-Clustern können die Metadaten beliebiger freigegebener Objekte durchsuchen und navigieren. Sie können auch lokale Objekte in einem Konsumenten-Cluster untersuchen und navigieren. Dazu verwenden sie die ODBC Treiber JDBC oder die Ansichten SVV _ ALL und SVV _REDSHIFT.
Produzenten-Cluster können viele Schemas in der Datenbank, den Tabellen und Ansichten innerhalb jedes Schemas enthalten. Die Benutzer auf der Konsumenten-Seite können nur die Teilmenge der Objekte sehen, die über den Datashare zur Verfügung gestellt werden. Diese Benutzer können nicht die gesamten Metadaten aus dem Produzenten-Cluster sehen. Dieser Ansatz ermöglicht eine detaillierte Metadaten-Sicherheitskontrolle bei der Datenfreigabe.
Sie verbinden sich weiterhin mit lokalen Cluster-Datenbanken. Nun können Sie aber auch aus den Datenbanken und Schemas lesen, die aus dem Datashare mit der dreiteiligen database.schema.table-Notation erstellt werden. Sie können Abfragen durchführen, die sich über alle Datenbanken erstrecken, die für Sie sichtbar sind. Dies können lokale Datenbanken auf dem Cluster oder Datenbanken sein, die aus den Datashares erstellt wurden. Konsumenten-Cluster können keine direkte Verbindung zur Datenbank herstellen, die aus dem Datashare erstellt wurde.
Sie können auf die Daten mit vollständiger Qualifikation zugreifen. Weitere Informationen finden Sie unter Beispiele für datenbankübergreifende Abfragen.
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
Sie können SELECT Anweisungen nur für gemeinsam genutzte Objekte verwenden. Sie können jedoch Tabellen im Konsumenten-Cluster erstellen, indem Sie die Daten von den freigegebenen Objekten in einer anderen lokalen Datenbank abfragen.
Zusätzlich zu Abfragen können Konsumenten Ansichten zu freigegebenen Objekten erstellen. Nur spätbindende Ansichten oder materialisierte Ansichten werden unterstützt. Amazon Redshift unterstützt keine regelmäßigen Ansichten zu freigegebenen Daten. Ansichten, die Konsumenten erstellen, können sich über mehrere lokale Datenbanken oder Datenbanken erstrecken, die aus Datashares erstellt wurden. Weitere Informationen finden Sie unter 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;