View a markdown version of this page

Siapkan mesin kueri dan izin untuk membuat basis pengetahuan dengan penyimpanan data terstruktur - Amazon Bedrock

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

Siapkan mesin kueri dan izin untuk membuat basis pengetahuan dengan penyimpanan data terstruktur

Topik ini menjelaskan izin yang Anda perlukan saat menghubungkan basis pengetahuan Anda ke penyimpanan data terstruktur. Jika Anda berencana untuk menghubungkan basis pengetahuan Amazon Bedrock ke penyimpanan data terstruktur, Anda harus memenuhi prasyarat. Untuk persyaratan izin umum yang harus dipenuhi, lihatMenyiapkan izin untuk pengguna atau peran untuk membuat dan mengelola basis pengetahuan.

penting

Mengeksekusi query SQL arbitrer dapat menjadi risiko keamanan untuk Text-to-SQL aplikasi apa pun. Sebaiknya lakukan tindakan pencegahan sesuai kebutuhan, seperti menggunakan peran terbatas, database read-only, dan sandboxing.

Basis Pengetahuan Amazon Bedrock menggunakan Amazon Redshift sebagai mesin kueri untuk menanyakan penyimpanan data Anda. Mesin kueri mengakses metadata dari penyimpanan data terstruktur dan menggunakan metadata untuk membantu menghasilkan kueri SQL. Amazon Redshift adalah layanan gudang data yang menggunakan SQL untuk menganalisis data terstruktur di seluruh gudang data, database, dan danau data.

Buat mesin kueri Amazon Redshift

Anda dapat menggunakan Amazon Redshift Serverless atau Amazon Redshift Provisioned tergantung pada kasus penggunaan Anda, dan terhubung ke grup kerja atau cluster untuk gudang data Anda. Data dasar yang dapat ditanyakan oleh mesin Amazon Redshift dapat berupa data yang disimpan secara asli di cluster Amazon Redshift, atau data yang terletak di bawah default AWS Glue Data Catalog (seperti di Amazon S3 antara lain).

Jika Anda telah membuat mesin kueri, Anda dapat melewati prasyarat ini. Jika tidak, lakukan langkah-langkah berikut untuk mengatur mesin kueri Amazon Redshift yang disediakan atau Amazon Redshift Serverless Anda:

Untuk mengatur mesin kueri di Amazon Redshift disediakan
  1. Ikuti prosedur di Langkah 1: Buat contoh cluster Amazon Redshift di Panduan Memulai Amazon Redshift.

  2. Perhatikan ID cluster.

  3. (Opsional) Untuk informasi selengkapnya tentang cluster yang disediakan Amazon Redshift, lihat cluster yang disediakan Amazon Redshift di Panduan Manajemen Amazon Redshift.

Cara mengatur mesin kueri di Amazon Redshift Serverless
  1. Ikuti hanya prosedur penyiapan di Membuat gudang data dengan Amazon Redshift Serverless di Panduan Memulai Amazon Redshift dan konfigurasikan dengan pengaturan default.

  2. Perhatikan kelompok kerja ARN.

  3. (Opsional) Untuk informasi selengkapnya tentang grup kerja tanpa server Amazon Redshift, lihat Kelompok kerja dan ruang nama di Panduan Manajemen Amazon Redshift.

Konfigurasikan izin mesin kueri Amazon Redshift

Bergantung pada mesin kueri Amazon Redshift yang Anda pilih, Anda dapat mengonfigurasi izin tertentu. Izin yang Anda konfigurasikan bergantung pada metode otentikasi. Tabel berikut menunjukkan metode otentikasi yang dapat digunakan untuk mesin kueri yang berbeda:

Metode otentikasi Amazon Redshift Disediakan Amazon Redshift Tanpa Server
IAM supported Ya supported Ya
Nama pengguna database supported Ya not-supported Tidak
AWS Secrets Manager supported Ya supported Ya

