Zephyrnet-logo

Bouw SAML-identiteitsfederatie voor Amazon OpenSearch Service-domeinen binnen een VPC | Amazon-webservices

Datum:

Amazon OpenSearch-service is een volledig beheerde zoek- en analyseservice, mogelijk gemaakt door de Apache Lucene-zoekbibliotheek die kan worden beheerd binnen een virtuele privécloud (VPC). Een VPC is een virtueel netwerk dat is toegewezen aan uw AWS-account. Het is logischerwijs geïsoleerd van andere virtuele netwerken in de AWS Cloud. Het plaatsen van een OpenSearch Service-domein binnen een VPC maakt een veilige communicatie mogelijk tussen OpenSearch Service en andere services binnen de VPC zonder dat een internetgateway, NAT-apparaat of een VPN-verbinding nodig is. Al het verkeer blijft veilig binnen de AWS Cloud, waardoor een veilige omgeving voor uw gegevens ontstaat. Om verbinding te maken met een OpenSearch Service-domein dat binnen een privé-VPC draait, gebruiken zakelijke klanten een van de twee beschikbare opties: hun VPC integreren met hun bedrijfsnetwerk via VPN of AWS Direct Connectof maak het clustereindpunt openbaar toegankelijk via een omgekeerde proxy. Verwijzen naar Hoe kan ik toegang krijgen tot OpenSearch Dashboards van buiten een VPC met behulp van Amazon Cognito-authenticatie voor een gedetailleerde evaluatie van de beschikbare opties en de bijbehorende voor- en nadelen.

