

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

# Mengontrol akses pengguna ke dokumen dengan token
<a name="create-index-access-control"></a>

**catatan**  
Dukungan fitur bervariasi menurut jenis indeks dan API pencarian yang digunakan. Untuk melihat apakah fitur ini didukung untuk jenis indeks dan API penelusuran yang Anda gunakan, lihat [Jenis indeks](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html).

**penting**  
Indeks Amazon Kendra GenAI Enterprise Edition tidak mendukung kontrol akses pengguna berbasis token.

Anda dapat mengontrol pengguna atau grup mana yang dapat mengakses dokumen tertentu dalam indeks Anda atau melihat dokumen tertentu di hasil pencarian mereka. Ini disebut penyaringan konteks pengguna. Ini adalah semacam pencarian yang dipersonalisasi dengan manfaat mengendalikan akses ke dokumen. Misalnya, tidak semua tim yang mencari informasi di portal perusahaan harus mengakses dokumen perusahaan yang sangat rahasia, juga dokumen ini tidak relevan untuk semua pengguna. Hanya pengguna atau grup tim tertentu yang diberi akses ke dokumen rahasia yang harus melihat dokumen-dokumen ini di hasil pencarian mereka.

Amazon Kendra Indeks Perusahaan dan Pengembang mendukung kontrol akses pengguna berbasis token menggunakan jenis token berikut:
+ ID terbuka
+ JWT dengan rahasia bersama
+ JWT dengan kunci publik
+ JSON

Amazon Kendra dapat digunakan untuk memberikan pencarian perusahaan yang aman untuk aplikasi pengambilan dan pencarian Anda. Selama kueri dan pengambilan, Amazon Kendra filter hasil pencarian berdasarkan `AttributeFilters` dan `UserContext` disediakan dalam permintaan. Amazon Kendra membaca daftar kontrol akses dokumen (ACLs) yang dikumpulkan oleh konektornya selama perayapan dan konsumsi. Hasil pengambilan dan pencarian kembali URLs menunjuk kembali ke repositori dokumen asli ditambah kutipan singkat. Akses ke dokumen lengkap masih diberlakukan oleh repositori asli.

**Topics**
+ [Menggunakan OpenID](create-index-access-control-tokens-openid.md)
+ [Menggunakan JSON Web Token (JWT) dengan rahasia bersama](create-index-access-control-tokens-jwtshared.md)
+ [Menggunakan JSON Web Token (JWT) dengan kunci publik](create-index-access-control-tokens-jwtpublic.md)
+ [Menggunakan JSON](create-index-access-control-tokens-json.md)

# Menggunakan OpenID
<a name="create-index-access-control-tokens-openid"></a>

Untuk mengonfigurasi Amazon Kendra indeks untuk menggunakan token OpenID untuk kontrol akses, Anda memerlukan URL JWKS (JSON Web Key Set) dari penyedia OpenID. Dalam kebanyakan kasus, URL JWKS dalam format berikut (jika mereka mengikuti penemuan OpenID). `https://domain-name/.well_known/jwks.json` 

Contoh berikut menunjukkan cara menggunakan token OpenID untuk kontrol akses pengguna saat Anda membuat indeks.

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

1. Pilih **Buat indeks** untuk mulai membuat indeks baru.

1. Pada **Tentukan detail indeks**, beri indeks Anda nama dan deskripsi. 

1. Untuk **IAM peran**, pilih peran atau pilih **Buat peran baru** dan tentukan nama peran untuk membuat peran baru. Peran IAM akan memiliki awalan "AmazonKendra-”. 

1. Biarkan bidang lain dengan defaultnya. Pilih **Berikutnya**.

1. Di halaman **Konfigurasikan kontrol akses pengguna**, di bawah **Pengaturan kontrol akses**, pilih **Ya** untuk menggunakan token untuk kontrol akses. 

1. Di bawah **Konfigurasi token**, pilih **OpenID** sebagai **Jenis token**. 

1. Menentukan **URL kunci penandatanganan**. URL harus mengarah ke satu set kunci web JSON. 

