

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

# Document-level kontrol akses
<a name="kb-managed-ds-custom-acl"></a>

**Kesadaran ACL bukanlah otorisasi**  
Basis Pengetahuan Terkelola Batuan Dasar menyediakan ACL-aware penyaringan, bukan batas keamanan. Basis Pengetahuan Terkelola Bedrock tidak mengautentikasi pengguna akhir — aplikasi Anda bertanggung jawab untuk mengautentikasi pengguna dan meneruskan konteks identitas terverifikasi. Karena Basis Pengetahuan Terkelola Bedrock tidak dapat memverifikasi keaslian konteks pengguna yang Anda berikan, fitur ini memfilter hasil berdasarkan identitas yang Anda berikan tetapi bukan merupakan otorisasi yang benar. Anda tidak boleh mengandalkan fitur ini sebagai mekanisme kontrol akses tunggal tanpa otentikasi hulu.

Sumber data khusus secara opsional mendukung kontrol akses tingkat dokumen. Tidak seperti konektor yang dirayapi, sumber data kustom tidak memiliki sistem izin asli, sehingga Anda menyediakan daftar kontrol akses (ACL) untuk setiap dokumen saat Anda menelannya dengan operasi. `IngestKnowledgeBaseDocuments` Untuk ikhtisar kesadaran ACL di semua konektor, lihat[Akses Kontrol Daftar pemberdayaan kesadaran](kb-managed-acl.md).

## Cara kerjanya
<a name="kb-managed-ds-custom-acl-how"></a>

Untuk sumber data ACL-enabled kustom, Basis Pengetahuan Terkelola Bedrock menerapkan daftar kontrol akses yang disediakan pelanggan selama pemfilteran pra-pengambilan, hanya mengembalikan dokumen yang diizinkan untuk diakses oleh pengguna kueri. Real-time Verifikasi ACL tidak didukung untuk sumber data khusus karena metadata ACL yang disediakan pelanggan adalah sumber kebenaran.

## Aktifkan kesadaran ACL
<a name="kb-managed-ds-custom-acl-enable"></a>

Untuk mengaktifkan kesadaran ACL untuk sumber data kustom, setel `aclEnabled` ke `true` `connectorParameters` saat Anda membuat atau memperbarui sumber data. Untuk struktur konfigurasi sumber data, lihat[Khusus](kb-managed-ds-custom.md).

```
"connectorParameters": {
    "type": "CUSTOM",
    "version": "1",
    "aclEnabled": true
}
```

## Menyediakan kontrol akses saat Anda menelan dokumen
<a name="kb-managed-ds-custom-acl-ingest"></a>

Anda memberikan ACL dokumen melalui `accessControlList` bidang pada dokumen `metadata` dalam `IngestKnowledgeBaseDocuments` permintaan. Sumber ACL ditentukan oleh`metadata.type`, bidang yang sama yang mengontrol dari mana atribut metadata berasal:
+ **`IN_LINE_ATTRIBUTE`**— ACL dibaca dari `accessControlList` array di badan permintaan.
+ **`S3_LOCATION`**— ACL dibaca dari `accessControlList` array dalam `.metadata.json` file dokumen di Amazon S3.

Karena `accessControlList` hidup di bawah `metadata` bukan sebagai bidang tingkat atas`KnowledgeBaseDocument`, dokumen memiliki sumber ACL tunggal, dikendalikan oleh. `metadata.type` Ini mencegah ACL yang bertentangan disediakan untuk dokumen yang sama (misalnya, ACL sebaris pada permintaan dan ACL dalam file S3). Penggantiannya adalah Anda tidak dapat mencampur ACL sebaris dengan atribut metadata, atau S3-based ACL dengan atribut S3-based metadata sebaris, untuk dokumen yang sama.

Setiap `accessControlList` entri berisi:
+ `name`— Alamat email pengguna.
+ `type`- Harus`USER`.
+ `access`- Entah `ALLOW` atau`DENY`. Tolak penggantian memungkinkan.

### ACL sebaris (metadata.type = IN\_LINE\_ATTRIBUTE)
<a name="kb-managed-ds-custom-acl-inline"></a>

Menyediakan `accessControlList` langsung di badan permintaan bersama atribut metadata inline.

