Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengautentikasi dengan integrasi Amazon Redshift untuk Apache Spark
Bagian berikut menunjukkan opsi otentikasi dengan Amazon Redshift saat Anda mengintegrasikan dengan Apache Spark. Bagian-bagian tersebut menunjukkan cara mengambil kredensi login dan juga detail mengenai penggunaan driver JDBC dengan otentikasi IAM.
Gunakan AWS Secrets Manager untuk mengambil kredensil dan terhubung ke Amazon Redshift
Anda dapat menyimpan kredensil di Secrets Manager untuk mengautentikasi dengan aman ke Amazon Redshift. Anda dapat meminta pekerjaan Spark memanggil GetSecretValue
API untuk mengambil kredensialnya:
from pyspark.sql import SQLContextimport boto3 sc = # existing SparkContext sql_context = SQLContext(sc) secretsmanager_client = boto3.client('
secretsmanager
', region_name=os.getenv('AWS_REGION
')) secret_manager_response = secretsmanager_client.get_secret_value( SecretId='string', VersionId='string', VersionStage='string' ) username = # get username from secret_manager_response password = # get password from secret_manager_response url = "jdbc:redshift://redshifthost:5439/database?user=" +username
+ "&password=" +password
# Access to Redshift cluster using Spark
Gunakan otentikasi berbasis IAM dengan Amazon EMR pada peran eksekusi pekerjaan EKS
Dimulai dengan Amazon EMR pada rilis EKS 6.9.0, driver Amazon Redshift JDBC versi 2.1 atau lebih tinggi dikemas ke lingkungan. Dengan driver JDBC 2.1 dan yang lebih tinggi, Anda dapat menentukan URL JDBC dan tidak menyertakan nama pengguna dan kata sandi mentah. Sebagai gantinya, Anda dapat menentukan jdbc:redshift:iam://
skema. Ini memerintahkan driver JDBC untuk menggunakan EMR Amazon Anda pada peran eksekusi pekerjaan EKS untuk mengambil kredensil secara otomatis.
Lihat Mengonfigurasi koneksi JDBC atau ODBC untuk menggunakan kredenal IAM di Panduan Manajemen Amazon Redshift untuk informasi selengkapnya.
Contoh URL berikut menggunakan jdbc:redshift:iam://
skema.
jdbc:redshift:iam://
examplecluster.abc123xyz789
.us-west-2
.redshift.amazonaws.com:5439/dev
Izin berikut diperlukan untuk peran eksekusi pekerjaan Anda saat memenuhi ketentuan yang disediakan.
Izin | Kondisi bila diperlukan untuk peran pelaksanaan pekerjaan |
---|---|
redshift:GetClusterCredentials
|
Diperlukan untuk driver JDBC untuk mengambil kredensil dari Amazon Redshift |
redshift:DescribeCluster
|
Diperlukan jika Anda menentukan klaster Amazon Redshift dan Wilayah AWS di URL JDBC, bukan titik akhir |
redshift-serverless:GetCredentials
|
Diperlukan untuk driver JDBC untuk mengambil kredensional dari Amazon Redshift Serverless |
redshift-serverless:GetWorkgroup
|
Diperlukan jika Anda menggunakan Amazon Redshift Tanpa Server dan Anda menentukan URL dalam hal nama grup kerja dan Wilayah |
Kebijakan peran eksekusi pekerjaan Anda harus memiliki izin berikut.
{ "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials", "redshift:DescribeCluster", "redshift-serverless:GetCredentials", "redshift-serverless:GetWorkgroup" ], "Resource": [ "arn:aws:redshift:
AWS_REGION
:ACCOUNT_ID
:dbname:CLUSTER_NAME
/DATABASE_NAME
", "arn:aws:redshift:AWS_REGION
:ACCOUNT_ID
:dbuser:DATABASE_NAME
/USER_NAME
" ] }
Otentikasi ke Amazon Redshift dengan driver JDBC
Tetapkan nama pengguna dan kata sandi di dalam URL JDBC
Untuk mengautentikasi pekerjaan Spark ke cluster Amazon Redshift, Anda dapat menentukan nama database Amazon Redshift dan kata sandi di URL JDBC.
catatan
Jika Anda meneruskan kredensi database di URL, siapa pun yang memiliki akses ke URL juga dapat mengakses kredensialnya. Metode ini umumnya tidak disarankan karena ini bukan opsi yang aman.
Jika keamanan tidak menjadi perhatian untuk aplikasi Anda, Anda dapat menggunakan format berikut untuk mengatur nama pengguna dan kata sandi di URL JDBC:
jdbc:redshift://redshifthost:5439/database?user=
username
&password=password