

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

# Konfigurasikan peran runtime IAM untuk akses kluster Amazon EMR di Studio
<a name="studio-notebooks-emr-cluster-rbac"></a>

Saat tersambung ke klaster EMR Amazon dari notebook Studio atau Studio Classic, Anda dapat menelusuri daftar peran IAM secara visual, yang dikenal sebagai peran runtime, dan memilihnya dengan cepat. Selanjutnya, semua pekerjaan Apache Spark, Apache Hive, atau Presto yang dibuat dari buku catatan Anda hanya mengakses data dan sumber daya yang diizinkan oleh kebijakan yang dilampirkan pada peran runtime. Selain itu, saat data diakses dari data lake yang dikelola AWS Lake Formation, Anda dapat menerapkan akses tingkat tabel dan tingkat kolom menggunakan kebijakan yang dilampirkan pada peran runtime.

Dengan kemampuan ini, Anda dan rekan tim Anda dapat terhubung ke cluster yang sama, masing-masing menggunakan peran runtime yang dicakup dengan izin yang sesuai dengan tingkat akses individual Anda ke data. Sesi Anda juga terisolasi satu sama lain di cluster bersama. 

Untuk mencoba fitur ini menggunakan Studio Classic, lihat [Menerapkan kontrol akses data berbutir halus dengan dan AWS Lake Formation Amazon EMR dari Amazon](https://aws.amazon.com/blogs/machine-learning/apply-fine-grained-data-access-controls-with-aws-lake-formation-and-amazon-emr-from-amazon-sagemaker-studio/) Studio Classic. SageMaker Posting blog ini membantu Anda mengatur lingkungan demo tempat Anda dapat mencoba menggunakan peran runtime yang telah dikonfigurasi sebelumnya untuk terhubung ke kluster EMR Amazon.

## Prasyarat
<a name="studio-notebooks-emr-cluster-rbac-prereq"></a>

Sebelum Anda memulai, pastikan Anda memenuhi prasyarat berikut:
+ Gunakan Amazon EMR versi 6.9 atau lebih tinggi.
+ **Untuk pengguna Studio Classic**: Gunakan JupyterLab versi 3 dalam konfigurasi aplikasi server Studio Classic Jupyter. Versi ini mendukung koneksi Studio Classic ke cluster EMR Amazon menggunakan peran runtime.

  **Untuk pengguna Studio**: Gunakan versi [gambar SageMaker distribusi](sagemaker-distribution.md) `1.10` atau lebih tinggi.
+ Izinkan penggunaan peran runtime dalam konfigurasi keamanan klaster Anda. Untuk informasi selengkapnya, lihat [Peran waktu proses untuk langkah-langkah EMR Amazon](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-steps-runtime-roles.html).
+ Buat buku catatan dengan salah satu kernel yang tercantum di[Gambar dan kernel yang didukung untuk terhubung ke kluster EMR Amazon dari Studio atau Studio Classic](studio-emr-user-guide.md#studio-notebooks-emr-cluster-connect-kernels).
+ Pastikan Anda meninjau instruksi [Siapkan Studio untuk menggunakan peran IAM runtime](#studio-notebooks-emr-cluster-iam) untuk mengonfigurasi peran runtime Anda.

## Cross-account skenario koneksi
<a name="studio-notebooks-emr-cluster-rbac-scen"></a>

Autentikasi peran runtime mendukung berbagai skenario koneksi lintas akun saat data berada di luar akun Studio Anda. Gambar berikut menunjukkan tiga cara berbeda untuk menetapkan klaster EMR Amazon, data, dan bahkan peran eksekusi runtime Amazon EMR antara Studio dan akun data: 

![Cross-account skenario yang didukung oleh otentikasi peran IAM runtime.](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/studio-emr-rbac-scenarios.png)


Di opsi 1, klaster EMR Amazon dan peran eksekusi runtime Amazon EMR Anda berada di akun data terpisah dari akun Studio. Anda menentukan kebijakan izin peran akses EMR Amazon terpisah (juga disebut sebagai`Assumable role`) yang memberikan izin ke peran eksekusi Studio atau Studio Classic untuk mengambil peran akses Amazon EMR. Peran akses EMR Amazon kemudian memanggil API EMR Amazon `GetClusterSessionCredentials` atas nama peran eksekusi Studio atau Studio Classic Anda, sehingga Anda dapat mengakses klaster.

Di opsi 2, klaster EMR Amazon dan peran eksekusi runtime Amazon EMR Anda ada di akun Studio Anda. Peran eksekusi Studio Anda memiliki izin untuk menggunakan Amazon EMR API `GetClusterSessionCredentials` untuk mendapatkan akses ke klaster Anda. Untuk mengakses bucket Amazon S3, berikan izin akses bucket Amazon S3 peran eksekusi runtime Amazon S3 lintas akun - Anda memberikan izin ini dalam kebijakan bucket Amazon S3 Anda.

Di opsi 3, kluster EMR Amazon Anda ada di akun Studio Anda, dan peran eksekusi runtime Amazon EMR ada di akun data. Peran eksekusi Studio atau Studio Classic Anda memiliki izin untuk menggunakan Amazon EMR API `GetClusterSessionCredentials` untuk mendapatkan akses ke klaster Anda. Tambahkan peran eksekusi runtime Amazon EMR ke dalam konfigurasi peran eksekusi JSON. Kemudian Anda dapat memilih peran di UI saat memilih klaster. Untuk detail tentang cara mengatur file JSON konfigurasi peran eksekusi, lihat[Memuat peran eksekusi Anda ke Studio atau Studio Classic](#studio-notebooks-emr-cluster-iam-preload).

## Siapkan Studio untuk menggunakan peran IAM runtime
<a name="studio-notebooks-emr-cluster-iam"></a>

Untuk membuat otentikasi peran runtime untuk kluster EMR Amazon Anda, konfigurasikan kebijakan IAM, jaringan, dan peningkatan kegunaan yang diperlukan. Penyiapan Anda bergantung pada apakah Anda menangani pengaturan lintas akun jika klaster EMR Amazon, peran eksekusi runtime Amazon EMR, atau keduanya, berada di luar akun Studio Anda. Bagian berikut memandu Anda melalui kebijakan untuk menginstal, cara mengonfigurasi jaringan untuk mengizinkan lalu lintas antar akun, dan file konfigurasi lokal yang akan disiapkan untuk mengotomatiskan koneksi EMR Amazon Anda.

### Konfigurasikan autentikasi peran runtime saat klaster EMR Amazon dan Studio berada di akun yang sama
<a name="studio-notebooks-emr-cluster-iam-same"></a>

Jika klaster EMR Amazon Anda berada di akun Studio Anda, selesaikan langkah-langkah berikut untuk menambahkan izin yang diperlukan ke kebijakan eksekusi Studio Anda:

1. Tambahkan kebijakan IAM yang diperlukan untuk terhubung ke kluster EMR Amazon. Lihat perinciannya di [Konfigurasikan daftar kluster EMR Amazon](studio-notebooks-configure-discoverability-emr-cluster.md).

1. Berikan izin untuk memanggil API EMR Amazon `GetClusterSessionCredentials` saat Anda meneruskan satu atau beberapa peran eksekusi runtime Amazon EMR yang diizinkan yang ditentukan dalam kebijakan.

1. (Opsional) Berikan izin untuk meneruskan peran IAM yang mengikuti konvensi penamaan yang ditentukan pengguna.

1. (Opsional) Berikan izin untuk mengakses kluster EMR Amazon yang ditandai dengan string yang ditentukan pengguna tertentu.

1. Memuat peran IAM Anda terlebih dahulu sehingga Anda dapat memilih peran yang akan digunakan saat Anda terhubung ke klaster EMR Amazon Anda. Untuk detail tentang cara pramuat peran IAM Anda, lihat. [Memuat peran eksekusi Anda ke Studio atau Studio Classic](#studio-notebooks-emr-cluster-iam-preload)

Contoh kebijakan berikut memungkinkan peran eksekusi runtime Amazon EMR milik grup pemodelan dan pelatihan untuk dipanggil. `GetClusterSessionCredentials` Selain itu, pemegang polis dapat mengakses kluster EMR Amazon yang ditandai dengan string atau. `modeling` `training`

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "elasticmapreduce:GetClusterSessionCredentials",
            "Resource": "*",
            "Condition": {
                "ArnLike": {
                    "elasticmapreduce:ExecutionRoleArn": [
                        "arn:aws:iam::{{111122223333}}:role/emr-execution-role-ml-modeling*",
                        "arn:aws:iam::{{111122223333}}:role/emr-execution-role-ml-training*"
			]},
		"StringLike":{
                    "elasticmapreduce:ResourceTag/group": [
                        "*modeling*",
                        "*training*"
                    ]
                }
            }
        }
    ]
}
```

------

### Konfigurasikan autentikasi peran runtime saat klaster dan Studio Anda berada di akun yang berbeda
<a name="studio-notebooks-emr-cluster-iam-diff"></a>

Jika klaster EMR Amazon Anda tidak ada di akun Studio Anda, izinkan peran eksekusi SageMaker AI Anda untuk mengambil peran akses Amazon EMR lintas akun sehingga Anda dapat terhubung ke cluster. Selesaikan langkah-langkah berikut untuk menyiapkan konfigurasi lintas akun Anda:

1. Buat kebijakan izin peran eksekusi SageMaker AI Anda sehingga peran eksekusi dapat mengambil peran akses EMR Amazon. Kebijakan berikut adalah contoh:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowAssumeCrossAccountEMRAccessRole",
               "Effect": "Allow",
               "Action": "sts:AssumeRole",
               "Resource": "arn:aws:iam::{{111122223333}}:role/{{emr-access-role-name}}"
           }
       ]
   }
   ```

------

1. Buat kebijakan kepercayaan untuk menentukan ID akun Studio mana yang dipercaya untuk mengambil peran akses EMR Amazon. Kebijakan berikut adalah contoh:

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
           "Sid": "AllowCrossAccountSageMakerExecutionRoleToAssumeThisRole",
           "Effect": "Allow",
           "Principal": {
             "AWS": "arn:aws:iam::{{111122223333}}:role/{{studio_execution_role}}"
           },
           "Action": "sts:AssumeRole"
         }
       ]
   }
   ```

------

1. Buat kebijakan izin peran akses EMR Amazon, yang memberikan peran eksekusi runtime Amazon EMR izin yang diperlukan untuk melaksanakan tugas yang dimaksudkan di cluster. Konfigurasikan peran akses EMR Amazon untuk memanggil API `GetClusterSessionCredentials` dengan peran eksekusi runtime Amazon EMR yang ditentukan dalam kebijakan izin peran akses. Kebijakan berikut adalah contoh:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowCallingEmrGetClusterSessionCredentialsAPI",
               "Effect": "Allow",
               "Action": "elasticmapreduce:GetClusterSessionCredentials",
               "Resource": "arn:aws:elasticmapreduce:{{us-east-1}}:{{111122223333}}:cluster/{{cluster-id}}",
               "Condition": {
                   "StringLike": {
                       "elasticmapreduce:ExecutionRoleArn": [
                           "arn:aws:iam::{{111122223333}}:role/{{emr-execution-role-name}}"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. Siapkan jaringan lintas akun sehingga lalu lintas dapat bergerak bolak-balik antar akun Anda. Untuk instruksi terpandu, lihat *[Konfigurasikan akses jaringan untuk kluster EMR Amazon Anda](studio-notebooks-emr-networking.md)Mengatur*. Langkah-langkah di bagian ini membantu Anda menyelesaikan tugas-tugas berikut:

   1. VPC-peer akun Studio Anda dan akun EMR Amazon Anda untuk membuat koneksi.

   1. Tambahkan rute secara manual ke tabel rute subnet pribadi di kedua akun. Ini memungkinkan pembuatan dan koneksi kluster EMR Amazon dari akun Studio ke subnet pribadi akun jarak jauh.

   1. Siapkan grup keamanan yang dilampirkan ke domain Studio Anda untuk mengizinkan lalu lintas keluar dan grup keamanan node utama EMR Amazon untuk mengizinkan lalu lintas TCP masuk dari grup keamanan instans Studio.

1. Memuat peran runtime IAM agar Anda dapat memilih peran yang akan digunakan saat terhubung ke klaster EMR Amazon. Untuk detail tentang cara pramuat peran IAM Anda, lihat. [Memuat peran eksekusi Anda ke Studio atau Studio Classic](#studio-notebooks-emr-cluster-iam-preload)

### Konfigurasikan akses Lake Formation
<a name="studio-notebooks-emr-cluster-iam-lf"></a>

Saat mengakses data dari data lake yang dikelola oleh AWS Lake Formation, Anda dapat menerapkan akses tingkat tabel dan tingkat kolom menggunakan kebijakan yang dilampirkan pada peran runtime Anda. Untuk mengonfigurasi izin akses Lake Formation, lihat [Mengintegrasikan Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-lake-formation.html) dengan. AWS Lake Formation

### Memuat peran eksekusi Anda ke Studio atau Studio Classic
<a name="studio-notebooks-emr-cluster-iam-preload"></a>

Anda dapat melakukan pramuat peran runtime IAM sehingga Anda dapat memilih peran yang akan digunakan saat terhubung ke klaster EMR Amazon. Pengguna JupyterLab di Studio dapat menggunakan konsol SageMaker AI atau skrip yang disediakan.

------
#### [ Preload runtime roles in JupyterLab using the SageMaker AI console ]

Untuk mengaitkan peran runtime Anda dengan profil pengguna atau domain Anda menggunakan konsol SageMaker AI:

1. Arahkan ke konsol SageMaker AI di [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Di panel navigasi kiri, pilih **domain**, lalu pilih domain menggunakan peran eksekusi SageMaker AI yang izinnya Anda perbarui.

1. 
   + Untuk menambahkan runtime (dan mengakses peran untuk kasus penggunaan lintas akun) ke domain Anda: Di tab **Konfigurasi Aplikasi** pada halaman **detail Domain**, buka bagian tersebut. **JupyterLab**
   + Untuk menambahkan runtime Anda (dan mengakses peran untuk kasus penggunaan lintas akun) ke profil pengguna Anda: Pada halaman **Detail domain**, pilih tab **Profil pengguna, pilih profil** pengguna menggunakan peran eksekusi SageMaker AI yang izinnya Anda perbarui. Di tab **Konfigurasi Aplikasi**, arahkan ke **JupyterLab**bagian tersebut.

1. Pilih **Edit** dan tambahkan ARN peran akses Anda (peran yang dapat diasumsikan) dan peran eksekusi runtime EMR Tanpa Server.

1. Pilih **Kirim**.

Saat Anda selanjutnya terhubung ke server EMR Amazon, peran runtime akan muncul di menu tarik-turun untuk dipilih.

------
#### [ Preload runtime roles in JupyterLab using a Python script ]

Dalam JupyterLab aplikasi yang dimulai dari ruang menggunakan peran eksekusi SageMaker AI yang izinnya Anda perbarui, jalankan perintah berikut di terminal. Ganti`domainID`,`user-profile-name`,`emr-accountID`, dan `EMRServiceRole` dengan nilai-nilai yang tepat. Cuplikan kode ini memperbarui pengaturan profil pengguna (`client.update_user_profile`) dalam domain SageMaker AI dalam kasus penggunaan lintas akun. Secara khusus, ini menetapkan peran layanan untuk Amazon EMR. Hal ini juga memungkinkan JupyterLab aplikasi untuk mengambil peran IAM tertentu (`AssumableRole`atau`AccessRole`) untuk menjalankan Amazon EMR dalam akun Amazon EMR.

Atau, gunakan `client.update_domain` untuk memperbarui pengaturan domain jika ruang Anda menggunakan peran eksekusi yang ditetapkan di tingkat domain.

```
import botocore.session
import json
sess = botocore.session.get_session()
client = sess.create_client('sagemaker')

