Logo Zéphyrnet

Créer une fédération d'identité SAML pour les domaines Amazon OpenSearch Service au sein d'un VPC | Services Web Amazon

Date :

Service Amazon OpenSearch est un service de recherche et d'analyse entièrement géré, alimenté par la bibliothèque de recherche Apache Lucene, qui peut être exploité dans un cloud privé virtuel (VPC). Un VPC est un réseau virtuel dédié à votre compte AWS. Il est logiquement isolé des autres réseaux virtuels du cloud AWS. Placer un domaine OpenSearch Service dans un VPC permet une communication sécurisée entre OpenSearch Service et d'autres services au sein du VPC sans avoir besoin d'une passerelle Internet, d'un périphérique NAT ou d'une connexion VPN. Tout le trafic reste sécurisé dans le cloud AWS, offrant ainsi un environnement sécurisé pour vos données. Pour se connecter à un domaine OpenSearch Service exécuté dans un VPC privé, les entreprises clientes utilisent l'une des deux options disponibles : soit intégrer leur VPC à leur réseau d'entreprise via VPN, soit AWS Direct Connect, ou rendez le point de terminaison du cluster accessible au public via un proxy inverse. Faire référence à Comment puis-je accéder aux tableaux de bord OpenSearch depuis l'extérieur d'un VPC à l'aide de l'authentification Amazon Cognito pour une évaluation détaillée des options disponibles et des avantages et inconvénients correspondants.

Pour gérer l'accès aux tableaux de bord OpenSearch dans les environnements des entreprises clientes, OpenSearch Service prend en charge l'intégration SAML (Security Assertion Markup Language) avec les fournisseurs d'identité (IdP) existants du client pour offrir une authentification unique (SSO). Bien que l'intégration SAML pour les tableaux de bord OpenSearch accessibles au public fonctionne immédiatement, l'activation de SAML pour les tableaux de bord OpenSearch au sein d'un VPC nécessite une conception minutieuse avec diverses configurations.

Cet article présente une solution de bout en bout pour intégrer l'authentification SAML pour les domaines OpenSearch Service exécutés dans un VPC. Il fournit des directives de déploiement étape par étape et est accompagné de Kit de développement AWS Cloud (AWS CDK), qui automatisent toutes les configurations nécessaires.

Présentation de la solution

Le diagramme suivant décrit le flux d'authentification étape par étape pour accéder à un domaine privé OpenSearch Service via SSO à l'aide de la fédération d'identité SAML. L'accès est activé sur Internet public via des serveurs proxy inverses NGINX privés fonctionnant sur Service de conteneur élastique Amazon (Amazon ECS) pour une haute disponibilité.

Vue d'ensemble de la solution

Le flux de travail comprend les étapes suivantes :

  1. L'utilisateur accède à l'URL d'OpenSearch Dashboards dans son navigateur.
  2. Le navigateur résout l'adresse IP du domaine et envoie la demande.
  3. AWSWAF Les règles garantissent que seules les plages d'adresses IP répertoriées sont autorisées.
  4. Application Load Balancer transmet la demande au proxy inverse NGINX.
  5. NGINX ajoute les en-têtes nécessaires et transmet la demande aux tableaux de bord OpenSearch.
  6. OpenSearch Dashboards détecte que la demande n'est pas authentifiée. Il répond par une redirection vers l'IdP SAML intégré pour l'authentification.
  7. L'utilisateur est redirigé vers la page de connexion SSO.
  8. L'IdP vérifie l'identité de l'utilisateur et génère un jeton d'assertion SAML.
  9. L'utilisateur est redirigé vers l'URL des tableaux de bord OpenSearch.
  10. La demande suit à nouveau les étapes 1 à 5 jusqu'à ce qu'elle atteigne OpenSearch. Cette fois, OpenSearch Dashboards détecte l’assertion SAML qui l’accompagne et autorise la demande.

