設定您的查詢引擎和使用結構化資料存放區建立知識庫的許可 - Amazon Bedrock

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定您的查詢引擎和使用結構化資料存放區建立知識庫的許可

本主題說明將知識庫連線至結構化資料存放區時所需的許可。如果您計劃將 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 中設定查詢引擎
  1. 請遵循《Amazon Redshift 入門指南》中的步驟 1:建立範例 Amazon Redshift 叢集

  2. 請記下叢集 ID。

  3. (選用) 如需 Amazon Redshift 佈建叢集的詳細資訊,請參閱《Amazon Redshift 管理指南》中的 Amazon Redshift 佈建叢集

在 Amazon Redshift Serverless 中設定查詢引擎
  1. 僅遵循《Amazon Redshift 入門指南》中的使用 Amazon Redshift Serverless 建立資料倉儲中的設定程序,並使用預設設定進行設定。

  2. 請注意工作群組 ARN。

  3. (選用) 如需 Amazon Redshift Serverless 工作群組的詳細資訊,請參閱《Amazon Redshift 管理指南》中的工作群組和命名空間

設定 Amazon Redshift 查詢引擎許可

根據您選擇的 Amazon Redshift 查詢引擎,您可以設定特定許可。您設定的許可取決於身分驗證方法。下表顯示可用於不同查詢引擎的身分驗證方法:

身分驗證方法 Amazon Redshift 佈建 Amazon Redshift Serverless
IAM Green circular icon with a white checkmark symbol inside. Green circular icon with a white checkmark symbol inside.
資料庫使用者名稱 Green circular icon with a white checkmark symbol inside. Red circular icon with an X symbol, indicating cancellation or denial.
AWS Secrets Manager Green circular icon with a white checkmark symbol inside. Green circular icon with a white checkmark symbol inside.

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

您也需要新增許可,以允許您的服務角色向查詢引擎進行身分驗證。展開區段以查看該方法的許可。

IAM

若要讓您的服務角色使用 IAM 驗證 Amazon Redshift 佈建查詢引擎,請將下列政策連接至您的自訂服務角色:

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

若要驗證 Amazon Redshift 資料庫使用者身分,請將下列政策連接至服務角色:

{ "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

若要讓您的服務角色使用 AWS Secrets Manager 秘密對您的 Amazon Redshift 佈建查詢引擎進行身分驗證,請執行下列動作:

  • 將下列政策連接至角色:

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

連接的許可取決於您的身分驗證方法。展開區段以查看方法的許可。

IAM

若要讓您的服務角色使用 IAM 驗證 Amazon Redshift 無伺服器查詢引擎,請將下列政策連接至您的自訂服務角色:

{ "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

若要讓您的服務角色使用 AWS Secrets Manager 秘密對您的 Amazon Redshift 佈建查詢引擎進行身分驗證,請執行下列動作:

  • 將下列政策連接至角色:

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

允許知識庫服務角色存取您的資料存放區

請確定您的資料存放在下列其中一個支援的結構化資料存放區:

  • Amazon Redshift

  • AWS Glue Data Catalog (AWS Lake Formation)

下表摘要說明查詢引擎可用的身分驗證方法,視您的資料存放區而定:

身分驗證方法 Amazon Redshift AWS Glue Data Catalog (AWS Lake Formation)
IAM Green circular icon with a white checkmark symbol inside. Green circular icon with a white checkmark symbol inside.
資料庫使用者名稱 Green circular icon with a white checkmark symbol inside. Red circular icon with an X symbol, indicating cancellation or denial.
AWS Secrets Manager Green circular icon with a white checkmark symbol inside. Red circular icon with an X symbol, indicating cancellation or denial.

若要了解如何設定 Amazon Bedrock Knowledge Bases 服務角色的許可,以存取您的資料存放區並據此產生查詢,請展開對應至資料存放區所處服務的區段:

若要授予 Amazon Bedrock Knowledge Bases 服務角色存取 Amazon Redshift 資料庫的權限,請使用 Amazon Redshift 查詢編輯器 v2 並執行下列 SQL 命令:

  1. (如果您使用 IAM 進行身分驗證,且尚未為資料庫建立使用者) 執行下列命令,該命令使用 CREATE USER 來建立資料庫使用者,並允許它透過 IAM 進行身分驗證,以您建立的自訂 Amazon Bedrock 知識庫服務角色名稱取代 ${service-role}

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

    如果您使用在主控台中為您建立的 Amazon Bedrock Knowledge Bases 服務角色,然後在執行此步驟之前同步資料存放區,則會為您建立使用者,但同步會失敗,因為使用者尚未獲得存取資料存放區的許可。您必須在同步之前執行下列步驟。

  2. 執行 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}";
    重要

    請勿授予 CREATEUPDATEDELETE存取權。授予這些動作可能會導致資料的意外修改。

    若要更精細地控制可存取的資料表,您可以使用下列表示法取代ALL TABLES特定資料表名稱:${schemaName}${tableName}。如需此表示法的詳細資訊,請參閱跨資料庫查詢中的查詢物件區段。

    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. 如果您在 Redshift 資料庫中建立新的結構描述,請執行下列命令來授予新結構描述的身分許可。

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

若要授予 Amazon Bedrock Knowledge Bases 服務角色存取 AWS Glue Data Catalog 資料存放區的權限,請使用 Amazon Redshift 查詢編輯器 v2 並執行下列 SQL 命令:

  1. 執行下列命令,該命令使用 CREATE USER 來建立資料庫使用者,並允許它透過 IAM 進行身分驗證,以您建立的自訂 Amazon Bedrock 知識庫服務角色名稱取代 ${service-role}

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

    如果您使用在主控台中為您建立的 Amazon Bedrock Knowledge Bases 服務角色,然後在執行此步驟之前同步資料存放區,則會為您建立使用者,但同步會失敗,因為使用者尚未獲得存取資料存放區的許可。您必須在同步之前執行下列步驟。

  2. 執行下列 GRANT 命令,授予服務角色從資料庫擷取資訊的許可:

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

    請勿授予 CREATEUPDATEDELETE存取權。授予這些動作可能會導致資料的意外修改。

  3. 若要允許存取資料庫 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" ] } ] }
  4. 透過 將許可授予您的服務角色 AWS Lake Formation (若要進一步了解 Lake Formation 及其與 Amazon Redshift 的關係,請參閱 Redshift 的資料來源),請執行下列動作:

    1. 登入 AWS Management Console,並在 https://https://console.aws.amazon.com/lakeformation/ 開啟 Lake Formation 主控台。

    2. 從左側導覽窗格中選取資料許可

    3. 將許可授予您用於 Amazon Bedrock 知識庫的服務角色。

    4. 授予 描述選取資料庫和資料表的許可。

  5. 根據您在 中使用的資料來源 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}/*" ] }
  6. (選用) 如果您使用 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" }