Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Berbagi akses baca ke data dalam Akun AWS
Dengan Amazon Redshift, Anda dapat berbagi akses baca ke data di berbagai pengguna database atau grup dalam akun yang sama AWS . Fitur ini memungkinkan Anda untuk mengontrol hak akses data pada tingkat terperinci, memastikan bahwa hanya pengguna atau grup yang berwenang yang dapat membaca kumpulan data tertentu.
Bagikan data untuk tujuan baca sebagai administrator produsen atau pemilik basis data
-
Buat datashares di cluster Anda. Untuk informasi selengkapnya, lihat BUAT DATASHARE.
CREATE DATASHARE salesshare;
Superuser cluster dan pemilik database dapat membuat datashares. Setiap datashare dikaitkan dengan database selama pembuatan. Hanya objek dari database yang dapat dibagikan dalam datashare itu. Beberapa datashares dapat dibuat pada database yang sama dengan granularitas objek yang sama atau berbeda. Tidak ada batasan jumlah datashares yang dapat dibuat oleh sebuah cluster.
Anda juga dapat menggunakan konsol Amazon Redshift untuk membuat datashares. Untuk informasi selengkapnya, lihat Buat datashare.
-
Delegasikan izin untuk beroperasi di datashare. Untuk informasi selengkapnya, lihat HIBAH atau MENCABUT.
Contoh berikut memberikan izin untuk
dbuser
aktif.salesshare
GRANT ALTER, SHARE ON DATASHARE salesshare TO dbuser;
Superuser cluster dan pemilik datashare dapat memberikan atau mencabut izin modifikasi pada datashare kepada pengguna tambahan.
-
Tambahkan objek ke atau hapus objek dari datashares. Untuk menambahkan objek ke datashare, tambahkan skema sebelum menambahkan objek. Saat Anda menambahkan skema, Amazon Redshift tidak menambahkan semua objek di bawahnya. Pastikan untuk menambahkan ini secara eksplisit. Untuk informasi selengkapnya, lihat MENGUBAH 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;
Anda juga dapat menambahkan tampilan ke datashare.
CREATE VIEW public.sales_data_summary_view AS SELECT * FROM public.tickit_sales_redshift; ALTER DATASHARE salesshare ADD TABLE public.sales_data_summary_view;
Gunakan ALTER DATASHARE untuk berbagi skema, dan tabel, tampilan, dan fungsi dalam skema tertentu. Superusers, pemilik datashare, atau pengguna yang memiliki ALTER atau ALL izin pada datashare dapat mengubah datashare untuk menambahkan objek ke atau menghapus objek dari itu. Pengguna harus memiliki izin untuk menambah atau menghapus objek dari datashare. Pengguna juga harus menjadi pemilik objek atau memiliki izin SELECT, USE, atau SEMUA pada objek.
Anda juga dapat menggunakan GRANT untuk menambahkan objek ke datashare. Contoh ini menunjukkan bagaimana:
GRANT SELECT ON TABLE public.tickit_sales_redshift TO DATASHARE salesshare;
Sintaks ini secara fungsional setara dengan.
ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;
Gunakan klausa INCLUDENEW untuk menambahkan tabel baru, tampilan, atau fungsi yang ditentukan pengguna SQL (UDFs) yang dibuat dalam skema tertentu ke datashare. Hanya pengguna super yang dapat mengubah properti ini untuk setiap pasangan skema rangkaian data.
ALTER DATASHARE salesshare ADD SCHEMA PUBLIC; ALTER DATASHARE salesshare SET INCLUDENEW = TRUE FOR SCHEMA PUBLIC;
Anda juga dapat menggunakan konsol Amazon Redshift untuk menambah atau menghapus objek dari datashares. Lihat informasi selengkapnya di Tambahkan objek datashare ke datashares, Menghapus objek datashare dari datashares, dan Mengedit datashares yang dibuat di akun Anda.
-
Tambahkan konsumen ke atau hapus konsumen dari datashares. Contoh berikut menambahkan namespace konsumen ke.
salesshare
Namespace adalah namespace global unique identifier (GUID) dari cluster konsumen di akun. Untuk informasi selengkapnya, lihat HIBAH atau MENCABUT.GRANT USAGE ON DATASHARE salesshare TO NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
Anda hanya dapat memberikan izin kepada satu konsumen datashare dalam pernyataan GRANT.
Superuser cluster dan pemilik objek datashare atau pengguna yang memiliki izin SHARE pada datashare dapat menambahkan konsumen ke atau menghapus konsumen dari datashare. Untuk melakukannya, mereka menggunakan PENGGUNAAN HIBAH atau MENCABUT PENGGUNAAN.
Untuk menemukan namespace cluster yang Anda lihat saat ini, Anda dapat menggunakan perintah SELECT CURRENT_NAMESPACE. Untuk menemukan namespace dari cluster yang berbeda dalam hal yang sama Akun AWS, buka halaman detail klaster konsol Amazon Redshift. Di halaman itu, temukan bidang namespace yang baru ditambahkan.
Anda juga dapat menggunakan konsol Amazon Redshift untuk menambah atau menghapus data konsumen untuk datashares. Untuk informasi selengkapnya, silakan lihat Tambahkan konsumen data ke datashares dan Menghapus konsumen data dari datashares.
-
(Opsional) Tambahkan batasan keamanan ke datashare. Contoh berikut menunjukkan bahwa cluster konsumen dengan akses IP publik diizinkan untuk membaca datashare. Untuk informasi selengkapnya, lihat MENGUBAH DATASHARE.
ALTER DATASHARE salesshare SET PUBLICACCESSIBLE = TRUE;
Anda dapat memodifikasi properti tentang jenis konsumen setelah pembuatan datashare. Misalnya, Anda dapat menentukan bahwa cluster yang ingin menggunakan data dari datashare tertentu tidak dapat diakses publik. Kueri dari kluster konsumen yang tidak memenuhi batasan keamanan yang ditentukan dalam datashare ditolak saat runtime kueri.
Anda juga dapat menggunakan konsol Amazon Redshift untuk mengedit datashares. Untuk informasi selengkapnya, lihat Mengedit datashares yang dibuat di akun Anda.
-
Daftar datashares yang dibuat di cluster dan melihat ke dalam isi datashare.
Contoh berikut menampilkan informasi dari datashare bernama.
salesshare
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 |
Contoh berikut menampilkan datashares keluar dalam cluster produser.
SHOW DATASHARES LIKE 'sales%';
Output-nya akan terlihat serupa dengan yang berikut ini.
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
Untuk informasi selengkapnya, silakan lihat DESC DATASHARE dan TAMPILKAN DATASHARES.
Anda juga dapat menggunakanSVV_DATASHARES,SVV_DATASHARE_CONSUMER, dan SVV_DATASHARE_OBJECTS untuk melihat datashares, objek dalam datashare, dan konsumen datashare.
-
Jatuhkan datashares. Untuk informasi selengkapnya, lihat JATUHKAN DATASHARE.
Anda dapat menghapus objek datashare kapan saja menggunakan. JATUHKAN DATASHARE Superuser cluster dan pemilik datashare dapat menjatuhkan datashares.
Contoh berikut menjatuhkan datashare bernama.
salesshare
DROP DATASHARE salesshare;
Anda juga dapat menggunakan konsol Amazon Redshift untuk menghapus datashares. Untuk informasi selengkapnya, lihat Menghapus datashare yang dibuat di akun Anda.
-
Gunakan ALTER DATASHARE untuk menghapus objek dari datashares kapan saja dari datashare. Gunakan REVOKE USE ON untuk mencabut izin pada datashare kepada konsumen tertentu. Ini mencabut izin PENGGUNAAN pada objek dalam datashare dan langsung menghentikan akses ke semua cluster konsumen. Daftar datashares dan kueri metadata, seperti daftar database dan tabel, tidak mengembalikan objek bersama setelah akses dicabut.
ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;
Anda juga dapat menggunakan konsol Amazon Redshift untuk mengedit datashares. Untuk informasi selengkapnya, lihat Mengedit datashares yang dibuat di akun Anda.
-
Cabut akses ke datashare dari ruang nama jika Anda tidak ingin berbagi data dengan konsumen lagi.
REVOKE USAGE ON DATASHARE salesshare FROM NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
Anda juga dapat menggunakan konsol Amazon Redshift untuk mengedit datashares. Untuk informasi selengkapnya, lihat Mengedit datashares yang dibuat di akun Anda.
Bagikan data untuk tujuan baca sebagai administrator konsumen
-
Buat daftar datashares yang tersedia untuk Anda dan lihat konten datashares. Untuk informasi selengkapnya, silakan lihat DESC DATASHARE dan TAMPILKAN DATASHARES.
Contoh berikut menampilkan informasi datashares inbound dari namespace produsen tertentu. Ketika Anda menjalankan DESC DATASHARE sebagai administrator konsumen, Anda harus menentukan opsi NAMESPACE untuk melihat datashares masuk.
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 |
Hanya superuser cluster yang bisa melakukan ini. Anda juga dapat menggunakan SVV_DATASHARES untuk melihat datashares dan SVV_DATASHARE_OBJECTS untuk melihat objek dalam datashare.
Contoh berikut menampilkan datashares masuk dalam cluster konsumen.
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
-
Sebagai superuser database, Anda dapat membuat database lokal yang merujuk ke datashares. Untuk informasi selengkapnya, lihat BUAT BASIS DATA.
CREATE DATABASE sales_db FROM DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
Jika Anda ingin kontrol lebih terperinci atas akses ke objek dalam database lokal, gunakan klausa WITH PERMISSIONS saat membuat database. Ini memungkinkan Anda memberikan izin tingkat objek untuk objek dalam database pada langkah 4.
CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
Anda dapat melihat database yang Anda buat dari datashare dengan menanyakan tampilan. SVV_REDSHIFT_DATABASES Anda dapat terhubung ke database ini secara langsung, atau Anda dapat terhubung ke database lokal di cluster konsumen Anda dan melakukan kueri lintas basis data untuk menanyakan data dari database datashare. Anda tidak dapat membuat datashare di atas objek database yang dibuat dari datashare yang ada. Namun, Anda dapat menyalin data ke tabel terpisah di cluster konsumen, melakukan pemrosesan apa pun yang diperlukan, dan kemudian membagikan objek baru yang dibuat.
Anda juga dapat menggunakan konsol Amazon Redshift untuk membuat database dari datashares. Untuk informasi selengkapnya, lihat Membuat database dari datashares.
-
(Opsional) Buat skema eksternal untuk merujuk dan menetapkan izin granular ke skema tertentu dalam database konsumen yang diimpor di cluster konsumen. Untuk informasi selengkapnya, lihat BUAT SKEMA EKSTERNAL.
CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE 'sales_db' SCHEMA 'public';
-
Berikan izin pada database dan referensi skema yang dibuat dari datashares kepada pengguna dan peran dalam cluster konsumen sesuai kebutuhan. Untuk informasi selengkapnya, lihat HIBAH atau MENCABUT.
GRANT USAGE ON DATABASE sales_db TO Bob;
GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
Jika Anda membuat database tanpa DENGAN IZIN, Anda hanya dapat menetapkan izin pada seluruh database yang dibuat dari datashare ke pengguna dan peran Anda. Dalam beberapa kasus, Anda memerlukan kontrol halus pada subset objek database yang dibuat dari datashare. Jika demikian, Anda dapat membuat referensi skema eksternal yang menunjuk ke skema tertentu dalam database (seperti yang dijelaskan pada langkah sebelumnya) dan memberikan izin granular pada tingkat skema.
Anda juga dapat membuat tampilan pengikatan akhir di atas objek bersama dan menggunakannya untuk menetapkan izin granular. Anda juga dapat mempertimbangkan agar cluster produsen membuat datashares tambahan untuk Anda dengan perincian yang diperlukan.
Jika Anda membuat database dengan DENGAN IZIN di langkah 2, Anda harus menetapkan izin tingkat objek untuk objek dalam database bersama. Pengguna dengan hanya izin PENGGUNAAN tidak dapat mengakses objek apa pun dalam database yang dibuat dengan IZIN DENGAN IZIN sampai mereka diberikan izin tingkat objek tambahan..
GRANT SELECT ON sales_db.public.tickit_sales_redshift to Bob;
-
Kueri data dalam objek bersama di datashares.
Pengguna dan peran dengan izin pada database konsumen dan skema pada kluster konsumen dapat menjelajahi dan menavigasi metadata objek bersama. Mereka juga dapat menjelajahi dan menavigasi objek lokal di cluster konsumen. Untuk melakukan ini, mereka menggunakan driver JDBC atau ODBC atau tampilan SVV_ALL dan SVV_REDSHIFT.
Cluster produser mungkin memiliki banyak skema dalam database, tabel, dan tampilan dalam setiap skema. Pengguna di sisi konsumen hanya dapat melihat subset objek yang tersedia melalui datashare. Pengguna ini tidak dapat melihat seluruh metadata dari kluster produsen. Pendekatan ini membantu memberikan kontrol keamanan metadata granular dengan berbagi data.
Anda terus terhubung ke database cluster lokal. Tapi sekarang, Anda juga dapat membaca dari database dan skema yang dibuat dari datashare menggunakan notasi database.schema.table tiga bagian. Anda dapat melakukan kueri yang menjangkau setiap dan semua database yang terlihat oleh Anda. Ini bisa berupa database lokal pada cluster atau database yang dibuat dari datashares. Cluster konsumen tidak dapat terhubung ke database yang dibuat dari datashares.
Anda dapat mengakses data menggunakan kualifikasi penuh. Untuk informasi selengkapnya, lihat Contoh kueri lintas basis data.
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
Anda hanya dapat menggunakan pernyataan SELECT pada objek bersama. Namun, Anda dapat membuat tabel di cluster konsumen dengan menanyakan data dari objek bersama di database lokal yang berbeda.
Selain kueri, konsumen dapat membuat tampilan pada objek bersama. Hanya tampilan yang mengikat akhir atau tampilan terwujud yang didukung. Amazon Redshift tidak mendukung tampilan reguler pada data bersama. Tampilan yang dibuat konsumen dapat menjangkau beberapa database lokal atau database yang dibuat dari datashares. Untuk informasi selengkapnya, lihat BUAT TAMPILAN.
// 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;