

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

# Menggunakan integrasi aplikasi Lake Formation
<a name="using-cred-vending"></a>

Lake Formation memungkinkan layanan pihak ketiga untuk berintegrasi dengan Lake Formation dan mendapatkan akses sementara ke data Amazon S3 atas nama penggunanya dengan menggunakan [GetTemporaryGlueTableCredentials](https://docs.aws.amazon.com/lake-formation/latest/APIReference/API_GetTemporaryGlueTableCredentials.html)dan [GetTemporaryGluePartitionCredentials](https://docs.aws.amazon.com/lake-formation/latest/APIReference/API_GetTemporaryGluePartitionCredentials.html)mengoperasikannya. Ini memungkinkan layanan pihak ketiga untuk menggunakan fitur otorisasi dan penjual kredenal yang sama dengan yang digunakan oleh layanan AWS analitik lainnya. Bagian ini menjelaskan cara menggunakan operasi API ini untuk mengintegrasikan mesin kueri pihak ketigaLake Formation.

 Operasi API ini dinonaktifkan secara default. Ada dua opsi untuk mengotorisasi Lake Formation untuk mengintegrasikan aplikasi:
+ Konfigurasikan tag sesi IAM yang divalidasi setiap kali operasi API integrasi aplikasi dipanggil

  Untuk informasi selengkapnya, lihat [Mengaktifkan izin untuk mesin kueri pihak ketiga untuk memanggil operasi API integrasi aplikasi](permitting-third-party-call.md).
+ Aktifkan opsi yang **Memungkinkan mesin eksternal mengakses data di lokasi Amazon S3 dengan akses tabel penuh**

  Opsi ini memungkinkan mesin kueri dan aplikasi untuk mendapatkan kredensional tanpa tag sesi IAM jika pengguna memiliki akses tabel penuh. Ini memberikan mesin kueri dan manfaat kinerja aplikasi serta menyederhanakan akses data. Amazon EMR di Amazon EC2 dapat memanfaatkan pengaturan ini. 

  Untuk informasi selengkapnya, lihat [Integrasi aplikasi untuk akses tabel penuh](full-table-credential-vending.md).

**Topics**
+ [Cara kerja integrasi aplikasi Lake Formation](how-vending-works.md)
+ [Peran dan tanggung jawab dalam integrasi aplikasi Lake Formation](roles-and-responsibilities.md)
+ [Lake Formationalur kerja untuk operasi API integrasi aplikasi](api-overview.md)
+ [Mendaftarkan mesin kueri pihak ketiga](register-query-engine.md)
+ [Mengaktifkan izin untuk mesin kueri pihak ketiga untuk memanggil operasi API integrasi aplikasi](permitting-third-party-call.md)
+ [Integrasi aplikasi untuk akses tabel penuh](full-table-credential-vending.md)

# Cara kerja integrasi aplikasi Lake Formation
<a name="how-vending-works"></a>

Bagian ini menjelaskan cara menggunakan operasi API integrasi aplikasi untuk mengintegrasikan aplikasi pihak ketiga (mesin kueri) denganLake Formation.

![\[Lake Formation data access workflow with user authentication and service integration.\]](http://docs.aws.amazon.com/id_id/lake-formation/latest/dg/images/credential-vending-new.png)


1. Lake FormationAdministrator melakukan kegiatan berikut:
   + Mendaftarkan lokasi Amazon S3 dengan Lake Formation dengan menyediakan peran IAM (digunakan untuk kredenal penjual) yang memiliki izin yang sesuai untuk mengakses data dalam lokasi Amazon S3
   + Mendaftarkan aplikasi pihak ketiga untuk dapat memanggil operasi API penjual kredenal Lake Formation. Lihat [Mendaftarkan mesin kueri pihak ketiga](register-query-engine.md)
   + Memberikan izin bagi pengguna untuk mengakses database dan tabel

     Misalnya, jika Anda ingin mempublikasikan kumpulan data sesi pengguna yang menyertakan beberapa kolom yang berisi informasi identitas pribadi (PII), untuk membatasi akses, Anda menetapkan kolom ini tag [LF-TBAC](https://docs.aws.amazon.com/lake-formation/latest/dg/tag-based-access-control.html.html) bernama “klasifikasi” dengan nilai “sensitif”. Selanjutnya, Anda menentukan izin yang memungkinkan analis bisnis mengakses data sesi pengguna, tetapi mengecualikan kolom yang ditandai dengan *klasifikasi = sensitif*. 

1. Seorang prinsipal (pengguna) mengirimkan kueri ke layanan terintegrasi.

1. Aplikasi terintegrasi mengirimkan permintaan ke Lake Formation meminta informasi tabel dan kredensional untuk mengakses tabel. 

1. Jika prinsipal kueri diizinkan untuk mengakses tabel, Lake Formation mengembalikan kredensialnya ke aplikasi terintegrasi, yang memungkinkan akses data.
**catatan**  
Lake Formation tidak mengakses data yang mendasarinya saat menjual kredensyal.

1. Layanan terintegrasi membaca data dari Amazon S3, memfilter kolom berdasarkan kebijakan yang diterimanya, dan mengembalikan hasilnya kembali ke prinsipal.

**penting**  
Lake Formationoperasi API penjual kredenal memungkinkan **penegakan terdistribusi dengan model penolakan eksplisit pada kegagalan (fail-close**). Ini memperkenalkan model keamanan tiga pihak antara pelanggan, layanan pihak ketiga, dan Lake Formation. Layanan terintegrasi dipercaya untuk menegakkan Lake Formation izin dengan benar (penegakan terdistribusi). 

Layanan terintegrasi bertanggung jawab untuk memfilter data yang dibaca dari Amazon S3 berdasarkan kebijakan yang dikembalikan Lake Formation sebelum data yang difilter dikembalikan kembali ke pengguna. Layanan terintegrasi mengikuti model fail-close, yang berarti bahwa mereka harus gagal dalam kueri jika mereka tidak dapat menerapkan izin yang diperlukan. Lake Formation 

# Peran dan tanggung jawab dalam integrasi aplikasi Lake Formation
<a name="roles-and-responsibilities"></a>

Berikut ini adalah peran dan tanggung jawab terkait untuk memungkinkan integrasi aplikasi pihak ketiga dengan AWS Lake Formation.


****  

| Peran | Tanggung jawab | 
| --- | --- | 
| Pelanggan |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/lake-formation/latest/dg/roles-and-responsibilities.html)  | 
| Pihak ketiga |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/lake-formation/latest/dg/roles-and-responsibilities.html)  | 
| AWS Lake Formation |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/lake-formation/latest/dg/roles-and-responsibilities.html)  | 

