Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai 1 November 2025. Jika Anda ingin menggunakan Python UDFs, buat UDFs sebelum tanggal tersebut. Python yang ada UDFs akan terus berfungsi seperti biasa. Untuk informasi lebih lanjut, lihat posting blog
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan identitas federasi untuk mengelola akses Amazon Redshift ke sumber daya lokal dan tabel eksternal Amazon Redshift Spectrum
Menggunakan federasi identitas AWS dengan kredensi yang disediakan dari GetDatabaseCredentials
dapat menyederhanakan otorisasi dan akses ke data lokal dan ke data eksternal. Dalam tutorial ini, kami menunjukkan kepada Anda bagaimana menyediakan akses ke sumber daya dengan federasi AWS identitas, alih-alih menggunakan peran IAM tertentu.
Saat ini, untuk memberi pengguna akses ke data eksternal yang berada di Amazon S3, Anda membuat peran IAM dengan izin yang ditentukan dalam kebijakan izin. Kemudian, pengguna dengan peran terlampir dapat mengakses data eksternal. Ini berfungsi, tetapi jika Anda ingin memberikan aturan granular, seperti membuat kolom tertentu tidak tersedia untuk pengguna tertentu, Anda mungkin harus melakukan konfigurasi tambahan pada skema eksternal.
Federasi identitas, dengan kredensil yang disediakan dariGetDatabaseCredentials
, dapat menyediakan akses ke dan sumber daya AWS Glue Redshift Spectrum dengan aturan IAM granular yang lebih mudah ditentukan dan diubah. Ini membuatnya lebih mudah untuk menerapkan akses yang sesuai dengan aturan bisnis Anda.
Manfaat menggunakan kredensil federasi adalah sebagai berikut:
-
Anda tidak perlu mengelola peran IAM terlampir cluster untuk Redshift Spectrum.
-
Administrator cluster dapat membuat skema eksternal yang dapat diakses oleh konsumen dengan konteks IAM yang berbeda. Ini berguna, misalnya, untuk melakukan pemfilteran kolom pada tabel, di mana konsumen yang berbeda menanyakan skema eksternal yang sama dan mendapatkan berbagai bidang dalam catatan yang dikembalikan.
-
Anda dapat menanyakan Amazon Redshift menggunakan pengguna dengan izin IAM, bukan hanya dengan peran.
Mempersiapkan identitas untuk masuk dengan identitas federasi
Sebelum masuk dengan identitas federasi, Anda harus melakukan beberapa langkah awal. Instruksi ini mengasumsikan Anda memiliki skema eksternal Redshift Spectrum yang sudah ada yang mereferensikan file data yang disimpan di bucket Amazon S3, dan bucket berada di akun yang sama dengan cluster Amazon Redshift atau gudang data Amazon Redshift Tanpa Server.
-
Buat identitas IAM. Ini bisa menjadi pengguna atau peran IAM. Gunakan nama apa pun yang didukung oleh IAM.
-
Lampirkan kebijakan izin ke identitas. Tentukan salah satu dari berikut ini:
-
redshift:GetClusterCredentialsWithIAM
(untuk cluster yang disediakan Amazon Redshift) -
redshift-serverless:GetCredentials
(untuk Amazon Redshift Tanpa Server)
Anda dapat menambahkan izin dengan editor kebijakan, menggunakan konsol IAM.
Identitas IAM juga memerlukan izin untuk mengakses data eksternal. Berikan akses ke Amazon S3 dengan menambahkan kebijakan AWS terkelola berikut secara langsung:
-
AmazonS3ReadOnlyAccess
-
AWSGlueConsoleFullAccess
Kebijakan terkelola terakhir diperlukan jika Anda menggunakan AWS Glue untuk menyiapkan data eksternal Anda. Untuk informasi selengkapnya tentang langkah-langkah pemberian akses ke Amazon Redshift Spectrum, lihat Membuat peran IAM untuk Amazon Redshift, yang merupakan bagian dari panduan memulai Amazon Redshift dan Redshift Spectrum. Ini menunjukkan langkah-langkah untuk menambahkan kebijakan IAM untuk mengakses Redshift Spectrum.
-
-
Siapkan klien SQL Anda untuk terhubung ke Amazon Redshift. Gunakan driver Amazon Redshift JDBC, dan tambahkan kredenal pengguna Anda ke properti kredensi alat. Klien seperti SQL Workbench/J bekerja dengan baik untuk ini. Mengatur properti extended client-connection berikut:
-
AccessKeyID — Pengidentifikasi kunci akses Anda.
-
SecretAccessKey— Kunci akses rahasia Anda. (Perhatikan risiko keamanan mentransmisikan kunci rahasia jika Anda tidak menggunakan enkripsi.)
-
SessionToken— Satu set kredensyal sementara untuk peran IAM.
-
GroupFederation - Setel ke
true
jika Anda mengonfigurasi identitas federasi untuk klaster yang disediakan. Jangan setel parameter ini jika Anda menggunakan Amazon Redshift Serverless. -
LogLevel— Nilai tingkat log integer. Ini bersifat opsional.
-
-
Setel URL ke titik akhir JDBC yang ditemukan di konsol Amazon Redshift atau Amazon Redshift Tanpa Server. Ganti skema URL Anda dengan jdbc:redshift:iam: dan gunakan pemformatan ini:
-
Format untuk klaster yang disediakan Amazon Redshift:
jdbc:redshift:iam://<cluster_id>.<unique_suffix>.<region>.redshift.amazonaws.com:<port>/<database_name>
Contoh:
jdbc:redshift:iam://test1.12345abcdefg.us-east-1.redshift.amazonaws.com:5439/dev
-
Format untuk Amazon Redshift Tanpa Server:
jdbc:redshift:iam://<workgroup-name>.<account-number>.<aws-region>.redshift-serverless.amazonaws.com:5439:<port>/<database_name>
Contoh:
jdbc:redshift:iam://default.123456789012.us-east-1.redshift-serverless.amazonaws.com:5439/dev
Setelah Anda terhubung ke database untuk pertama kalinya, menggunakan identitas IAM, Amazon Redshift secara otomatis membuat identitas Amazon Redshift dengan nama yang sama, diawali
IAM:
dengan untuk penggunaIAMR:
atau untuk peran IAM. Langkah-langkah yang tersisa dalam topik ini menunjukkan contoh untuk pengguna.Jika pengguna Redshift tidak dibuat secara otomatis, Anda dapat membuatnya dengan menjalankan
CREATE USER
pernyataan, menggunakan akun admin, yang menentukan nama pengguna dalam format.IAM:<user name>
-
-
Sebagai administrator klaster Amazon Redshift Anda, berikan pengguna Redshift izin yang diperlukan untuk mengakses skema eksternal.
GRANT ALL ON SCHEMA my_schema to "IAM:my_user";
Untuk memberikan kemampuan kepada pengguna Redshift Anda untuk membuat tabel dalam skema eksternal, mereka harus menjadi pemilik skema. Misalnya:
ALTER SCHEMA my_schema owner to "IAM:my_user";
-
Untuk memverifikasi konfigurasi, jalankan kueri sebagai pengguna, menggunakan klien SQL, setelah izin diberikan. Sampel kueri ini mengambil data dari tabel eksternal.
SELECT * FROM my_schema.my_table;
Memulai dengan propagasi identitas dan otorisasi ke Redshift Spectrum
Untuk meneruskan identitas federasi ke tabel eksternal kueri, Anda menetapkan SESSION
sebagai nilai untuk parameter IAM_ROLE
kueri. CREATE EXTERNAL SCHEMA
Langkah-langkah berikut menunjukkan cara mengatur dan memanfaatkan SESSION
untuk mengotorisasi kueri pada skema eksternal.
-
Buat tabel lokal dan tabel eksternal. Tabel eksternal dikatalogkan dengan AWS Glue pekerjaan untuk ini.
-
Connect ke Amazon Redshift dengan identitas IAM Anda. Seperti disebutkan di bagian sebelumnya, ketika identitas terhubung ke Amazon Redshift, pengguna database Redshift dibuat. Pengguna dibuat jika sebelumnya tidak ada. Jika pengguna baru, administrator harus memberi mereka izin untuk melakukan tugas di Amazon Redshift, seperti menanyakan dan membuat tabel.
-
Connect ke Redshift dengan akun admin Anda. Jalankan perintah untuk membuat skema eksternal, menggunakan
SESSION
nilai.create external schema spectrum_schema from data catalog database '<my_external_database>' region '<my_region>' iam_role 'SESSION' catalog_id '<my_catalog_id>';
Perhatikan bahwa
catalog_id
diatur dalam kasus ini. Ini adalah pengaturan baru yang ditambahkan dengan fitur, karenaSESSION
menggantikan peran tertentu.Dalam contoh ini, nilai dalam kueri meniru bagaimana nilai nyata muncul.
create external schema spectrum_schema from data catalog database 'spectrum_db' region 'us-east-1' iam_role 'SESSION' catalog_id '123456789012'
catalog_id
Nilai dalam hal ini adalah ID AWS akun Anda. -
Jalankan kueri untuk mengakses data eksternal Anda, menggunakan identitas IAM yang terhubung dengan Anda pada langkah 2. Misalnya:
select * from spectrum_schema.table1;
Dalam hal ini,
table1
dapat berupa, misalnya, data berformat JSON dalam file, di bucket Amazon S3. -
Jika Anda sudah memiliki skema eksternal yang menggunakan peran IAM terlampir cluster, menunjuk ke database atau skema eksternal Anda, Anda dapat mengganti skema yang ada dan menggunakan identitas federasi seperti yang dirinci dalam langkah-langkah ini, atau membuat yang baru.
SESSION
menunjukkan bahwa kredensil identitas federasi digunakan untuk menanyakan skema eksternal. Saat Anda menggunakan parameter SESSION
kueri, pastikan Anda mengaturcatalog_id
. Ini diperlukan karena menunjuk ke katalog data yang digunakan untuk skema. Sebelumnya, catalog_id
diambil dari nilai yang ditetapkan untukiam_role
. Saat Anda mengatur propagasi identitas dan otorisasi dengan cara ini, misalnya, ke Redshift Spectrum, dengan menggunakan kredensil federasi untuk menanyakan skema eksternal, otorisasi melalui peran IAM tidak diperlukan.
Catatan penggunaan
Kesalahan koneksi umum adalah sebagai berikut: Kesalahan IAM mengambil kredensyal sementara: Tidak dapat membatalkan respons pengecualian dengan unmarshallers yang disediakan. Kesalahan ini adalah hasil dari memiliki driver JDBC lama. Versi driver minimum yang diperlukan untuk identitas federasi adalah 2.1.0.9. Anda bisa mendapatkan driver JDBC dari Unduh driver Amazon Redshift JDBC, versi 2.1.
Sumber daya tambahan
Tautan ini memberikan informasi tambahan untuk mengelola akses ke data eksternal.
-
Anda masih dapat mengakses data Redshift Spectrum menggunakan peran IAM. Untuk informasi selengkapnya, lihat Mengotorisasi Amazon Redshift untuk AWS mengakses layanan atas nama Anda.
-
Saat Anda mengelola akses ke tabel eksternal AWS Lake Formation, Anda dapat menanyakannya menggunakan Redshift Spectrum dengan identitas IAM federasi. Anda tidak lagi harus mengelola peran IAM terlampir cluster untuk Redshift Spectrum untuk menanyakan data yang terdaftar. AWS Lake Formation Untuk informasi selengkapnya, lihat Menggunakan AWS Lake Formation Amazon Redshift Spectrum.