Comment puis-je utiliser un tunnel SSH pour accéder à OpenSearch Dashboards depuis l'extérieur d'un VPC avec l'authentification Amazon Cognito ?

Date de la dernière mise à jour : 30/09/2021

Mon cluster Amazon OpenSearch Service (successeur d'Amazon Elasticsearch Service) se trouve dans un Virtual Private Cloud (VPC). Je souhaite utiliser un tunnel SSH pour accéder à OpenSearch Dashboards depuis l'extérieur du VPC avec l'authentification Amazon Cognito.

Brève description

Par défaut, Amazon Cognito limite l'accès à OpenSearch Dashboards aux utilisateurs d'AWS Identity and Access Management (IAM) dans le VPC. Toutefois, vous pouvez accéder à OpenSearch Dashboards depuis l'extérieur du VPC à l'aide d'un tunnel SSH.

Important : assurez-vous que l'accès à OpenSearch Dashboards (successeur de Kibana, un outil tiers) depuis l'extérieur du VPC est conforme aux exigences de sécurité de votre organisation.

Pour accéder à Dashboards depuis l'extérieur du VPC à l'aide d'un tunnel SSH, suivez les étapes suivantes :

1.    Créez un groupe d'utilisateurs Amazon Cognito et un groupe d'identités.

2.    Créez une instance Amazon Elastic Compute Cloud (Amazon EC2) dans un sous-réseau public du même VPC que celui où réside votre domaine OpenSearch Service.

3.    Utilisez un module de navigateur, tel que FoxyProxy, pour configurer un proxy SOCKS.

4.    Créez un tunnel SSH depuis votre ordinateur local jusqu'à l'instance EC2.

Remarque : vous pouvez également utiliser un proxy NGINX ou un VPN client pour accéder à Dashboards depuis l'extérieur d'un VPC avec l'authentification Amazon Cognito. Pour plus d'informations, consultez Comment puis-je accéder à OpenSearch Dashboards depuis l'extérieur d'un VPC à l'aide de l'authentification Amazon Cognito ?

5.    (Facultatif) Si le contrôle d'accès précis (FGAC) est activé, ajoutez un rôle authentifié Amazon Cognito.

Résolution

Créez un groupe d'utilisateurs Amazon Cognito et un groupe d'identités

1.    Créez un groupe d'utilisateurs Amazon Cognito.

2.    Configurez un domaine de groupe d'utilisateurs hébergé.

3.    Dans le volet de navigation de la console Amazon Cognito, sélectionnez Utilisateurs et groupes.

4.    Sélectionnez Créer un utilisateur, puis complétez les champs. Assurez-vous de saisir une adresse e-mail. Ensuite, cochez la case Marquer l'adresse e-mail comme vérifiée.

5.    Sélectionnez l'onglet Groupes, puis Créer un groupe. Pour Priorité, saisissez 0. Pour plus d'informations, consultez la section Création d'un nouveau groupe dans l'AWS Management Console.

6.    Ouvrez à nouveau la console Amazon Cognito.

7.    Sélectionnez Manage Identity Pools (Gérer des groupes d'identités), puis Créer un groupe d'identités.

8.    Saisissez un nom pour votre groupe d'identités, cochez la case Activer l'accès aux identités non authentifiées, puis sélectionnez Créer un groupe.

9.    Lorsque vous êtes invité à accéder à vos ressources AWS, sélectionnez Autoriser pour créer les deux rôles par défaut associés à votre groupe d'identités : l'un pour les utilisateurs non authentifiés et l'autre pour les utilisateurs authentifiés.

10.    Configurez votre domaine OpenSearch Service pour qu'il utilise l'authentification Amazon Cognito pour OpenSearch Dashboards :
Pour Groupe d'utilisateurs Cognito, choisissez le groupe d'utilisateurs que vous avez créé à l'étape 1.
Pour Groupe d'identités Cognito, sélectionnez le groupe d'identités que vous avez créé à l'étape 8.

11.    Configurez votre domaine OpenSearch Service pour qu'il utilise une politique d'accès similaire à la suivante. Remplacez les valeurs suivantes :
account-id par votre ID de compte AWS
nom-d'identité par le nom de votre groupe d'identités Amazon Cognito
nom-de-domaine avec le nom de votre domaine
Région avec la région où réside votre domaine, telle que us-east-1

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::account-id:assumed-role/Cognito_identity-nameAuth_Role/CognitoIdentityCredentials"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:Region:account-id:domain/domain-name/*"
    }
  ]
}

Par exemple, la stratégie d'accès suivante utilise les valeurs ci-dessous :