Dans les sections suivantes, nous avons configuré un proxy inverse NGINX dans des sous-réseaux privés pour fournir un accès aux tableaux de bord OpenSearch pour un domaine déployé dans des sous-réseaux privés VPC. Nous activons ensuite l'authentification SAML pour les tableaux de bord OpenSearch à l'aide d'une application SAML 2.0 et utilisons un point de terminaison de domaine personnalisé pour accéder aux tableaux de bord OpenSearch afin de voir l'authentification SAML en action.

Pré-requis

Avant de commencer, effectuez les étapes préalables de cette section.

Installer les outils requis

Tout d'abord, installez le AWS CDK. Pour plus d'informations, reportez-vous au Guide du développeur AWS CDK v2.

Préparer les ressources AWS requises

Effectuez les étapes suivantes pour configurer vos ressources AWS :

  1. Créer un compte AWS.
  2. Créer un Amazon Route 53 zone hébergée publique telle que mydomain.com à utiliser pour acheminer le trafic Internet vers votre domaine. Pour obtenir des instructions, reportez-vous à Création d'une zone hébergée publique.
  3. Demander une Gestionnaire de certificats AWS (ACM) certificat public pour la zone hébergée. Pour obtenir des instructions, reportez-vous à Demander un certificat public.
  4. Créer un VPC avec des sous-réseaux publics et privés.
  5. Activer Centre d'identité AWS IAM. Pour obtenir des instructions, reportez-vous à Activer le centre d'identité IAM.

Préparez votre cluster OpenSearch Service

Cet article est accompagné d'une application AWS CDK autonome (domaine de recherche ouvert) qui déploie un exemple de domaine OpenSearch Service dans des sous-réseaux VPC privés. Le domaine déployé est uniquement à des fins de démonstration et est facultatif.

Si vous disposez d'un domaine OpenSearch Service existant dans VPC que vous souhaitez utiliser pour l'intégration SAML, appliquez les configurations suivantes :

  1. Sur le Configuration du cluster onglet, choisissez Modifier et sélectionnez Activer le point de terminaison personnalisé dans l' Point de terminaison personnalisé .
  2. Pour Nom d'hôte personnalisé, saisissez un nom de domaine complet (FQDN) tel que opensearch.mydomain.com, que vous souhaitez utiliser pour accéder à votre cluster. Notez que le nom de domaine du FQDN fourni (par exemple, mydomain.com) doit être identique à la zone hébergée publique que vous avez créée précédemment.
  3. Pour Certificat AWS, choisissez le certificat SSL que vous avez créé précédemment.
  4. Dans le Résumé , activez éventuellement l'analyse à sec et sélectionnez Course à sec ou désélectionnez-le et choisissez Enregistrer les modifications.

Sinon, téléchargez le fichier accompagné domaine de recherche ouvert Application AWS CDK et décompressez-la. Ensuite, modifiez le cdk.json fichier à la racine du dossier décompressé et configurez les paramètres requis :

  • vpc_cidr – Le bloc CIDR dans lequel créer le VPC. Vous pouvez laisser la valeur par défaut de 10.0.0.0/16.
  • opensearch_cluster_name – Le nom du cluster OpenSearch Service. Vous pouvez laisser la valeur par défaut de opensearch. Il sera également utilisé, conjointement avec le hosted_zone_name paramètre, pour créer le nom de domaine complet de l'URL de domaine personnalisé.
  • hébergé_zone_id – L'ID de zone hébergée publique Route 53.
  • nom_zone_hébergé – Le nom de la zone hébergée publique Route 53 (par exemple, mydomain.com). Le FQDN résultat avec les valeurs d'exemple par défaut sera alors opensearch.mydomain.com.

Enfin, exécutez les commandes suivantes pour déployer l'application AWS CDK :

cd opensearch-domain

# Create a Python environment and install the reuired dependencies
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt
pip install -r requirements.txt

# Deploy the CDK application
cdk deploy

