

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

# Plugin Apache Ranger untuk skenario integrasi Amazon EMR
<a name="emr-ranger-plugins"></a>

Plugin Apache Ranger memvalidasi akses pengguna terhadap kebijakan otorisasi yang ditentukan dalam server admin kebijakan Apache Ranger.

**Topics**
+ [Plugin Apache Hive untuk integrasi Ranger dengan Amazon EMR](emr-ranger-hive.md)
+ [Plugin Apache Spark untuk integrasi Ranger dengan Amazon EMR](emr-ranger-spark.md)
+ [Plugin EMRFS S3 untuk integrasi Ranger dengan Amazon EMR](emr-ranger-emrfs.md)
+ [Plugin Trino untuk integrasi Ranger dengan Amazon EMR](emr-ranger-trino.md)

# Plugin Apache Hive untuk integrasi Ranger dengan Amazon EMR
<a name="emr-ranger-hive"></a>

Apache Hive adalah mesin eksekusi populer di ekosistem Hadoop. Amazon EMR menyediakan plugin Apache Ranger untuk dapat memberikan kendali akses lancar untuk Hive. Plugin ini kompatibel dengan server Admin Apache Ranger versi 2.0 dan versi terbaru.

**Topics**
+ [Fitur yang didukung](#emr-ranger-supported-features)
+ [Instalasi konfigurasi layanan](#emr-ranger-hive-service-config)
+ [Pertimbangan-pertimbangan](#emr-ranger-hive-considerations)
+ [Batasan](#emr-ranger-hive-limitations)

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

Plugin Apache Ranger untuk Hive di EMR mendukung semua fungsi dari plugin sumber terbuka, yang meliputi basis data, tabel, kendali akses tingkat kolom dan penyaringan baris dan masking data. Untuk tabel perintah Hive dan terkait izin Ranger, lihat [perintah Hive untuk pemetaan izin Ranger](https://cwiki.apache.org/confluence/display/RANGER/Hive+Commands+to+Ranger+Permission+Mapping).

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

Plugin Apache Hive kompatibel dengan definisi layanan Hive yang ada dalam Apache Hive Hadoop SQL.

![\[Definisi layanan Apache Hive untuk Hadoop SQL.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger_service_mgr.png)


Jika Anda tidak memiliki sebuah instans dari layanan di bawah Hadoop SQL, seperti yang ditunjukkan di atas, Anda dapat membuat satu. Klik pada **\$1** di sebelah Hadoop SQL.

1. **Nama Layanan (Jika ditampilkan)**: Anda perlu memasukkan nama layanan. Nilai yang direkomendasikan adalah **amazonemrhive**. Buat catatan nama layanan ini -- itu akan dibutuhkan saat membuat konfigurasi keamanan EMR.

1. **Nama Tampilan**: Memasukkan nama yang akan ditampilkan untuk layanan. Nilai yang direkomendasikan adalah **amazonemrhive**.

![\[Detail layanan Apache Hive untuk Hadoop SQL.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger_create_service.png)


Properti Apache Hive Config digunakan untuk membuat koneksi ke server Admin Apache Ranger Anda dengan 2 untuk mengimplementasikan auto complete saat HiveServer membuat kebijakan. Properti di bawah ini tidak diharuskan akurat jika Anda tidak memiliki proses HiveServer 2 yang persisten dan dapat diisi dengan informasi apa pun.
+ **Username**: Masukkan nama pengguna untuk koneksi JDBC ke instance instance HiveServer 2.
+ **Kata Sandi**: Anda perlu memasukkan kata sandi untuk nama pengguna di atas.
+ **jdbc.driver. ClassName**: Masukkan nama kelas kelas JDBC untuk konektivitas Apache Hive. Nilai default dapat digunakan.
+ **jdbc.url**: Masukkan string koneksi JDBC yang akan digunakan saat menghubungkan ke 2. HiveServer
+ **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 di sertifikat TLS Anda yang dibuat untuk plugin.

![\[Properti konfigurasi layanan Apache Hive.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger_config_props.png)


Tombol **Test Connection** menguji apakah nilai-nilai di atas dapat digunakan untuk berhasil terhubung ke instance HiveServer 2. Setelah layanan berhasil dibuat, Manajer Layanan akan terlihat seperti di bawah ini:

![\[Terhubung ke HiveServer 2 instance\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger_config_connected.png)


## Pertimbangan-pertimbangan
<a name="emr-ranger-hive-considerations"></a>

**Server metadata sarang**

Server metadata Hive hanya dapat diakses oleh mesin tepercaya, khususnya Hive dan`emr_record_server`, untuk melindungi dari akses yang tidak sah. Server metadata Hive juga diakses oleh semua node di cluster. Port 9083 yang diperlukan menyediakan semua node akses ke node utama.

**Autentikasi**

Secara default, Apache Hive dikonfigurasi untuk mengautentikasi menggunakan Kerberos seperti yang dikonfigurasi dalam konfigurasi EMR Security. HiveServer2 dapat dikonfigurasi untuk mengotentikasi pengguna menggunakan LDAP juga. Lihat [Menerapkan autentikasi LDAP untuk Hive pada multi-penyewa klaster Amazon EMR](https://aws.amazon.com/blogs/big-data/implementing-ldap-authentication-for-hive-on-a-multi-tenant-amazon-emr-cluster/) untuk informasi.

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

Berikut ini adalah batasan saat ini untuk plugin Apache Hive di Amazon EMR 5.x:
+ Peran Hive saat ini tidak didukung. Pernyataan Berikan, Batalkan tidak didukung.
+ Hive CLI tidak didukung. JDBC/Beeline adalah satu-satunya cara resmi untuk menghubungkan Hive.
+ `hive.server2.builtin.udf.blacklist`konfigurasi harus diisi dengan UDFs yang Anda anggap tidak aman.

# Plugin Apache Spark untuk integrasi Ranger dengan Amazon EMR
<a name="emr-ranger-spark"></a>

Amazon EMR telah mengintegrasikan EMR RecordServer untuk menyediakan kontrol akses berbutir halus untuk SparkSQL. EMR RecordServer adalah proses istimewa yang berjalan di semua node pada cluster yang mendukung Apache Ranger. Ketika driver atau eksekutor Spark menjalankan pernyataan SparkSQL, semua metadata dan permintaan data akan melalui. RecordServer Untuk mempelajari lebih lanjut tentang EMR RecordServer, lihat halaman. [Komponen Amazon EMR untuk digunakan dengan Apache Ranger](emr-ranger-components.md)

**Topics**
+ [Fitur yang didukung](#emr-ranger-spark-supported-features)
+ [Menerapkan kembali definisi layanan untuk menggunakan pernyataan INSERT, ALTER, atau DDL](#emr-ranger-spark-redeploy-service-definition)
+ [Instalasi definisi layanan](#emr-ranger-spark-install-servicedef)
+ [Membuat kebijakan SparkSQL](#emr-ranger-spark-create-sparksql)
+ [Pertimbangan-pertimbangan](#emr-ranger-spark-considerations)
+ [Batasan](#emr-ranger-spark-limitations)

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


| Tindakan SQL statement/Ranger  | STATUS | Rilis EMR yang didukung | 
| --- | --- | --- | 
|  PILIH  |  Didukung  |  Pada 5.32  | 
|  TAMPILKAN BASIS DATA  |  Didukung  |  Pada 5.32  | 
|  TAMPILKAN KOLOM  |  Didukung  |  Pada 5.32  | 
|  TAMPILKAN TABEL  |  Didukung  |  Pada 5.32  | 
|  TAMPILKAN PROPERTI TABEL  |  Didukung  |  Pada 5.32  | 
|  GAMBAR TABEL  |  Didukung  |  Pada 5.32  | 
|  MASUKKAN TIMPA  |  Didukung  |  Pada 5,34 dan 6,4  | 
| MASUKKAN KE | Didukung | Pada 5,34 dan 6,4 | 
|  ALTER TABLE  |  Didukung  |  Pada 6.4  | 
|  CREATE TABLE  |  Didukung  |  Pada 5,35 dan 6,7  | 
|  BUAT BASIS DATA  |  Didukung  |  Pada 5,35 dan 6,7  | 
|  MEJA DROP  |  Didukung  |  Pada 5,35 dan 6,7  | 
|  DROP DATABASE  |  Didukung  |  Pada 5,35 dan 6,7  | 
|  TAMPILAN DROP  |  Didukung  |  Pada 5,35 dan 6,7  | 
|  CREATE VIEW  |  Tidak Didukung  |    | 

Fitur berikut didukung saat menggunakan SparkSQL:
+ Kendali akses lancar pada tabel di Metastore Hive, dan kebijakan dapat dibuat pada tingkat basis data, tabel, dan kolom.
+ Kebijakan Apache Ranger dapat mencakup kebijakan hibah dan tolak kebijakan untuk pengguna dan grup.
+ Acara audit dikirimkan ke CloudWatch Log.

## Menerapkan kembali definisi layanan untuk menggunakan pernyataan INSERT, ALTER, atau DDL
<a name="emr-ranger-spark-redeploy-service-definition"></a>

**catatan**  
Dimulai dengan Amazon EMR 6.4, Anda dapat menggunakan Spark SQL dengan pernyataan: INSERT INTO, INSERT OVERWRITE, atau ALTER TABLE. Dimulai dengan Amazon EMR 6.7, Anda dapat menggunakan Spark SQL untuk membuat atau menjatuhkan database dan tabel. Jika Anda memiliki instalasi yang ada di server Apache Ranger dengan definisi layanan Apache Spark digunakan, gunakan kode berikut untuk menerapkan definisi layanan.  

```
# Get existing Spark service definition id calling Ranger REST API and JSON processor
curl --silent -f -u <admin_user_login>:<password_for_ranger_admin_user> \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef/name/amazon-emr-spark' | jq .id

# Download the latest Service definition
wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-spark.json

# Update the service definition using the Ranger REST API
curl -u <admin_user_login>:<password_for_ranger_admin_user> -X PUT -d @ranger-servicedef-amazon-emr-spark.json \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef/<Spark service definition id from step 1>'
```

## Instalasi definisi layanan
<a name="emr-ranger-spark-install-servicedef"></a>

Instalasi defenisi layanan EMR Apache Spark memerlukan server Admin Ranger untuk setup. Lihat [Siapkan server Admin Ranger untuk diintegrasikan dengan Amazon EMR](emr-ranger-admin.md).

Ikuti langkah-langkah untuk menginstal definisi layanan Apache Spark:

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

Misalnya:

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

**Langkah 2: Unduh definisi layanan dan plugin server Admin Apache Ranger**

Di direktori sementara, unduh definisi layanan. Definisi layanan ini didukung oleh versi Ranger 2.x.

```
mkdir /tmp/emr-spark-plugin/
cd /tmp/emr-spark-plugin/

wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-spark-plugin-2.x.jar
wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-spark.json
```

**Langkah 3: Instal plugin Apache Spark untuk Amazon EMR**

```
export RANGER_HOME=.. # Replace this Ranger Admin's home directory eg /usr/lib/ranger/ranger-2.0.0-admin
mkdir $RANGER_HOME/ews/webapp/WEB-INF/classes/ranger-plugins/amazon-emr-spark
mv ranger-spark-plugin-2.x.jar $RANGER_HOME/ews/webapp/WEB-INF/classes/ranger-plugins/amazon-emr-spark
```

**Langkah 4: Daftarkan definisi layanan Apache Spark untuk Amazon EMR**

```
curl -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X POST -d @ranger-servicedef-amazon-emr-spark.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 akan melihat layanan baru di Anda UI Admin Ranger yang disebut "AMAZON-EMR-SPARK", seperti yang ditunjukkan pada citra berikut (Ranger versi 2.0 ditampilkan).

![\["AMAZON-EMR-Spark" terdaftar di Admin Ranger.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-amazon-emr-spark.png)


**Langkah 5: Buat instance AMAZON-EMR-SPARK aplikasi**

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

**Nama tampilan:** Nama yang akan ditampilkan untuk instans ini. 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 cocok dengan bidang CN di sertifikat TLS Anda yang dibuat untuk plugin.

![\[Admin Ranger membuat layanan.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-create-service.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.

## Membuat kebijakan SparkSQL
<a name="emr-ranger-spark-create-sparksql"></a>

Saat membuat kebijakan baru, bidang yang harus diisi adalah:

**Nama Kebijakan**: Nama kebijakan ini.

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

**Basis data**: Basis data yang berlaku untuk kebijakan ini. Wildcard “\$1” mewakili semua database.

**Tabel**: Tabel yang berlaku untuk kebijakan ini. Wildcard “\$1” mewakili semua tabel.

**Kolom EMR Spark**: Kolom yang berlaku untuk kebijakan ini. Wildcard "\$1" mewakili semua kolom.

**Deskripsi**: Deskripsi dari kebijakan ini.

![\[Admin Ranger membuat detail kebijakan SparkSQL.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-create-policy-details.png)


Untuk menentukan pengguna dan grup, Anda perlu memasukkan pengguna dan grup di bawah ini untuk memberikan izin. Anda juga dapat menentukan pengecualian untuk kondisi **izinkan** dan kondisi **penolakan**.

![\[Detail kebijakan SparkSQL Admin Ranger mengizinkan syarat.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-create-policy-allow-conditions.png)


Setelah menentukan mengizinkan dan tolak syarat, klik **Simpan**.

## Pertimbangan-pertimbangan
<a name="emr-ranger-spark-considerations"></a>

Setiap node dalam cluster EMR harus dapat terhubung ke node utama pada port 9083.

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

Berikut ini adalah batasan saat ini untuk plugin Apache Spark:
+ Server Catatan akan selalu terhubung ke HMS yang berjalan pada klaster Amazon EMR. Konfigurasikan HMS untuk connect ke Mode Jarak Jauh, jika diperlukan. Anda tidak harus config nilai-nilai di file konfigurasi Apache Spark Hive-site.xml.
+ Tabel yang dibuat menggunakan sumber data Spark pada CSV atau Avro tidak dapat dibaca menggunakan EMR. RecordServer Gunakan Hive untuk membuat dan tulis data, dan membaca menggunakan Catatan.
+ Meja Delta Lake, Hudi dan Iceberg tidak didukung.
+ Pengguna harus memiliki akses ke basis data default. Ini adalah persyaratan untuk Apache Spark.
+ Server Admin Ranger tidak support selesai otomatis.
+ Plugin SparkSQL untuk Amazon EMR tidak support filter baris atau masking data.
+ Saat menggunakan ALTER TABLE dengan Spark SQL, lokasi partisi harus menjadi direktori anak dari lokasi tabel. Memasukkan data ke dalam partisi di mana lokasi partisi berbeda dari lokasi tabel tidak didukung.

# 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.

# Plugin Trino untuk integrasi Ranger dengan Amazon EMR
<a name="emr-ranger-trino"></a>

Trino (sebelumnya PrestosQL) adalah mesin query SQL yang dapat Anda gunakan untuk menjalankan kueri pada sumber data seperti HDFS, penyimpanan objek, database relasional, dan database NoSQL. Ini menghilangkan kebutuhan untuk memigrasikan data ke lokasi pusat dan memungkinkan Anda untuk menanyakan data dari mana pun ia berada. Amazon EMR menyediakan plugin Apache Ranger untuk menyediakan kontrol akses halus untuk Trino. Plugin ini kompatibel dengan server Admin Apache Ranger versi 2.0 dan versi terbaru.

**Topics**
+ [Fitur yang didukung](#emr-ranger-trino-features)
+ [Instalasi konfigurasi layanan](#emr-ranger-trino-service-config)
+ [Membuat kebijakan Trino](#emr-ranger-trino-create-policies)
+ [Pertimbangan-pertimbangan](#emr-ranger-trino-considerations)
+ [Batasan](#emr-ranger-trino-limitations)

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

Plugin Apache Ranger untuk Trino di Amazon EMR mendukung semua fungsionalitas mesin kueri Trino yang dilindungi oleh kontrol akses berbutir halus. Ini termasuk database, tabel, kontrol akses tingkat kolom dan pemfilteran baris dan penyembunyian data. Kebijakan Apache Ranger dapat mencakup kebijakan hibah dan tolak kebijakan untuk pengguna dan grup. Acara audit juga diserahkan ke CloudWatch log.

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

Instalasi definisi layanan Trino mengharuskan server Admin Ranger diatur. Untuk mengatur pemisah Admin Ranger, lihat. [Siapkan server Admin Ranger untuk diintegrasikan dengan Amazon EMR](emr-ranger-admin.md)

Ikuti langkah-langkah ini untuk menginstal definisi layanan Trino.

1. SSH ke server Admin Apache Ranger.

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

   

1. Copot pemasangan plugin server Presto, jika ada. Jalankan perintah berikut. Jika kesalahan ini terjadi dengan kesalahan “Layanan tidak ditemukan”, ini berarti plugin server Presto tidak diinstal di server Anda. Lanjutkan ke langkah berikutnya.

   ```
   curl -f -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X DELETE -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef/name/presto'
   ```

1. Unduh definisi layanan dan plugin server Admin Apache Ranger. Di direktori sementara, unduh definisi layanan. 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-trino.json
   ```

1. Daftarkan definisi layanan Apache Trino untuk Amazon EMR.

   ```
   curl -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X POST -d @ranger-servicedef-amazon-emr-trino.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 berjalan, Anda akan melihat layanan baru di UI Admin Ranger Anda dipanggil`TRINO`, seperti yang ditunjukkan pada gambar berikut.  
![\[Admin Ranger membuat layanan.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-create-service-trino.png)

1. Buat instance `TRINO` aplikasi, masukkan informasi berikut.

   **Nama Layanan**: Nama layanan yang akan Anda gunakan. Nilai yang direkomendasikan adalah `amazonemrtrino`. Perhatikan nama layanan ini, karena akan diperlukan saat membuat konfigurasi keamanan Amazon EMR.

   **Nama tampilan:** Nama yang akan ditampilkan untuk instans ini. Nilai yang direkomendasikan adalah `amazonemrtrino`.  
![\[Nama tampilan Admin Ranger.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-display-name-trino.png)

   **jdbc.driver. ClassName**: Nama kelas kelas JDBC untuk konektivitas Trino. Anda dapat menggunakan nilai default.

   **jdbc.url**: String koneksi JDBC yang akan digunakan saat menghubungkan ke koordinator Trino.

   **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 di sertifikat TLS Anda yang dibuat untuk plugin.  
![\[Ranger Admin nama umum.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-common-name-trino.png)

   Perhatikan bahwa sertifikat TLS untuk plugin ini seharusnya telah terdaftar di toko kepercayaan di server Admin Ranger. Untuk informasi selengkapnya, lihat [sertifikat TLS](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-ranger-admin-tls.html).

## Membuat kebijakan Trino
<a name="emr-ranger-trino-create-policies"></a>

Saat Anda membuat kebijakan baru, isi kolom berikut.

**Nama Kebijakan**: Nama kebijakan ini.

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

**Katalog**: Katalog tempat kebijakan ini berlaku. Wildcard “\$1” mewakili semua katalog.

**Skema**: Skema yang berlaku untuk kebijakan ini. Wildcard “\$1” mewakili semua skema.

**Tabel**: Tabel yang berlaku untuk kebijakan ini. Wildcard “\$1” mewakili semua tabel.

**Kolom**: Kolom tempat kebijakan ini berlaku. Wildcard "\$1" mewakili semua kolom.

**Deskripsi**: Deskripsi dari kebijakan ini.

Jenis kebijakan lain ada untuk **Pengguna Trino** (untuk akses peniruan identitas pengguna), Properti **Sistem/Sesi Trino (untuk mengubah sistem mesin atau properti sesi**), **Fungsi/Prosedur (untuk memungkinkan panggilan fungsi atau prosedur**), dan **URL** (untuk memberikan akses baca/tulis ke mesin di lokasi data).

![\[Admin Ranger membuat detail kebijakan.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-create-policy-details-trino.png)


Untuk memberikan izin kepada pengguna dan grup tertentu, masukkan pengguna dan grup. Anda juga dapat menentukan pengecualian untuk kondisi **izinkan** dan kondisi **penolakan**.

![\[Rincian kebijakan Admin Ranger memungkinkan kondisi penolakan.\]](http://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/ranger-create-policy-allow-conditions-trino.png)


Setelah menentukan kondisi izinkan dan tolak, pilih **Simpan**.

## Pertimbangan-pertimbangan
<a name="emr-ranger-trino-considerations"></a>

Saat membuat kebijakan Trino dalam Apache Ranger, ada beberapa pertimbangan penggunaan yang harus diperhatikan.

**Server metadata sarang**

Server metadata Hive hanya dapat diakses oleh mesin tepercaya, khususnya mesin Trino, untuk melindungi dari akses yang tidak sah. Server metadata Hive juga diakses oleh semua node di cluster. Port 9083 yang diperlukan menyediakan semua node akses ke node utama.

**Autentikasi**

Secara default, Trino dikonfigurasi untuk mengautentikasi menggunakan Kerberos seperti yang dikonfigurasi dalam konfigurasi keamanan Amazon EMR.

**Diperlukan enkripsi dalam transit**

Plugin Trino mengharuskan Anda mengaktifkan enkripsi dalam transit dalam konfigurasi keamanan EMR Amazon. Untuk mengaktifkan enkripsi, lihat[Enkripsi dalam transit](emr-data-encryption-options.md#emr-encryption-intransit).

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

Berikut ini adalah batasan plugin Trino saat ini:
+ Server Admin Ranger tidak mendukung pelengkapan otomatis.