Berbagi datashares - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Berbagi datashares

Anda hanya memerlukan datashares saat berbagi data antara berbagai kluster yang disediakan Amazon Redshift atau grup kerja tanpa server. Dalam cluster yang sama, Anda dapat menanyakan database lain menggunakan notasi tiga bagian sederhana database.schema.table selama Anda memiliki izin yang diperlukan pada objek di database lain.

Mengelola izin untuk datashares di Amazon Redshift

Sebagai administrator klaster produser, Anda mempertahankan kontrol untuk kumpulan data yang Anda bagikan. Anda dapat menambahkan objek baru atau menghapusnya dari datashare. Anda juga dapat memberikan atau mencabut akses ke datashares secara keseluruhan untuk kluster konsumen, akun, atau Wilayah. AWS AWS Ketika izin dicabut, kluster konsumen segera kehilangan akses ke objek bersama dan berhenti melihatnya dalam daftar datashares INBOUND di SVV_DATASHARES.

Contoh berikut membuat datasharesalesshare, menambahkan skemapublic, dan menambahkan tabel ke. public.tickit_sales_redshift salesshare Ini juga memberikan izin penggunaan salesshare ke namespace cluster yang ditentukan.

CREATE DATASHARE salesshare; ALTER DATASHARE salesshare ADD SCHEMA public; ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift; GRANT USAGE ON DATASHARE salesshare TO NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';

Untuk CREATE DATASHARE, superusers dan pemilik database dapat membuat datashares. Untuk informasi selengkapnya, lihat BUAT DATASHARE. Untuk ALTER DATASHARE, pemilik datashare dengan izin yang diperlukan pada objek datashare yang akan ditambahkan atau dihapus dapat mengubah datashare. Untuk informasi, lihat MENGUBAH DATASHARE.

Sebagai administrator produser, ketika Anda menjatuhkan datashare, data berhenti terdaftar di cluster konsumen. Database dan referensi skema yang dibuat di cluster konsumen dari datashare yang dijatuhkan terus ada tanpa objek di dalamnya. Administrator cluster konsumen harus menghapus database ini secara manual.

Di sisi konsumen, administrator cluster konsumen dapat menentukan pengguna dan peran mana yang harus mendapatkan akses ke data bersama dengan membuat database dari datashare. Bergantung pada opsi yang Anda pilih saat membuat database, Anda dapat mengontrol akses ke sana sebagai berikut. Untuk informasi selengkapnya tentang membuat database dari datashare, lihat. BUAT BASIS DATA

Membuat database tanpa klausa WITH PERMISSIONS

Administrator dapat mengontrol akses di tingkat database atau skema. Untuk mengontrol akses pada tingkat skema, administrator harus membuat skema eksternal dari database Amazon Redshift yang dibuat dari datashare.

Contoh berikut memberikan izin untuk mengakses tabel bersama di tingkat database dan tingkat skema.

GRANT USAGE ON DATABASE sales_db TO Bob; CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE sales_db SCHEMA 'public'; GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;

Untuk lebih membatasi akses, Anda dapat membuat tampilan di atas objek bersama, hanya mengekspos data yang diperlukan. Anda kemudian dapat menggunakan tampilan ini untuk memberikan akses ke pengguna dan peran.

Setelah pengguna diberikan akses ke database atau skema, mereka akan memiliki akses ke semua objek bersama dalam database atau skema itu.

Membuat database dengan klausa WITH PERMISSIONS

Setelah memberikan hak penggunaan pada database atau skema, administrator dapat mengontrol akses lebih lanjut menggunakan proses pemberian izin yang sama seperti yang mereka lakukan pada database atau skema lokal. Tanpa izin objek individual, pengguna tidak dapat mengakses objek apa pun dalam database atau skema datashared bahkan setelah diberikan izin USE.

Contoh berikut memberikan izin untuk mengakses tabel bersama di tingkat database.

GRANT USAGE ON DATABASE sales_db TO Bob; GRANT USAGE FOR SCHEMAS IN DATABASE sales_db TO Bob; GRANT SELECT ON sales_db.public.tickit_sales_redshift TO Bob;

