Otentikasi dengan konektor Spark - Amazon Redshift

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

Otentikasi dengan konektor Spark

Diagram berikut menjelaskan otentikasi antara Amazon S3, Amazon Redshift, driver Spark, dan pelaksana Spark.

Ini adalah diagram otentikasi konektor percikan.

Otentikasi antara Redshift dan Spark

Anda dapat menggunakan driver driver JDBC versi 2 yang disediakan Amazon Redshift untuk terhubung ke Amazon Redshift dengan konektor Spark dengan menentukan kredenal masuk. Untuk menggunakan IAM, konfigurasikan url JDBC Anda untuk menggunakan otentikasi IAM. Untuk menyambung ke kluster Redshift dari Amazon EMR atau AWS Glue, pastikan bahwa peran IAM Anda memiliki izin yang diperlukan untuk mengambil kredenal IAM sementara. Daftar berikut menjelaskan semua izin yang diperlukan peran IAM Anda untuk mengambil kredensil dan menjalankan operasi Amazon S3.

Untuk informasi selengkapnya GetClusterCredentials, lihat Kebijakan sumber daya untuk GetClusterCredentials.

Anda juga harus memastikan bahwa Amazon Redshift dapat mengambil peran IAM selama COPY dan operasi. UNLOAD

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Jika Anda menggunakan driver JDBC terbaru, driver akan secara otomatis mengelola transisi dari sertifikat yang ditandatangani sendiri Amazon Redshift ke sertifikat ACM. Namun, Anda harus menentukan opsi SSL ke url JDBC.

Berikut ini adalah contoh cara menentukan URL driver JDBC dan terhubung aws_iam_role ke Amazon Redshift.

df.write \ .format("io.github.spark_redshift_community.spark.redshift ") \ .option("url", "jdbc:redshift:iam://<the-rest-of-the-connection-string>") \ .option("dbtable", "<your-table-name>") \ .option("tempdir", "s3a://<your-bucket>/<your-directory-path>") \ .option("aws_iam_role", "<your-aws-role-arn>") \ .mode("error") \ .save()

Otentikasi antara Amazon S3 dan Spark

Jika Anda menggunakan peran IAM untuk mengautentikasi antara Spark dan Amazon S3, gunakan salah satu metode berikut:

  • AWS SDK for Java akan secara otomatis mencoba AWS menemukan kredensil dengan menggunakan rantai penyedia kredensi default yang diimplementasikan oleh kelas Default. AWSCredentials ProviderChain Untuk informasi selengkapnya, lihat Menggunakan Rantai Penyedia Kredenal Default.

  • Anda dapat menentukan AWS kunci melalui properti konfigurasi Hadoop. Misalnya, jika tempdir konfigurasi Anda menunjuk ke s3n:// sistem file, setel fs.s3n.awsAccessKeyId dan fs.s3n.awsSecretAccessKey properti dalam file konfigurasi XMLHadoop atau panggil sc.hadoopConfiguration.set() untuk mengubah konfigurasi Hadoop global Spark.

Misalnya, jika Anda menggunakan sistem file s3n, tambahkan:

sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "YOUR_KEY_ID") sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "YOUR_SECRET_ACCESS_KEY")

Untuk sistem file s3a, tambahkan:

sc.hadoopConfiguration.set("fs.s3a.access.key", "YOUR_KEY_ID") sc.hadoopConfiguration.set("fs.s3a.secret.key", "YOUR_SECRET_ACCESS_KEY")

Jika Anda menggunakan Python, gunakan operasi berikut:

sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", "YOUR_KEY_ID") sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", "YOUR_SECRET_ACCESS_KEY")
  • Encode kunci otentikasi di URL. tempdir Misalnya, URI s3n://ACCESSKEY:SECRETKEY@bucket/path/to/temp/dir mengkodekan key pair (ACCESSKEY,SECRETKEY).

Otentikasi antara Redshift dan Amazon S3

Jika Anda menggunakan perintah COPY dan UNLOAD dalam kueri, Anda juga harus memberikan Amazon S3 akses ke Amazon Redshift untuk menjalankan kueri atas nama Anda. Untuk melakukannya, pertama-tama otorisasi Amazon Redshift untuk mengakses layanan AWS lain, lalu otorisasi operasi COPY dan UNLOAD menggunakan peran IAM.

Sebagai praktik terbaik, kami menyarankan untuk melampirkan kebijakan izin ke peran IAM dan kemudian menetapkannya ke pengguna dan grup sesuai kebutuhan. Untuk informasi selengkapnya, lihat Identitas dan manajemen akses di Amazon Redshift.

Integrasi dengan AWS Secrets Manager

Anda dapat mengambil nama pengguna Redshift dan kredenal kata sandi Anda dari rahasia yang tersimpan di. AWS Secrets Manager Untuk secara otomatis memasok kredenal Redshift, gunakan parameter. secret.id Untuk informasi selengkapnya tentang cara membuat rahasia kredensil Redshift, lihat Membuat rahasia database. AWS Secrets Manager

GroupID ArtifactID Revisi yang Didukung Deskripsi
com.amazonaws.secretsmanager aws-secretsmanager-jdbc 1.0.12 Perpustakaan Koneksi AWS Secrets Manager SQL untuk Java memungkinkan Pengembang Java untuk dengan mudah terhubung ke database SQL menggunakan rahasia yang disimpan di dalamnya. AWS Secrets Manager
catatan

Pengakuan: Dokumentasi ini berisi kode contoh dan bahasa yang dikembangkan oleh Apache Software Foundation yang dilisensikan di bawah lisensi Apache 2.0.