Une fois les conditions préalables remplies, reportez-vous aux sections suivantes pour obtenir un guide étape par étape permettant de déployer cette solution.

Créer une application SAML 2.0

Nous utilisons IAM Identity Center comme source d'identité pour notre intégration SAML. La même configuration doit s’appliquer aux autres IdP compatibles SAML 2.0. Consultez la documentation de votre IdP.

  1. Sur la console IAM Identity Center, choisissez Groupes dans le volet de navigation.
  2. Créez un nouveau groupe appelé Opensearch Admin, et ajoutez-y des utilisateurs.
    Il s'agira du groupe SAML qui recevra toutes les autorisations dans les tableaux de bord OpenSearch. Prenez note de l’identifiant du groupe.Groupe d'administrateurs OpenSearch
  3. Selectionnez Applications dans le volet de navigation.
  4. Créez une nouvelle application SAML 2.0 personnalisée.Créer une application SAML
  5. Téléchargez le fichier de métadonnées SAML IAM Identity Center à utiliser lors d'une étape ultérieure.Métadonnées SAML d'IAM Identity Center
  6. Pour URL de démarrage de l'application, Entrer [Custom Domain URL]/_dashboards/.
    L'URL du domaine personnalisé est composée du protocole de communication (https://) suivi du nom de domaine complet que vous avez utilisé pour votre cluster OpenSearch Service dans les conditions préalables (par exemple, https://opensearch.mydomain.com). Regardez sous les configurations de votre cluster OpenSearch Service, en cas de doute.
  7. Pour URL ACS de l'application, Entrer [Custom Domain URL]/_dashboards/_opendistro/_security/saml/acs.
  8. Pour Public SAML de l'application, Entrer [Custom Domain URL] (sans aucune barre oblique finale).
    Propriétés SAML du domaine OpenSearch
  9. Selectionnez Envoyer.
  10. Dans le Utilisateurs affectés section, sélectionnez Administrateur OpenSearch et choisissez Attribuer des utilisateurs.Attribuer un groupe d'administrateurs à l'application SAML
  11. Sur le Actions menu, choisissez Modifier les mappages d'attributs.Modifier le mappage des attributs de l'application SAML
  12. Définissez les mappages d'attributs comme indiqué dans la capture d'écran suivante et choisissez Enregistrer les modifications.Configurer les mappages d'attributs de l'application SAML

Déployer l'application AWS CDK