# Lake Formationalur kerja untuk operasi API integrasi aplikasi
<a name="api-overview"></a>

Berikut ini adalah alur kerja untuk operasi API integrasi aplikasi:

1. Pengguna mengirimkan kueri atau permintaan data menggunakan mesin kueri pihak ketiga yang terintegrasi. Mesin kueri mengasumsikan peran IAM yang mewakili pengguna atau sekelompok pengguna, dan mengambil kredensi tepercaya untuk digunakan saat memanggil operasi API integrasi aplikasi.

1.  Mesin kueri memanggil`GetUnfilteredTableMetadata`, dan jika itu adalah tabel yang dipartisi, mesin kueri memanggil `GetUnfilteredPartitionsMetadata` untuk mengambil metadata dan informasi kebijakan dari Katalog Data.

1.  Lake Formation melakukan otorisasi untuk permintaan tersebut. Jika pengguna tidak memiliki izin yang sesuai di atas meja, maka *AccessDeniedException*dilemparkan. 

1. Sebagai bagian dari permintaan, mesin kueri mengirimkan penyaringan yang didukungnya. *Ada dua flag yang dapat dikirim dalam array: *COLUMN\$1PERMISSIONS dan CELL\$1FILTER\$1PERMISSION*.* Jika mesin kueri tidak mendukung salah satu fitur ini, dan kebijakan ada di tabel untuk fitur tersebut, maka a *PermissionTypeMismatchException*dilemparkan dan kueri gagal. Hal ini untuk menghindari kebocoran data.

