本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定您的查詢引擎和使用結構化資料存放區建立知識庫的許可
本主題說明將知識庫連線至結構化資料存放區時所需的許可。如果您計劃將 Amazon Bedrock 知識庫連接到結構化資料存放區,則需要滿足先決條件。如需要滿足的一般許可要求,請參閱 設定使用者或角色的許可,以建立和管理知識庫。
重要
執行任意 SQL 查詢可能是任何 Text-to-SQL 應用程式的安全風險。我們建議您視需要採取預防措施,例如使用受限的角色、唯讀資料庫和沙盒。
Amazon Bedrock 知識庫使用 Amazon Redshift 作為查詢引擎來查詢您的資料存放區。查詢引擎會從結構化資料存放區存取中繼資料,並使用中繼資料協助產生 SQL 查詢。Amazon Redshift 是一種資料倉儲服務,使用 SQL 分析跨資料倉儲、資料庫和資料湖的結構化資料。
建立 Amazon Redshift 查詢引擎
您可以根據您的使用案例使用 Amazon Redshift Serverless 或 Amazon Redshift Provisioned,並連接至資料倉儲的工作群組或叢集。Amazon Redshift 引擎可以查詢的基礎資料可以原生存放在 Amazon Redshift 叢集中的資料,或位於預設值下的資料 AWS Glue Data Catalog (例如 Amazon S3 等)。
如果您已建立查詢引擎,則可以略過此先決條件。否則,請執行下列步驟來設定 Amazon Redshift 佈建或 Amazon Redshift Serverless 查詢引擎:
在佈建的 Amazon Redshift 中設定查詢引擎
-
請記下叢集 ID。
-
(選用) 如需 Amazon Redshift 佈建叢集的詳細資訊,請參閱《Amazon Redshift 管理指南》中的 Amazon Redshift 佈建叢集。
在 Amazon Redshift Serverless 中設定查詢引擎
-
僅遵循《Amazon Redshift 入門指南》中的使用 Amazon Redshift Serverless 建立資料倉儲中的設定程序,並使用預設設定進行設定。
-
請注意工作群組 ARN。
-
(選用) 如需 Amazon Redshift Serverless 工作群組的詳細資訊,請參閱《Amazon Redshift 管理指南》中的工作群組和命名空間。
設定 Amazon Redshift 查詢引擎許可
根據您選擇的 Amazon Redshift 查詢引擎,您可以設定特定許可。您設定的許可取決於身分驗證方法。下表顯示可用於不同查詢引擎的身分驗證方法:
身分驗證方法 | Amazon Redshift 佈建 | Amazon Redshift Serverless |
---|---|---|
IAM |
![]() |
![]() |
資料庫使用者名稱 |
![]() |
![]() |
AWS Secrets Manager |
![]() |
![]() |
Amazon Bedrock 知識庫使用服務角色將知識庫連接到結構化資料存放區、從這些資料存放區擷取資料,並根據使用者查詢和資料存放區的結構產生 SQL 查詢。
注意
如果您打算使用 AWS Management Console 來建立知識庫,您可以略過此先決條件。主控台將建立具有適當許可的 Amazon Bedrock 知識庫服務角色。
若要建立具有適當許可的自訂 IAM 服務角色,請遵循建立角色中的步驟,將許可委派給 , AWS 服務並連接 中定義的信任關係信任關係。
然後,為您的知識庫新增存取 Amazon Redshift 查詢引擎和資料庫的許可。展開適用於您的使用案例的區段:
將下列政策連接到您的自訂服務角色,以允許它存取您的資料並使用它產生查詢:
{ "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": "*" } ] }
您也需要新增許可,以允許您的服務角色向查詢引擎進行身分驗證。展開區段以查看該方法的許可。
連接的許可取決於您的身分驗證方法。展開區段以查看方法的許可。
允許知識庫服務角色存取您的資料存放區
請確定您的資料存放在下列其中一個支援的結構化資料存放區:
Amazon Redshift
AWS Glue Data Catalog (AWS Lake Formation)
下表摘要說明查詢引擎可用的身分驗證方法,視您的資料存放區而定:
身分驗證方法 | Amazon Redshift | AWS Glue Data Catalog (AWS Lake Formation) |
---|---|---|
IAM |
![]() |
![]() |
資料庫使用者名稱 |
![]() |
![]() |
AWS Secrets Manager |
![]() |
![]() |
若要了解如何設定 Amazon Bedrock Knowledge Bases 服務角色的許可,以存取您的資料存放區並據此產生查詢,請展開對應至資料存放區所處服務的區段:
若要授予 Amazon Bedrock Knowledge Bases 服務角色存取 Amazon Redshift 資料庫的權限,請使用 Amazon Redshift 查詢編輯器 v2 並執行下列 SQL 命令:
-
(如果您使用 IAM 進行身分驗證,且尚未為資料庫建立使用者) 執行下列命令,該命令使用 CREATE USER 來建立資料庫使用者,並允許它透過 IAM 進行身分驗證,以您建立的自訂 Amazon Bedrock 知識庫服務角色名稱取代
${service-role}
:CREATE USER "IAMR:
${service-role}
" WITH PASSWORD DISABLE;重要
如果您使用在主控台中為您建立的 Amazon Bedrock Knowledge Bases 服務角色,然後在執行此步驟之前同步資料存放區,則會為您建立使用者,但同步會失敗,因為使用者尚未獲得存取資料存放區的許可。您必須在同步之前執行下列步驟。
-
執行 GRANT 命令,授予身分許可以從資料庫擷取資訊。
重要
請勿授予
CREATE
、UPDATE
或DELETE
存取權。授予這些動作可能會導致資料的意外修改。若要更精細地控制可存取的資料表,您可以使用下列表示法取代
ALL TABLES
特定資料表名稱:${schemaName}
${tableName}
。如需此表示法的詳細資訊,請參閱跨資料庫查詢中的查詢物件區段。 -
如果您在 Redshift 資料庫中建立新的結構描述,請執行下列命令來授予新結構描述的身分許可。
GRANT USAGE ON SCHEMA ${schemaName} TO "IAMR:${serviceRole}";
若要授予 Amazon Bedrock Knowledge Bases 服務角色存取 AWS Glue Data Catalog 資料存放區的權限,請使用 Amazon Redshift 查詢編輯器 v2 並執行下列 SQL 命令:
-
執行下列命令,該命令使用 CREATE USER 來建立資料庫使用者,並允許它透過 IAM 進行身分驗證,以您建立的自訂 Amazon Bedrock 知識庫服務角色名稱取代
${service-role}
:CREATE USER "IAMR:
${service-role}
" WITH PASSWORD DISABLE;重要
如果您使用在主控台中為您建立的 Amazon Bedrock Knowledge Bases 服務角色,然後在執行此步驟之前同步資料存放區,則會為您建立使用者,但同步會失敗,因為使用者尚未獲得存取資料存放區的許可。您必須在同步之前執行下列步驟。
-
執行下列 GRANT 命令,授予服務角色從資料庫擷取資訊的許可:
GRANT USAGE ON DATABASE awsdatacatalog TO "IAMR:
${serviceRole}
";重要
請勿授予
CREATE
、UPDATE
或DELETE
存取權。授予這些動作可能會導致資料的意外修改。 -
若要允許存取資料庫 AWS Glue Data Catalog ,請將下列許可連接至服務角色:
{ "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" ] } ] } -
透過 將許可授予您的服務角色 AWS Lake Formation (若要進一步了解 Lake Formation 及其與 Amazon Redshift 的關係,請參閱 Redshift 的資料來源),請執行下列動作:
-
登入 AWS Management Console,並在 https://https://console.aws.amazon.com/lakeformation/
開啟 Lake Formation 主控台。 -
從左側導覽窗格中選取資料許可。
-
將許可授予您用於 Amazon Bedrock 知識庫的服務角色。
-
授予 描述和選取資料庫和資料表的許可。
-
-
根據您在 中使用的資料來源 AWS Glue Data Catalog,您可能需要新增存取該資料來源的許可 (如需詳細資訊,請參閱AWS Glue 其他 的相依性 AWS 服務)。例如,如果您的資料來源位於 Amazon S3 位置,則需要將下列陳述式新增至上述政策。
{ "Sid": "Statement1", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::
${BucketName}
", "arn:aws:s3:::${BucketName}
/*" ] } -
(選用) 如果您使用 AWS KMS 來加密 Amazon S3 或 中的資料 AWS Glue Data Catalog,則需要將許可新增至角色,以解密 KMS 金鑰上的資料。
{ "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:${Region}:${Account}:key/{KmsId}", "arn:aws:kms:${Region}:${Account}:key/{KmsId}" ], "Effect": "Allow" }