Amazon Bedrock Knowledge Bases menggunakan peran layanan untuk menghubungkan basis pengetahuan ke penyimpanan data terstruktur, mengambil data dari penyimpanan data ini, dan menghasilkan kueri SQL berdasarkan kueri pengguna dan struktur penyimpanan data.

catatan

Jika Anda berencana untuk menggunakan Konsol Manajemen AWS untuk membuat basis pengetahuan, Anda dapat melewati prasyarat ini. Konsol akan membuat peran layanan Amazon Bedrock Knowledge Bases dengan izin yang tepat.

Untuk membuat peran layanan IAM kustom dengan izin yang tepat, ikuti langkah-langkah di Buat peran untuk mendelegasikan izin ke Layanan AWS dan melampirkan hubungan kepercayaan yang ditentukan diHubungan kepercayaan.

Kemudian, tambahkan izin untuk basis pengetahuan Anda untuk mengakses mesin kueri dan database Amazon Redshift Anda. Perluas bagian yang berlaku untuk kasus penggunaan Anda:

Lampirkan kebijakan berikut ke peran layanan kustom Anda untuk mengizinkannya mengakses data Anda dan menghasilkan kueri menggunakannya:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "RedshiftDataAPIStatementPermissions", "Effect": "Allow", "Action": [ "redshift-data:GetStatementResult", "redshift-data:DescribeStatement", "redshift-data:CancelStatement" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "redshift-data:statement-owner-iam-userid": "${aws:userid}" } } }, { "Sid": "RedshiftDataAPIExecutePermissions", "Effect": "Allow", "Action": [ "redshift-data:ExecuteStatement" ], "Resource": [ "arn:aws:redshift:us-east-1:123456789012:cluster:${Cluster}" ] }, { "Sid": "SqlWorkbenchAccess", "Effect": "Allow", "Action": [ "sqlworkbench:GetSqlRecommendations", "sqlworkbench:PutSqlGenerationContext", "sqlworkbench:GetSqlGenerationContext", "sqlworkbench:DeleteSqlGenerationContext" ], "Resource": "*" }, { "Sid": "GenerateQueryAccess", "Effect": "Allow", "Action": [ "bedrock:GenerateQuery" ], "Resource": "*" } ] }

Anda juga perlu menambahkan izin untuk mengizinkan peran layanan Anda untuk mengotentikasi ke mesin kueri. Perluas bagian untuk melihat izin untuk metode itu.

IAM

Untuk mengizinkan peran layanan Anda diautentikasi ke mesin kueri yang disediakan Amazon Redshift dengan IAM, lampirkan kebijakan berikut ke peran layanan kustom Anda:

JSON
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "GetCredentialsWithFederatedIAMCredentials", "Effect": "Allow", "Action": "redshift:GetClusterCredentialsWithIAM", "Resource": [ "arn:aws:redshift:us-east-1:123456789012:dbname:Cluster/database" ] } ] }
Database user

Untuk mengotentikasi sebagai pengguna database Amazon Redshift, lampirkan kebijakan berikut ke peran layanan:

JSON
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "GetCredentialsWithClusterCredentials", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials" ], "Resource": [ "arn:aws:redshift:us-east-1:123456789012:dbuser:${cluster}/${dbuser}", "arn:aws:redshift:us-east-1:123456789012:dbname:${cluster}/${database}" ] } ] }
AWS Secrets Manager

Untuk mengizinkan peran layanan Anda mengotentikasi ke mesin kueri yang disediakan Amazon Redshift dengan AWS Secrets Manager rahasia, lakukan hal berikut:

  • Lampirkan kebijakan berikut ke peran:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "GetSecretPermissions", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:${region}:${account}:secret:${secretName}" ] } ] }

Izin untuk melampirkan tergantung pada metode otentikasi Anda. Perluas bagian untuk melihat izin untuk suatu metode.

IAM

Untuk mengizinkan peran layanan Anda diautentikasi ke mesin kueri tanpa server Amazon Redshift dengan IAM, lampirkan kebijakan berikut ke peran layanan kustom Anda:

JSON
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "RedshiftServerlessGetCredentials", "Effect": "Allow", "Action": "redshift-serverless:GetCredentials", "Resource": [ "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/WorkgroupId" ] } ] }
AWS Secrets Manager

