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 menunjukkan bagaimana untuk mengambil kredensi login dan juga rincian tentang menggunakan JDBC driver 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 Anda 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
Menggunakan otentikasi IAM berbasis dengan Amazon EMR pada peran eksekusi EKS pekerjaan
Dimulai dengan Amazon EMR pada EKS rilis 6.9.0, driver Amazon JDBC Redshift versi 2.1 atau lebih tinggi dikemas ke lingkungan. Dengan JDBC driver 2.1 dan yang lebih tinggi, Anda dapat menentukan JDBC URL dan tidak menyertakan nama pengguna dan kata sandi mentah. Sebagai gantinya, Anda dapat menentukan jdbc:redshift:iam://
skema. Ini memerintahkan JDBC driver untuk menggunakan Amazon Anda EMR pada peran eksekusi EKS pekerjaan untuk mengambil kredensi secara otomatis.
Lihat Mengonfigurasi JDBC atau ODBC koneksi untuk menggunakan IAM kredensil di Panduan Manajemen Amazon Redshift untuk informasi selengkapnya.
Contoh berikut URL 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 ketika memenuhi persyaratan yang disediakan.
Izin | Kondisi bila diperlukan untuk peran pelaksanaan pekerjaan |
---|---|
redshift:GetClusterCredentials
|
Diperlukan bagi JDBC pengemudi untuk mengambil kredensil dari Amazon Redshift |
redshift:DescribeCluster
|
Diperlukan jika Anda menentukan klaster Amazon Redshift dan Wilayah AWS di titik akhir JDBC URL alih-alih |
redshift-serverless:GetCredentials
|
Diperlukan bagi JDBC driver untuk mengambil kredensil dari Amazon Redshift Tanpa Server |
redshift-serverless:GetWorkgroup
|
Diperlukan jika Anda menggunakan Amazon Redshift Serverless dan Anda menentukan URL dalam hal nama workgroup 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 JDBC URL
Untuk mengautentikasi pekerjaan Spark ke cluster Amazon Redshift, Anda dapat menentukan nama database Amazon Redshift dan kata sandi di. JDBC URL
catatan
Jika Anda meneruskan kredensi database diURL, siapa pun yang memiliki akses ke juga URL 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 JDBCURL:
jdbc:redshift://redshifthost:5439/database?user=
username
&password=password