1. Respons yang dikembalikan berisi yang berikut:
   + Seluruh skema untuk tabel sehingga mesin query dapat menggunakannya untuk mengurai data dari penyimpanan.
   + Daftar kolom resmi yang dapat diakses pengguna. Jika daftar kolom resmi kosong, ini menunjukkan bahwa pengguna memiliki `DESCRIBE` izin, tetapi tidak memiliki `SELECT` izin, dan kueri gagal.
   + Bendera,`IsRegisteredWithLakeFormation`, yang menunjukkan apakah Lake Formation dapat menjual kredensi ke data sumber daya ini. Jika ini mengembalikan false, maka kredensi pelanggan harus digunakan untuk mengakses Amazon S3. 
   +  Daftar `CellFilters` jika ada yang harus diterapkan ke baris data. Daftar ini berisi kolom dan ekspresi untuk mengevaluasi setiap baris. Ini seharusnya hanya diisi jika *CELL\$1FILTER\$1PERMISSION* dikirim sebagai bagian dari permintaan dan ada filter data terhadap tabel untuk pengguna pemanggil.

1. Setelah metadata diambil, mesin kueri memanggil `GetTemporaryGlueTableCredentials` atau `GetTemporaryGluePartitionCredentials` untuk mendapatkan AWS kredensional untuk mengambil data dari lokasi Amazon S3. 

1. Mesin kueri membaca objek yang relevan dari Amazon S3, memfilter data berdasarkan kebijakan yang diterimanya di langkah 2, dan mengembalikan hasilnya kepada pengguna. 