1. *Opsional* Pada **Konfigurasi lanjutan**: 

   1. Tentukan **Nama pengguna** untuk digunakan dalam pemeriksaan ACL. 

   1. Tentukan satu atau lebih **Grup** untuk digunakan dalam pemeriksaan ACL. 

   1. Tentukan **Penerbit** yang akan memvalidasi penerbit token. 

   1. Tentukan **Id Klien**. Anda harus menentukan ekspresi reguler yang sesuai dengan audiens di JWT.

1. Di halaman **Detail penyediaan**, pilih **Edisi Developer**.

1. Pilih **Buat** untuk membuat indeks Anda.

1. Tunggu indeks Anda dibuat. Amazon Kendra menyediakan perangkat keras untuk indeks Anda. Operasi ini dapat memakan waktu lama.

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

Untuk membuat indeks dengan AWS CLI menggunakan file input JSON, pertama buat file JSON dengan parameter yang Anda inginkan:

```
{
    "Name": "user-context",
    "Edition": "ENTERPRISE_EDITION",
    "RoleArn": "arn:aws:iam::account-id:role:/my-role",
    "UserTokenConfigurations": [
        {
            "JwtTokenTypeConfiguration": {
                "KeyLocation": "URL",
                "Issuer": "optional: specify the issuer url",
                "ClaimRegex": "optional: regex to validate claims in the token",
                "UserNameAttributeField": "optional: user",
                "GroupAttributeField": "optional: group",
                "URL": "https://example.com/.well-known/jwks.json"
            }
        }
    ],
    "UserContextPolicy": "USER_TOKEN"
}
```

Anda dapat mengganti nama bidang pengguna dan grup default. Nilai default untuk `UserNameAttributeField` adalah "user". Nilai default untuk `GroupAttributeField` adalah "groups". 

Selanjutnya, panggil `create-index` menggunakan file input. Misalnya, jika nama file JSON Anda adalah `create-index-openid.json`, Anda dapat menggunakan yang berikut ini: 

```
aws kendra create-index --cli-input-json file://create-index-openid.json
```

------
#### [ Python ]

```
response = kendra.create_index(
    Name='user-context',
    Edition='ENTERPRISE_EDITION',
    RoleArn='arn:aws:iam::account-id:role:/my-role',
    UserTokenConfigurations=[
        {
            "JwtTokenTypeConfiguration": {
                "KeyLocation": "URL",
                "Issuer": "optional: specify the issuer url",
                "ClaimRegex": "optional: regex to validate claims in the token",
                "UserNameAttributeField": "optional: user",
                "GroupAttributeField": "optional: group",
                "URL": "https://example.com/.well-known/jwks.json"
            }
        }
    ],
    UserContextPolicy='USER_TOKEN'
)
```

------

# Menggunakan JSON Web Token (JWT) dengan rahasia bersama
<a name="create-index-access-control-tokens-jwtshared"></a>

Contoh berikut menunjukkan cara menggunakan JSON Web Token (JWT) dengan token rahasia bersama untuk kontrol akses pengguna saat Anda membuat indeks. 

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

1. Pilih **Buat indeks** untuk mulai membuat indeks baru.

1. Pada **Tentukan detail indeks**, beri indeks Anda nama dan deskripsi.

1. Untuk **IAM role**, pilih peran atau pilih **Buat peran baru** dan tentukan nama peran untuk membuat peran baru. IAM Peran akan memiliki awalan "AmazonKendra-”.

1. Biarkan bidang lain dengan defaultnya. Pilih **Berikutnya**.

1. Di halaman **Konfigurasikan kontrol akses pengguna**, di bawah **Pengaturan kontrol akses**, pilih **Ya** untuk menggunakan token untuk kontrol akses.

1. Di bawah **Konfigurasi token**, pilih **JWT dengan rahasia bersama** sebagai **Jenis token**.