Setelah diberikan akses ke database atau skema, pengguna masih perlu diberikan izin yang relevan untuk objek apa pun dalam database atau skema yang Anda ingin mereka akses.

Berbagi granular menggunakan DENGAN IZIN (pratinjau)

Mengaktifkan cluster atau grup kerja Tanpa Server untuk menanyakan datashare

Langkah ini mengasumsikan datashare berasal dari cluster lain atau namespace Amazon Redshift Tanpa Server di akun Anda, atau berasal dari akun lain dan telah dikaitkan dengan namespace yang Anda gunakan.

  1. Administrator database konsumen dapat membuat database dari datashare.

    CREATE DATABASE my_ds_db [WITH PERMISSIONS] FROM DATASHARE my_datashare OF NAMESPACE 'abc123def';

    Jika Anda membuat database DENGAN IZIN, Anda dapat memberikan izin terperinci pada objek datashare kepada pengguna dan peran yang berbeda. Tanpa ini, semua pengguna dan peran yang diberikan izin PENGGUNAAN pada database datashare diberikan semua izin pada semua objek dalam database datashare.

  2. Berikut ini menunjukkan cara memberikan izin kepada pengguna atau peran database Redshift. Anda harus terhubung ke database lokal untuk menjalankan pernyataan ini. Anda tidak dapat menjalankan pernyataan ini jika Anda menjalankan perintah USE pada database datashare sebelum menjalankan pernyataan hibah.

    GRANT USAGE ON DATABASE my_ds_db TO ROLE data_eng; GRANT CREATE, USAGE ON SCHEMA my_ds_db.my_shared_schema TO ROLE data_eng; GRANT ALL ON ALL TABLES IN SCHEMA my_ds_db.my_shared_schema TO ROLE data_eng; GRANT USAGE ON DATABASE my_ds_db TO bi_user; GRANT USAGE ON SCHEMA my_ds_db.my_shared_schema TO bi_user; GRANT SELECT ON my_ds_db.my_shared_schema.table1 TO bi_user;

Bekerja dengan tampilan di berbagi data Amazon Redshift

Kluster produser dapat berbagi tampilan reguler, pengikatan terlambat, dan terwujud. Saat berbagi tampilan reguler atau pengikatan akhir, Anda tidak perlu membagikan tabel dasar. Tabel berikut menunjukkan bagaimana tampilan didukung dengan berbagi data.

Nama tampilan Bisakah tampilan ini ditambahkan ke datashare? Bisakah konsumen membuat tampilan ini pada objek datashare di seluruh cluster?
Tampilan reguler Ya Tidak
Tampilan pengikatan akhir Ya Ya
Tampilan terwujud Ya Ya, tetapi hanya dengan penyegaran lengkap

Kueri berikut menunjukkan output dari tampilan reguler yang didukung dengan berbagi data. Untuk informasi tentang definisi tampilan reguler, lihatBUAT TAMPILAN.

SELECT * FROM tickit_db.public.myevent_regular_vw ORDER BY eventid LIMIT 5; eventid | eventname ----------+------------- 3835 | LeAnn Rimes 3967 | LeAnn Rimes 4856 | LeAnn Rimes 4948 | LeAnn Rimes 5131 | LeAnn Rimes

Kueri berikut menunjukkan output dari tampilan pengikatan akhir yang didukung dengan berbagi data. Untuk informasi tentang definisi tampilan pengikatan akhir, lihat. BUAT TAMPILAN

SELECT * FROM tickit_db.public.event_lbv ORDER BY eventid LIMIT 5; eventid | venueid | catid | dateid | eventname | starttime --------+---------+-------+--------+------------------------------+--------------------- 1 | 305 | 8 | 1851 | Gotterdammerung | 2008-01-25 14:30:00 2 | 306 | 8 | 2114 | Boris Godunov | 2008-10-15 20:00:00 3 | 302 | 8 | 1935 | Salome | 2008-04-19 14:30:00 4 | 309 | 8 | 2090 | La Cenerentola (Cinderella) | 2008-09-21 14:30:00 5 | 302 | 8 | 1982 | Il Trovatore | 2008-06-05 19:00:00

