Secrets Manager untuk perlindungan data dengan EMR Serverless - Amazon EMR

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

Secrets Manager untuk perlindungan data dengan EMR Serverless

AWS Secrets Manager adalah layanan penyimpanan rahasia yang dapat Anda gunakan untuk melindungi kredensi database, kunci API, dan informasi rahasia lainnya. Kemudian dalam kode Anda, Anda dapat mengganti kredensi hardcode dengan panggilan API ke Secrets Manager. Ini membantu memastikan bahwa rahasia tidak dapat dikompromikan oleh seseorang yang memeriksa kode Anda, karena rahasianya tidak ada. Untuk ikhtisar, lihat Panduan AWS Secrets Manager Pengguna.

Secrets Manager mengenkripsi rahasia menggunakan AWS Key Management Service kunci. Untuk informasi selengkapnya, lihat Enkripsi rahasia dan dekripsi di AWS Secrets Manager Panduan Pengguna.

Anda dapat mengonfigurasi Secrets Manager untuk secara otomatis memutar rahasia untuk Anda sesuai dengan jadwal yang Anda tentukan. Ini memungkinkan Anda mengganti rahasia jangka panjang dengan rahasia jangka pendek, yang membantu mengurangi risiko kompromi secara signifikan. Untuk informasi selengkapnya, lihat Memutar AWS Secrets Manager rahasia di Panduan AWS Secrets Manager Pengguna.

Amazon EMR Serverless terintegrasi dengan AWS Secrets Manager sehingga Anda dapat menyimpan data Anda di Secrets Manager dan menggunakan ID rahasia dalam konfigurasi Anda.

Bagaimana EMR Serverless menggunakan rahasia

Ketika Anda menyimpan data Anda di Secrets Manager dan menggunakan ID rahasia dalam konfigurasi untuk EMR Serverless, Anda tidak meneruskan data konfigurasi sensitif ke EMR Serverless dalam teks biasa dan mengeksposnya ke eksternal. APIs Jika Anda menunjukkan bahwa pasangan kunci-nilai berisi ID rahasia untuk rahasia yang Anda simpan di Secrets Manager, EMR Serverless mengambil rahasia ketika mengirimkan data konfigurasi ke pekerja untuk menjalankan pekerjaan.

Untuk menunjukkan bahwa pasangan kunci-nilai untuk konfigurasi berisi referensi ke rahasia yang disimpan di Secrets Manager, tambahkan EMR.secret@ anotasi ke nilai konfigurasi. Untuk properti konfigurasi apa pun dengan anotasi Id rahasia, EMR Serverless memanggil Secrets Manager dan menyelesaikan rahasia pada saat eksekusi pekerjaan.

Cara membuat rahasia

Untuk membuat rahasia, ikuti langkah-langkah di Buat AWS Secrets Manager rahasia di Panduan AWS Secrets Manager Pengguna. Pada Langkah 3, pilih bidang Plaintext untuk memasukkan nilai sensitif Anda.

Berikan rahasia dalam klasifikasi konfigurasi

Contoh berikut menunjukkan bagaimana memberikan rahasia dalam klasifikasi konfigurasi diStartJobRun. Jika Anda ingin mengonfigurasi klasifikasi untuk Secrets Manager di tingkat aplikasi, lihatKonfigurasi aplikasi default untuk EMR Tanpa Server.

Dalam contoh, ganti SecretName dengan nama rahasia untuk diambil. Sertakan tanda hubung, diikuti oleh enam karakter yang ditambahkan Secrets Manager ke akhir ARN rahasia. Untuk informasi selengkapnya, lihat Cara membuat rahasia.

Tentukan referensi rahasia - Spark

contoh — Tentukan referensi rahasia dalam konfigurasi metastore Hive eksternal untuk Spark
aws emr-serverless start-job-run \ --application-id "application-id" \ --execution-role-arn "job-role-arn" \ --job-driver '{ "sparkSubmit": { "entryPoint": "s3://amzn-s3-demo-bucket/scripts/spark-jdbc.py", "sparkSubmitParameters": "--jars s3://amzn-s3-demo-bucket/mariadb-connector-java.jar --conf spark.hadoop.javax.jdo.option.ConnectionDriverName=org.mariadb.jdbc.Driver --conf spark.hadoop.javax.jdo.option.ConnectionUserName=connection-user-name --conf spark.hadoop.javax.jdo.option.ConnectionPassword=EMR.secret@SecretName --conf spark.hadoop.javax.jdo.option.ConnectionURL=jdbc:mysql://db-host:db-port/db-name --conf spark.driver.cores=2 --conf spark.executor.memory=10G --conf spark.driver.memory=6G --conf spark.executor.cores=4" } }' \ --configuration-overrides '{ "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-bucket/spark/logs/" } } }'
contoh — Tentukan referensi rahasia untuk konfigurasi metastore Hive eksternal dalam klasifikasi spark-defaults
{ "classification": "spark-defaults", "properties": { "spark.hadoop.javax.jdo.option.ConnectionDriverName":"org.mariadb.jdbc.Driver" "spark.hadoop.javax.jdo.option.ConnectionURL":"jdbc:mysql://db-host:db-port/db-name" "spark.hadoop.javax.jdo.option.ConnectionUserName":"connection-user-name" "spark.hadoop.javax.jdo.option.ConnectionPassword": "EMR.secret@SecretName", } }

