Prasyarat untuk membuat basis pengetahuan Amazon Bedrock 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.

Prasyarat untuk membuat basis pengetahuan Amazon Bedrock dengan penyimpanan data terstruktur

Jika Anda berencana untuk menghubungkan basis pengetahuan Amazon Bedrock ke penyimpanan data terstruktur, Anda harus memenuhi prasyarat yang dijelaskan dalam topik ini.

penting

Mengeksekusi kueri SQL sewenang-wenang dapat menjadi risiko keamanan untuk aplikasi apa pun. Text-to-SQL Sebaiknya Anda mengambil tindakan pencegahan sesuai kebutuhan, seperti menggunakan peran terbatas, basis data hanya-baca, dan kotak pasir.

Tinjau topik berikut untuk memastikan bahwa Anda telah menyiapkan semua izin yang diperlukan.

Siapkan mesin kueri Amazon Redshift

Amazon Bedrock Knowledge Bases menggunakan Amazon Redshift sebagai mesin kueri untuk menanyakan penyimpanan data Anda. Jika data Anda sudah ada di mesin kueri yang disediakan Amazon Redshift atau tanpa server, Anda dapat melewati prasyarat ini. Jika tidak, siapkan salah satu jenis mesin kueri berikut:

Untuk menyiapkan 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 kluster yang disediakan Amazon Redshift, lihat klaster yang disediakan Amazon Redshift di Panduan Manajemen Pergeseran Merah Amazon.

Untuk menyiapkan mesin kueri di Amazon Redshift Tanpa Server
  1. Ikuti hanya prosedur penyiapan di Membuat gudang data dengan Amazon Redshift Tanpa Server di Panduan Memulai Amazon Redshift dan konfigurasikan dengan pengaturan default.

  2. Perhatikan ARN workgroup.

  3. (Opsional) Untuk informasi selengkapnya tentang workgroup Amazon Redshift Tanpa Server, lihat Workgroups dan namespace di Panduan Manajemen Amazon Redshift.

Kumpulkan informasi tentang database Anda

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

  • Amazon Redshift

  • AWS Glue Data Catalog (AWS Lake Formation)

catatan

Jika data Anda tidak berada di salah satu sumber data di atas, tetapi berada di penyimpanan data yang didukung untuk dirayapi AWS Glue, Anda dapat mengatur crawler untuk menulis penyimpanan data ke AWS Glue tabel dengan mengikuti langkah-langkah di Mengonfigurasi crawler di Panduan Pengembang. AWS Glue

Perhatikan informasi berikut saat Anda membuat basis pengetahuan:

  • Jika data Anda disimpan dalam database Amazon Redshift, catat nama database.

  • Jika data Anda disimpan di AWS Glue Data Catalog (Amazon SageMaker AI Lakehouse), catat nama-nama tabel yang Anda inginkan agar dapat diakses oleh basis pengetahuan Anda.

Lampirkan izin ke peran pengguna Anda

Agar peran IAM dapat melakukan tindakan yang terkait dengan Pangkalan Pengetahuan Amazon Bedrock, Anda harus melampirkan kebijakan ke peran yang memberikan izin untuk melakukan tindakan. Topik ini menjelaskan izin yang memungkinkan pengguna membuat dan mengelola basis pengetahuan yang terhubung ke penyimpanan data terstruktur. Ini juga menjelaskan izin yang memungkinkan pengguna untuk mengambil informasi dari basis pengetahuan ini dan menghasilkan tanggapan dari mereka.

Perluas bagian berikut untuk mempelajari cara mengatur izin untuk kasus penggunaan tertentu:

Untuk memungkinkan peran IAM membuat basis pengetahuan, menghubungkannya ke penyimpanan data terstruktur, mengelola basis pengetahuan, dan memulai dan mengelola pekerjaan konsumsi dari sumber data ke basis pengetahuan, Anda harus memberikan izin untuk,KnowledgeBase, DataSource dan tindakan. IngestionJob

catatan

Jika peran memiliki kebijakan AmazonBedrockFullAccess AWS terkelola yang dilampirkan, Anda dapat melewati prasyarat ini.