Effectuez les étapes suivantes pour déployer l'application AWS CDK :

  1. Téléchargez et décompressez le intégration opensearch-domain-saml Application AWS CDK.
  2. Ajoutez votre clé SSL privée et votre certificat à AWS Secrets Manager ainsi que créer deux secrets appelé Key ainsi que Crt. Par exemple, consultez le code suivant:
    KEY=$(cat private.key | base64) && aws secretsmanager create-secret --name Key --secret-string $KEY
    CRT=$(cat certificate.crt | base64) && aws secretsmanager create-secret --name Crt --secret-string $CRT

    Vous pouvez utiliser la commande suivante pour générer un certificat auto-signé. Ceci est uniquement destiné aux tests ; ne l'utilisez pas pour les environnements de production.

    openssl req -new -newkey rsa:4096 -days 1095 -nodes -x509 -subj '/' -keyout private.key -out certificate.crt

  3. Modifiez le cdk.json fichier et définissez les paramètres requis dans le fichier imbriqué config objet:
  • aws_region – La région AWS cible pour votre déploiement (par exemple, eu-central-1).
  • vpc_id – L'ID du VPC dans lequel le domaine OpenSearch Service a été déployé.
  • opensearch_cluster_security_group_id – L'ID du groupe de sécurité utilisé par le domaine OpenSearch Service ou tout autre groupe de sécurité qui autorise les connexions entrantes vers ce domaine sur les ports 80 et 443. Cet ID de groupe sera utilisé par l'Application Load Balancer pour transférer le trafic vers votre domaine OpenSearch Service. .
  • hébergé_zone_id – L'ID de zone hébergée publique Route 53.
  • zone_hébergée – Le nom de la zone hébergée publique Route 53 (par exemple, mydomain.com).
  • opensearch_custom_domain_name – Un FQDN tel que opensearch.mydomain.com, que vous souhaitez utiliser pour accéder à votre cluster. Notez que le nom de domaine du FQDN fourni (mydomain.com) doit être le même que le hosted_zone paramètre.
  • opensearch_custom_domain_certificate_arn – L'ARN du certificat stocké dans ACM.
  • opensearch_domain_endpoint – Le point de terminaison du domaine OpenSearch Service VPC (par exemple, vpc-opensearch-abc123.eu-central-1.es.amazonaws.com).
  • vpc_dns_resolver – Cela doit être 10.0.0. si votre CIDR VPC est 10.0.0.0/16. Voir Serveur DNS Amazon pour plus de détails
  • alb_waf_ip_whitelist_cidrs – Il s'agit d'une liste facultative de zéro ou plusieurs plages CIDR IP qui seront automatiquement autorisées à être répertoriées dans AWS WAF pour permettre l'accès au domaine OpenSearch Service. Si cela n'est pas spécifié, après le déploiement, vous devrez ajouter manuellement les plages IP CIDR pertinentes à l'ensemble IP AWS WAF pour autoriser l'accès. Par exemple, ["1.2.3.4/32", "5.6.7.0/24"].
  1. Déployez l'application AWS CDK d'intégration SAML du domaine OpenSearch Service :
    cd opensearch-domain-saml-integration
    
    # Create a Python environment and install the required dependencies
    python3 -m venv .venv
    source .venv/bin/activate
    pip install -r requirements-dev.txt
    pip install -r requirements.txt
    
    # Deploy the CDK application
    cdk deploy

Activer l'authentification SAML pour votre cluster OpenSearch Service

Une fois le déploiement de l'application terminé, activez l'authentification SAML pour votre cluster :

  1. Sur la console OpenSearch Service, accédez à votre domaine.
  2. Sur le Configuration de sécurité onglet, choisissez Modifier.Activer l'authentification SAML pour le domaine OpenSearch
  3. Sélectionnez Activer l'authentification SAML.
  4. Selectionnez Importer depuis un fichier XML et importez le fichier de métadonnées SAML IAM Identity Center que vous avez téléchargé lors d'une étape précédente.
  5. Pour Rôle principal de backend SAML, utilisez l'ID de groupe que vous avez enregistré précédemment.
  6. Élargir la paramètres supplémentaires section et pour Rôles, saisissez le nom de l'attribut SAML 2.0 que vous avez mappé précédemment lors de la création de l'application SAML 2.0 dans AWS Identity Center.
  7. Configurer la politique d'accès au domaine pour l'intégration SAML.
  8. Soumettez les modifications et attendez qu'OpenSearch Service applique les configurations avant de passer à la section suivante.

Testez la solution

Suivez les étapes suivantes pour voir la solution en action :

  1. Sur la console IAM Identity Center, choisissez Tableau de bord dans le volet de navigation.
  2. Dans le Résumé des paramètres section, choisissez le lien sous URL du portail d'accès AWS.Connectez-vous à IAM Identity Center
  3. Connectez-vous avec votre nom d'utilisateur et votre mot de passe (enregistrez votre mot de passe s'il s'agit de votre première connexion).
    Si votre compte a été ajouté avec succès au groupe d'administrateurs, un logo d'application SAML est visible.
  4. Selectionnez Application SAML 2.0 personnalisée pour être redirigé vers les tableaux de bord OpenSearch Service via SSO sans aucune tentative de connexion supplémentaire.Ouvrir l'application SAML
    Vous pouvez également ignorer la connexion au portail d'accès et pointer directement votre navigateur vers l'URL des tableaux de bord OpenSearch. Dans ce cas, OpenSearch Dashboards vous redirigerait d'abord vers le portail d'accès pour vous connecter, ce qui vous redirigerait vers l'interface utilisateur d'OpenSearch Dashboards après une connexion réussie, ce qui entraînerait le même résultat que celui indiqué dans la capture d'écran suivante.Interface utilisateur d’OpenSearch Dashboards après une connexion réussie