Untuk mengizinkan peran layanan Anda mengotentikasi ke mesin kueri yang disediakan Amazon Redshift dengan AWS Secrets Manager rahasia, lakukan hal berikut:

  • Lampirkan kebijakan berikut ke peran:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "GetSecretPermissions", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:${region}:${account}:secret:${secretName}" ] } ] }

Izinkan peran layanan basis pengetahuan untuk mengakses penyimpanan data Anda

Pastikan data Anda disimpan di salah satu penyimpanan data terstruktur yang didukung berikut ini:

  • Amazon Redshift

  • AWS Glue Data Catalog (AWS Lake Formation)

Tabel berikut merangkum metode otentikasi yang tersedia untuk mesin kueri, tergantung pada penyimpanan data Anda:

Metode otentikasi Amazon Redshift AWS Glue Data Catalog (AWS Lake Formation)
IAM supported Ya supported Ya
Nama pengguna database supported Ya not-supported Tidak
AWS Secrets Manager supported Ya not-supported Tidak

Untuk mempelajari cara mengatur izin untuk peran layanan Amazon Bedrock Knowledge Bases Anda untuk mengakses penyimpanan data Anda dan menghasilkan kueri berdasarkan itu, perluas bagian yang sesuai dengan layanan tempat penyimpanan data Anda berada:

Untuk memberikan akses peran layanan Amazon Bedrock Knowledge Bases ke database Amazon Redshift Anda, gunakan editor kueri Amazon Redshift v2 dan jalankan perintah SQL berikut:

  1. (Jika Anda melakukan otentikasi dengan IAM dan pengguna belum dibuat untuk database Anda) Jalankan perintah berikut, yang menggunakan CREATE USER untuk membuat pengguna database dan mengizinkannya untuk mengotentikasi melalui IAM, diganti ${service-role} dengan nama peran layanan Amazon Bedrock Knowledge Bases kustom yang Anda buat:

    CREATE USER "IAMR:${service-role}" WITH PASSWORD DISABLE;
    penting

    Jika Anda menggunakan peran layanan Amazon Bedrock Knowledge Bases yang dibuat untuk Anda di konsol dan kemudian menyin kronkan penyimpanan data Anda sebelum Anda melakukan langkah ini, pengguna akan dibuat untuk Anda, tetapi sinkronisasi akan gagal karena pengguna belum diberikan izin untuk mengakses penyimpanan data Anda. Anda harus melakukan langkah berikut sebelum menyinkronkan.

  2. Berikan izin identitas untuk mengambil informasi dari database Anda dengan menjalankan perintah GRANT.

    IAM
    GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "IAMR:${serviceRole}";
    Database user
    GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "${dbUser}";
    AWS Secrets Manager username
    GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "${secretsUsername}";
    penting

    Jangan memberikanCREATE,UPDATE, atau DELETE akses. Memberikan tindakan ini dapat menyebabkan modifikasi data Anda yang tidak diinginkan.

    Untuk kontrol berbutir lebih halus pada tabel yang dapat diakses, Anda dapat mengganti nama tabel ALL TABLES tertentu dengan notasi berikut:. ${schemaName} ${tableName} Untuk informasi selengkapnya tentang notasi ini, lihat bagian objek Query di Cross-database query.

    IAM
    GRANT SELECT ON ${schemaName}.${tableName} TO "IAMR:${serviceRole}";
    Database user
    GRANT SELECT ON ${schemaName}.${tableName} TO "${dbUser}";
    AWS Secrets Manager username
    GRANT SELECT ON ${schemaName}.${tableName} TO "${secretsUsername}";
  3. Jika Anda membuat skema baru di database Redshift, jalankan perintah berikut untuk memberikan izin identitas terhadap skema baru.

    GRANT USAGE ON SCHEMA ${schemaName} TO "IAMR:${serviceRole}";