Operasi API integrasi aplikasi untuk Lake Formation berisi konten tambahan untuk mengonfigurasi integrasi dengan mesin kueri pihak ketiga. Anda dapat melihat detail operasi di bagian [operasi Credential vending API](aws-lake-formation-api-credential-vending.md).

 `QuerySessionContext`Ini adalah struktur yang juga dapat dikirim oleh mesin kueri Lake Formation untuk operasi API integrasi aplikasi ini. Hal ini memungkinkan Lake Formation untuk menyimpan dan memanfaatkan konteks tambahan untuk query yang diberikan. Berikut ini memberikan contoh bagaimana [QuerySessionContext](https://docs.aws.amazon.com/glue/latest/webapi/API_QuerySessionContext.html)harus digunakan:

1. Mesin kueri membuat `GetInternalUnfilteredMetadata` panggilan, meneruskan struktur QSC yang berisi id kueri unik dalam permintaan:

   ```
   {
       "QuerySessionContext": {
           "QueryId": "your-unique-identifier-here"
       }
   }
   ```

1. `GetInternalUnfilteredMetadata`Panggilan akan mengembalikan `QueryAuthorizationId` string dalam respons. Pada panggilan kueri berikutnya (dan berikutnya) yang menerima struktur QSC dalam input, mesin kueri melewati struktur QSC yang sama yang sekarang juga berisi yang dikembalikan oleh`QueryAuthorizationId`. Lake Formation Misalkan panggilan berikutnya adalah`GetTemporaryGlueTableCredentials`; permintaan akan berisi:

   ```
   {
       "QuerySessionContext": {
           "QueryAuthorizationId": "lf-returned-query-authz-id-here",
           "QueryId": "your-unique-identifier-here"
       },
   }
   ```

# Mendaftarkan mesin kueri pihak ketiga
<a name="register-query-engine"></a>

Sebelum mesin kueri pihak ketiga dapat menggunakan operasi API integrasi aplikasi, Anda perlu mengaktifkan izin secara eksplisit untuk mesin kueri untuk memanggil operasi API atas nama Anda. Ini dilakukan dalam beberapa langkah:

1. Anda perlu menentukan AWS akun dan tag sesi IAM yang memerlukan izin untuk memanggil operasi API integrasi aplikasi melalui AWS Lake Formation konsol, AWS CLI atau API/SDK. 

1. Saat mesin kueri pihak ketiga mengasumsikan peran eksekusi di akun Anda, mesin kueri harus melampirkan tag sesi yang terdaftar di Lake Formation yang mewakili mesin pihak ketiga. Lake Formationmenggunakan tag ini untuk memvalidasi bahwa jika permintaan berasal dari mesin yang disetujui. Untuk informasi selengkapnya tentang tag sesi, lihat [Tag sesi](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html) di Panduan Pengguna IAM.

1. Saat menyiapkan peran eksekusi mesin kueri pihak ketiga, Anda harus memiliki kumpulan izin minimum berikut dalam kebijakan IAM:

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {"Effect": "Allow",
       "Action": [
         "lakeformation:GetDataAccess",      
         "glue:GetTable",
         "glue:GetTables",
         "glue:GetDatabase",
         "glue:GetDatabases",
         "glue:CreateDatabase",
         "glue:GetUserDefinedFunction",
         "glue:GetUserDefinedFunctions",
         "glue:GetPartition",
         "glue:GetPartitions"
       ],
       "Resource": "*"
     }
   }
   ```

------

1. Siapkan kebijakan kepercayaan peran pada peran eksekusi mesin kueri untuk memiliki kontrol akses yang baik pada pasangan nilai kunci tag sesi mana yang dapat dilampirkan ke peran ini. Dalam contoh berikut, peran ini hanya diperbolehkan untuk memiliki kunci tag sesi `"LakeFormationAuthorizedCaller"` dan nilai `"engine1"` tag sesi yang akan dilampirkan, dan tidak ada pasangan nilai kunci tag sesi lainnya yang diizinkan.

   ```
   {
       "Sid": "AllowPassSessionTags",
       "Effect": "Allow",
       "Principal": {
           "AWS": "arn:aws:iam::111122223333:role/query-execution-role"
       },
       "Action": "sts:TagSession",
       "Condition": {
       "StringLike": {
           "aws:RequestTag/LakeFormationAuthorizedCaller": "engine1"        }
       }
   }
   ```

[Saat `LakeFormationAuthorizedCaller` memanggil operasi STS: AssumeRole API untuk mengambil kredensil untuk mesin kueri yang akan digunakan, tag sesi harus disertakan dalam permintaan. AssumeRole ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_adding-assume-role) Kredensi sementara yang dikembalikan dapat digunakan untuk membuat permintaan API integrasi Lake Formation aplikasi.

Lake Formationoperasi API integrasi aplikasi memerlukan prinsipal panggilan untuk menjadi peran IAM. Peran IAM harus menyertakan tag sesi dengan nilai yang telah ditentukan sebelumnya yang telah terdaftar. Lake Formation Tag ini memungkinkan Lake Formation untuk memverifikasi bahwa peran yang digunakan untuk memanggil operasi API integrasi aplikasi diizinkan untuk melakukannya.

# Mengaktifkan izin untuk mesin kueri pihak ketiga untuk memanggil operasi API integrasi aplikasi
<a name="permitting-third-party-call"></a>

Ikuti langkah-langkah ini untuk mengizinkan mesin kueri pihak ketiga memanggil operasi API integrasi aplikasi melalui AWS Lake Formation konsol, AWS CLI atau API/SDK.

------
#### [ Console ]

**Untuk mendaftarkan akun Anda untuk pemfilteran data eksternal:**

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Lake Formation di [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. Di navigasi sisi kiri, perluas **Administrasi**, lalu pilih Pengaturan **integrasi aplikasi**.

1. Pada halaman **pengaturan Integrasi aplikasi**, pilih opsi **Izinkan mesin eksternal memfilter data di lokasi Amazon S3 yang terdaftar**. Lake Formation

1. Masukkan tag sesi yang Anda buat untuk mesin pihak ketiga. Untuk informasi tentang tag sesi, lihat [Melewati tag sesi di AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html) di *Panduan AWS Identity and Access Management Pengguna*.

1. Masukkan akun IDs untuk pengguna yang dapat menggunakan mesin pihak ketiga untuk mengakses informasi metadata tanpa filter dan kredensi akses data sumber daya di akun saat ini.

   Anda juga dapat menggunakan bidang ID AWS akun untuk mengonfigurasi akses lintas akun.  
![\[Tangkapan layar menunjukkan halaman pengaturan integrasi aplikasi untukLake Formation. Opsi Izinkan mesin eksternal untuk memfilter data di lokasi Amazon S3 yang terdaftar Lake Formation dipilih. Untuk nilai tag Sesi, kotak teks kosong, tetapi ada enam tag yang ditampilkan di bawah bidang, dengan nilai “engine1, “engine2", “engine3", “session1", “session2", dan “session3". Bidang terakhir menunjukkan Akun AWS IDs bidang. Bidang teks kosong, tetapi ada tiga tag yang ditampilkan di bawah bidang ini dengan akun IDs. Nilai ID akun disunting.\]](http://docs.aws.amazon.com/id_id/lake-formation/latest/dg/images/cred-vending-external-data-filtering.png)

------
#### [ CLI ]

Gunakan perintah `put-data-lake-settings` CLI untuk mengatur parameter berikut.

Ada tiga bidang untuk dikonfigurasi saat menggunakan AWS CLI perintah ini:
+ `allow-external-data-filtering `— (boolean) Menunjukkan bahwa mesin pihak ketiga dapat mengakses informasi metadata tanpa filter dan akses data dari sumber daya di akun saat ini. 
+ `external-data-filtering-allow-list`— (array) Daftar akun IDs yang dapat mengakses informasi metadata tanpa filter dan akses data dari sumber daya di akun saat ini saat menggunakan mesin pihak ketiga. Bila AllowExternalDataFiltering disetel ke true, ExternalDataFilteringAllowList properti harus menyertakan setidaknya satu ID akun. Daftar kosong tidak diperbolehkan.
+ `authorized-sessions-tag-value-list`— (array) Daftar nilai tag sesi resmi (string). Jika kredensi peran IAM telah dilampirkan dengan pasangan nilai kunci resmi, maka jika tag sesi disertakan dalam daftar, sesi diberikan akses ke informasi metadata tanpa filter dan kredenal akses data pada sumber daya di akun yang dikonfigurasi. Kunci tag sesi resmi didefinisikan sebagai`*LakeFormationAuthorizedCaller*`.
+ `AllowFullTableExternalDataAccess`- (boolean) Apakah akan mengizinkan mesin kueri pihak ketiga untuk mendapatkan kredensional akses data tanpa tag sesi ketika pemanggil memiliki izin akses data penuh. 

Contoh:

```
aws lakeformation put-data-lake-settings --cli-input-json file://datalakesettings.json