1. Di bawah **Parameter untuk menandatangani rahasia bersama**, pilih **Jenis rahasia**. Anda dapat menggunakan rahasia bersama AWS Secrets Manager atau membuat rahasia bersama baru.

   Untuk membuat rahasia bersama baru, pilih **Baru**, lalu ikuti langkah-langkah ini:

   1. Di bawah ** AWS Secrets Manager Rahasia baru**, tentukan **nama Rahasia**. Awalan `AmazonKendra-` akan ditambahkan saat Anda menyimpan kunci publik.

   1. Tentukan **ID kunci**. Kunci tersebut adalah petunjuk yang menunjukkan kunci yang digunakan untuk mengamankan tanda tangan web JSON (JWS) token.

   1. Pilih **Algoritme** penandatanganan untuk token. Ini adalah algoritme kriptografi yang digunakan untuk mengamankan token ID. Untuk informasi selengkapnya tentang RSA, lihat [Kriptografi RSA](https://tools.ietf.org/html/rfc3447).

   1. Tentukan **rahasia Bersama dengan memasukkan rahasia** yang dikodekan URL base64. Anda juga dapat memilih **Hasilkan rahasia** untuk membuat rahasia untuk Anda. Anda harus memastikan rahasianya adalah rahasia yang dikodekan URL base64.

   1. (*Opsional*) Tentukan kapan rahasia bersama valid. Anda dapat menentukan tanggal dan waktu berlaku atau berakhirnya rahasia, atau keduanya. Rahasia akan berlaku dalam interval yang ditentukan.

   1. Pilih **Simpan rahasia** untuk menyimpan rahasia baru.

1. (*Opsional*) Di bawah **Konfigurasi lanjutan**:

   1. Tentukan **Nama pengguna** untuk digunakan dalam pemeriksaan ACL.

   1. Tentukan satu atau lebih **Grup** untuk digunakan dalam pemeriksaan ACL.

   1. Tentukan **Penerbit** yang akan memvalidasi penerbit token.

   1. Tentukan **ID Klaim**. Anda harus menentukan ekspresi reguler yang cocok dengan audiens di JWT.

1. Di halaman **Detail penyediaan**, pilih **Edisi Developer**.

1. Pilih **Buat** untuk membuat indeks Anda.

1. Tunggu indeks Anda dibuat. Amazon Kendra menyediakan perangkat keras untuk indeks Anda. Operasi ini dapat memakan waktu lama.

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

Anda dapat menggunakan token JWT dengan rahasia bersama di dalamnya. AWS Secrets Manager Rahasianya harus berupa rahasia yang dikodekan URL base64. Anda memerlukan Secrets Manager ARN, dan Amazon Kendra peran Anda harus memiliki akses ke sumber `GetSecretValue` daya. Secrets Manager Jika Anda mengenkripsi Secrets Manager sumber daya dengan AWS KMS, peran juga harus memiliki akses ke tindakan dekripsi.

Untuk membuat indeks dengan AWS CLI menggunakan file input JSON, pertama buat file JSON dengan parameter yang Anda inginkan: 

```
{
    "Name": "user-context",
    "Edition": "ENTERPRISE_EDITION",
    "RoleArn": "arn:aws:iam::account-id:role:/my-role",
    "UserTokenConfigurations": [
        {
            "JwtTokenTypeConfiguration": {
                "KeyLocation": "SECRET_MANAGER",
                "Issuer": "optional: specify the issuer url",
                "ClaimRegex": "optional: regex to validate claims in the token",
                "UserNameAttributeField": "optional: user",
                "GroupAttributeField": "optional: group",
                "SecretManagerArn": "arn:aws:secretsmanager:us-west-2:account id:secret:/my-user-context-secret
            }
        }
    ],    
    "UserContextPolicy": "USER_TOKEN"
}
```

Anda dapat mengganti nama bidang pengguna dan grup default. Nilai default untuk `UserNameAttributeField` adalah "user". Nilai default untuk `GroupAttributeField` adalah "groups". 

Selanjutnya, panggil `create-index` menggunakan file input. Misalnya, jika nama file JSON Anda adalah `create-index-openid.json`, Anda dapat menggunakan yang berikut ini: 

```
aws kendra create-index --cli-input-json file://create-index-openid.json
```

Rahasianya harus memiliki format berikut di AWS Secrets Manager:

```
{
  "keys": [
    {
      "kid": "key_id",
      "alg": "HS256|HS384|HS512",
      "kty": "OCT", 
      "use": "sig", //this value can be sig only for now
      "k": "secret",
      "nbf":"ISO1806 date format"
      "exp":"ISO1806 date format"
    }
  ]
}
```

Untuk informasi selengkapnya tentang JWT, lihat [jwt.io](http://jwt.io).

------
#### [ Python ]

Anda dapat menggunakan token JWT dengan rahasia bersama di dalamnya. AWS Secrets Manager Rahasianya harus berupa rahasia yang dikodekan URL base64. Anda memerlukan Secrets Manager ARN, dan Amazon Kendra peran Anda harus memiliki akses ke sumber `GetSecretValue` daya. Secrets Manager Jika Anda mengenkripsi Secrets Manager sumber daya dengan AWS KMS, peran juga harus memiliki akses ke tindakan dekripsi.

```
response = kendra.create_index(
    Name='user-context',
    Edition='ENTERPRISE_EDITION',
    RoleArn='arn:aws:iam::account-id:role:/my-role',
    UserTokenConfigurations=[
        {
            "JwtTokenTypeConfiguration": {
                "KeyLocation": "URL",
                "Issuer": "optional: specify the issuer url",
                "ClaimRegex": "optional: regex to validate claims in the token",
                "UserNameAttributeField": "optional: user",
                "GroupAttributeField": "optional: group",
                "SecretManagerArn": "arn:aws:secretsmanager:us-west-2:account id:secret:/my-user-context-secret"
            }
        }
    ],
    UserContextPolicy='USER_TOKEN'
)
```

------

# Menggunakan JSON Web Token (JWT) dengan kunci publik
<a name="create-index-access-control-tokens-jwtpublic"></a>

Contoh berikut menunjukkan cara menggunakan JSON Web Token (JWT) dengan kunci publik untuk kontrol akses pengguna saat Anda membuat indeks. Untuk informasi selengkapnya tentang JWT, lihat [jwt.io](http://jwt.io).

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

1. Pilih **Buat indeks** untuk mulai membuat indeks baru.

1. Pada **Tentukan detail indeks**, beri indeks Anda nama dan deskripsi. 

1. Untuk **IAM role**, pilih peran atau pilih **Buat peran baru** dan tentukan nama peran untuk membuat peran baru. IAM Peran akan memiliki awalan "AmazonKendra-”.

1. Biarkan bidang lain dengan defaultnya. Pilih **Berikutnya**.

1. Di halaman **Konfigurasikan kontrol akses pengguna**, di bawah **Pengaturan kontrol akses**, pilih **Ya** untuk menggunakan token untuk kontrol akses.

1. Pada **Konfigurasi token**, pilih **JWT dengan kunci publik** sebagai **Jenis token**.

1. Di bawah **Parameter untuk menandatangani kunci publik**, pilih **Jenis rahasia**. Anda dapat menggunakan rahasia AWS Secrets Manager yang ada atau membuat rahasia bersama baru.

   Untuk membuat rahasia baru, pilih **Baru**, lalu ikuti langkah-langkah ini:

   1. Di bawah ** AWS Secrets Manager Rahasia baru**, tentukan **nama Rahasia**. Awalan `AmazonKendra-` akan ditambahkan saat Anda menyimpan kunci publik.

   1. Tentukan **ID kunci**. Kunci tersebut adalah petunjuk yang menunjukkan kunci yang digunakan untuk mengamankan tanda tangan web JSON (JWS) token.

   1. Pilih **Algoritme** penandatanganan untuk token. Ini adalah algoritme kriptografi yang digunakan untuk mengamankan token ID. Untuk informasi selengkapnya tentang RSA, lihat [Kriptografi RSA](https://tools.ietf.org/html/rfc3447).

   1. Pada **Atribut sertifikat**, tentukan **Rangkaian sertifikat** *opsional*. Rangkaian sertifikat terdiri dari daftar beberapa sertifikat. Rangkaian ini dimulai dengan sertifikat server dan berakhir dengan sertifikat akar.

   1. *Opsional* Tentukan **Sidik jari jempol atau sidik jari**. Ini harus berupa hash sertifikat, dikomputasi atas semua data sertifikat dan tanda tangannya.

   1. Tentukan **Eksponen**. Ini adalah nilai eksponen untuk kunci publik RSA. Hal ini direpresentasikan sebagai nilai base64Url UInt -encoded.

   1. Tentukan **Modulus**. Ini adalah nilai eksponen untuk kunci publik RSA. Hal ini direpresentasikan sebagai nilai base64Url UInt -encoded.

   1. Pilih **Simpan kunci** untuk menyimpan kunci baru.

1. *Opsional* Pada **Konfigurasi lanjutan**:

   1. Tentukan **Nama pengguna** untuk digunakan dalam pemeriksaan ACL.

   1. Tentukan satu atau lebih **Grup** untuk digunakan dalam pemeriksaan ACL.

   1. Tentukan **Penerbit** yang akan memvalidasi penerbit token.

   1. Tentukan **Id Klien**. Anda harus menentukan ekspresi reguler yang sesuai dengan audiens di JWT.

1. Di halaman **Detail penyediaan**, pilih **Edisi Developer**.

1. Pilih **Buat** untuk membuat indeks Anda.

1. Tunggu indeks Anda dibuat. Amazon Kendra menyediakan perangkat keras untuk indeks Anda. Operasi ini dapat memakan waktu lama.

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

Anda dapat menggunakan JWT dengan kunci publik di dalam AWS Secrets Manager. Anda memerlukan Secrets Manager ARN, dan Amazon Kendra peran Anda harus memiliki akses ke sumber `GetSecretValue` daya. Secrets Manager Jika Anda mengenkripsi Secrets Manager sumber daya dengan AWS KMS, peran juga harus memiliki akses ke tindakan dekripsi.

Untuk membuat indeks dengan AWS CLI menggunakan file input JSON, pertama buat file JSON dengan parameter yang Anda inginkan:

```
{
    "Name": "user-context",
    "Edition": "ENTERPRISE_EDITION",
    "RoleArn": "arn:aws:iam::account id:role:/my-role",
    "UserTokenConfigurationList": [
        {
            "JwtTokenTypeConfiguration": {
                "KeyLocation": "SECRET_MANAGER",
                "Issuer": "optional: specify the issuer url",
                "ClaimRegex": "optional: regex to validate claims in the token",
                "UserNameAttributeField": "optional: user",
                "GroupAttributeField": "optional: group",
                "SecretManagerArn": "arn:aws:secretsmanager:us-west-2:account id:secret:/my-user-context-secret
            }
        }
    ],    "UserContextPolicy": "USER_TOKEN"
}
```

Anda dapat mengganti nama bidang pengguna dan grup default. Nilai default untuk `UserNameAttributeField` adalah "user". Nilai default untuk `GroupAttributeField` adalah "groups".

Selanjutnya, panggil `create-index` menggunakan file input. Misalnya, jika nama file JSON Anda adalah `create-index-openid.json`, Anda dapat menggunakan yang berikut ini:

```
aws kendra create-index --cli-input-json file://create-index-openid.json
```

Rahasianya harus memiliki format berikut di Secrets Manager:

```
{
  "keys": [
    {
      "alg": "RS256|RS384|RS512",
      "kty": "RSA", //this can be RSA only for now
      "use": "sig", //this value can be sig only for now
      "n": "modulus of standard pem",
      "e": "exponent of standard pem",
      "kid": "key_id",
      "x5t": "certificate thumprint for x.509 cert",
      "x5c": [
        "certificate chain"
      ]
    }
  ]
}
```

Untuk informasi selengkapnya tentang JWT, lihat [jwt.io](http://jwt.io).

------
#### [ Python ]

```
response = kendra.create_index(
    Name='user-context',
    Edition='ENTERPRISE_EDITION',
    RoleArn='arn:aws:iam::account id:role:/my-role',
    UserTokenConfigurationList=[
        {
            "JwtTokenTypeConfiguration": {
                "KeyLocation": "URL",
                "Issuer": "optional: specify the issuer url",
                "ClaimRegex": "optional: regex to validate claims in the token",
                "UserNameAttributeField": "optional: user",
                "GroupAttributeField": "optional: group",
                "SecretManagerArn": "arn:aws:secretsmanager:us-west-2:account id:secret:/my-user-context-secret"
            }
        }
    ],
    UserContextPolicy='USER_TOKEN'
)
```

------

# Menggunakan JSON
<a name="create-index-access-control-tokens-json"></a>

Contoh berikut menunjukkan cara menggunakan JSON untuk kontrol akses pengguna saat Anda membuat indeks.

**Awas**  
Token JSON adalah muatan yang tidak divalidasi. Ini hanya boleh digunakan ketika permintaan Amazon Kendra datang dari server tepercaya dan tidak pernah dari browser. 

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

1. Pilih **Buat indeks** untuk mulai membuat indeks baru.

1. Pada **Tentukan detail indeks**, beri indeks Anda nama dan deskripsi. 

1. Untuk **IAM peran**, pilih peran atau pilih **Buat peran baru** dan tentukan nama peran untuk membuat peran baru. IAM Peran akan memiliki awalan "AmazonKendra-”. 

1. Biarkan bidang lain dengan defaultnya. Pilih **Berikutnya**.

1. Di halaman **Konfigurasikan kontrol akses pengguna**, di bawah **Pengaturan kontrol akses**, pilih **Ya** untuk menggunakan token untuk kontrol akses. 

1. Di bawah **Konfigurasi token**, pilih **JSON** sebagai **Jenis token**. 

1. Tentukan **nama Pengguna** yang akan digunakan dalam pemeriksaan ACL.

1. Tentukan satu atau lebih **Grup** untuk digunakan dalam pemeriksaan ACL.

1. Pilih **Berikutnya**.

1. Di halaman **Detail penyediaan**, pilih **Edisi Developer**.

1. Pilih **Buat** untuk membuat indeks Anda.

1. Tunggu indeks Anda dibuat. Amazon Kendra menyediakan perangkat keras untuk indeks Anda. Operasi ini dapat memakan waktu lama.

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

Untuk membuat indeks dengan AWS CLI menggunakan file input JSON, pertama buat file JSON dengan parameter yang Anda inginkan:

```
{
    "Name": "user-context",
    "Edition": "ENTERPRISE_EDITION",
    "RoleArn": "arn:aws:iam::account-id:role:/my-role",
    "UserTokenConfigurations": [
        {
            "JsonTokenTypeConfiguration": {
                "UserNameAttributeField": "user",
                "GroupAttributeField": "group"
            }
        }
    ],
    "UserContextPolicy": "USER_TOKEN"
}
```

Selanjutnya, panggil `create-index` menggunakan file input. Misalnya, jika nama file JSON Anda adalah `create-index-openid.json`, Anda dapat menggunakan yang berikut ini: 

```
aws kendra create-index --cli-input-json file://create-index-openid.json
```

Jika Anda tidak menggunakan Open ID untuk AWS IAM Identity Center, Anda dapat mengirimkan token dalam format JSON kepada kami. Jika demikian, Anda harus menentukan bidang mana dalam token JSON yang berisi nama pengguna dan bidang mana yang berisi grup. Nilai bidang grup harus berupa array string JSON. Misalnya, jika menggunakan SAML, token Anda akan seperti berikut:

```
{
     "username" : "user1", 
     "groups": [
        "group1", 
        "group2"
     ]
}
```

`TokenConfiguration` akan menentukan nama pengguna dan nama bidang grup:

```
{
    "UserNameAttributeField":"username",
    "GroupAttributeField":"groups"
}
```

------
#### [ Python ]

```
response = kendra.create_index(
    Name='user-context',
    Edition='ENTERPRISE_EDITION',
    RoleArn='arn:aws:iam::account-id:role:/my-role',
    UserTokenConfigurations=[
        {
            "JwtTokenTypeConfiguration": {
                "UserNameAttributeField": "user",
                "GroupAttributeField": "group",
            }
        }
    ],
    UserContextPolicy='USER_TOKEN'
)
```

------