Tentukan referensi rahasia - Sarang

contoh — Tentukan referensi rahasia dalam konfigurasi metastore Hive eksternal untuk Hive
aws emr-serverless start-job-run \ --application-id "application-id" \ --execution-role-arn "job-role-arn" \ --job-driver '{ "hive": { "query": "s3://amzn-s3-demo-bucket/emr-serverless-hive/query/hive-query.ql", "parameters": "--hiveconf hive.exec.scratchdir=s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/scratch --hiveconf hive.metastore.warehouse.dir=s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/warehouse --hiveconf javax.jdo.option.ConnectionUserName=username --hiveconf javax.jdo.option.ConnectionPassword=EMR.secret@SecretName --hiveconf hive.metastore.client.factory.class=org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory --hiveconf javax.jdo.option.ConnectionDriverName=org.mariadb.jdbc.Driver --hiveconf javax.jdo.option.ConnectionURL=jdbc:mysql://db-host:db-port/db-name" } }' \ --configuration-overrides '{ "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-bucket" } } }'
contoh — Tentukan referensi rahasia untuk konfigurasi metastore Hive eksternal dalam klasifikasi hive-site
{ "classification": "hive-site", "properties": { "hive.metastore.client.factory.class": "org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory", "javax.jdo.option.ConnectionDriverName": "org.mariadb.jdbc.Driver", "javax.jdo.option.ConnectionURL": "jdbc:mysql://db-host:db-port/db-name", "javax.jdo.option.ConnectionUserName": "username", "javax.jdo.option.ConnectionPassword": "EMR.secret@SecretName" } }

Berikan akses kepada EMR Serverless untuk mengambil rahasianya

Untuk memungkinkan EMR Tanpa Server mengambil nilai rahasia dari Secrets Manager, tambahkan pernyataan kebijakan berikut ke rahasia Anda saat Anda membuatnya. Anda harus membuat rahasia Anda dengan kunci KMS yang dikelola pelanggan untuk EMR Tanpa Server untuk membaca nilai rahasia. Untuk informasi selengkapnya, lihat Izin untuk kunci KMS di AWS Secrets Manager Panduan Pengguna.

Dalam kebijakan berikut, ganti applicationId dengan ID untuk aplikasi Anda.

Kebijakan sumber daya untuk rahasia

Anda harus menyertakan izin berikut dalam kebijakan sumber daya untuk rahasia AWS Secrets Manager agar EMR Tanpa Server dapat mengambil nilai rahasia. Untuk memastikan bahwa hanya aplikasi tertentu yang dapat mengambil rahasia ini, Anda dapat secara opsional menentukan ID aplikasi EMR Tanpa Server sebagai syarat dalam kebijakan.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Principal": { "Service": [ "emr-serverless.amazonaws.com" ] }, "Resource": [ "*" ], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:emr-serverless:Wilayah AWS:aws_account_id:/applications/applicationId" } } } ] }

Buat rahasia Anda dengan kebijakan berikut untuk kunci yang dikelola pelanggan AWS Key Management Service (AWS KMS):

Kebijakan untuk kunci yang dikelola pelanggan AWS KMS

{ "Sid": "Allow EMR Serverless to use the key for decrypting secrets", "Effect": "Allow", "Principal": { "Service": [ "emr-serverless.amazonaws.com" ] }, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.Wilayah AWS.amazonaws.com" } } }

Memutar rahasianya

Rotasi adalah saat Anda memperbarui rahasia secara berkala. Anda dapat mengonfigurasi AWS Secrets Manager untuk secara otomatis memutar rahasia untuk Anda pada jadwal yang Anda tentukan. Dengan cara ini, Anda dapat mengganti rahasia jangka panjang dengan rahasia jangka pendek. Ini membantu mengurangi risiko kompromi. EMR Tanpa Server mengambil nilai rahasia dari konfigurasi beranotasi saat pekerjaan bertransisi ke status berjalan. Jika Anda atau proses memperbarui nilai rahasia di Secrets Manager, Anda harus mengirimkan pekerjaan baru sehingga pekerjaan dapat mengambil nilai yang diperbarui.

catatan

Pekerjaan yang sudah dalam status berjalan tidak dapat mengambil nilai rahasia yang diperbarui. Hal ini dapat mengakibatkan kegagalan pekerjaan.