Untuk memberikan akses peran layanan Amazon Bedrock Knowledge Bases ke penyimpanan AWS Glue Data Catalog data Anda, gunakan editor kueri Amazon Redshift v2 dan jalankan perintah SQL berikut:

  1. Jalankan perintah berikut, yang menggunakan CREATE USER untuk membuat pengguna database dan mengizinkannya untuk mengotentikasi melalui IAM, menggantikan ${service-role} dengan nama peran layanan Amazon Bedrock Knowledge Bases kustom yang Anda buat:

    CREATE USER "IAMR:${service-role}" WITH PASSWORD DISABLE;
    penting

    Jika Anda menggunakan peran layanan Amazon Bedrock Knowledge Bases yang dibuat untuk Anda di konsol dan kemudian menyin kronkan penyimpanan data Anda sebelum Anda melakukan langkah ini, pengguna akan dibuat untuk Anda, tetapi sinkronisasi akan gagal karena pengguna belum diberikan izin untuk mengakses penyimpanan data Anda. Anda harus melakukan langkah berikut sebelum menyinkronkan.

  2. Berikan izin peran layanan untuk mengambil informasi dari database Anda dengan menjalankan perintah GRANT berikut:

    GRANT USAGE ON DATABASE awsdatacatalog TO "IAMR:${serviceRole}";
    penting

    Jangan memberikanCREATE,UPDATE, atau DELETE akses. Memberikan tindakan ini dapat menyebabkan modifikasi data Anda yang tidak diinginkan.

  3. Untuk mengizinkan akses ke AWS Glue Data Catalog database Anda, lampirkan izin berikut ke peran layanan:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "glue:GetDatabases", "glue:GetDatabase", "glue:GetTables", "glue:GetTable", "glue:GetPartitions", "glue:GetPartition", "glue:SearchTables" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:table/${DatabaseName}/${TableName}", "arn:aws:glue:us-east-1:123456789012:database/${DatabaseName}", "arn:aws:glue:us-east-1:123456789012:catalog" ] } ] }
  4. Berikan izin ke peran layanan Anda melalui AWS Lake Formation (untuk mempelajari lebih lanjut tentang Formasi Danau dan hubungannya dengan Amazon Redshift, lihat Sumber data untuk Redshift) dengan melakukan hal berikut:

    penting

    Anda juga harus menambahkan lakeformation:GetDataAccess tindakan ke kebijakan IAM peran layanan Amazon Bedrock Knowledge Bases Anda. Tanpa izin ini, kueri ke basis pengetahuan akan gagal dengan kesalahan otorisasi. Tambahkan pernyataan berikut ke kebijakan peran layanan:

    { "Effect": "Allow", "Action": "lakeformation:GetDataAccess", "Resource": "*" }
    1. Masuk ke Konsol Manajemen AWS, dan buka konsol Formasi Danau di https://console.aws.amazon.com/lakeformation/.

    2. Pilih Izin data dari panel navigasi kiri.

    3. Berikan izin ke peran layanan yang Anda gunakan untuk Basis Pengetahuan Amazon Bedrock.

    4. Berikan izin Des kripsikan dan Pilih untuk database dan tabel Anda.

  5. Bergantung pada sumber data yang Anda gunakan AWS Glue Data Catalog, Anda mungkin perlu menambahkan izin untuk mengakses sumber data tersebut (untuk informasi selengkapnya, lihat AWS Glue ketergantungan pada yang lain Layanan AWS). Misalnya, jika sumber data Anda berada di lokasi Amazon S3, Anda harus menambahkan pernyataan berikut ke kebijakan di atas.

    { "Sid": "Statement1", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::${BucketName}", "arn:aws:s3:::${BucketName}/*" ] }
  6. (Opsional) Jika Anda menggunakan AWS KMS untuk mengenkripsi data di Amazon S3 atau AWS Glue Data Catalog, maka Anda perlu menambahkan izin ke peran untuk mendekripsi data pada kunci KMS.

    { "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:${Region}:${Account}:key/{KmsId}", "arn:aws:kms:${Region}:${Account}:key/{KmsId}" ], "Effect": "Allow" }