Voor het beheren van de toegang tot OpenSearch Dashboards in de omgevingen van zakelijke klanten ondersteunt OpenSearch Service Security Assertion Markup Language (SAML)-integratie met de bestaande identiteitsproviders (IdP's) van de klant om eenmalige aanmelding (SSO) aan te bieden. Hoewel SAML-integratie voor openbaar toegankelijke OpenSearch Dashboards kant-en-klaar werkt, vereist het inschakelen van SAML voor OpenSearch Dashboards binnen een VPC een zorgvuldig ontwerp met verschillende configuraties.

Dit bericht schetst een end-to-end oplossing voor het integreren van SAML-authenticatie voor OpenSearch Service-domeinen die in een VPC draaien. Het biedt een stapsgewijze implementatierichtlijn en gaat vergezeld van AWS Cloud-ontwikkelingskit (AWS CDK)-applicaties, die alle noodzakelijke configuraties automatiseren.

Overzicht van de oplossing

Het volgende diagram beschrijft de stapsgewijze authenticatiestroom voor toegang tot een privé OpenSearch Service-domein via SSO met behulp van SAML-identiteitsfederatie. De toegang wordt mogelijk gemaakt via openbaar internet via particuliere NGINX reverse proxy-servers die draaien Amazon Elastic Container-service (Amazon ECS) voor hoge beschikbaarheid.

Overzicht oplossingen

De workflow bestaat uit de volgende stappen:

  1. De gebruiker navigeert naar de OpenSearch Dashboards-URL in zijn browser.
  2. De browser bepaalt het IP-adres van het domein en verzendt het verzoek.
  3. AWS WAF regels zorgen ervoor dat alleen vermelde IP-adresbereiken zijn toegestaan.
  4. Application Load Balancer stuurt het verzoek door naar NGINX reverse proxy.
  5. NGINX voegt de benodigde headers toe en stuurt het verzoek door naar OpenSearch Dashboards.
  6. OpenSearch Dashboards detecteert dat het verzoek niet is geverifieerd. Het antwoordt met een omleiding naar de geïntegreerde SAML IdP voor authenticatie.
  7. De gebruiker wordt doorgestuurd naar de SSO-inlogpagina.
  8. De IdP verifieert de identiteit van de gebruiker en genereert een SAML-bevestigingstoken.
  9. De gebruiker wordt teruggestuurd naar de OpenSearch Dashboards-URL.
  10. Het verzoek doorloopt stap 1 tot en met 5 opnieuw totdat het OpenSearch bereikt. Deze keer detecteert OpenSearch Dashboards de bijbehorende SAML-verklaring en staat het verzoek toe.

In de volgende secties stellen we een NGINX reverse proxy in privé-subnetten in om toegang te bieden tot OpenSearch Dashboards voor een domein dat is geïmplementeerd binnen VPC-privé-subnetten. Vervolgens schakelen we SAML-authenticatie in voor OpenSearch Dashboards met behulp van een SAML 2.0-applicatie en gebruiken we een aangepast domeineindpunt om toegang te krijgen tot OpenSearch Dashboards om de SAML-authenticatie in actie te zien.

Voorwaarden

Voordat u aan de slag gaat, voltooit u de vereiste stappen in deze sectie.

Installeer het benodigde gereedschap

Installeer eerst de AWS CDK. Voor meer informatie, zie de AWS CDK v2-ontwikkelaarshandleiding.

Bereid de vereiste AWS-bronnen voor

Voer de volgende stappen uit om uw AWS-bronnen in te stellen:

  1. Maak een AWS-account aan.
  2. Maak een Amazon Route 53 openbare gehoste zone zoals mydomain.com te gebruiken voor het routeren van internetverkeer naar uw domein. Voor instructies, zie Een openbare gehoste zone maken.
  3. Vraag een AWS-certificaatbeheerder (ACM) openbaar certificaat voor de gehoste zone. Voor instructies, zie Een openbaar certificaat aanvragen.
  4. Creëer een VPC met publieke en private subnetten.
  5. Enable AWS IAM Identiteitscentrum. Raadpleeg voor instructies: IAM Identity Center inschakelen.

Bereid uw OpenSearch Service-cluster voor

Dit bericht gaat vergezeld van een zelfstandige AWS CDK-applicatie (opensearch-domein) dat een voorbeeld van een OpenSearch Service-domein implementeert in privé-VPC-subnetten. Het geïmplementeerde domein is uitsluitend bedoeld voor demonstratiedoeleinden en is optioneel.

Als u een bestaand OpenSearch Service-domein in VPC heeft dat u wilt gebruiken voor SAML-integratie, pas dan de volgende configuraties toe:

  1. Op de Clusterconfiguratie tabblad, kies Edit en selecteer Aangepast eindpunt inschakelen in de Aangepast eindpunt pagina.
  2. Voor Aangepaste hostnaam, voert u een volledig gekwalificeerde domeinnaam (FQDN) in, zoals opensearch.mydomain.com, die u wilt gebruiken om toegang te krijgen tot uw cluster. Houd er rekening mee dat de domeinnaam van de opgegeven FQDN (bijvoorbeeld mydomain.com) moet hetzelfde zijn als de openbare gehoste zone die u eerder hebt gemaakt.
  3. Voor AWS-certificaat, kies het SSL-certificaat dat u eerder hebt gemaakt.
  4. In het Samengevat sectie, schakel eventueel droogloopanalyse in en selecteer Oefening of deselecteer het en kies Wijzigingen opslaan.

Download anders het meegeleverde bestand opensearch-domein AWS CDK-applicatie en pak deze uit. Bewerk vervolgens de cdk.json bestand in de hoofdmap van de uitgepakte map en configureer de vereiste parameters:

  • vpc_cidr – Het CIDR-blok waarin de VPC moet worden gemaakt. U kunt de standaardwaarde van 10.0.0.0/16 behouden.
  • opensearch_clusternaam – De naam van het OpenSearch Service-cluster. U kunt de standaardwaarde van laten staan opensearch. Het zal ook worden gebruikt, samen met de hosted_zone_name parameter, om de FQDN van de aangepaste domein-URL samen te stellen.
  • gehoste_zone_id – De openbare gehoste zone-ID van Route 53.
  • gehoste_zone_naam – De naam van de openbare gehoste zone van Route 53 (bijvoorbeeld mydomain.com). Het resultaat van de FQDN met de standaard voorbeeldwaarden is dan opensearch.mydomain.com.

Voer ten slotte de volgende opdrachten uit om de AWS CDK-applicatie te implementeren:

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

Als aan de vereisten is voldaan, raadpleegt u de volgende secties voor een stapsgewijze handleiding voor het implementeren van deze oplossing.

Maak een SAML 2.0-applicatie

We gebruiken IAM Identity Center als identiteitsbron voor onze SAML-integratie. Dezelfde configuratie moet van toepassing zijn op andere SAML 2.0-compatibele IdP's. Raadpleeg uw IdP-documentatie.

  1. Kies in de IAM Identity Center-console Groepen in het navigatievenster.
  2. Maak een nieuwe groep genaamd Opensearch Adminen voeg er gebruikers aan toe.
    Dit zal de SAML-groep zijn die volledige rechten krijgt in OpenSearch Dashboards. Noteer het groeps-ID.OpenSearch-beheerdersgroep
  3. Kies Toepassingen in het navigatievenster.
  4. Maak een nieuwe aangepaste SAML 2.0-toepassing.SAML-applicatie maken
  5. Download het IAM Identity Center SAML-metadatabestand om in een latere stap te gebruiken.IAM Identity Center SAML-metagegevens
  6. Voor Start-URL van toepassing, ga naar binnen [Custom Domain URL]/_dashboards/.
    De aangepaste domein-URL bestaat uit het communicatieprotocol (https://) gevolgd door de FQDN, die u in de vereisten voor uw OpenSearch Service-cluster hebt gebruikt (bijvoorbeeld https://opensearch.mydomain.com). Kijk bij twijfel onder uw OpenSearch Service-clusterconfiguraties.
  7. Voor Applicatie ACS-URL, ga naar binnen [Custom Domain URL]/_dashboards/_opendistro/_security/saml/acs.
  8. Voor SAML-doelgroep van toepassing, ga naar binnen [Custom Domain URL] (zonder enige schuine streep).
    OpenSearch-domein SAML-eigenschappen
  9. Kies Verzenden.
  10. In het Toegewezen gebruikers sectie, selecteer Opensearch-beheerder En kies Gebruikers toewijzen.Wijs een beheerdersgroep toe aan de SAML-applicatie
  11. Op de Acties menu, kies Attribuuttoewijzingen bewerken.Bewerk de attribuuttoewijzing van de SAML-applicatie
  12. Definieer attribuuttoewijzingen zoals weergegeven in de volgende schermafbeelding en kies Wijzigingen opslaan.Configureer de attribuuttoewijzingen van de SAML-applicatie

Implementeer de AWS CDK-applicatie

Voer de volgende stappen uit om de AWS CDK-applicatie te implementeren:

  1. Download en pak het uit opensearch-domein-saml-integratie AWS CDK-applicatie.
  2. Voeg uw privé SSL-sleutel en certificaat toe aan AWS-geheimenmanager en twee geheimen creëren Dit betekent dat we onszelf en onze geliefden praktisch vergiftigen. Key en Crt. Zie bijvoorbeeld de volgende code:
    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

    U kunt de volgende opdracht gebruiken om een ​​zelfondertekend certificaat te genereren. Dit is alleen bedoeld om te testen; gebruik dit niet voor productieomgevingen.

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

  3. Bewerk de cdk.json -bestand en stel de vereiste parameters in het geneste bestand in config voorwerp:
  • aws_regio – De doel-AWS-regio voor uw implementatie (bijvoorbeeld eu-central-1).
  • vpc_id – De ID van de VPC waarin het OpenSearch Service-domein is geïmplementeerd.
  • opensearch_cluster_security_group_id – De ID van de beveiligingsgroep die wordt gebruikt door het OpenSearch Service-domein of een andere beveiligingsgroep die inkomende verbindingen met dat domein op poort 80 en 443 toestaat. Deze groeps-ID wordt door de Application Load Balancer gebruikt om verkeer door te sturen naar uw OpenSearch Service-domein .
  • gehoste_zone_id – De openbare gehoste zone-ID van Route 53.
  • gehoste_zone – De naam van de openbare gehoste zone van Route 53 (bijvoorbeeld mydomain.com).
  • opensearch_aangepaste_domeinnaam – Een FQDN zoals opensearch.mydomain.com, die u wilt gebruiken om toegang te krijgen tot uw cluster. Houd er rekening mee dat de domeinnaam van de opgegeven FQDN (mydomain.com) moet hetzelfde zijn als de hosted_zone parameter.
  • opensearch_custom_domain_certificate_arn – De ARN van het certificaat opgeslagen in ACM.
  • opensearch_domain_endpoint – Het OpenSearch Service VPC-domeineindpunt (bijvoorbeeld vpc-opensearch-abc123.eu-central-1.es.amazonaws.com).
  • vpc_dns_resolver – Dit moet 10.0.0 zijn. als uw VPC CIDR 10.0.0.0/16 is. Zien Amazon DNS-server voor meer details.
  • alb_waf_ip_whitelist_cidrs – Dit is een optionele lijst met nul of meer IP-CIDR-bereiken die automatisch in de AWS WAF worden vermeld om toegang tot het OpenSearch Service-domein toe te staan. Als dit niet is opgegeven, moet u na de implementatie handmatig relevante IP-CIDR-bereiken toevoegen aan de AWS WAF IP-set om toegang toe te staan. Bijvoorbeeld, ["1.2.3.4/32", "5.6.7.0/24"].
  1. Implementeer de OpenSearch Service-domein SAML-integratie AWS CDK-applicatie:
    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

Schakel SAML-verificatie in voor uw OpenSearch Service-cluster

Wanneer de implementatie van de applicatie is voltooid, schakelt u SAML-verificatie in voor uw cluster:

  1. Navigeer op de OpenSearch Service-console naar uw domein.
  2. Op de Beveiligingsconfiguratie tabblad, kies Edit.Schakel SAML-verificatie in voor het OpenSearch-domein
  3. kies SAML-authenticatie inschakelen.
  4. Kies Importeren uit XML-bestand en importeer het IAM Identity Center SAML-metagegevensbestand dat u in een eerdere stap hebt gedownload.
  5. Voor SAML master backend-rol, gebruik dan de groeps-ID die u eerder hebt opgeslagen.
  6. Vouw de extra instellingen sectie en voor rollen, voert u de SAML 2.0-kenmerknaam in die u eerder hebt toegewezen toen u de SAML 2.0-applicatie maakte in AWS Identity Center.
  7. Configureer het domeintoegangsbeleid voor SAML-integratie.
  8. Dien de wijzigingen in en wacht tot de OpenSearch Service de configuraties heeft toegepast voordat u doorgaat naar de volgende sectie.

Test de oplossing

Voer de volgende stappen uit om de oplossing in actie te zien:

  1. Kies in de IAM Identity Center-console Overzicht in het navigatievenster.
  2. In het Samenvatting instellingen sectie, kies de link hieronder AWS-toegangsportaal-URL.Meld u aan bij IAM Identity Center
  3. Log in met uw gebruikersnaam en wachtwoord (registreer uw wachtwoord als dit uw eerste login is).
    Als uw account succesvol is toegevoegd aan de beheerdersgroep, is een SAML-applicatielogo zichtbaar.
  4. Kies Aangepaste SAML 2.0-applicatie om via SSO te worden doorgestuurd naar de OpenSearch Service-dashboards zonder extra inlogpogingen.Open de SAML-applicatie
    Als alternatief kunt u het inloggen op het toegangsportaal overslaan en uw browser rechtstreeks naar de OpenSearch Dashboards-URL verwijzen. In dat geval zal OpenSearch Dashboards u eerst doorverwijzen naar het toegangsportaal om in te loggen, wat u na een succesvolle aanmelding terugstuurt naar de OpenSearch Dashboards-gebruikersinterface, wat resulteert in hetzelfde resultaat als weergegeven in de volgende schermafbeelding.OpenSearch Dashboards UI na succesvol inloggen

Probleem oplossen

Uw openbare IP-adres moet worden vermeld in de AWS WAF-regel, anders wordt een 403 Forbidden-fout geretourneerd. Laat uw IP CIDR-bereik vermelden via de AWS CDK alb_waf_ip_whitelist_cidrs eigenschap zoals beschreven in de installatiehandleiding en implementeer de AWS CDK-applicatie opnieuw zodat de wijzigingen van kracht worden.

Opruimen

Wanneer u klaar bent met deze configuratie, ruimt u de bronnen op om toekomstige kosten te voorkomen.

  1. Navigeer op de OpenSearch Service-console naar het Beveiligingsconfiguratie tabblad van uw OpenSearch Service-domein en kies Edit.
  2. deselecteren SAML-authenticatie inschakelen En kies Wijzigingen opslaan.
  3. Nadat de Amazon SAML-integratie is uitgeschakeld, verwijdert u het opensearch-domain-saml-integration stapel gebruiken cdk destroy.
  4. Optioneel, als u de meegeleverde OpenSearch Service-voorbeeld-AWS CDK-stack (opensearch-domain), verwijder het met cdk destroy.

Conclusie

Met de OpenSearch Service kunnen zakelijke klanten hun favoriete federatieve IdP's, zoals SAML, gebruiken met behulp van IAM Identity Center voor clusters die binnen privé-VPC-subnetten draaien, volgens de best practices van AWS.

In dit bericht hebben we u laten zien hoe u een OpenSearch Service-domein binnen een VPC kunt integreren met een bestaande SAML IdP voor SSO-toegang tot OpenSearch Dashboards met behulp van IAM Identity Center. De geleverde oplossing beheert de netwerktoegang tot de bronnen veilig met behulp van AWS WAF om de toegang alleen te beperken tot geautoriseerde netwerksegmenten of specifieke IP-adressen.

Raadpleeg om aan de slag te gaan Hoe kan ik toegang krijgen tot OpenSearch Dashboards van buiten een VPC met behulp van Amazon Cognito-authenticatie voor verdere vergelijking van het OpenSearch Service-domein in privé-VPC-toegangspatronen.


Over de auteurs

Mahdi Ebrahimi is een Senior Cloud Infrastructure Architect bij Amazon Web Services. Hij blinkt uit in het ontwerpen van gedistribueerde, zeer beschikbare softwaresystemen. Mahdi is toegewijd aan het leveren van geavanceerde oplossingen die zijn klanten in staat stellen te innoveren in het snel evoluerende landschap in de auto-industrie.

Dmytro Protsiv is een Cloud Applications Architect voor Amazon Web Services. Hij heeft een passie voor het helpen van klanten bij het oplossen van hun zakelijke uitdagingen op het gebied van de modernisering van applicaties.

Luca Menichetti is een Big Data-architect bij Amazon Web Services. Hij helpt klanten bij het ontwikkelen van performante en herbruikbare oplossingen om data op schaal te verwerken. Luca heeft een passie voor het beheren van de data-architectuur van organisaties, waardoor data-analyse en machine learning mogelijk worden gemaakt. Na tien jaar met het Hadoop-ecosysteem te hebben gewerkt, vindt hij het erg leuk om problemen in NoSQL-omgevingen aan te pakken.

Krithivasan Balasubramaniyan is een hoofdconsulent bij Amazon Web Services. Hij helpt wereldwijde zakelijke klanten bij hun digitale transformatietraject en helpt bij het ontwerpen van cloud-native oplossingen.

Muthu Pitchaimani is een zoekspecialist met Amazon OpenSearch Service. Hij bouwt grootschalige zoekapplicaties en -oplossingen. Muthu is geïnteresseerd in de onderwerpen netwerken en beveiliging en is gevestigd in Austin, Texas.

spot_img

Laatste intelligentie

spot_img