EMRFSPlugin S3 - Amazon EMR

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

EMRFSPlugin S3

Untuk membuatnya lebih mudah untuk menyediakan kontrol akses terhadap objek di S3 pada cluster multi-tenant, plugin EMRFS S3 menyediakan kontrol akses ke data dalam S3 saat mengaksesnya melalui. EMRFS Anda dapat mengizinkan akses ke sumber daya S3 pada tingkat pengguna dan grup.

Untuk mencapai hal ini, ketika aplikasi Anda mencoba mengakses data dalam S3, EMRFS mengirimkan permintaan kredensil ke proses Agen Rahasia, di mana permintaan tersebut diautentikasi dan diotorisasi terhadap plugin Apache Ranger. Jika permintaan diotorisasi, maka Agen Rahasia mengambil IAM peran untuk Apache Ranger Engine dengan kebijakan terbatas untuk menghasilkan kredensil yang hanya memiliki akses ke kebijakan Ranger yang memungkinkan akses. Kredensyal kemudian diteruskan kembali EMRFS ke akses S3.

Fitur yang didukung

EMRFSPlugin S3 menyediakan otorisasi tingkat penyimpanan. Kebijakan dapat dibuat untuk menyediakan akses ke pengguna dan grup ke bucket S3 dan prefiks. Otorisasi dilakukan hanya terhadapEMRFS.

Instalasi konfigurasi layanan

Untuk menginstal definisi EMRFS layanan, Anda harus mengatur server Admin Ranger. Untuk mengatur server, lihatAtur server Admin Ranger.

Ikuti langkah-langkah ini untuk menginstal definisi EMRFS layanan.

Langkah 1: SSH ke server Admin Apache Ranger.

Sebagai contoh:

ssh ec2-user@ip-xxx-xxx-xxx-xxx.ec2.internal

Langkah 2: Unduh definisi EMRFS layanan.

Dalam direktori sementara, unduh definisi EMR layanan Amazon. Definisi layanan ini didukung oleh versi Ranger 2.x.

wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-emrfs.json

Langkah 3: Daftarkan definisi layanan EMRFS S3.

curl -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X POST -d @ranger-servicedef-amazon-emr-emrfs.json \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef'

Jika perintah ini berjalan dengan sukses, Anda melihat layanan baru di UI Admin Ranger yang disebut "AMAZON- EMR -S3", seperti yang ditunjukkan pada gambar berikut (Ranger versi 2.0 ditampilkan).

Admin Ranger membuat layanan EMRFS S3.

Langkah 4: Buat instance EMRFS aplikasi AMAZON - EMR -.

Buat sebuah instans dari definisi layanan.

  • Klik pada + di sebelah AMAZON - EMR -EMRFS.

Isi kolom berikut:

Nama Layanan (Jika ditampilkan): Nilai yang direkomendasikan adalah amazonemrspark. Perhatikan nama layanan ini karena akan diperlukan saat membuat konfigurasi EMR keamanan.

Nama Tampilan: Nama yang akan ditampilkan untuk layanan. Nilai yang direkomendasikan adalah amazonemrspark.

Nama Umum Untuk Sertifikat: Bidang CN di sertifikat yang digunakan untuk connect ke server admin dari plugin klien. Nilai ini harus sesuai dengan bidang CN dalam TLS sertifikat yang dibuat untuk plugin.

Admin Ranger mengedit layanan EMRFS S3.
catatan

TLSSertifikat untuk plugin ini seharusnya telah terdaftar di toko kepercayaan di server Admin Ranger. Lihat TLSsertifikat untuk detail selengkapnya.

Ketika layanan dibuat, Manajer Layanan menyertakan "AMAZON- EMR - EMRFS “, seperti yang ditunjukkan pada gambar berikut.

Admin Ranger menampilkan layanan EMRFS S3 baru.

Membuat EMRFS kebijakan S3

Untuk membuat kebijakan baru di halaman Buat kebijakan Manajer Layanan, isi kolom berikut.

Nama Kebijakan: Nama kebijakan ini.

Label Kebijakan: Label yang dapat Anda tempatkan di kebijakan ini.

