Authentification et autorisation JWT pour Amazon Service OpenSearch - Amazon OpenSearch Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Authentification et autorisation JWT pour Amazon Service OpenSearch

Amazon OpenSearch Service vous permet désormais d'utiliser des jetons Web JSON (JWT) pour l'authentification et l'autorisation. Les JWT sont des jetons d'accès basés sur JSON utilisés pour accorder un accès par authentification unique (SSO). Vous pouvez utiliser JWT in OpenSearch Service pour créer des jetons d'authentification unique afin de valider les demandes adressées à votre OpenSearch domaine de service. Pour utiliser les JWT, le contrôle d'accès détaillé doit être activé et vous devez fournir une clé publique valide au format RSA ou ECDSA PEM. Pour plus d'informations sur le contrôle d'accès détaillé, consultez la section Contrôle d'accès détaillé dans Amazon Service. OpenSearch

Vous pouvez configurer les jetons Web JSON à l'aide de la console de OpenSearch service, du AWS Command Line Interface (AWS CLI) ou AWS des SDK.

Considérations

Avant d'utiliser les JWT avec Amazon OpenSearch Service, vous devez prendre en compte les points suivants :

  • En raison de la taille des clés publiques RSA au format PEM, nous vous recommandons d'utiliser la AWS console pour configurer l'authentification et l'autorisation JWT.

  • Vous devez fournir des utilisateurs et des rôles valides lorsque vous spécifiez les champs de sujets et de rôles pour vos JWT, sinon les demandes seront refusées.

Modification de la stratégie d'accès au domaine

Avant de configurer votre domaine pour utiliser l'authentification et l'autorisation JWT, vous devez mettre à jour votre politique d'accès au domaine afin de permettre aux utilisateurs de JWT d'accéder au domaine. Dans le cas contraire, toutes les demandes autorisées entrantes de JWT sont refusées. La politique d'accès au domaine recommandée pour fournir un accès complet aux sous-ressources (/*) est la suivante :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESHttp*", "Resource": "domain-arn/*" } ] }

Configuration de l'authentification et de l'autorisation JWT

Vous pouvez activer l'authentification et l'autorisation JWT pendant le processus de création du domaine ou en mettant à jour un domaine existant. Les étapes de configuration varient légèrement en fonction de l'option choisie.

Les étapes suivantes expliquent comment configurer un domaine existant pour l'authentification et l'autorisation JWT dans la console de OpenSearch service :

  1. Sous Configuration du domaine, accédez à Authentification et autorisation JWT pour OpenSearch, sélectionnez Activer l'authentification et l'autorisation JWT.

  2. Configurez la clé publique à utiliser pour votre domaine. Pour ce faire, vous pouvez soit télécharger un fichier PEM contenant une clé publique, soit le saisir manuellement.

    Note

    Si la clé téléchargée ou saisie n'est pas valide, un avertissement apparaît au-dessus de la zone de texte indiquant le problème.

  3. (Facultatif) Sous Paramètres supplémentaires, vous pouvez configurer les champs facultatifs suivants

    • Clé d'objet : vous pouvez laisser ce champ vide pour utiliser la sub clé par défaut pour vos JWT.

    • Clé des rôles : vous pouvez laisser ce champ vide pour utiliser la roles clé par défaut pour vos JWT.

    Une fois que vous avez apporté vos modifications, enregistrez votre domaine.

Utiliser un JWT pour envoyer une demande de test

Après avoir créé un nouveau JWT avec une paire sujet/rôle spécifiée, vous pouvez envoyer une demande de test. Pour ce faire, utilisez la clé privée pour signer votre demande via l'outil qui a créé le JWT. OpenSearch Le service est en mesure de valider la demande entrante en vérifiant cette signature.

Note

Si vous avez spécifié une clé de sujet ou une clé de rôle personnalisée pour votre JWT, vous devez utiliser les noms de réclamation corrects pour votre JWT.

Voici un exemple d'utilisation d'un jeton JWT pour accéder au OpenSearch service via le point de terminaison de recherche de votre domaine :

curl -XGET "$search_endpoint" -H "Authorization: Bearer <JWT>"

La AWS CLI commande suivante active l'authentification et l'autorisation JWT à OpenSearch condition que le domaine existe :

aws opensearch update-domain-config --domain-name <your_domain_name> --advanced-security-options '{"JWTOptions":{"Enabled":true, "PublicKey": "<your_public_key>", "SubjectKey": "<your_subject_key>", "RolesKey": "<your_roles_key>"}}'

Configuration de l'authentification et de l'autorisation JWT (configuration via API)

La demande suivante adressée à l'API de configuration active l'authentification et l'autorisation JWT OpenSearch sur un domaine existant :

POST https://es.us-east-1.amazonaws.com/2021-01-01/opensearch/domain/my-domain/config { "AdvancedSecurityOptions": { "JWTOptions": { "Enabled": true, "PublicKey": "public-key", "RolesKey": "optional-roles-key", "SubjectKey": "optional-subject-key" } } }
Génération d'une paire de clés

Afin de configurer les JWT pour votre OpenSearch domaine, vous devez fournir une clé publique au format PEM (Privacy-Enhanced Mail). Amazon OpenSearch Service prend actuellement en charge deux algorithmes de chiffrement asymétrique lors de l'utilisation de JWT : RSA et ECDSA.

Pour créer une paire de clés RSA à l'aide de la bibliothèque openssl commune, procédez comme suit :

  1. openssl genrsa -out privatekey.pem 2048

  2. openssl rsa -in privatekey.pem -pubout -out publickey.pem

Dans cet exemple, le publickey.pem fichier contient la clé publique à utiliser avec Amazon OpenSearch Service, tandis que privatekey.pem la clé privée pour signer les JWT envoyés au service. De plus, vous avez la possibilité de convertir la clé privée dans le pkcs8 format couramment utilisé si vous en avez besoin pour générer vos JWT.

Si vous utilisez le bouton de téléchargement pour ajouter un fichier PEM directement à la console, le fichier doit avoir une .pem extension, d'autres extensions de fichier telles que .crt.cert, ou ne .key sont pas prises en charge pour le moment.