Siapkan mesin kueri dan izin Anda 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 Anda 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 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.

Amazon Bedrock Knowledge Bases 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 data lake.

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 native di cluster Amazon Redshift, atau data yang terletak di bawah default ( AWS Glue Data Catalog seperti di Amazon S3 antara lain).

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

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.

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 query yang berbeda:

Metode otentikasi Amazon Redshift Disediakan Amazon Redshift Tanpa Server
IAM Green circular icon with a white checkmark symbol inside. Ya Green circular icon with a white checkmark symbol inside. Ya
Nama pengguna basis data Green circular icon with a white checkmark symbol inside. Ya Red circular icon with an X symbol, indicating cancellation or denial. Tidak
AWS Secrets Manager Green circular icon with a white checkmark symbol inside. Ya Green circular icon with a white checkmark symbol inside. Ya

Pangkalan Pengetahuan Amazon Bedrock 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 metode itu.

IAM

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}" ] } }
Database user

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}" ] } ] }
AWS Secrets Manager

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 suatu metode.

IAM

Untuk mengizinkan peran layanan Anda mengautentikasi ke mesin kueri tanpa server Amazon Redshift Anda 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}" ] } ] }
AWS Secrets Manager

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}" ] } ] }

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 Green circular icon with a white checkmark symbol inside. Ya Green circular icon with a white checkmark symbol inside. Ya
Nama pengguna basis data Green circular icon with a white checkmark symbol inside. Ya Red circular icon with an X symbol, indicating cancellation or denial. Tidak
AWS Secrets Manager Green circular icon with a white checkmark symbol inside. Ya Red circular icon with an X symbol, indicating cancellation or denial. Tidak

Untuk mempelajari cara menyiapkan izin untuk peran layanan Pangkalan Pengetahuan Amazon Bedrock 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, gunakan editor kueri Amazon Redshift v2 dan 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 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. Pemberian tindakan ini dapat menyebabkan modifikasi data Anda yang tidak diinginkan.

    Untuk kontrol berbutir 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 Query objects di Cross-database queries.

    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 dalam 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, gunakan editor kueri Amazon Redshift v2 dan jalankan perintah SQL berikut:

  1. 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 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. Pemberian 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:

    { "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" ] } ] }
  4. Berikan izin ke peran layanan Anda melalui AWS Lake Formation (untuk mempelajari lebih lanjut tentang Lake Formation dan hubungannya dengan Amazon Redshift, lihat Sumber data untuk Redshift) 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.

  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 AWS Glue Data Catalog atau, 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" }