Sumber Daya S3: Sumber daya yang dimulai dengan bucket dan prefiks opsional. Lihat EMRFSCatatan penggunaan kebijakan S3 untuk informasi tentang praktik terbaik. Sumber daya di server Admin Ranger tidak boleh berisi s3://, s3a:// atau s3n://.

Admin Ranger menampilkan kebijakan buat untuk layanan EMRFS S3.

Anda dapat menentukan pengguna dan grup untuk memberikan izin. Anda juga dapat menentukan pengecualian untuk kondisi izinkan dan kondisi penolakan.

Admin Ranger menampilkan izin pengguna/grup untuk kebijakan S3. EMRFS
catatan

Maksimum tiga sumber daya diperbolehkan untuk setiap kebijakan. Menambahkan lebih dari tiga sumber daya dapat mengakibatkan kesalahan saat kebijakan ini digunakan di EMR klaster. Menambahkan lebih dari tiga kebijakan akan menampilkan pengingat tentang batas kebijakan.

EMRFSCatatan penggunaan kebijakan S3

Saat membuat kebijakan S3 di Apache Ranger, ada beberapa pertimbangan penggunaan yang harus diperhatikan.

Izin untuk beberapa objek S3

Anda dapat menggunakan kebijakan rekursif dan ekspresi wildcard untuk memberikan izin untuk beberapa objek S3 dengan prefiks umum. Kebijakan rekursif memberikan izin untuk semua objek dengan prefiks umum. Ekspresi wildcard memilih beberapa prefiks. Bersama-sama, mereka memberikan izin ke semua objek dengan beberapa prefiks umum seperti yang ditunjukkan di contoh berikut.

contoh Menggunakan kebijakan rekursif

Misalkan Anda ingin izin untuk daftar semua file parket di bucket S3 seperti yang diorganisir sebagai berikut.

s3://sales-reports/americas/ +- year=2000 | +- data-q1.parquet | +- data-q2.parquet +- year=2019 | +- data-q1.json | +- data-q2.json | +- data-q3.json | +- data-q4.json | +- year=2020 | +- data-q1.parquet | +- data-q2.parquet | +- data-q3.parquet | +- data-q4.parquet | +- annual-summary.parquet +- year=2021

Pertama, pertimbangkan file parket dengan prefiks s3://sales-reports/americas/year=2000. Anda dapat memberikan GetObject izin untuk semuanya dengan dua cara:

Menggunakan kebijakan non-rekursif: salah satu pilihan adalah dengan menggunakan dua kebijakan non-rekursif terpisah, satu untuk direktori dan yang lainnya untuk file.

Kebijakan pertama memberikan izin ke prefiks s3://sales-reports/americas/year=2020 (tidak ada penjejakan /).

- S3 resource = "sales-reports/americas/year=2000" - permission = "GetObject" - user = "analyst"

Kebijakan kedua menggunakan ekspresi wildcard untuk memberikan izin semua file dengan prefiks sales-reports/americas/year=2020/(perhatikan penjejakan /).

- S3 resource = "sales-reports/americas/year=2020/*" - permission = "GetObject" - user = "analyst"

Menggunakan kebijakan rekursif: Alternatif yang lebih nyaman adalah dengan menggunakan kebijakan rekursif tunggal dan memberikan izin rekursif untuk prefiks.

- S3 resource = "sales-reports/americas/year=2020" - permission = "GetObject" - user = "analyst" - is recursive = "True"

Sejauh ini, hanya file parket dengan prefiks s3://sales-reports/americas/year=2000 yang telah dimasukkan. Anda sekarang dapat juga menyertakan file parket dengan prefiks yang berbeda, s3://sales-reports/americas/year=2020, ke kebijakan rekursif yang sama dengan memperkenalkan ekspresi wildcard sebagai berikut.

- S3 resource = "sales-reports/americas/year=20?0" - permission = "GetObject" - user = "analyst" - is recursive = "True"

Kebijakan untuk PutObject dan DeleteObject izin

Menulis kebijakan untuk PutObject dan DeleteObject izin ke file EMRFS membutuhkan perhatian khusus karena, tidak seperti GetObject izin, mereka memerlukan izin rekursif tambahan yang diberikan ke awalan.

