Configurar um mecanismo de consulta e permissões para criar uma base de conhecimento - Amazon Bedrock

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar um mecanismo de consulta e permissões para criar uma base de conhecimento

Este tópico descreve as permissões das quais você precisa ao conectar sua base de conhecimento a um armazenamento de dados estruturados. Se você planeja conectar uma base de conhecimento do Amazon Bedrock a um armazenamento de dados estruturados, precisa cumprir os pré-requisitos. Para atender aos requisitos gerais de permissão, consulte Configurar permissões para um usuário ou perfil para criar e gerenciar bases de conhecimento.

Importante

A execução de consultas SQL arbitrárias pode ser um risco de segurança para qualquer aplicativo. Text-to-SQL Recomendamos que você tome medidas preventivas conforme necessário, como usar perfis restritos, bancos de dados somente para leitura e sandbox.

As Bases de Conhecimento do Amazon Bedrock usam o Amazon Redshift como mecanismos de consulta para consultar seu datastore. Um mecanismo de consulta acessa metadados de um armazenamento de dados estruturados e usa os metadados para ajudar a gerar consultas SQL. O Amazon Redshift é um serviço de data warehouse que usa SQL para analisar dados estruturados em data warehouses, bancos de dados e data lakes.

Criar um mecanismo de consulta do Amazon Redshift

Você pode usar o Amazon Redshift sem servidor ou o Amazon Redshift provisionado, dependendo do seu caso de uso, e conectar-se a grupos de trabalho ou clusters para seu data warehouse. Os dados subjacentes que o mecanismo do Amazon Redshift pode consultar podem ser dados armazenados nativamente em clusters do Amazon Redshift ou dados localizados abaixo do padrão AWS Glue Data Catalog (como no Amazon S3, entre outros).

Se já tiver criado um mecanismo de consulta, você poderá ignorar esse pré-requisito. Do contrário, execute as seguintes etapas para configurar o mecanismo de consulta do Amazon Redshift provisionado ou do Amazon Redshift sem servidor:

Como configurar um mecanismo de consulta no Amazon Redshift provisionado
  1. Siga o procedimento em Etapa 1: Criar um cluster de amostra do Amazon Redshift no “Guia de conceitos básicos do Amazon Redshift” para criar um cluster.

  2. Anote o ID do cluster.

  3. (Opcional) Para ter mais informações sobre clusters provisionados do Amazon Redshift, consulte Cluster provisionados do Amazon Redshift no “Guia de gerenciamento de clusters do Amazon Redshift”.

Como configurar um mecanismo de consulta no Amazon Redshift sem servidor
  1. Siga somente o procedimento de configuração em Criar um data warehouse com o Amazon Redshift sem servidor no “Guia de conceitos básicos do Amazon Redshift” e configure-o com as configurações padrão.

  2. Anote o ARN do grupo de trabalho.

  3. (Opcional) Para ter mais informações sobre grupos de trabalho do Amazon Redshift sem servidor, consulte Grupos de trabalho e namespaces no “Guia de gerenciamento do Amazon Redshift”.

Configurar permissões do mecanismo de consulta do Amazon Redshift

Dependendo do mecanismo de consulta do Amazon Redshift que escolher, você poderá configurar determinadas permissões. As permissões que você configura dependem do método de autenticação. A seguinte tabela mostra os métodos de autenticação que podem ser usados para diferentes mecanismos de consulta:

Método de autenticação Amazon Redshift provisionado Amazon Redshift Sem Servidor
IAM Green circular icon with a white checkmark symbol inside. Sim Green circular icon with a white checkmark symbol inside. Sim
Nome de usuário do banco de dados Green circular icon with a white checkmark symbol inside. Sim Red circular icon with an X symbol, indicating cancellation or denial. Não
AWS Secrets Manager Green circular icon with a white checkmark symbol inside. Sim Green circular icon with a white checkmark symbol inside. Sim

