Configure seu mecanismo de consulta e permissões para criar uma base de conhecimento com armazenamento de dados estruturado - 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á.

Configure seu mecanismo de consulta e permissões para criar uma base de conhecimento com armazenamento de dados estruturado

Este tópico descreve as permissões que você precisa ao conectar sua base de conhecimento a um armazenamento de dados estruturado. Se você planeja conectar uma base de conhecimento do Amazon Bedrock a um armazenamento de dados estruturado, precisa cumprir os pré-requisitos. Para que os requisitos gerais de permissões sejam atendidos, consulteConfigurar permissões para um usuário ou função 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 precauções conforme necessário, como usar funções restritas, bancos de dados somente para leitura e sandboxing.

O Amazon Bedrock Knowledge Bases usa o Amazon Redshift como mecanismo de consulta para consultar seu armazenamento de dados. Um mecanismo de consulta acessa metadados de um armazenamento de dados estruturado e usa os metadados para ajudar a gerar consultas SQL. O Amazon Redshift é um serviço de armazém de dados que usa SQL para analisar dados estruturados em armazéns de dados, bancos de dados e lagos de dados.

Crie um mecanismo de consulta do Amazon Redshift

Você pode usar o Amazon Redshift Serverless ou o Amazon Redshift Provisioned, dependendo do seu caso de uso, e conectar-se a grupos de trabalho ou clusters para seu armazém de dados. 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 você já criou um mecanismo de consulta, pode ignorar esse pré-requisito. Caso contrário, execute as seguintes etapas para configurar seu mecanismo de consulta provisionado do Amazon Redshift ou Amazon Redshift Serverless:

Para configurar um mecanismo de consulta no Amazon Redshift provisionado
  1. Siga o procedimento na Etapa 1: Crie um exemplo de cluster do Amazon Redshift no Guia de introdução do Amazon Redshift.

  2. Anote o ID do cluster.

  3. (Opcional) Para obter mais informações sobre clusters provisionados do Amazon Redshift, consulte Clusters provisionados do Amazon Redshift no Guia de Gerenciamento do Amazon Redshift.

Para configurar um mecanismo de consulta no Amazon Redshift Serverless
  1. Siga somente o procedimento de configuração em Criação de um data warehouse com o Amazon Redshift Serverless no Guia de introdução do Amazon Redshift e configure-o com as configurações padrão.

  2. Observe o ARN do grupo de trabalho.

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

Configurar as permissões do mecanismo de consulta do Amazon Redshift

Dependendo do mecanismo de consulta do Amazon Redshift que você escolher, você pode configurar determinadas permissões. As permissões que você configura dependem do método de autenticação. A tabela a seguir 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 Yes Sim Yes Sim
Nome de usuário do banco Yes Sim No Não
AWS Secrets Manager Yes Sim Yes Sim

O Amazon Bedrock Knowledge Bases usa uma função 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 armazenamentos de dados.

nota

Se você planeja usar o AWS Management Console para criar uma base de conhecimento, pode ignorar esse pré-requisito. O console criará uma função de serviço do Amazon Bedrock Knowledge Bases com as permissões adequadas.

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

Em seguida, adicione permissões para que sua 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 política a seguir à sua função de serviço personalizada para permitir que ela acesse seus dados e gere consultas usando-a:

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

Você também precisa adicionar permissões para permitir que sua função de serviço se autentique no mecanismo de consulta. Expanda uma seção para ver as permissões desse método.

IAM

Para permitir que sua função de serviço se autentique em seu mecanismo de consulta provisionado do Amazon Redshift com o IAM, anexe a seguinte política à sua função de serviço personalizada:

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

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

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

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 à função:

    { "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 seu método de autenticação. Expanda uma seção para ver as permissões de um método.

IAM

Para permitir que sua função de serviço se autentique em seu mecanismo de consulta sem servidor do Amazon Redshift com o IAM, anexe a seguinte política à sua função de serviço personalizada:

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

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 à função:

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

Permita que a função de serviço da base de conhecimento acesse seu armazenamento de dados

Certifique-se de que seus dados estejam armazenados em um dos seguintes armazenamentos de dados estruturados compatíveis:

  • Amazon Redshift

  • AWS Glue Data Catalog (AWS Lake Formation)

A tabela a seguir resume os métodos de autenticação disponíveis para o mecanismo de consulta, dependendo do seu armazenamento de dados:

Método de autenticação Amazon Redshift AWS Glue Data Catalog (AWS Lake Formation)
IAM Yes Sim Yes Sim
Nome de usuário do banco Yes Sim No Não
AWS Secrets Manager Yes Sim No Não

Para saber como configurar permissões para que sua função de serviço do Amazon Bedrock Knowledge Bases acesse seu armazenamento de dados e gere consultas com base nele, expanda a seção que corresponde ao serviço em que seu armazenamento de dados está:

Para conceder à sua função de serviço do Amazon Bedrock Knowledge Bases acesso ao seu 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 a função de serviço do Amazon Bedrock Knowledge Bases criada para você no console e depois sincronizar seu armazenamento de dados 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 armazenamento de dados. Você deve executar a etapa a seguir antes de sincronizar.

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

    Não CREATE conceda nem DELETE acesse. UPDATE A concessão dessas ações pode levar à modificação não intencional de seus dados.

    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 obter 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 Manager username
    GRANT SELECT ON ${schemaName}.${tableName} TO "${secretsUsername}";
  3. Se você criou um novo 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 a função de serviço do Amazon Bedrock Knowledge Bases criada para você no console e depois sincronizar seu armazenamento de dados 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 armazenamento de dados. Você deve executar a etapa a seguir antes de sincronizar.

  2. Conceda à função de serviço permissões para recuperar informações do seu banco de dados executando o seguinte comando GRANT:

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

    Não CREATE conceda nem DELETE acesse. UPDATE A concessão dessas ações pode levar à modificação não intencional de seus dados.

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

    { "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. 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 no AWS Management Console, 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 esquerdo.

    3. Conceda permissões para a função de serviço que você está usando para as Bases de Conhecimento Amazon Bedrock.

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

  5. Dependendo da fonte de dados usada AWS Glue Data Catalog, talvez seja necessário adicionar permissões para acessar essa fonte de dados (para obter mais informações, consulte AWS Glue dependência de outras Serviços da AWS). Por exemplo, se sua fonte de dados estiver em um local do Amazon S3, você precisará adicionar a seguinte declaração à 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" }