contoh Kebijakan untuk PutObject dan DeleteObject izin

Misalnya, menghapus file tidak hanya annual-summary.parquet memerlukan DeleteObject izin ke file yang sebenarnya.

- S3 resource = "sales-reports/americas/year=2020/annual-summary.parquet" - permission = "DeleteObject" - user = "analyst"

Hal ini juga membutuhkan kebijakan pemberian rekursif GetObject dan PutObject hak istimewa ke prefiksnya.

Demikian pula, memodifikasi file annual-summary.parquet, membutuhkan tidak hanya izin PutObject untuk file yang sebetulnya.

- S3 resource = "sales-reports/americas/year=2020/annual-summary.parquet" - permission = "PutObject" - user = "analyst"

Hal ini juga membutuhkan izin GetObject pemberian kebijakan untuk prefiksnya.

- S3 resource = "sales-reports/americas/year=2020" - permission = "GetObject" - user = "analyst" - is recursive = "True"

Wildcard di kebijakan

Ada dua wilayah di mana wildcard dapat ditentukan. Saat menentukan sumber daya S3, "*" dan "?" dapat digunakan. "*" menyediakan pencocokan terhadap jalur S3 dan cocok dengan segala sesuatu setelah prefiks. Misalnya, lihat kebijakan berikut ini.

S3 resource = "sales-reports/americas/*"

Ini cocok dengan jalur S3 berikut.

sales-reports/americas/year=2020/ sales-reports/americas/year=2019/ sales-reports/americas/year=2019/month=12/day=1/afile.parquet sales-reports/americas/year=2018/month=6/day=1/afile.parquet sales-reports/americas/year=2017/afile.parquet

Wilcard "?" cocok hanya satu karakter. Misalnya, untuk kebijakan.

S3 resource = "sales-reports/americas/year=201?/"

Ini cocok dengan jalur S3 berikut.

sales-reports/americas/year=2019/ sales-reports/americas/year=2018/ sales-reports/americas/year=2017/

Wildcard di pengguna

Ada dua wildcard built-in saat menetapkan pengguna untuk menyediakan akses ke pengguna. Yang pertama adalah wildcard “{USER}” yang menyediakan akses ke semua pengguna. Wildcard kedua adalah “{OWNER}”, yang menyediakan akses ke pemilik objek tertentu atau secara langsung. Namun, wildcard “{USER}” saat ini tidak didukung.

Batasan

Berikut ini adalah batasan plugin EMRFS S3 saat ini:

  • Kebijakan Apache Ranger dapat memiliki maksimal tiga kebijakan.

  • Akses ke S3 harus dilakukan melalui EMRFS dan dapat digunakan dengan aplikasi terkait Hadoop. Berikut ini tidak didukung:

    - Perpustakaan Boto3

    - AWS SDK dan AWK CLI

    - Penyambung sumber terbuka S3A

  • Apache Ranger tolak kebijakan tidak didukung.

  • Operasi pada S3 dengan kunci yang memiliki CSE - KMS enkripsi saat ini tidak didukung.

  • Support lintas wilayah tidak didukung.

  • Fitur Zona Keamanan Apache Ranger tidak didukung. Pembatasan kontrol akses yang ditentukan menggunakan fitur Zona Keamanan tidak diterapkan di EMR kluster Amazon Anda.

  • Pengguna Hadoop tidak menghasilkan peristiwa audit apa pun karena Hadoop selalu mengakses Profil Instance. EC2

  • Disarankan agar Anda menonaktifkan Tampilan EMR Konsistensi Amazon. S3 sangat konsisten, jadi tidak lagi diperlukan. Lihat Konsistensi kuat Amazon S3 untuk informasi lebih lanjut.

  • Plugin EMRFS S3 membuat banyak STS panggilan. Disarankan agar Anda melakukan pengujian beban pada akun pengembangan dan memantau volume STS panggilan. Anda juga disarankan untuk mengajukan STS permintaan untuk menaikkan batas AssumeRole layanan.

  • Server Admin Ranger tidak mendukung pelengkapan otomatis.