Dépannage

Votre adresse IP publique doit être répertoriée par la règle AWS WAF, sinon une erreur 403 Forbidden sera renvoyée. Autoriser la liste de votre plage IP CIDR via le AWS CDK alb_waf_ip_whitelist_cidrs propriété comme décrit dans le guide d'installation et redéployez l'application AWS CDK pour que les modifications prennent effet.

Nettoyer

Lorsque vous avez terminé cette configuration, nettoyez les ressources pour éviter des frais futurs.

  1. Sur la console OpenSearch Service, accédez au Configuration de sécurité de votre domaine OpenSearch Service et choisissez Modifier.
  2. Désélectionner Activer l'authentification SAML et choisissez Enregistrer les modifications.
  3. Une fois l'intégration Amazon SAML désactivée, supprimez le opensearch-domain-saml-integration empiler en utilisant cdk destroy.
  4. Facultativement, si vous avez utilisé l'exemple de pile AWS CDK OpenSearch Service fourni (opensearch-domain), supprimez-le en utilisant cdk destroy.

Conclusion

OpenSearch Service permet aux entreprises clientes d'utiliser leurs IdP fédérés préférés tels que SAML à l'aide d'IAM Identity Center pour les clusters exécutés dans des sous-réseaux VPC privés conformément aux meilleures pratiques AWS.

Dans cet article, nous vous avons montré comment intégrer un domaine OpenSearch Service dans un VPC avec un IdP SAML existant pour l'accès SSO aux tableaux de bord OpenSearch à l'aide d'IAM Identity Center. La solution fournie gère de manière sécurisée l'accès réseau aux ressources à l'aide d'AWS WAF pour restreindre l'accès uniquement aux segments de réseau autorisés ou aux adresses IP spécifiques.

Pour commencer, consultez Comment puis-je accéder aux tableaux de bord OpenSearch depuis l'extérieur d'un VPC à l'aide de l'authentification Amazon Cognito pour une comparaison plus approfondie du domaine OpenSearch Service dans les modèles d'accès au VPC privé.


À propos des auteurs

Mahdi Ebrahimi est un architecte senior d'infrastructure cloud chez Amazon Web Services. Il excelle dans la conception de systèmes logiciels distribués et hautement disponibles. Mahdi se consacre à fournir des solutions de pointe qui permettent à ses clients d'innover dans le paysage en évolution rapide de l'industrie automobile.

Dmytro Protsiv est un architecte d'applications cloud pour Amazon Web Services. Il a pour passion d'aider les clients à résoudre leurs défis commerciaux en matière de modernisation des applications.

Luca Menichetti est un architecte Big Data chez Amazon Web Services. Il aide les clients à développer des solutions performantes et réutilisables pour traiter les données à grande échelle. Luca est passionné par la gestion de l'architecture des données d'une organisation, permettant l'analyse des données et l'apprentissage automatique. Ayant travaillé dans l'écosystème Hadoop pendant une décennie, il aime vraiment résoudre les problèmes dans les environnements NoSQL.

Krithivasan Balasubramaniyan est consultant principal chez Amazon Web Services. Il accompagne les entreprises clientes mondiales dans leur parcours de transformation numérique et les aide à concevoir des solutions cloud natives.

Muthu Pitchamani est un spécialiste de la recherche avec Amazon OpenSearch Service. Il construit des applications et des solutions de recherche à grande échelle. Muthu s'intéresse aux sujets de la mise en réseau et de la sécurité et est basé à Austin, au Texas.

spot_img

Dernières informations

spot_img