{
  "DataLakeSettings": {
    "DataLakeAdmins": [
      {
        "DataLakePrincipalIdentifier": "arn:aws:iam::111111111111:user/lakeAdmin"
      }
    ],
    "CreateDatabaseDefaultPermissions": [],
    "CreateTableDefaultPermissions": [],
    "TrustedResourceOwners": [],
    "AllowExternalDataFiltering": true,
    "ExternalDataFilteringAllowList": [
        {"DataLakePrincipalIdentifier": "111111111111"}
        ],
    "AuthorizedSessionTagValueList": ["engine1"],
    "AllowFullTableExternalDataAccess": false
    }
    

}
```

------
#### [ API/SDK ]

Gunakan operasi `PutDataLakeSetting` API untuk mengatur parameter berikut. 

Ada tiga bidang yang harus dikonfigurasi saat menggunakan operasi API ini:
+ `AllowExternalDataFiltering`— (Boolean) Menunjukkan apakah mesin pihak ketiga dapat mengakses informasi metadata tanpa filter dan kredenal akses data sumber daya di akun saat ini. 
+ `ExternalDataFilteringAllowList`— (array) Daftar akun IDs yang dapat mengakses informasi metadata tanpa filter dan kredensi akses data sumber daya di akun saat ini menggunakan mesin pihak ketiga. 
+ `AuthorizedSectionsTagValueList`— (array) Daftar nilai tag resmi (string). Jika kredensi peran IAM telah dilampirkan dengan tag resmi, maka sesi diberikan akses ke informasi metadata tanpa filter dan kredenal akses data pada sumber daya di akun yang dikonfigurasi. Kunci tag sesi resmi didefinisikan sebagai`*LakeFormationAuthorizedCaller*`. 
+  `AllowFullTableExternalDataAccess`- (boolean) Apakah akan mengizinkan mesin kueri pihak ketiga untuk mendapatkan kredensional akses data tanpa tag sesi ketika pemanggil memiliki izin akses data penuh. 

Contoh:

```
//Enable session tag on existing data lake settings
public void sessionTagSetUpForExternalFiltering(AWSLakeFormationClient lakeformation) {
    GetDataLakeSettingsResult getDataLakeSettingsResult = lfClient.getDataLakeSettings(new GetDataLakeSettingsRequest());
    DataLakeSettings dataLakeSettings = getDataLakeSettingsResult.getDataLakeSettings();
    
    //set account level flag to allow external filtering
    dataLakeSettings.setAllowExternalDataFiltering(true);
    
    //set account that are allowed to call credential vending or Glue GetFilteredMetadata API
    List<DataLakePrincipal> allowlist = new ArrayList<>();
    allowlist.add(new DataLakePrincipal().withDataLakePrincipalIdentifier("111111111111"));
    dataLakeSettings.setWhitelistedForExternalDataFiltering(allowlist);
    
    //set registered session tag values
    List<String> registeredTagValues = new ArrayList<>();
    registeredTagValues.add("engine1");
    dataLakeSettings.setAuthorizedSessionTagValueList(registeredTagValues);

    lakeformation.putDataLakeSettings(new PutDataLakeSettingsRequest().withDataLakeSettings(dataLakeSettings));
}
```

------

# Integrasi aplikasi untuk akses tabel penuh
<a name="full-table-credential-vending"></a>

Ikuti langkah-langkah berikut untuk mengaktifkan mesin kueri pihak ketiga mengakses data tanpa validasi tag sesi IAM: 

------
#### [ Console ]

1. Masuk ke konsol Lake Formation di [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. Di navigasi sisi kiri, perluas **Administrasi**, dan pilih Pengaturan **integrasi aplikasi**.

1. Pada halaman **Pengaturan integrasi aplikasi**, pilih opsi **Izinkan mesin eksternal mengakses data di lokasi Amazon S3 dengan akses tabel penuh**. 

   Saat Anda mengaktifkan opsi ini, Lake Formation mengembalikan kredensi ke aplikasi kueri secara langsung tanpa validasi tag sesi IAM. 

![\[Tangkapan layar menunjukkan halaman pengaturan Integrasi aplikasi untukLake Formation. Opsi Izinkan mesin eksternal mengakses data di lokasi Amazon S3 dengan akses tabel penuh dipilih.\]](http://docs.aws.amazon.com/id_id/lake-formation/latest/dg/images/cred-vending-external-full-table.png)


------
#### [ AWS CLI ]

Gunakan perintah `put-data-lake-settings` CLI untuk mengatur parameter. `AllowFullTableExternalDataAccess`

```
aws lakeformation put-data-lake-settings —cli-input-json file://put-data-lake-settings.json —region ap-northeast-1 
{
    "DataLakeSettings": {
        "DataLakeAdmins": [
            {
                "DataLakePrincipalIdentifier": "arn:aws:iam::111111111111:user/lakeAdmin"
            }
        ],
        "AllowFullTableExternalDataAccess": true
    }
}
```

------