Verwenden eines JSON-Web-Tokens (JWT) mit einem gemeinsamen geheimen Schlüssel - Amazon Kendra

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden eines JSON-Web-Tokens (JWT) mit einem gemeinsamen geheimen Schlüssel

Die folgenden Beispiele zeigen, wie Sie JSON Web Token (JWT) mit einem Shared Secret-Token für die Benutzerzugriffskontrolle verwenden, wenn Sie einen Index erstellen.

Console
  1. Wählen Sie Create Index aus, um mit der Erstellung eines neuen Indexes zu beginnen.

  2. Geben Sie auf der Seite Indexdetails angeben Ihrem Index einen Namen und eine Beschreibung.

  3. Wählen Sie für die IAM-Rolle eine Rolle aus, oder wählen Sie Neue Rolle erstellen für und geben Sie einen Rollennamen an, um eine neue Rolle zu erstellen. Die IAM Rolle wird das Präfix "AmazonKendra-“ haben.

  4. Behalten Sie für alle anderen Felder ihre Standardwerte bei. Wählen Sie Weiter.

  5. Wählen Sie auf der Seite Benutzerzugriffskontrolle konfigurieren unter Einstellungen für die Zugriffskontrolle die Option Ja aus, um Token für die Zugriffskontrolle zu verwenden.

  6. Wählen Sie unter Tokenkonfiguration JWT with Shared Secret als Tokentyp aus.

  7. Wählen Sie unter Parameter für das Signieren von Shared Secret den Typ des Geheimnisses aus. Sie können einen vorhandenen AWS Secrets Manager gemeinsamen geheimen Schlüssel verwenden oder einen neuen gemeinsamen geheimen Schlüssel erstellen.

    Um einen neuen gemeinsamen geheimen Schlüssel zu erstellen, wählen Sie Neu und gehen Sie dann wie folgt vor:

    1. Geben Sie unter Neuer AWS Secrets Manager geheimer Schlüssel einen geheimen Namen an. Das Präfix AmazonKendra- wird hinzugefügt, wenn Sie den öffentlichen Schlüssel speichern.

    2. Geben Sie eine Schlüssel-ID an. Die Schlüssel-ID ist ein Hinweis, der angibt, welcher Schlüssel verwendet wurde, um die JSON-Websignatur des Tokens zu sichern.

    3. Wählen Sie den Signaturalgorithmus für das Token. Dies ist der kryptografische Algorithmus, der zur Sicherung des ID-Tokens verwendet wird. For more information on RSA, see RSA Cryptography.

    4. Geben Sie einen gemeinsamen geheimen Schlüssel an, indem Sie einen Base64-URL-codierten Schlüssel eingeben. Sie können auch „Geheim generieren“ auswählen, um ein Geheimnis für Sie generieren zu lassen. Sie müssen sicherstellen, dass es sich bei dem Secret um ein Base64-URL-kodiertes Geheimnis handelt.

    5. (Optional) Geben Sie an, wann der gemeinsame geheime Schlüssel gültig ist. Sie können das Datum und die Uhrzeit angeben, ab dem ein Geheimnis gültig ist, bis wann es gültig ist oder beides. Das Geheimnis ist in dem angegebenen Intervall gültig.

    6. Wählen Sie Geheim speichern, um das neue Geheimnis zu speichern.

  8. (Optional) Gehen Sie unter Erweiterte Konfiguration wie folgt vor:

    1. Geben Sie einen Benutzernamen an, der bei der ACL-Prüfung verwendet werden soll.

    2. Geben Sie eine oder mehrere Gruppen an, die bei der ACL-Prüfung verwendet werden sollen.

    3. Geben Sie den Aussteller an, der den Token-Aussteller validieren wird.

    4. Geben Sie die Antragsnummer (n) an. Sie müssen einen regulären Ausdruck angeben, der der Zielgruppe im JWT entspricht.

  9. Wählen Sie auf der Seite mit den Bereitstellungsdetails die Developer Edition aus.

  10. Wählen Sie Erstellen, um Ihren Index zu erstellen.

  11. Warten Sie, bis Ihr Index erstellt wurde. Amazon Kendra stellt die Hardware für Ihren Index bereit. Dieser Vorgang kann einige Zeit in Anspruch nehmen.

CLI

Sie können das JWT-Token mit einem gemeinsamen geheimen Schlüssel verwenden. AWS Secrets Manager Das Geheimnis muss ein Base64-URL-kodiertes Geheimnis sein. Sie benötigen den Secrets Manager ARN, und Ihre Amazon Kendra Rolle muss Zugriff GetSecretValue auf die Secrets Manager Ressource haben. Wenn Sie die Secrets Manager Ressource mit verschlüsseln AWS KMS, muss die Rolle auch Zugriff auf die Entschlüsselungsaktion haben.

Um AWS CLI mithilfe einer JSON-Eingabedatei einen Index zu erstellen, erstellen Sie zunächst eine JSON-Datei mit den gewünschten Parametern:

{ "Name": "user-context", "Edition": "ENTERPRISE_EDITION", "RoleArn": "arn:aws:iam::account-id:role:/my-role", "UserTokenConfigurations": [ { "JwtTokenTypeConfiguration": { "KeyLocation": "SECRET_MANAGER", "Issuer": "optional: specify the issuer url", "ClaimRegex": "optional: regex to validate claims in the token", "UserNameAttributeField": "optional: user", "GroupAttributeField": "optional: group", "SecretManagerArn": "arn:aws:secretsmanager:us-west-2:account id:secret:/my-user-context-secret } } ], "UserContextPolicy": "USER_TOKEN" }

Sie können die standardmäßigen Benutzer- und Gruppenfeldnamen überschreiben. Der Standardwert für UserNameAttributeField ist „Benutzer“. Der Standardwert für GroupAttributeField ist „Gruppen“.

Rufen Sie als Nächstes create-index mit der Eingabedatei auf. Wenn der Name Ihrer JSON-Datei beispielsweise lautetcreate-index-openid.json, können Sie Folgendes verwenden:

aws kendra create-index --cli-input-json file://create-index-openid.json

Das Geheimnis muss das folgende Format haben in AWS Secrets Manager:

{ "keys": [ { "kid": "key_id", "alg": "HS256|HS384|HS512", "kty": "OCT", "use": "sig", //this value can be sig only for now "k": "secret", "nbf":"ISO1806 date format" "exp":"ISO1806 date format" } ] }

Weitere Informationen zu JWT finden Sie unter jwt.io.

Python

Sie können das JWT-Token mit einem gemeinsamen geheimen Schlüssel darin verwenden. AWS Secrets Manager Das Geheimnis muss ein Base64-URL-kodiertes Geheimnis sein. Sie benötigen den Secrets Manager ARN, und Ihre Amazon Kendra Rolle muss Zugriff GetSecretValue auf die Secrets Manager Ressource haben. Wenn Sie die Secrets Manager Ressource mit verschlüsseln AWS KMS, muss die Rolle auch Zugriff auf die Entschlüsselungsaktion haben.

response = kendra.create_index( Name='user-context', Edition='ENTERPRISE_EDITION', RoleArn='arn:aws:iam::account-id:role:/my-role', UserTokenConfigurations=[ { "JwtTokenTypeConfiguration": { "KeyLocation": "URL", "Issuer": "optional: specify the issuer url", "ClaimRegex": "optional: regex to validate claims in the token", "UserNameAttributeField": "optional: user", "GroupAttributeField": "optional: group", "SecretManagerArn": "arn:aws:secretsmanager:us-west-2:account id:secret:/my-user-context-secret" } } ], UserContextPolicy='USER_TOKEN' )