client.update_user_profile(
DomainId="{{domainID}}", 
UserProfileName="{{user-profile-name}}",
UserSettings={
    'JupyterLabAppSettings': {
        'EmrSettings': {
            'AssumableRoleArns': ["arn:aws:iam::{{emr-accountID}}:role/{{AssumableRole}}"],
            'ExecutionRoleArns': ["arn:aws:iam::{{emr-accountID}}:role/{{EMRServiceRole}}", 
                             "arn:aws:iam::{{emr-accountID}}:role/{{AnotherServiceRole}}"]
        }
        
    }
})
resp = client.describe_user_profile(DomainId="{{domainID}}", UserProfileName={{user-profile-name}}")

resp['CreationTime'] = str(resp['CreationTime'])
resp['LastModifiedTime'] = str(resp['LastModifiedTime'])
print(json.dumps(resp, indent=2))
```

------
#### [ Preload runtime roles in Studio Classic ]

Berikan ARN of the `AccessRole` (`AssumableRole`) ke peran eksekusi SageMaker AI Anda. ARN dimuat oleh server Jupyter saat diluncurkan. *Peran eksekusi yang digunakan oleh Studio mengasumsikan peran lintas akun untuk menemukan dan terhubung ke klaster EMR Amazon di akun kepercayaan.*

Anda dapat menentukan informasi ini dengan menggunakan skrip Lifecycle Configuration (LCC). Anda dapat melampirkan LCC ke domain Anda atau profil pengguna tertentu. Skrip LCC yang Anda gunakan harus berupa JupyterServer konfigurasi. Untuk informasi selengkapnya tentang cara membuat skrip LCC, lihat [Menggunakan Konfigurasi Siklus Hidup](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-lcc.html) dengan Studio Classic. 

Berikut ini adalah contoh skrip LCC. Untuk memodifikasi skrip, ganti `AssumableRole` dan `emr-account` dengan nilainya masing-masing. Jumlah akun silang dibatasi hingga lima.

Cuplikan berikut adalah contoh skrip bash LCC yang dapat Anda terapkan jika aplikasi dan klaster Studio Classic Anda berada di akun yang sama:

```
#!/bin/bash

set -eux

FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE"
FILE_NAME="emr-configurations-DO_NOT_DELETE.json"
FILE="$FILE_DIRECTORY/$FILE_NAME"

mkdir -p $FILE_DIRECTORY

cat << 'EOF' > "$FILE"
{
    "emr-execution-role-arns":
    {
      "123456789012": [
          "arn:aws:iam::123456789012:role/{{emr-execution-role-1}}",
          "arn:aws:iam::123456789012:role/{{emr-execution-role-2}}"
      ]
    }
}
EOF
```

Jika aplikasi dan klaster Studio Classic Anda berada di akun yang berbeda, tentukan peran akses EMR Amazon yang dapat menggunakan klaster. Dalam contoh kebijakan berikut, *123456789012* adalah ID akun cluster EMR Amazon, *dan 212121212121 *dan** 434343434343 adalah ARN untuk peran akses EMR Amazon yang diizinkan.

```
#!/bin/bash

set -eux

FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE"
FILE_NAME="emr-configurations-DO_NOT_DELETE.json"
FILE="$FILE_DIRECTORY/$FILE_NAME"

mkdir -p $FILE_DIRECTORY

cat << 'EOF' > "$FILE"
{
    "emr-execution-role-arns":
    {
      "123456789012": [
          "arn:aws:iam::212121212121:role/{{emr-execution-role-1}}",
          "arn:aws:iam::434343434343:role/{{emr-execution-role-2}}"
      ]
    }
}
EOF

# add your cross-account EMR access role
FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE"
FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json"
FILE="$FILE_DIRECTORY/$FILE_NAME"

mkdir -p $FILE_DIRECTORY

cat << 'EOF' > "$FILE"
{
    "123456789012": "arn:aws:iam::123456789012:role/{{cross-account-emr-access-role}}"
}
EOF
```

------