```
PUT /knowledgebases/{{KB12345678}}/datasources/{{DS12345678}}/documents HTTP/1.1
Content-type: application/json

{
    "documents": [
        {
            "content": {
                "dataSourceType": "CUSTOM",
                "custom": {
                    "customDocumentIdentifier": {
                        "id": "hr-policy-2026"
                    },
                    "inlineContent": {
                        "textContent": {
                            "data": "Annual leave policy: All full-time employees are entitled to..."
                        },
                        "type": "TEXT"
                    },
                    "sourceType": "IN_LINE"
                }
            },
            "metadata": {
                "type": "IN_LINE_ATTRIBUTE",
                "inlineAttributes": [
                    {
                        "key": "department",
                        "value": { "stringValue": "HR", "type": "STRING" }
                    }
                ],
                "accessControlList": [
                    {
                        "name": "{{alice@example.com}}",
                        "type": "USER",
                        "access": "ALLOW"
                    },
                    {
                        "name": "{{bob@example.com}}",
                        "type": "USER",
                        "access": "DENY"
                    }
                ]
            }
        }
    ]
}
```

### S3-based ACL (metadata.type = S3\_LOKASI)
<a name="kb-managed-ds-custom-acl-s3"></a>

Arahkan metadata dokumen ke `.metadata.json` file di Amazon S3. Baik atribut metadata dan dibaca dari file itu. `accessControlList`

```
"metadata": {
    "type": "S3_LOCATION",
    "s3Location": {
        "uri": "s3://{{amzn-s3-demo-bucket}}/{{hr-policy-2026}}.metadata.json"
    }
}
```

`.metadata.json`File menggunakan format yang sama dengan file [metadata per dokumen untuk sumber data Amazon](kb-managed-ds-s3-acl.md#kb-managed-ds-s3-acl-perdoc) S3. File ini menggunakan nama bidang ACL yang dikapitalisasi (`Name``Type`,,`Access`), yang berbeda dari nama bidang huruf kecil (`name`,`type`,`access`) yang digunakan dalam permintaan sebaris.

```
{
    "metadataAttributes": {},
    "accessControlList": [
        {
            "Name": "{{alice@example.com}}",
            "Type": "USER",
            "Access": "ALLOW"
        },
        {
            "Name": "{{bob@example.com}}",
            "Type": "USER",
            "Access": "DENY"
        }
    ]
}
```

## Verifikasi konfigurasi Anda
<a name="kb-managed-ds-custom-acl-verify"></a>

Karena ACL Kustom disediakan oleh pelanggan`IngestKnowledgeBaseDocuments`, validasi sebelum Anda melakukan kueri:

1. Konfirmasi `aclEnabled` ada `true` di sumber data `connectorParameters` (`type``CUSTOM`).

1. Konfirmasikan setiap dokumen yang dicerna menyertakan `accessControlList` under`metadata`, dan yang `metadata.type` cocok dengan sumber ACL (`IN_LINE_ATTRIBUTE`untuk inline, `S3_LOCATION` untuk file S3).

1. Konfirmasikan casing bidang entri ACL cocok dengan sumber: huruf kecil`name`/`type`/`access`untuk ACL sebaris, dikapitalisasi`Name`//`Type`untuk file S3. `Access` `.metadata.json`

1. Konfirmasikan email pengguna pengujian sama persis dengan `ALLOW` entri `name` dalam dokumen yang Anda harapkan untuk diambil.

## Pemecahan masalah
<a name="kb-managed-ds-custom-acl-troubleshooting"></a>

**catatan**  
Kesalahan konfigurasi ACL tidak menghasilkan kesalahan eksplisit selama pengambilan. Pengambilan gagal ditutup: dokumen yang terpengaruh dihilangkan secara diam-diam, sehingga kueri mengembalikan hasil yang lebih sedikit atau nol daripada kesalahan. Gunakan pemeriksaan verifikasi di atas untuk mendiagnosis masalah ini.


**ACL-enabled Gejala, penyebab, dan perbaikan khusus**  

| Gejala | Kemungkinan penyebabnya | Perbaiki | 
| --- | --- | --- | 
| Retrieve mengembalikan 0 hasil untuk pengguna yang seharusnya memiliki akses. | userIdEmail tidak cocok dengan accessControlList entri apa pun. | Sejajarkan email pengguna dengan ALLOW entri name dalam. | 
| ACL inline ditolak atau diabaikan. | Casing lapangan salah, atau metadata.type tidakIN\_LINE\_ATTRIBUTE. | Gunakan huruf kecilname/type/accessdan atur metadata.type ke. IN\_LINE\_ATTRIBUTE | 
|  S3-based ACL tidak diterapkan. | metadata.typetidakS3\_LOCATION, atau .metadata.json filenya hilangaccessControlList. | Setel metadata.type ke S3\_LOCATION dan sertakan accessControlList dalam file. | 
| Dokumen tidak pernah dikembalikan kepada siapa pun. | Dokumen itu dicerna tanpa file. accessControlList | Re-ingest dokumen denganaccessControlList. | 