Untuk memberikan izin untuk menandai basis pengetahuan, sertakan izin untuk bedrock:TagResource dan. bedrock:UntagResource Untuk mengizinkan peran melakukan tindakan ini, lampirkan kebijakan berikut ke peran tersebut:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateKB", "Effect": "Allow", "Action": [ "bedrock:CreateKnowledgeBase" ], "Resource": "*" }, { "Sid": "KBDataSourceManagement", "Effect": "Allow", "Action": [ "bedrock:GetKnowledgeBase", "bedrock:ListKnowledgeBases", "bedrock:UpdateKnowledgeBase", "bedrock:DeleteKnowledgeBase", "bedrock:StartIngestionJob", "bedrock:GetIngestionJob", "bedrock:ListIngestionJobs", "bedrock:StopIngestionJob", "bedrock:TagResource", "bedrock:UntagResource" ], "Resource": [ "arn:${Partition}:bedrock:${Region}:${Account}:knowledge-base/*" ] } ] }

Setelah Anda membuat basis pengetahuan, sebaiknya Anda mencakupkan izin dalam KBDataSourceManagement statamen ke bawah dengan mengganti wildcard (*) dengan ID basis pengetahuan yang Anda buat.

Untuk mengizinkan peran IAM melakukan kueri basis pengetahuan yang terhubung ke penyimpanan data terstruktur, lampirkan kebijakan berikut ke peran tersebut:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetKB", "Effect": "Allow", "Action": [ "bedrock:GetKnowledgeBase" ], "Resource": [ "arn:${Partition}:bedrock:${Region}:${Account}:knowledge-base/${KnowledgeBaseId}" ] }, { "Sid": "GenerateQueryAccess", "Effect": "Allow", "Action": [ "bedrock:GenerateQuery", "sqlworkbench:GetSqlRecommendations" ], "Resource": "*" }, { "Sid": "Retrieve", "Effect": "Allow", "Action": [ "bedrock:Retrieve", ] "Resource": [ "arn:${Partition}:bedrock:${Region}:${Account}:knowledge-base/${KnowledgeBaseId}" ] }, { "Sid": "RetrieveAndGenerate", "Effect": "Allow", "Action": [ "bedrock:RetrieveAndGenerate", ] "Resource": [ "*" ] } ] }

Anda dapat menghapus pernyataan yang tidak Anda butuhkan, tergantung pada kasus penggunaan Anda:

  • GenerateQueryPernyataan GetKB dan diperlukan untuk memanggil GenerateQueryuntuk menghasilkan kueri SQL yang memperhitungkan kueri pengguna akun dan sumber data Anda yang terhubung.

  • RetrievePernyataan ini diperlukan untuk menelepon Retrieveuntuk mengambil data dari penyimpanan data terstruktur Anda.

  • RetrieveAndGeneratePernyataan ini diperlukan untuk menelepon RetrieveAndGenerateuntuk mengambil data dari penyimpanan data terstruktur Anda dan menghasilkan respons berdasarkan data.

Untuk membatasi izin lebih lanjut, Anda dapat menghilangkan tindakan, atau Anda dapat menentukan sumber daya dan kunci kondisi yang digunakan untuk memfilter izin. Untuk informasi selengkapnya tentang tindakan, sumber daya, dan kunci kondisi, lihat topik berikut di Referensi Otorisasi Layanan:

Membuat dan menyiapkan izin untuk peran layanan Amazon Bedrock Knowledge Bases Anda

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 AWS Management Console 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. Hubungan 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 memungkinkannya mengakses data Anda dan menghasilkan kueri yang menggunakannya:

{ "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:${Region}:${Account}: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 memungkinkan peran layanan Anda mengautentikasi ke mesin kueri. Perluas bagian untuk melihat izin untuk kasus penggunaan.

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetCredentialsWithFederatedIAMCredentials", "Effect": "Allow", "Action": "redshift:GetClusterCredentialsWithIAM", "Resource": [ "arn:aws:redshift:${region}:${account}:dbname:${cluster}/${database}" ] } }
catatan

Jika data Anda disimpan AWS Glue Data Catalog, ganti ${database} dengandev.

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetCredentialsWithClusterCredentials", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials" ], "Resource": [ "arn:aws:redshift:${region}:${account}:dbuser:${cluster}/${dbuser}", "arn:aws:redshift:${region}:${account}:dbname:${cluster}/${database}" ] } ] }

Untuk mengizinkan peran layanan Anda mengautentikasi ke mesin kueri yang disediakan Amazon Redshift Anda dengan rahasia, lakukan hal AWS Secrets Manager 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 bergantung pada metode otentikasi Anda. Perluas bagian untuk melihat izin untuk kasus penggunaan.

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftServerlessGetCredentials", "Effect": "Allow", "Action": "redshift-serverless:GetCredentials", "Resource": [ "arn:aws:redshift-serverless:${Region}:${Account}:workgroup:${WorkgroupId}" ] } }

Untuk mengizinkan peran layanan Anda mengautentikasi ke mesin kueri yang disediakan Amazon Redshift Anda dengan rahasia, lakukan hal AWS Secrets Manager 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}" ] } ] }

Berikan akses database ke peran yang Anda gunakan untuk otentikasi

Untuk memberikan akses database ke peran yang Anda gunakan untuk autentikasi, menggunakan editor kueri Amazon Redshift v2, jalankan perintah SQL berikut:

  1. (Jika Anda mengautentikasi dengan IAM dan pengguna belum dibuat untuk database Anda) Jalankan perintah berikut, yang menggunakan CREATE USER untuk membuat pengguna database dan memungkinkannya untuk mengautentikasi melalui IAM, ganti ${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 menyinkronkan 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 pengguna database untuk mengambil informasi dari database Anda dengan menjalankan perintah GRANT. Anda dapat membuat cakupan ke database, tabel, atau baris atau kolom tertentu dalam tabel dengan mengganti ${tableName} atau${dbName}.

    Jalankan perintah yang sesuai dengan layanan tempat data Anda disimpan:

    • Jika data Anda disimpan di Amazon Redshift, jalankan perintah yang sesuai dengan metode otentikasi Anda.

      IAM
      GRANT SELECT ON ${tableName} TO "IAMR:${serviceRole}";
      Database user
      GRANT SELECT ON ${tableName} TO "${dbUser}";
      AWS Secrets Manager username
      GRANT SELECT ON ${tableName} TO "IAMR:${secretsUsername}";
    • Jika data Anda disimpan AWS Glue Data Catalog, jalankan perintah yang sesuai dengan metode otentikasi Anda.

      IAM
      GRANT USAGE ON DATABASE ${schemaName} TO "IAMR:${serviceRole}";
      Database user
      GRANT USAGE ON DATABASE ${schemaName} TO "${dbUser}";
      AWS Secrets Manager username
      GRANT USAGE ON DATABASE ${schemaName} TO "${secretsUsername}";
    penting

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

(Jika data Anda disimpan di AWS Glue Data Catalog) Izin tambahan yang diperlukan

Baik Anda menggunakan peran layanan Amazon Bedrock Knowledge Bases yang dibuat untuk Anda atau peran kustom yang Anda buat sendiri, Anda perlu mengonfigurasi izin berikut untuk mengizinkan akses ke data Anda jika disimpan di: AWS Management Console AWS Glue Data Catalog

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

    { "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:${Region}:${Account}:table/${DatabaseName}/${TableName}", "arn:aws:glue:${Region}:${Account}:database/${DatabaseName}", "arn:aws:glue:${Region}:${Account}:catalog" ] } ] }
  • Berikan izin untuk peran layanan Anda melalui AWS Lake Formation (untuk mempelajari lebih lanjut tentang Lake Formation dan hubungannya dengan Amazon Redshift, lihat Redshift Spectrum AWS Lake Formation dan) dengan melakukan hal berikut:

    1. Masuk ke AWS Management Console, dan buka konsol Lake Formation 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 Pangkalan Pengetahuan Amazon Bedrock.

    4. Berikan izin Jelaskan dan Pilih untuk database dan tabel Anda.

  • Bergantung pada sumber data yang Anda gunakan AWS Glue Data Catalog, Anda mungkin juga 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}/*" ] }

Minta akses ke model pondasi untuk RetrieveAndGenerate

Jika Anda berencana untuk menggunakan RetrieveAndGenerateuntuk menghasilkan tanggapan berdasarkan data yang diambil dari sumber data Anda, minta akses ke model dasar yang akan digunakan untuk pembuatan dengan mengikuti langkah-langkah diAkses model fondasi Amazon Bedrock.