

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

# Plugin EMRFS S3 untuk integrasi Ranger dengan Amazon EMR
<a name="emr-ranger-emrfs"></a>

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 untuk mengakses data di S3, EMRFS mengirimkan permintaan untuk kredensial dalam proses Agen Rahasia, di mana permintaan diautentikasi dan diotorisasi terhadap plugin Apache Ranger. Jika permintaan diotorisasi, maka agen rahasia mengambil IAM role untuk Mesin Apache Ranger dengan kebijakan terbatas untuk menghasilkan kredensial yang hanya memiliki akses ke kebijakan Ranger yang mengizinkan akses. Kredensialnya kemudian diteruskan kembali ke EMRFS untuk mengakses S3.

**Topics**
+ [Fitur yang didukung](#emr-ranger-emrfs-features)
+ [Instalasi konfigurasi layanan](#emr-ranger-emrfs-service-config)
+ [Membuat kebijakan S3 EMRFS](#emr-ranger-emrfs-create-policies)
+ [Catatan penggunaan kebijakan S3 EMRFS](#emr-ranger-emrfs-considerations)
+ [Batasan](#emr-ranger-emrfs-limitations)

## Fitur yang didukung
<a name="emr-ranger-emrfs-features"></a>

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

## Instalasi konfigurasi layanan
<a name="emr-ranger-emrfs-service-config"></a>

Untuk menginstal definisi layanan EMRFS, Anda harus mengatur server Admin Ranger. Untuk mengatur server, lihat[Siapkan server Admin Ranger untuk diintegrasikan dengan Amazon EMR](emr-ranger-admin.md).

Ikuti langkah berikut untuk menginstal definisi layanan EMRFS.

**Langkah 1: SSH ke server Admin Apache Ranger**.

Contoh:

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

**Langkah 2: Unduh definisi layanan EMRFS**.

Di direktori sementara, unduh definisi layanan Amazon EMR. 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 berhasil, Anda melihat layanan baru di UI Admin Ranger yang disebut "AMAZON-EMR-S3", seperti yang ditunjukkan pada citra berikut (Ranger versi 2.0 ditampilkan).

![\[Admin Ranger membuat layanan S3 EMRFS.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-create-service-EMRFS.png)


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

Buat sebuah instans dari definisi layanan.
+ Klik pada **\$1** di sebelah AMAZON-EMR-EMRFS.

Isi kolom berikut:

**Nama Layanan (Jika ditampilkan)**: Nilai yang direkomendasikan adalah **amazonemrs3**. Catat nama layanan ini saat membuat konfigurasi keamanan EMR. 

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

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

![\[Admin Ranger mengedit layanan S3 EMRFS.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-edit-service-EMRFS.png)


**catatan**  
Sertifikat TLS untuk plugin ini harus telah terdaftar di penyimpanan kepercayaan pada server Admin Ranger. Lihat [Sertifikat TLS untuk integrasi Apache Ranger dengan Amazon EMR](emr-ranger-admin-tls.md) untuk detail selengkapnya.

Ketika layanan dibuat, Manajer Service termasuk "AMAZON-EMR-EMRFS", seperti yang ditunjukkan pada citra berikut.

![\[Admin Ranger menampilkan layanan baru S3 EMRFS.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-new-service-EMRFS.png)


## Membuat kebijakan S3 EMRFS
<a name="emr-ranger-emrfs-create-policies"></a>

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 [Catatan penggunaan kebijakan S3 EMRFS](#emr-ranger-emrfs-considerations) untuk informasi tentang praktik terbaik. Sumber daya di server Admin Ranger tidak boleh berisi **s3://**, **s3a://** atau **s3n://**.

![\[Admin Ranger menunjukkan membuat kebijakan untuk layanan S3 EMRFS.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-create-policy-EMRFS.png)


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

![\[Admin Ranger menunjukkan user/group izin untuk kebijakan EMRFS S3.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-permissions-EMRFS.png)


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

## Catatan penggunaan kebijakan S3 EMRFS
<a name="emr-ranger-emrfs-considerations"></a>

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

### Izin untuk beberapa objek S3
<a name="emr-ranger-emrfs-considerations-s3objects"></a>

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.

**Example 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
<a name="emr-ranger-emrfs-considerations-putobject"></a>

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

**Example 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
<a name="emr-ranger-emrfs-considerations-wildcards"></a>

Ada dua wilayah di mana wildcard dapat ditentukan. Saat menentukan sumber daya S3, "\$1" dan "?" dapat digunakan. "\$1" 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
<a name="emr-ranger-emrfs-considerations-wildcards-in-users"></a>

Ada dua wildcard built-in saat menetapkan pengguna untuk menyediakan akses ke pengguna. Yang pertama adalah wildcard "\$1PENGGUNA\$1" yang menyediakan akses ke semua pengguna. Wildcard kedua adalah "\$1PEMILIK\$1", yang menyediakan akses kepada pemilik objek tertentu atau secara langsung. Namun, wildcard "\$1PENGGUNA\$1" saat ini tidak didukung.

## Batasan
<a name="emr-ranger-emrfs-limitations"></a>

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 enkripsi CSE-KMS 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 pada kluster EMR Amazon Anda.
+ Pengguna Hadoop tidak menghasilkan peristiwa audit seperti Hadoop selalu mengakses Profil Instans EC2.
+ Disarankan agar Anda menonaktifkan Tampilan Konsistensi EMR Amazon. S3 sangat konsisten, jadi tidak lagi diperlukan. Lihat [Konsistensi kuat Amazon S3](https://aws.amazon.com/s3/consistency/) untuk informasi lebih lanjut.
+ Plugin EMRFS S3 membuat banyak panggilan STS. Direkomendasikan bahwa Anda melakukan pengujian beban pada akun pengembangan dan memantau volume panggilan STS. Anda juga disarankan untuk membuat permintaan STS untuk menaikkan batas AssumeRole layanan.
+ Server Admin Ranger tidak mendukung pelengkapan otomatis.