Einrichten Ihrer Abfrage-Engine und der Berechtigungen zum Erstellen einer Wissensdatenbank mit strukturiertem Datenspeicher - Amazon Bedrock

Einrichten Ihrer Abfrage-Engine und der Berechtigungen zum Erstellen einer Wissensdatenbank mit strukturiertem Datenspeicher

In diesem Thema werden die Berechtigungen beschrieben, die Sie benötigen, um Ihre Wissensdatenbank mit einem strukturierten Datenspeicher zu verbinden. Wenn Sie planen, eine Amazon-Bedrock-Wissensdatenbank mit einem strukturierten Datenspeicher zu verbinden, müssen Sie die Voraussetzungen erfüllen. Informationen zu den allgemeinen Genehmigungsanforderungen, die erfüllt werden müssen, finden Sie unter Einrichten von Berechtigungen für einen Benutzer oder eine Rolle zum Erstellen und Verwalten von Wissensdatenbanken.

Wichtig

Die Ausführung beliebiger SQL-Abfragen kann ein Sicherheitsrisiko für jede Text-zu-SQL-Anwendung darstellen. Es wird empfohlen, bei Bedarf Vorsichtsmaßnahmen zu treffen, z. B. eingeschränkte Rollen, schreibgeschützte Datenbanken und Sandboxes zu verwenden.

Amazon-Bedrock-Wissensdatenbanken unterstützen Amazon Redshift als Abfrage-Engines für die Abfrage Ihres Datenspeichers. Eine Abfrage-Engine greift auf Metadaten aus einem strukturierten Datenspeicher zu und verwendet die Metadaten, um SQL-Abfragen zu generieren. Amazon Redshift ist ein Data-Warehouse-Service, der mithilfe von SQL strukturierte Daten aus Data Warehouses, Datenbanken und Data Lakes analysiert.

Erstellen einer Abfrage-Engine in Amazon Redshift

Sie können je nach Anwendungsfall Amazon Redshift Serverless oder Amazon Redshift Provisioned verwenden und eine Verbindung mit Arbeitsgruppen oder Clustern für Ihr Data Warehouse herstellen. Bei den zugrundeliegenden Daten, die die Amazon-Redshift-Engine abfragen kann, kann es sich um Daten handeln, die nativ in Amazon-Redshift-Clustern gespeichert sind oder sich in standardmäßigen AWS Glue Data Catalog (z. B. in Amazon S3) befinden.

Wenn Sie bereits eine Abfrage-Engine erstellt haben, können Sie diese Voraussetzung überspringen. Andernfalls führen Sie die folgenden Schritte aus, um Ihre Abfrage-Engine von Amazon Redshift Provisioned oder Amazon Redshift Serverless einzurichten:

So richten Sie eine Abfrage-Engine in Amazon Redshift Provisioned ein
  1. Folgen Sie den Schritten in Schritt 1: Erstellen eines Amazon-Redshift-Beispielclusters im Handbuch Erste Schritte mit Amazon Redshift.

  2. Notieren Sie sich die Cluster-ID.

  3. (Optional) Weitere Informationen über Cluster, die von Amazon Redshift bereitgestellt werden, finden Sie unter Von Amazon Redshift bereitgestellte Cluster im Amazon-Redshift-Verwaltungshandbuch.

So richten Sie eine Abfrage-Engine in Amazon Redshift Serverless ein
  1. Folgen Sie nur dem Einrichtungsverfahren unter Erstellen eines Data Warehouse mit Amazon Redshift Serverless im Handbuch Erste Schritte mit Amazon Redshift und konfigurieren Sie es mit den Standardeinstellungen.

  2. Notieren Sie sich den ARN der Arbeitsgruppe.

  3. (Optional) Weitere Informationen zu Arbeitsgruppen von Amazon Redshift Serverless finden Sie unter Arbeitsgruppen und Namespaces im Amazon-Redshift-Verwaltungshandbuch.

Konfigurieren von Berechtigungen für die Abfrage-Engine von Amazon Redshift

Abhängig von der Abfrage-Engine von Amazon Redshift können Sie bestimmte Berechtigungen konfigurieren. Die von Ihnen konfigurierten Berechtigungen hängen von der Authentifizierungsmethode ab. Die folgende Tabelle zeigt die Authentifizierungsmethoden, die für verschiedene Abfrage-Engines verwendet werden können:

Authentifizierungsmethode Amazon Redshift Provisioned Amazon Redshift Serverless
IAM Green circular icon with a white checkmark symbol inside. Ja Green circular icon with a white checkmark symbol inside. Ja
Datenbankbenutzername Green circular icon with a white checkmark symbol inside. Ja Red circular icon with an X symbol, indicating cancellation or denial. Nein
AWS Secrets Manager Green circular icon with a white checkmark symbol inside. Ja Green circular icon with a white checkmark symbol inside. Ja

Wissensdatenbanken für Amazon Bedrock verwendet eine Servicerolle, um Wissensdatenbanken mit strukturierten Datenspeichern zu verbinden, Daten aus diesen Datenspeichern abzurufen und SQL-Abfragen auf der Grundlage von Benutzerabfragen und der Struktur der Datenspeicher zu generieren.