ID de compte AWS : 111122223333
Nom du groupe d'identités Amazon Cognito : MyIdentityPool
nom de domaine : MyDomain
Région : us-east-1

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::111122223333:assumed-role/Cognito_MyIdentityPoolAuth_Role/CognitoIdentityCredentials"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1:111122223333:domain/MyDomain/*"
    }
  ]
}

Créer une instance EC2 et configurer des règles de groupe de sécurité

1.    Lancez une instance EC2 dans un sous-réseau public du VPC dans lequel se trouve votre domaine OpenSearch Service. Sur la page Configurez les détails de l'instance, assurez-vous que la fonction Attribuer automatiquement l'adresse IP publique est définie sur Activer.
Remarque : dans les étapes suivantes, l'instance EC2 est appelée tunnel_ec2.

2.    Ajoutez des règles entrantes au groupe de sécurité associé à l'instance tunnel_ec2. Ces règles doivent autoriser le trafic vers les ports 8157 et 22 à partir de l'adresse IP de la machine locale que vous allez utiliser pour accéder au tableau de bord OpenSearch Service.

3.    Ajoutez une règle entrante au groupe de sécurité associé au domaine OpenSearch Service. Cette règle doit autoriser le trafic à partir de l'adresse IP privée de l'instance tunnel_ec2.

Configurer le proxy SOCKS

1.     Ajoutez la norme FoxyProxy à Google Chrome.

2.    Ouvrez FoxyProxy, puis sélectionnez Options.

3.    Dans la liste déroulante Proxy mode (Mode de proxy), sélectionnez Use proxies based on their pre-defined patterns and priorities (Utiliser des proxys en fonction de leurs modèles prédéfinis et de leurs priorités).

4.    Sélectionnez Add New Proxy (Ajouter un nouveau proxy).

5.    Sélectionnez l'onglet Général et saisissez un nom de proxy, tel que « Dashboards Proxy ».

6.    Dans l'onglet Proxy Details (Détails du proxy), sélectionnez Manual Proxy Configuration (Configuration manuelle de proxy), puis complétez les champs suivants :
Pour Host or IP Address (Hôte ou adresse IP), saisissez localhost.
Pour Port, saisissez 8157.
Sélectionnez SOCKS proxy (Proxy SOCKS).
Sélectionnez SOCKS v5.

7.    Sélectionnez l'onglet URL Patterns (Modèles d'URL).

8.    Sélectionnez Add new pattern (Ajouter un nouveau modèle), puis remplissez les champs suivants :
Pour Nom du modèle, saisissez un nom qui vous semble judicieux, tel que « Point de terminaison d'un VPC ».
Pour le modèle d'URL, saisissez le point de terminaison d'un VPC pour Dashboards. Assurez-vous que Mise des URL sur liste blanche (URL de liste blanche) est sélectionné. Assurez-vous que Wildcards (Caractères génériques) est sélectionné.

9.     Sélectionnez Enregistrer.

Créer le tunnel SSH

1.    Exécutez la commande suivante à partir de la machine locale que vous allez utiliser pour accéder au tableau de bord Dashboards. Remplacez les valeurs suivantes :
mykeypair.pem : le nom du fichier .pem correspondant à la paire de clés que vous avez spécifiée lorsque vous avez lancé l'instance EC2 tunnel_ec2.
public_dns_name : le DNS public de votre instance EC2 tunnel_ec2. Pour plus d'informations, consultez la section Affichage des noms d'hôte DNS pour votre instance EC2.

ssh -i "mykeypair.pem"  ec2-user@public_dns_name -ND 8157

2.    Saisissez le point de terminaison de Dashboards dans votre navigateur. La page de connexion à Amazon Cognito pour Dashboards s'affiche.

(Facultatif) Si le contrôle d'accès précis (FGAC) est activé, ajoutez un rôle authentifié Amazon Cognito

Si le contrôle d'accès précis (FGAC) est activé sur votre cluster OpenSearch Service, vous risquez de rencontrer une erreur de « rôle manquant ». Pour résoudre l'erreur « rôle manquant », suivez les étapes suivantes :

1.    Connectez-vous à votre AWS Management Console.

2.    Sous Analytique, choisissez Amazon OpenSearch Service.

3.    Sélectionnez Actions.

4.    Choisissez Modify master user (Modifier l'utilisateur maître).

5.    Choisissez Set IAM ARN as your master user (Définir l'ARN d'IAM en tant qu'utilisateur principal).

6.    Dans le champ IAM ARN, ajoutez le rôle ARN authentifié Amazon Cognito.

7.    Sélectionnez Envoyer.

Pour plus d'informations sur le contrôle d'accès précis, consultez Didacticiel : utilisateur principal IAM et Amazon Cognito.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?