Kueri berikut menunjukkan output dari tampilan terwujud yang didukung dengan berbagi data. Untuk informasi tentang definisi tampilan terwujud, lihatBUAT TAMPILAN TERWUJUD.

SELECT * FROM tickit_db.public.tickets_mv; catgroup | qtysold ----------+--------- Concerts | 195444 Shows | 149905

Anda dapat mempertahankan tabel umum di semua penyewa dalam klaster produsen. Anda juga dapat membagikan subset data yang difilter berdasarkan kolom dimensi, seperti tenant_id (account_idataunamespace_id), ke kluster konsumen. Untuk melakukan ini, Anda dapat menentukan tampilan pada tabel dasar dengan filter pada kolom ID ini, misalnyacurrent_aws_account = tenant_id. Di sisi konsumen, saat Anda menanyakan tampilan, Anda hanya melihat baris yang memenuhi syarat untuk akun Anda. Untuk melakukan ini, Anda dapat menggunakan fungsi current_aws_account konteks Amazon Redshift dan. current_namespace

Kueri berikut mengembalikan ID akun tempat klaster Amazon Redshift saat ini berada. Anda dapat menjalankan kueri ini jika Anda terhubung ke Amazon Redshift.

select current_user, current_aws_account; current_user | current_aws_account -------------+-------------------- dwuser | 111111111111 (1row)

Kueri berikut mengembalikan namespace dari cluster Amazon Redshift saat ini. Anda dapat menjalankan kueri ini jika Anda terhubung ke database.

select current_user, current_namespace; current_user | current_namespace -------------+-------------------------------------- dwuser | 86b5169f-01dc-4a6f-9fbb-e2e24359e9a8 (1 row)

Penyegaran tambahan untuk tampilan terwujud dalam datashare

Amazon Redshift mendukung penyegaran inkremental untuk tampilan terwujud dalam database konsumen saat tabel dasar dibagikan. Penyegaran tambahan adalah operasi di mana Amazon Redshift mengidentifikasi perubahan pada tabel dasar atau tabel yang terjadi setelah penyegaran sebelumnya dan hanya memperbarui catatan terkait dalam tampilan terwujud. Untuk informasi selengkapnya tentang perilaku ini, lihat MEMBUAT TAMPILAN TERWUJUD.

Mengelola akses ke operasi API berbagi data dengan kebijakan IAM

Untuk mengontrol akses ke operasi API berbagi data, gunakan kebijakan berbasis tindakan IAM. Untuk informasi tentang cara mengelola kebijakan IAM, lihat Mengelola kebijakan IAM di Panduan Pengguna IAM.

Untuk informasi tentang izin yang diperlukan untuk menggunakan operasi API berbagi data, lihat Izin yang diperlukan untuk menggunakan operasi API berbagi data di Panduan Manajemen Amazon Redshift.

Untuk membuat berbagi data lintas akun lebih aman, Anda dapat menggunakan kunci bersyarat ConsumerIdentifier untuk operasi AuthorizeDataShare dan DeauthorizeDataShare API. Dengan melakukan ini, Anda dapat secara eksplisit mengontrol mana yang Akun AWS dapat melakukan panggilan ke dua operasi API.

Anda dapat menolak otorisasi atau membatalkan otorisasi berbagi data untuk setiap konsumen yang bukan akun Anda sendiri. Untuk melakukannya, tentukan Akun AWS nomor dalam kebijakan IAM.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Deny", "Action": [ "redshift:AuthorizeDataShare", "redshift:DeauthorizeDataShare" ], "Resource": "*", "Condition": { "StringNotEquals": { "redshift:ConsumerIdentifier": "555555555555" } } } ] }

Anda dapat mengizinkan produsen dengan a DataShareArn testshare2 untuk secara eksplisit berbagi dengan konsumen dengan Akun AWS 111122223333 dalam kebijakan IAM.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "redshift:AuthorizeDataShare", "redshift:DeauthorizeDataShare" ], "Resource": "arn:aws:redshift:us-east-1:666666666666:datashare:af06285e-8a45-4ee9-b598-648c218c8ff1/testshare2", "Condition": { "StringEquals": { "redshift:ConsumerIdentifier": "111122223333" } } } ] }