Anmerkung

Wenn Sie planen, eine Wissensdatenbank mit der AWS-Managementkonsole zu erstellen, können Sie diese Voraussetzung überspringen. Die Konsole erstellt eine Servicerolle von Wissensdatenbanken für Amazon Bedrock mit den entsprechenden Berechtigungen.

Wenn Sie eine benutzerdefinierte IAM-Servicerolle mit den entsprechenden Berechtigungen erstellen möchten, folgen Sie den Schritten unter Erstellen einer Rolle, um Berechtigungen an einen AWS-Service zu delegieren und hängen Sie die unter Vertrauensstellung definierte Vertrauensstellung an.

Fügen Sie anschließend Berechtigungen für Ihre Wissensdatenbank hinzu, um auf Ihre Abfrage-Engine und Datenbanken von Amazon Redshift zuzugreifen. Erweitern Sie den Abschnitt, der auf Ihren Anwendungsfall zutrifft:

Fügen Sie Ihrer benutzerdefinierten Servicerolle die folgende Richtlinie an, damit sie auf Ihre Daten zugreifen und damit Abfragen generieren kann:

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

Sie müssen außerdem Berechtigungen hinzufügen, damit sich Ihre Servicerolle bei der Abfrage-Engine authentifizieren kann. Erweitern Sie einen Abschnitt, um die Berechtigungen für diese Methode zu sehen.

IAM

Fügen Sie Ihrer benutzerdefinierten Servicerolle die folgende Richtlinie an, damit sie sich bei Ihrer von Amazon Redshift bereitgestellten Abfrage-Engine mit IAM authentifizieren kann:

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

Zum Authentifizieren als Amazon-Redshift-Datenbankbenutzer fügen Sie der Servicerolle die folgende Richtlinie an:

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

Gehen Sie folgt vor, damit sich Ihre Servicerolle bei Ihrer von Amazon Redshift bereitgestellten Abfrage-Engine mit einem Secret von AWS Secrets Manager authentifizieren kann:

  • Fügen Sie der Rolle die folgende Richtlinie hinzu:

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

Die Berechtigungen zum Anhängen richten sich nach Ihrer Authentifizierungsmethode. Erweitern Sie einen Abschnitt, um die Berechtigungen für eine Methode zu sehen.

IAM

Fügen Sie Ihrer benutzerdefinierten Servicerolle die folgende Richtlinie an, damit sie sich bei Ihrer Abfrage-Engine von Amazon Redshift Serverless mit IAM authentifizieren kann:

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

Gehen Sie folgt vor, damit sich Ihre Servicerolle bei Ihrer von Amazon Redshift bereitgestellten Abfrage-Engine mit einem Secret von AWS Secrets Manager authentifizieren kann:

  • Fügen Sie der Rolle die folgende Richtlinie hinzu:

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

Zulassen, dass die Wissensdatenbank-Servicerolle auf Ihren Datenspeicher zugreift

Stellen Sie sicher, dass Ihre Daten in einem der folgenden unterstützten strukturierten Datenspeicher abgelegt sind:

  • Amazon Redshift

  • AWS Glue Data Catalog (AWS Lake Formation)

In der folgenden Tabelle sind die Authentifizierungsmethoden zusammengefasst, die je nach Datenspeicher für die Abfrage-Engine verfügbar sind:

Authentifizierungsmethode Amazon Redshift AWS Glue Data Catalog (AWS Lake Formation)
IAM Green circular icon with a white checkmark symbol inside. Ja Green circular icon with a white checkmark symbol inside. Ja
Datenbankbenutzername Green circular icon with a white checkmark symbol inside. Ja Red circular icon with an X symbol, indicating cancellation or denial. Nein
AWS Secrets Manager Green circular icon with a white checkmark symbol inside. Ja Red circular icon with an X symbol, indicating cancellation or denial. Nein

Informationen darüber, wie Sie Berechtigungen für Ihre Servicerolle von Wissensdatenbanken für Amazon Bedrock einrichten, um auf Ihren Datenspeicher zuzugreifen und darauf basierende Abfragen zu generieren, finden Sie, indem Sie den Abschnitt erweitern, der dem Service entspricht, in dem sich Ihr Datenspeicher befindet:

Wenn Sie Ihrer Servicerolle von Wissensdatenbanken für Amazon Bedrock Zugriff auf Ihre Amazon-Redshift-Datenbank gewähren möchten, verwenden Sie Amazon Redshift Query Editor V2 und führen Sie die folgenden SQL-Befehle aus:

  1. (Wenn Sie sich mit IAM authentifizieren und noch kein Benutzer für Ihre Datenbank erstellt wurde) Führen Sie den folgenden Befehl aus, der CREATE USER verwendet, um einen Datenbankbenutzer zu erstellen und ihm die Authentifizierung über IAM zu erlauben. Ersetzen Sie dabei ${service-role} durch den Namen der benutzerdefinierten Servicerolle von Wissensdatenbanken für Amazon Bedrock, die Sie erstellt haben:

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

    Wenn Sie die für Sie in der Konsole erstellte Servicerolle von Wissensdatenbanken für Amazon Bedrock verwenden und dann Ihren Datenspeicher synchronisieren, bevor Sie diesen Schritt ausführen, wird der Benutzer für Sie erstellt. Die Synchronisierung schlägt jedoch fehl, da dem Benutzer keine Zugriffsberechtigungen für Ihren Datenspeicher erteilt wurden. Vor der Synchronisierung müssen Sie den folgenden Schritt ausführen.

  2. Erteilen Sie einer Identität Berechtigungen zum Abrufen von Informationen aus Ihrer Datenbank, indem Sie den Befehl GRANT ausführen.

    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}";
    Wichtig

    Gewähren Sie keinen Zugriff für CREATE, UPDATE oder DELETE. Wenn Sie diese Aktionen zulassen, kann dies zu unbeabsichtigten Änderungen Ihrer Daten führen.

    Für eine genauere Kontrolle der Tabellen, auf die zugegriffen werden kann, können Sie ALL TABLES durch bestimmte Tabellennamen mit der folgenden Notation ersetzen: ${schemaName}${tableName}. Weitere Informationen zu dieser Notation finden Sie im Abschnitt Abfrageobjekte unter Datenbankübergreifende Abfragen.

    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. Wenn Sie ein neues Schema in der Redshift-Datenbank erstellt haben, führen Sie den folgenden Befehl aus, um eine Identitätsberechtigung für das neue Schema zu erteilen.

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

Wenn Sie Ihrer Servicerolle von Wissensdatenbanken für Amazon Bedrock Zugriff auf Ihren Datenspeicher von AWS Glue Data Catalog gewähren möchten, verwenden Sie Amazon Redshift Query Editor V2 und führen Sie die folgenden SQL-Befehle aus:

  1. Führen Sie den folgenden Befehl aus, der CREATE USER verwendet, um einen Datenbankbenutzer zu erstellen und ihm die Authentifizierung über IAM zu erlauben. Ersetzen Sie dabei ${service-role} durch den Namen der benutzerdefinierten Servicerolle von Wissensdatenbanken für Amazon Bedrock, die Sie erstellt haben:

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

    Wenn Sie die für Sie in der Konsole erstellte Servicerolle von Wissensdatenbanken für Amazon Bedrock verwenden und dann Ihren Datenspeicher synchronisieren, bevor Sie diesen Schritt ausführen, wird der Benutzer für Sie erstellt. Die Synchronisierung schlägt jedoch fehl, da dem Benutzer keine Zugriffsberechtigungen für Ihren Datenspeicher erteilt wurden. Vor der Synchronisierung müssen Sie den folgenden Schritt ausführen.

  2. Erteilen Sie der Servicerolle Berechtigungen zum Abrufen von Informationen aus Ihrer Datenbank, indem Sie den folgenden GRANT-Befehl ausführen:

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

    Gewähren Sie keinen Zugriff für CREATE, UPDATE oder DELETE. Wenn Sie diese Aktionen zulassen, kann dies zu unbeabsichtigten Änderungen Ihrer Daten führen.

  3. Wenn Sie den Zugriff auf Ihre Datenbanken von AWS Glue Data Catalog zulassen möchten, fügen Sie der Servicerolle die folgenden Berechtigungen an:

    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. Erteilen Sie Ihrer Servicerolle Berechtigungen über AWS Lake Formation (weitere Informationen zu Lake Formation und seiner Beziehung zu Amazon Redshift finden Sie unter Datenquellen für Redshift), indem Sie wie folgt vorgehen:

    1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Lake-Formation-Konsole unter https://console.aws.amazon.com/lakeformation/.

    2. Wählen Sie im linken Navigationsbereich Datenberechtigungen aus.

    3. Erteilen Sie der Servicerolle, die Sie für Wissensdatenbanken für Amazon Bedrock verwenden, Berechtigungen.

    4. Erteilen Sie Berechtigungen zum Beschreiben und Auswählen für Ihre Datenbanken und Tabellen.

  5. Abhängig von der Datenquelle, die Sie in AWS Glue Data Catalog verwenden, müssen Sie möglicherweise Berechtigungen für den Zugriff auf diese Datenquelle hinzufügen (weitere Informationen finden Sie unter Abhängigkeit von AWS Glue von anderen AWS-Services). Wenn sich Ihre Datenquelle beispielsweise an einem Amazon-S3-Speicherort befindet, müssen Sie der obigen Richtlinie die folgende Anweisung hinzufügen.

    { "Sid": "Statement1", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::${BucketName}", "arn:aws:s3:::${BucketName}/*" ] }
  6. (Optional) Wenn Sie AWS KMS zum Verschlüsseln der Daten in Amazon S3 oder AWS Glue Data Catalog verwenden, müssen Sie der Rolle Berechtigungen hinzufügen, um die Daten auf dem KMS-Schlüssel zu entschlüsseln.

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