As Bases de Conhecimento do Amazon Bedrock usam um perfil de serviço para conectar bases de conhecimento a armazenamentos de dados estruturados, recuperar dados desses armazenamentos de dados e gerar consultas SQL com base nas consultas do usuário e na estrutura dos datastores.

nota

Se você planeja usar o Console de gerenciamento da AWS para criar uma base de conhecimento, pode ignorar esse pré-requisito. O console criará um perfil de serviço das Bases de Conhecimento do Amazon Bedrock com as permissões adequadas.

Para criar um perfil de serviço personalizado do IAM com as permissões adequadas, siga as etapas em Criar um perfil para delegar permissões a um AWS service (Serviço da AWS) e anexar a relação de confiança definida em Relação de confiança.

Em seguida, adicione permissões para que a base de conhecimento acesse seu mecanismo de consulta e bancos de dados do Amazon Redshift. Expanda a seção que se aplica ao seu caso de uso:

Anexe a seguinte política ao perfil de serviço personalizado para permitir que ele acesse seus dados e gere consultas usando esses dados:

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

Também é necessário adicionar permissões para possibilitar que o perfil de serviço se autentique no mecanismo de consulta. Expanda uma seção para ver as permissões do respectivo método.

IAM

Para permitir que o perfil de serviço se autentique em seu mecanismo de consulta provisionado do Amazon Redshift com o IAM, anexe a seguinte política ao perfil de serviço personalizado:

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

Para se autenticar como usuário do banco de dados do Amazon Redshift, anexe a seguinte política ao perfil de serviço:

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

Para permitir que sua função de serviço se autentique em seu mecanismo de consulta provisionado do Amazon Redshift com AWS Secrets Manager um segredo, faça o seguinte:

  • Anexe a seguinte política ao perfil:

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

As permissões para anexar dependem do método de autenticação. Expanda uma seção para ver as permissões do método em questão.

IAM

Para permitir que o perfil de serviço se autentique em seu mecanismo de consulta do Amazon Redshift sem servidor com o IAM, anexe a seguinte política ao perfil de serviço personalizado:

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

Para permitir que sua função de serviço se autentique em seu mecanismo de consulta provisionado do Amazon Redshift com AWS Secrets Manager um segredo, faça o seguinte:

  • Anexe a seguinte política ao perfil:

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

Permitir que o perfil de serviço da base de conhecimento acesse seu datastore

Seus dados devem estar armazenados em um dos seguintes armazenamentos de dados estruturados compatíveis:

  • banco de dados de origem

  • AWS Glue Data Catalog(AWS Lake Formation)

A seguinte tabela resume os métodos de autenticação disponíveis para o mecanismo de consulta, dependendo do datastore:

Método de autenticação banco de dados de origem AWS Glue Data Catalog(AWS Lake Formation)
IAM Green circular icon with a white checkmark symbol inside. Sim Green circular icon with a white checkmark symbol inside. Sim
Nome de usuário do banco de dados Green circular icon with a white checkmark symbol inside. Sim Red circular icon with an X symbol, indicating cancellation or denial. Não
AWS Secrets Manager Green circular icon with a white checkmark symbol inside. Sim Red circular icon with an X symbol, indicating cancellation or denial. Não

Para saber como configurar permissões para que o perfil de serviço das Bases de Conhecimento do Amazon Bedrock acesse o datastore e gere consultas com base nele, expanda a seção que corresponde ao serviço em que o datastore está:

Para conceder ao perfil de serviço das Bases de Conhecimento do Amazon Bedrock acesso ao banco de dados do Amazon Redshift, use o Editor de consultas V2 do Amazon Redshift e execute os seguintes comandos SQL:

  1. (Se você se autenticar com o IAM e um usuário ainda não tiver sido criado para seu banco de dados) Execute o comando a seguir, que usa CREATE USER para criar um usuário de banco de dados e permitir que ele se autentique por meio do IAM, ${service-role} substituindo-o pelo nome da função de serviço personalizada do Amazon Bedrock Knowledge Bases que você criou:

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

    Se você usar o perfil de serviço das Bases de Conhecimento do Amazon Bedrock criado para você no console e depois sincronizar o datastore antes de executar essa etapa, o usuário será criado para você, mas a sincronização falhará porque o usuário não recebeu permissões para acessar seu datastore. Você deve executar a etapa a seguir antes de sincronizar.

  2. Conceda permissões de identidade para recuperar informações do banco de dados executando o comando 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 Managerusername
    GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "${secretsUsername}";
    Importante

    Não acesso para CREATE, UPDATE ou DELETE. Ao conceder essas ações, seus poderão ser modificados de maneira não desejada.

    Para um controle mais refinado das tabelas que podem ser acessadas, você pode substituir nomes ALL TABLES específicos de tabelas pela seguinte notação:. ${schemaName} ${tableName} Para ter mais informações sobre essa notação, consulte a seção Objetos de consulta em Consultas entre bancos de dados.

    IAM
    GRANT SELECT ON ${schemaName}.${tableName} TO "IAMR:${serviceRole}";
    Database user
    GRANT SELECT ON ${schemaName}.${tableName} TO "${dbUser}";
    AWS Secrets Managerusername
    GRANT SELECT ON ${schemaName}.${tableName} TO "${secretsUsername}";
  3. Se você criou um esquema no banco de dados do Redshift, execute o comando a seguir para conceder permissões de identidade em relação ao novo esquema.

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

Para conceder à sua função de serviço do Amazon Bedrock Knowledge Bases acesso ao seu armazenamento de AWS Glue Data Catalog dados, use o editor de consultas v2 do Amazon Redshift e execute os seguintes comandos SQL:

  1. Execute o comando a seguir, que usa CREATE USER para criar um usuário de banco de dados e permitir que ele se autentique por meio do IAM, ${service-role} substituindo-o pelo nome da função de serviço personalizada do Amazon Bedrock Knowledge Bases que você criou:

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

    Se você usar o perfil de serviço das Bases de Conhecimento do Amazon Bedrock criado para você no console e depois sincronizar o datastore antes de executar essa etapa, o usuário será criado para você, mas a sincronização falhará porque o usuário não recebeu permissões para acessar seu datastore. Você deve executar a etapa a seguir antes de sincronizar.

  2. Conceda ao perfil de serviço permissões para recuperar informações do banco de dados executando o seguinte comando GRANT:

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

    Não acesso para CREATE, UPDATE ou DELETE. Ao conceder essas ações, seus poderão ser modificados de maneira não desejada.

  3. Para permitir o acesso aos seus AWS Glue Data Catalog bancos de dados, anexe as seguintes permissões à função de serviço:

    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. Conceda permissões para sua função de serviço por meio AWS Lake Formation (para saber mais sobre o Lake Formation e seu relacionamento com o Amazon Redshift, consulte Fontes de dados para Redshift) fazendo o seguinte:

    1. Faça login noConsole de gerenciamento da AWS, e abra o console do Lake Formation em https://console.aws.amazon.com/lakeformation/.

    2. Selecione Permissões de dados no painel de navegação à esquerda.

    3. Conceda permissões ao perfil de serviço que você está usando para as Bases de Conhecimento do Amazon Bedrock.

    4. Conceda as permissões Descrever e Selecionar para seus bancos de dados e tabelas.

  5. Dependendo da fonte de dados em que você usaAWS Glue Data Catalog, talvez seja necessário adicionar permissões para acessar essa fonte de dados (para obter mais informações, consulte AWS Gluedependência de outras Serviços da AWS). Por exemplo, se a fonte de dados estiver em um local do Amazon S3, você precisará adicionar a declaração a seguir à política acima.

    { "Sid": "Statement1", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::${BucketName}", "arn:aws:s3:::${BucketName}/*" ] }
  6. (Opcional) Se você usa AWS KMS para criptografar os dados no Amazon S3 AWS Glue Data Catalog ou, então você precisa adicionar permissões à função para descriptografar os dados na chave KMS.

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