Bijlage - Voorbeeldimplementatie van weblaag met Apache

Dit onderwerp bevat een end-to-end-procedure die beschrijft hoe u een weblaag implementeert in de voorbeeld-AWS-referentiearchitectuur. De voorbeeldconfiguratie bestaat uit de volgende componenten:

  • Loadbalancer van AWS-toepassing
  • Apache-proxyservers
  • Mellon-verificatiemodule
  • Okta IdP
  • SAML-verificatie

Opmerking: de voorbeeldweblaagconfiguratie die in deze sectie wordt gepresenteerd, bevat gedetailleerde procedures voor het implementeren van software en services van derden. We hebben ons uiterste best gedaan om de procedures voor het realiseren van het weblaagscenario te verifiëren en te documenteren. De software van derden kan echter veranderen of uw scenario kan afwijken van de hier beschreven referentiearchitectuur. Raadpleeg de documentatie van derden voor betrouwbare configuratiegegevens en ondersteuning.

De Linux-voorbeelden in deze sectie tonen opdrachten voor RHEL-achtige distributies. De opdrachten hier zijn specifiek ontwikkeld met de Amazon Linux 2-distributie. Als u de Ubuntu-distributie gebruikt, moet u de opdrachten dienovereenkomstig bewerken.

Het implementeren van de weblaag in dit voorbeeld verloopt volgens een stapsgewijze configuratie- en verificatieprocedure. De kernconfiguratie van de weblaag bestaat uit de volgende stappen om HTTP-verkeer tussen Tableau en internet mogelijk te maken. Apache wordt uitgevoerd en geconfigureerd voor reverse proxy/taakverdeling achter de loadbalancer van de AWS-toepassing:

  1. Apache installeren
  2. Reverse proxy configureren om de connectiviteit met Tableau Server te testen
  3. Taakverdeling op proxy configureren
  4. Loadbalancer van AWS-toepassing configureren

Nadat de weblaag is ingesteld en de connectiviteit met Tableau is geverifieerd, configureert u de verificatie met een externe provider.

Apache installeren

Voer de volgende procedure uit op beide EC2-hosts (Proxy 1 en Proxy 2). Als u in AWS implementeert volgens het referentiearchitectuurvoorbeeld, moet u over twee beschikbaarheidszones beschikken en in elke zone één proxyserver uitvoeren.

  1. Apache installeren:

    sudo yum update -y
    sudo yum install -y httpd
  2. Definieer de configuratie zodanig dat Apache wordt gestart bij opnieuw opstarten:

    sudo systemctl enable --now httpd

  3. Controleer of de door u geïnstalleerde versie van httpd proxy_hcheck_module bevat:

    sudo httpd -M

    De proxy_hcheck_module is vereist. Als uw versie van httpd deze module niet bevat, moet u een update uitvoeren naar een versie van httpd die deze module wel bevat.

Proxy configureren om de connectiviteit met Tableau Server te testen

Voer deze procedure uit op een van de proxyhosts (Proxy 1). Het doel van deze stap is om de connectiviteit tussen internet, uw proxyserver en de Tableau-server in de privébeveiligingsgroep te controleren.

  1. Maak een bestand met de naam tableau.conf en voeg het toe aan de map /etc/httpd/conf.d.

    Kopieer de volgende code en geef de sleutels ProxyPass en ProxyPassReverse op met het privé-IP-adres van Tableau Server-knooppunt 1.

    Belangrijk: de onderstaande configuratie is niet beveiligd en mag niet in productie worden gebruikt. Deze configuratie mag alleen tijdens het installatieproces worden gebruikt om de end-to-end-connectiviteit te verifiëren.

    Als het privé-IP-adres van knooppunt 1 bijvoorbeeld 10.0.30.32 is, is de inhoud van het bestand tableau.conf als volgt:

    <VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass "/" "http://10.0.30.32:80/"
    ProxyPassReverse "/" "http://10.0.30.32:80/"
    </VirtualHost>
  2. Start httpd opnieuw:

    sudo systemctl restart httpd

Verificatie: configuratie van basistopologie

U kunt toegang krijgen tot de beheerpagina van Tableau Server door naar http://<proxy-public-IP-address> te bladeren.

Als de aanmeldingspagina van Tableau Server niet in uw browser wordt geladen, volgt u deze stappen voor probleemoplossing op de Proxy 1-host:

  • Stop en start httpd als eerste stap bij het oplossen van problemen.
  • Controleer het bestand tableau.conf. Controleer of het privé-IP-adres van knooppunt 1 correct is. Controleer dubbele aanhalingstekens en de syntaxis zorgvuldig.
  • Voer de opdracht curl op de reverse-proxyserver uit met het privé-IP-adres van knooppunt 1, bijvoorbeeld, curl 10.0.1.90. Als de shell geen HTML retourneert of als HTML wordt geretourneerd voor de Apache-testwebpagina, controleer dan de protocol-/poortconfiguratie tussen de openbare en privébeveiligingsgroep.
  • Voer de opdracht curl uit met het privé IP-adres van Proxy 1, bijvoorbeeld, curl 10.0.0.163. Als de shell de HTML-code voor de Apache-testwebpagina retourneert, is het proxybestand niet correct geconfigureerd.
  • Start httpd altijd opnieuw op (sudo systemctl restart httpd) na configuratiewijzigingen in het proxybestand of in de beveiligingsgroepen.
  • Zorg ervoor dat TSM op knooppunt 1 draait.

Taakverdeling op proxy configureren

  1. Verwijder de bestaande Virtual Host-configuratie op dezelfde proxyhost (Proxy 1) als waar u het bestand tableau.conf hebt gemaakt en bewerk het bestand door er taakverdelingslogica aan toe te voegen.

    Bijvoorbeeld:

    <VirtualHost *:80>
    ServerAdmin admin@example.com
    #Load balancing logic.
    ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
    Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED 
    <Proxy balancer://tableau>
    #Replace IP addresses below with the IP addresses to the Tableau Servers running the Gateway service.
    BalancerMember http://10.0.3.40/ route=1 hcmethod=GET hcexpr=ok234 hcuri=/favicon.ico
    BalancerMember http://10.0.4.151/ route=2 hcmethod=GET hcexpr=ok234 hcuri=/favicon.ico
    ProxySet stickysession=ROUTEID
    </Proxy>
    ProxyPreserveHost On
    ProxyPass / balancer://tableau/
    ProxyPassReverse / balancer://tableau/ 
    </VirtualHost>
  2. Stop en start httpd:

    sudo systemctl stop httpd
    sudo systemctl start httpd
  3. Controleer de configuratie door naar het openbare IP-adres van Proxy 1 te gaan.

Configuratie naar tweede proxyserver kopiëren

  1. Kopieer het bestand tableau.conf van Proxy 1 en sla het op in de map /etc/httpd/conf.d op de host Proxy 2.
  2. Stop en start httpd:

    sudo systemctl stop httpd
    sudo systemctl start httpd
  3. Controleer de configuratie door naar het openbare IP-adres van Proxy 2 te gaan.

Loadbalancer van AWS-toepassing configureren

Configureer de loadbalancer als een HTTP-listener. De procedure hier beschrijft hoe u een loadbalancer toevoegt in AWS.

Stap 1: Doelgroep maken

Een doelgroep is een AWS-configuratie die de EC2-instanties definieert waarop uw proxyservers draaien. Dit zijn de doelen voor het verkeer van de LBS.

  1. EC2 >Target groups (Doelgroepen) > Create target group (Doelgroep)

  2. Doe het volgende op de pagina Create (Maken):

    • Voer een doelgroepnaam in, bijvoorbeeld TG-internal-HTTP.
    • Doeltype: instanties
    • Protocol: HTTP
    • Poort: 80
    • VPC: selecteer uw VPC.
    • Voeg de te lezen codelijst toe via Health checks (Statuscontroles) > Advanced health checks settings (Geavanceerde instellingen voor statuscontroles) > Success codes (Succescodes): 200,303.
    • Klik op Maken.
  3. Selecteer de doelgroep die u zojuist hebt gemaakt en klik vervolgens op het tabblad Targets (Doelen): 

    • Klik op Edit (Bewerken).
    • Selecteer de EC2-instanties (of één instantie als u er één tegelijk configureert) waarop de proxytoepassing wordt uitgevoerd en klik vervolgens op Toevoegen aan geregistreerd.
    • Klik op Opslaan.

Stap 2: De loadbalancer-wizard starten

  1. EC2> Load Balancers (Loadbalancers) > Create Load Balancer (Loadbalancer maken)

  2. Maak op de pagina 'Select load balancer type' (Type loadbalancer selecteren) een toepassings-loadbalancer.

Opmerking: de gebruikersinterface die wordt weergegeven om de loadbalancer te configureren, is niet consistent in alle AWS-datacenters. De onderstaande procedure, 'Wizardconfiguratie', geeft aan welke instellingen moeten worden toegewezen in de AWS-configuratiewizard die begint met Step 1 Configure Load Balancer (Stap 1 Loadbalancer configureren). 

Als uw datacenter alle configuraties weergeeft op één pagina met onderaan de knop Create load balancer (Loadbalancer maken), volgt u de onderstaande procedure 'Configuratie op één pagina'.

  1. Pagina Configure load balancer (Loadbalancer configureren):

    • Geef naam op.
    • Schema: internetgericht (standaard)
    • IP-adrestype: ipv4 (standaard)
    • Listeners (listeners en routering):
      1. Laat de standaard-HTTP-listener staan.
      2. Klik op Add listener (Luisteraar toevoegen) en voeg HTTPS:443 toe.
    • VPC: selecteer de VPC waar u alles hebt geïnstalleerd.
    • Beschikbaarheidszones:
      • Selecteer a en b voor uw datacenterregio's.
      • Selecteer in elke corresponderende vervolgkeuzelijst het openbare subnet (waar uw proxyservers zich bevinden).
    • Klik op Configure Security Settings (Beveiligingsinstellingen configureren).
  2. Pagina Configure Security Settings (Beveiligingsinstellingen configureren)

    • Upload uw openbare SSL-certificaat.
    • Klik op Next: Configure Security Groups (Volgende stap: Beveiligingsgroepen configureren).
  3. Pagina Configure Security Groepen (Beveiligingsinstellingen configureren):

    • Selecteer de openbare beveiligingsgroep (Public). Als de standaardbeveiligingsgroep (Default) is geselecteerd, wist u deze selectie.
    • Klik op Next: Configure Routing (Volgende stap: Routering configureren).
  4. Pagina Configure Routing (Routering configureren)

    • Doelgroep: bestaande doelgroep.
    • Naam: selecteer de doelgroep die u eerder hebt gemaakt.
    • Klik op Next: Register Targets (Volgende stap: Doelen registreren).
  5. Pagina Register Targets (Doelen registreren)

    • De twee proxyserverinstanties die u eerder hebt geconfigureerd, worden weergegeven.
    • Klik op Next: Review (Volgende stap: Controleren).
  6. Pagina Review (Controleren)

    Klik op Maken.

Basisconfiguratie

  • Geef naam op.
  • Schema: internetgericht (standaard)
  • IP-adrestype: ipv4 (standaard)

Netwerktoewijzing

  • VPC: selecteer de VPC waar u alles hebt geïnstalleerd.
  • Toewijzingen:
    • Selecteer de beschikbaarheidszones a en b (of vergelijkbare beschikbaarheidszones) voor uw datacenterregio's.
    • Selecteer in elke corresponderende vervolgkeuzelijst het openbare subnet (waar uw proxyservers zich bevinden).

Beveiligingsgroepen

  • Selecteer de openbare beveiligingsgroep (Public). Als de standaardbeveiligingsgroep (Default) is geselecteerd, wist u deze selectie.
  • Listeners en routering

    • Laat de standaard-HTTP-listener staan. Geef voor Default action (Standaardactie) de doelgroep op die u eerder hebt ingesteld.
    • Klik op Add listener (Luisteraar toevoegen) en voeg HTTPS:443 toe. Geef voor Default action (Standaardactie) de doelgroep op die u eerder hebt ingesteld.

    Veilige listenerinstellingen

    • Upload uw openbare SSL-certificaat.

    Klik op Create Load balancer (Loadbalancer maken).

    Stap 3: Stickiness inschakelen

    1. Nadat u de loadbalancer hebt gemaakt, moet u 'stickiness' (sessieaffiniteit) inschakelen voor de doelgroep.

      • Open de AWS-pagina voor de doelgroep (EC2> Load Balancing (Taakverdeling) > Target Groups (Doelgroepen)) en selecteer de doelgroepinstantie die u zojuist hebt ingesteld. Selecteer in het menu Action (Actie) de optie Edit attributes (Attributen bewerken).
      • Selecteer op de pagina Edit attributes (Attributen bewerken) de optie Stickiness (sessieaffiniteit), geef een duur van 1 day (1 dag) op en klik vervolgens op Save changes (Wijzigingen opslaan).
    2. Schakel stickiness in voor de loadbalancer op de HTTP-listener. Selecteer de loadbalancer die u zojuist hebt geconfigureerd en klik vervolgens op het tabblad Listeners:

      • Klik voor HTTP:80 op View/edit rules (Regels weergeven/bewerken). Klik op de resulterende pagina Rules (Regels) op het bewerkingspictogram (eenmaal bovenaan de pagina en vervolgens nogmaals naast de regel) om de regel te bewerken. Verwijder de bestaande THEN-regel en vervang deze door op Add action (Actie toevoegen) > Forward to... (Doorsturen naar) te klikken. Specificeer in de hieruit voortvloeiende THEN-configuratie de doelgroep die u hebt gemaakt. Schakel Stickiness in onder Group-level stickiness (Sessieaffiniteit op groepsniveau) en stel de duur in op 1 dag. Sla de instelling op en klik vervolgens op Update (Bijwerken).

    Stap 4: De time-out voor inactiviteit op de loadbalancer instellen

    Werk de inactiviteitstime-out voor de loadbalancer bij naar 400 seconden.

    Selecteer de loadbalancer die u voor deze implementatie hebt geconfigureerd en klik vervolgens op Actions (Acties) > Edit attributes (Kenmerken bewerken). Stel Idle timeout (Time-out inactiviteit) in op 400 seconden en klik op Save (Opslaan).

    Stap 5: LBS-connectiviteit controleren

    Open de AWS-pagina voor de doelgroep (EC2> Load Balancers) en selecteer de loadbalancer-instantie die u zojuist hebt ingesteld.

    Kopieer de DNS-naam onder Description (Beschrijving) en plak deze in een browser om toegang te krijgen tot de aanmeldingspagina van Tableau Server.

    Als u een 500-niveaufout krijgt, moet u uw proxyservers mogelijk opnieuw opstarten.

    DNS bijwerken met openbare Tableau-URL

    Gebruik de DNS-zonenaam van uw domein uit de beschrijving van de AWS-loadbalancer om een CNAME-waarde in uw DNS te maken. Verkeer naar uw URL (tableau.example.com) moet naar de openbare DNS-naam van AWS worden verzonden.

    Connectiviteit controleren

    Nadat uw DNS-updates zijn voltooid, kunt u naar de aanmeldingspagina van Tableau Server navigeren door uw openbare URL in te voeren, bijvoorbeeld: https://tableau.example.com.

    Voorbeeld van verificatieconfiguratie: SAML met externe IdP

    In het volgende voorbeeld wordt beschreven hoe u SAML installeert en configureert met Okta als IdP, en de Mellon-verificatiemodule voor een Tableau-implementatie die wordt uitgevoerd in de AWS-referentiearchitectuur. In het voorbeeld wordt beschreven hoe u Tableau Server en de Apache-proxyservers configureert voor gebruik van HTTP. Okta stuurt via HTTPS een verzoek naar de AWS-loadbalancer, maar al het interne verkeer loopt via HTTP. Houd bij het configuratieproces voor dit scenario rekening met het HTTP- en HTTPS-protocol wanneer u URL-tekenreeksen instelt.

    In dit voorbeeld wordt Mellon op de reverse-proxyservers gebruikt als serviceprovidermodule voor voorafgaande verificatie. Deze configuratie zorgt ervoor dat alleen geverifieerd verkeer verbinding maakt met Tableau Server, waarbij Tableau Server ook fungeert als serviceprovider met Okta als IdP. Daarom moet u twee IdP-toepassingen configureren: één voor de Mellon-serviceprovider en één voor de Tableau-serviceprovider.

    Een Tableau-beheerdersaccount maken

    Een veelgemaakte fout bij het configureren van SAML is dat vóór inschakeling van SSO geen beheerdersaccount wordt gemaakt op Tableau Server.

    De eerste stap is het maken van een account op Tableau Server met de rol van Serverbeheerder. Voor het Okta-voorbeeldscenario moet de gebruikersnaam een geldige e-mailadresnotatie hebben, bijvoorbeeld gebruiker@voorbeeld.com. U moet een wachtwoord voor deze gebruiker instellen, maar het wachtwoord wordt niet gebruikt nadat SAML is geconfigureerd.

    Okta-toepassing voor voorafgaande verificatie configureren

    Voor het end-to-end-scenario dat in deze sectie wordt beschreven, zijn twee Okta-toepassingen nodig:

    • Okta-toepassing voor voorafgaande verificatie
    • Tableau Server-toepassing van Okta

    Elk van deze toepassingen is gekoppeld aan verschillende metadata die u respectievelijk op de reverse proxy en Tableau Server moet configureren.

    In deze procedure wordt beschreven hoe u de Okta-toepassing voor voorafgaande verificatie maakt en configureert. Verderop in dit onderwerp gaat u de Tableau Server-toepassing van Okta maken. Zie de Okta Developer-webpagina(Link wordt in een nieuw venster geopend) (in het Engels) voor informatie over een gratis Okta-proefaccount met een beperkt aantal gebruikers.

    Maak een SAML-app-integratie voor de Mellon-serviceprovider voor voorafgaande verificatie.

    1. Open het Okta-beheerdashboard > Applications Create App Integration (Toepassingen > App-integratie maken).

    2. Selecteer op de pagina Create a new app integration (Nieuwe app-integratie maken) de optie SAML 2.0 en klik dan op Next (Volgende).

    3. Voer op het tabblad General Settings (Algemene instellingen) een app-naam in, bijvoorbeeld Tableau Pre-Auth en klik op Next (Volgende).

    4. Doe het volgende op het tabblad Configure SAML (SAML configureren):

      • URL voor eenmalige aanmelding (SSO). Het laatste element van het pad in de URL voor eenmalige aanmelding wordt aangeduid als MellonEndpointPath in het configuratiebestand mellon.conf dat verderop in deze procedure volgt. U kunt elk gewenst eindpunt opgeven. In dit voorbeeld is sso het eindpunt. Het laatste element, postResponse, is vereist: https://tableau.example.com/sso/postResponse.
      • Schakel het selectievakje Use this for Recipient URL and Destination URL (Dit gebruiken voor ontvangers-URL en bestemmings-URL) uit.
      • Recipient URL (Ontvangers-URL): Hetzelfde als de SSO-URL, maar met HTTP. Bijvoorbeeld http://tableau.example.com/sso/postResponse.
      • Destination URL (Bestemmings-URL): hetzelfde als de SSO-URL, maar met HTTP. Bijvoorbeeld http://tableau.example.com/sso/postResponse.
      • Audience URI (SP Entity ID) (Doelgroep-URI (SP-entiteits-ID). Bijvoorbeeld https://tableau.example.com.
      • Name ID Format (Notatie van naam-ID): EmailAddress
      • Application username (Toepassingsgebruikersnaam): Email
      • Attributes Statements (Kenmerkinstructies): Name = mail; Name format (Naamnotatie)= Unspecified; Value (Waarde) = user.email.

      Klik op Next (Volgende).

    5. Selecteer op het tabblad Feedback het volgende:

      • I'm an Okta customer adding an internal app (Ik ben een Okta-klant die een interne app toevoegt)
      • This is an internal app that we have created (Dit is een interne app die we hebben gemaakt)
      • Klik op Finish (Voltooien).
    6. Maak het IdP-metadatabestand voor voorafgaande verificatie:

      • In Okta: Applications > (Toepassingen) Applications > Uw nieuwe toepassing (bijv. Tableau Pre-Auth) > Sign On (Aanmelden)
      • Klik bij SAML Signing Certificates (SAML-ondertekeningscertificaten) op View SAML setup instructions (SAML-installatie-instructies weergeven).
      • Scroll op de pagina How to Configure SAML 2.0 for <pre-auth> Application (SAML 2.0 configureren voor<pre-auth>-toepassing) omlaag naar de sectie Optional (Optioneel), Provide the following IDP metadata to your SP provider (de volgende IDP-metadata doorgeven aan uw SP-provider).
      • Kopieer de inhoud van het XML-veld en sla deze op in een bestand met de naam pre-auth_idp_metadata.xml.
    7. (Optioneel) Configureer meervoudige verificatie:

      • In Okta: Applications > (Toepassingen) Applications > Uw nieuwe toepassing (bijv. Tableau Pre-Auth) > Sign On (Aanmelden)
      • Klik onder Sign On Policy (Aanmeldingsbeleid) op Add Rule (Regel toevoegen).
      • Geef bij App Sign On Rule (App-aanmeldingsregel) een naam en de verschillende MFA-opties op. Om de functionaliteit te testen, kunt u alle opties op de standaardinstellingen laten staan. Onder Actions (Acties) moet u echter Prompt for factor (Om factor vragen) selecteren en vervolgens opgeven hoe vaak gebruikers zich moeten aanmelden. Klik op Save (Opslaan).

    Okta-gebruiker maken en toewijzen

    1. Maak in Okta een gebruiker aan met de gebruikersnaam die u in Tableau hebt gemaakt (gebruiker@voorbeeld.com): Directory > People (Mensen) > Add person (Persoon toevoegen).
    2. Nadat de gebruiker is aangemaakt, wijst u de nieuwe Okta-app toe aan die persoon: klik op de gebruikersnaam en wijs de toepassing toe in Assign Application (Toepassing toewijzen).

    Mellon installeren voor voorafgaande verificatie

    1. Voer de volgende opdrachten uit op de EC2-instanties met de Apache-proxyserver om de PHP- en Mellon-module te installeren:

      sudo yum install httpd php mod_auth_mellon

    2. Maak de map /etc/httpd/mellon.

    Mellon configureren als module voor voorafgaande verificatie

    Voer deze procedure uit op beide proxyservers.

    U moet een kopie hebben van het bestand pre-auth_idp_metadata.xml dat u hebt gemaakt vanuit de Okta-configuratie.

    1. Wissel van map:

      cd /etc/httpd/mellon

    2. Maak de serviceprovider-metadata. Voer het script mellon_create_metadata.sh uit. U moet de entiteits-ID en de retour-URL (return-url) voor uw organisatie in de opdracht opnemen.

      De retour-URL wordt in Okta de single sign on URL genoemd. Het laatste element van het pad in de retour-URL wordt aangeduid als MellonEndpointPath in het configuratiebestand mellon.conf dat later in deze procedure volgt. In dit voorbeeld specificeren we sso als eindpuntpad.

      Bijvoorbeeld:

      sudo /usr/libexec/mod_auth_mellon/mellon_create_metadata.sh https://tableau.example.com "https://tableau.example.com/sso"

      Het script retourneert het certificaat, de sleutel en de metadatabestanden van de serviceprovider.

    3. Hernoem de serviceproviderbestanden in de map mellon voor betere leesbaarheid. In de documentatie verwijzen we naar deze bestanden met de volgende namen:

      sudo mv *.key mellon.key
      sudo mv *.cert mellon.cert
      sudo mv *.xml sp_metadata.xml

    4. Kopieer het bestand pre-auth_idp_metadata.xml naar dezelfde map.

    5. Maak het bestand mellon.conf in de map /etc/httpd/conf.d:

      sudo nano /etc/httpd/conf.d/mellon.conf

    6. Kopieer de volgende inhoud naar mellon.conf.

      <Location />
      MellonSPPrivateKeyFile /etc/httpd/mellon/mellon.key
      MellonSPCertFile /etc/httpd/mellon/mellon.cert
      MellonSPMetadataFile /etc/httpd/mellon/sp_metadata.xml
      MellonIdPMetadataFile /etc/httpd/mellon/pre-auth_idp_metadata.xml
      MellonEndpointPath /sso
      MellonEnable "info"
      </Location>
    7. Voeg de volgende inhoud toe aan het bestaande tableau.conf-bestand:

      Voeg in het blok <VirtualHost *:80> de volgende inhoud toe. Werk ServerName bij met de openbare hostnaam in uw entiteits-ID:

      DocumentRoot /var/www/html
      ServerName tableau.example.com
      ServerSignature Off
      ErrorLog logs/error_sp.log
      CustomLog logs/access_sp.log combined
      LogLevel info 

      Voeg het Location-blok toe buiten het blok <VirtualHost *:80>. Werk MellonCookieDomain bij met het topleveldomein om cookie-informatie te bewaren, zoals hier weergegeven:

      <Location />
      AuthType Mellon
      MellonEnable auth
      Require valid-user
      MellonCookieDomain example.com					
      </Location>

      Het volledige tableau.conf-bestand ziet eruit zoals in het volgende voorbeeld:

      <VirtualHost *:80>
      ServerAdmin admin@example.com
      ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
      Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
      <Proxy balancer://tableau>
      BalancerMember http://10.0.3.36/ route=1 hcmethod=GET hcexpr=ok234 hcuri=/favicon.ico
      BalancerMember http://10.0.4.15/ route=2 hcmethod=GET hcexpr=ok234 hcuri=/favicon.ico
      ProxySet stickysession=ROUTEID
      </Proxy>
      ProxyPreserveHost On
      ProxyPass / balancer://tableau/
      ProxyPassReverse / balancer://tableau/
      DocumentRoot /var/www/html
      ServerName tableau.example.com
      ServerSignature Off
      ErrorLog logs/error_sp.log
      CustomLog logs/access_sp.log combined
      LogLevel info 
      </VirtualHost>
      <Location />
      AuthType Mellon
      MellonEnable auth
      Require valid-user
      MellonCookieDomain example.com
      </Location>
    8. Controleer de configuratie. Voer de volgende opdracht uit:

      sudo apachectl configtest

      Als de configuratietest een fout retourneert, herstelt u de fouten en voert u configtest opnieuw uit. Bij succesvolle configuratie wordt Syntax OK geretourneerd.

    9. Start httpd opnieuw:

      sudo systemctl restart httpd

    Een Tableau Server-applicatie maken in Okta

    1. In het Okta-dashboard: Applications (Toepassingen) > Applications > Browse App Catalog (App-catalogus doorzoeken)
    2. Zoek in Browse App Integration Catalog (App-integratiecatalogus doorzoeken) naar Tableau, selecteer de Tableau Server-tegel en klik vervolgens op Add (Toevoegen).
    3. Voer bij Add Tableau Server (Tableau Server toevoegen) > Algemene instellingen (Algemene instellingen) een label in en klik vervolgens op Next (Volgende).
    4. Selecteer in ‘Sign-On Options’ (Aanmeldingsopties) de optie SAML 2.0 en scroll vervolgens omlaag naar 'Advanced Sign-on Settings' (Geavanceerde aanmeldingsinstellingen):
      • SAML Entity ID (SAML-entiteits-ID): voer de openbare URL in, bijvoorbeeld https://tableau.example.com.
      • Application user name format (Notatie toepassingsgebruikersnaam): Email (E-mail)
    5. Klik op de link Identity Provider metadata (Identiteitsprovider-metadata) om een browser te starten. Kopieer de browserlink. Dit is de link die u gebruikt wanneer u Tableau configureert in de volgende procedure.
    6. Klik op Done (Gereed).
    7. Wijs de nieuwe Tableau Server-toepassing van Okta toe aan uw gebruiker (gebruiker@voorbeeld.com): Klik op de gebruikersnaam en wijs de toepassing toe in Assign Application (Toepassing toewijzen).

    SAML inschakelen op Tableau Server voor IdP

    Voer deze procedure uit op Tableau Server-knooppunt 1

    1. Download de Tableau Server-toepassingsmetadata van Okta. Gebruik de link die u bij de vorige procedure hebt opgeslagen:

      wget https://dev-66144217.okta.com/app/exk1egxgt1fhjkSeS5d7/sso/saml/metadata -O idp_metadata.xml

    2. Kopieer een TLS-certificaat en bijbehorend sleutelbestand naar de Tableau Server. Het sleutelbestand moet een RSA-sleutel zijn. Zie SAML-vereisten (Linux(Link wordt in een nieuw venster geopend)) voor meer informatie over SAML-certificaat- en IdP-vereisten.

      Om het beheer en de implementatie van certificaten te vereenvoudigen en als best practice voor de beveiliging raden wij aan om certificaten te gebruiken die zijn gegenereerd door een grote, vertrouwde externe CA (certificeringsinstantie). U kunt er ook voor kiezen om zelfondertekende certificaten te genereren of certificaten van een PKI voor TLS te gebruiken.

      Als u geen TLS-certificaat hebt, kunt u een zelfondertekend certificaat genereren met behulp van de onderstaande ingesloten procedure.

      Een zelfondertekend certificaat genereren

      Voer deze procedure uit op Tableau Server-knooppunt 1.

      1. Genereer een root-CA-sleutel:

        openssl genrsa -out rootCAKey-saml.pem 2048

      2. Maak het root-CA-certificaat:

        openssl req -x509 -sha256 -new -nodes -key rootCAKey-saml.pem -days 3650 -out rootCACert-saml.pem

        U wordt gevraagd waarden in te voeren voor de certificaatvelden. Bijvoorbeeld:

        Country Name (2 letter code) [XX]:US
        State or Province Name (full name) []:Washington
        Locality Name (eg, city) [Default City]:Seattle
        Organization Name (eg, company) [Default Company Ltd]:Tableau
        Organizational Unit Name (eg, section) []:Operations
        Common Name (eg, your name or your server's hostname) []:tableau.example.com
        Email Address []:example@tableau.com
      3. Maak het certificaat en de bijbehorende sleutel (server-saml.csr en server-saml.key in het onderstaande voorbeeld). De onderwerpnaam voor het certificaat moet overeenkomen met de openbare hostnaam van de Tableau-host. De onderwerpnaam wordt ingesteld met de optie -subj in de notatie "/CN=<host-name>", bijvoorbeeld:

        openssl req -new -nodes -text -out server-saml.csr -keyout server-saml.key -subj "/CN=tableau.example.com"

      4. Onderteken het nieuwe certificaat met het CA-certificaat dat u hierboven hebt gemaakt. De volgende opdracht geeft het certificaat ook weer in de crt-notatie:

        openssl x509 -req -in server-saml.csr -days 3650 -CA rootCACert-saml.pem -CAkey rootCAKey-saml.pem -CAcreateserial -out server-saml.crt

      5. Converteer het sleutelbestand naar RSA. Tableau vereist een RSA-sleutelbestand voor SAML. Voer de volgende opdracht uit om de sleutel te converteren:

        openssl rsa -in server-saml.key -out server-saml-rsa.key

    3. Configureer SAML. Voer de volgende opdracht uit en geef daarbij uw entiteits-ID en retour-URL op, evenals de paden naar het metadatabestand, certificaatbestand en sleutelbestand:

      tsm authentication saml configure --idp-entity-id "https://tableau.example.com" --idp-return-url "https://tableau.example.com" --idp-metadata idp_metadata.xml --cert-file "server-saml.crt" --key-file "server-saml-rsa.key"

      tsm authentication saml enable

    4. Als uw organisatie Tableau Desktop 2021.4 of hoger gebruikt, moet u de volgende opdracht uitvoeren om verificatie via de reverse-proxyservers in te schakelen.

      Versies van Tableau Desktop 2021.2.1 - 2021.3 werken zonder dat u deze opdracht uitvoert, op voorwaarde dat de module voor voorafgaande verificatie (bijvoorbeeld Mellon) is geconfigureerd om het bewaren van cookies in het topleveldomein toe te staan.

      tsm configuration set -k features.ExternalBrowserOAuth -v false

    5. Pas configuratiewijzigingen toe:

      tsm pending-changes apply

    SAML-functionaliteit valideren

    Om de end-to-end SAML-functionaliteit te valideren, meldt u zich aan bij Tableau Server met de openbare URL (bijvoorbeeld https://tableau.example.com) met het Tableau-beheerdersaccount dat u aan het begin van deze procedure hebt gemaakt.

    Probleemoplossing bij validatie

    Bad Request: een veelvoorkomende fout in dit scenario is de foutmelding 'Bad Request' (ongeldige aanvraag) van Okta. Dit probleem doet zich vaak voor wanneer de browser data van een eerdere Okta-sessie in de cache opslaat. Indien u bijvoorbeeld de Okta-toepassingen beheert als Okta-beheerder en vervolgens probeert toegang te krijgen tot Tableau met een ander Okta-account, kunnen sessiedata van de beheerdersdata de fout 'Bad Request' veroorzaken. Als deze fout zich blijft voordoen, zelfs nadat u de lokale browsercache hebt gewist, valideer het Tableau-scenario dan door verbinding te maken met een andere browser.

    Een andere oorzaak van de fout 'Bad Request' is een typefout in een van de vele URL's die u invoert tijdens het configuratieproces voor Okta, Mellon en SAML. Controleer dit allemaal zorgvuldig.

    Vaak geeft het httpd-bestand error.log op de Apache-server aan welke URL de fout veroorzaakt.

    Not Found - The requested URL was not found on this server: (Niet gevonden - De gevraagde URL is niet gevonden op deze server) Deze fout duidt op een configuratiefout.

    Als de gebruiker is geverifieerd met Okta en vervolgens deze foutmelding krijgt, hebt u de Okta-toepassing voor voorafgaande verificatie waarschijnlijk naar Tableau Server geüpload toen u SAML configureerde. Controleer of de metadata van de Okta Tableau Server-toepassing zijn geconfigureerd op Tableau Server, en niet de metadata van de Okta-toepassing voor voorafgaande verificatie.

    Andere stappen voor probleemoplossing:

    • Controleer tableau.conf zorgvuldig op typefouten of configuratiefouten.
    • Controleer de instellingen van de Okta-toepassing voor voorafgaande verificatie. Zorg ervoor dat het HTTP- en het HTTPS-protocol zijn ingesteld zoals aangegeven in dit onderwerp.
    • Start httpd opnieuw op beide proxyservers.
    • Verifieer dat sudo apachectl configtest 'Syntax OK' retourneert op beide proxyservers.
    • Controleer of de testgebruiker aan beide toepassingen in Okta is toegewezen.
    • Controleer of 'stickiness' (sessieaffiniteit) is ingesteld op de loadbalancer en de bijbehorende doelgroepen

    SSL/TLS configureren van loadbalancer tot Tableau Server

    Sommige organisaties hebben een end-to-end-encryptiekanaal nodig van de client naar de back-endservice. De standaardreferentiearchitectuur zoals tot dusver beschreven, specificeert SSL van de client tot de loadbalancer die op de weblaag van uw organisatie wordt uitgevoerd.

    Om SSL van de loadbalancer tot Tableau Server te configureren, moet u het volgende doen:

    • Een geldig SSL-certificaat installeren op zowel Tableau als de proxyservers.
    • SSL van de loadbalancer tot de reverse-proxyservers configureren.
    • SSL van de proxyservers tot Tableau Server configureren.
    • U kunt SSL ook configureren van Tableau Server tot de PostgreSQL-instantie.

    In de rest van dit onderwerp wordt deze implementatie beschreven in de context van de AWS-voorbeeldreferentiearchitectuur.

    Voorbeeld: SSL/TLS configureren in AWS-referentiearchitectuur

    In dit gedeelte wordt beschreven hoe u SSL respectievelijk op Tableau en op een Apache-proxyserver configureert in de voorbeeld-AWS-referentiearchitectuur.

    De Linux-procedures in dit voorbeeld tonen opdrachten voor RHEL-achtige distributies. De opdrachten hier zijn specifiek ontwikkeld met de Amazon Linux 2-distributie. Als u de Ubuntu-distributie gebruikt, moet u de opdrachten dienovereenkomstig bewerken.

    Stap 1: Certificaten en bijbehorende sleutels verzamelen

    Om het beheer en de implementatie van certificaten te vereenvoudigen en als best practice voor de beveiliging raden wij aan om certificaten te gebruiken die zijn gegenereerd door een grote, vertrouwde externe CA (certificeringsinstantie).

    U kunt er ook voor kiezen om zelfondertekende certificaten te genereren of certificaten van een PKI voor TLS te gebruiken.

    De volgende procedure beschrijft hoe u zelfondertekende certificaten genereert. Als u certificaten van derden gebruikt, zoals wij aanbevelen, kunt u deze procedure overslaan.

    Voer deze procedure uit op een van de proxyhosts. Nadat u het certificaat en de bijbehorende sleutel hebt gegenereerd, deelt u deze met de andere proxyhost en met Tableau Server-knooppunt 1.

    1. Genereer een root-CA-sleutel:

      openssl genrsa -out rootCAKey.pem 2048

    2. Maak het root-CA-certificaat:

      openssl req -x509 -sha256 -new -nodes -key rootCAKey.pem -days 3650 -out rootCACert.pem

      U wordt gevraagd waarden in te voeren voor de certificaatvelden. Bijvoorbeeld:

      Country Name (2 letter code) [XX]:US
      State or Province Name (full name) []:Washington
      Locality Name (eg, city) [Default City]:Seattle
      Organization Name (eg, company) [Default Company Ltd]:Tableau
      Organizational Unit Name (eg, section) []:Operations
      Common Name (eg, your name or your server's hostname) []:tableau.example.com
      Email Address []:example@tableau.com
    3. Maak het certificaat en de bijbehorende sleutel (serverssl.csr en serverssl.key in het onderstaande voorbeeld). De onderwerpnaam voor het certificaat moet overeenkomen met de openbare hostnaam van de Tableau-host. De onderwerpnaam wordt ingesteld met de optie -subj in de notatie "/CN=<host-name>", bijvoorbeeld:

      openssl req -new -nodes -text -out serverssl.csr -keyout serverssl.key -subj "/CN=tableau.example.com"

    4. Onderteken het nieuwe certificaat met het CA-certificaat dat u in stap 2 hebt gemaakt. De volgende opdracht geeft het certificaat ook weer in de crt-notatie:

      openssl x509 -req -in serverssl.csr -days 3650 -CA rootCACert.pem -CAkey rootCAKey.pem -CAcreateserial -out serverssl.crt

    Stap 2: Tableau Server voor SSL configureren

    Voer deze procedure uit op beide proxyservers.

    1. Installeer de Apache SSL-module:

      sudo yum install mod_ssl

    2. Maak de map /etc/ssl/private:

      sudo mkdir -p /etc/ssl/private

    3. Kopieer de crt- en sleutelbestanden naar de volgende /etc/ssl/-paden:

      sudo cp serverssl.crt /etc/ssl/certs/

      sudo cp serverssl.key /etc/ssl/private/

    4. Werk het bestaande tableau.conf-bestand bij met de volgende updates:

      • Voeg het SSL-rewrite-blok toe:
        RewriteEngine on
        RewriteCond %{SERVER_NAME} =tableau.example.com
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
      • Werk in het SSL-rewrite-blok de RewriteCond servernaam bij: voeg uw openbare hostnaam toe, bijvoorbeeld tableau.example.com
      • Wijzig <VirtualHost *:80> in <VirtualHost *:443>.
      • Plaats het <VirtualHost *:443>-blok en het <Location />-blok in <IfModule mod_ssl.c> ... </IfModule>.
      • BalancerMember: verander het protocol van http in https.
      • Voeg SSL*-elementen toe in het <VirtualHost *:443>-blok:
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/serverssl.crt
        SSLCertificateKeyFile /etc/ssl/private/serverssl.key
        SSLProxyEngine on
        SSLProxyVerify none
        SSLProxyCheckPeerName off
        SSLProxyCheckPeerExpire off
      • In het LogLevel-element: voeg ssl:warn toe.
      • Optioneel: als u een verificatiemodule hebt geïnstalleerd en geconfigureerd, staan er mogelijk extra elementen in het bestand tableau.conf. Het blok <Location /> </Location> zal bijvoorbeeld elementen bevatten.

      Hier ziet u een voorbeeld van een tableau.conf-bestand dat is geconfigureerd voor SSL:

      RewriteEngine on
      RewriteCond %{SERVER_NAME} =tableau.example.com
      RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
      
      <IfModule mod_ssl.c>
      <VirtualHost *:443>
      ServerAdmin admin@example.com
      ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
      Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
      <Proxy balancer://tableau>
      BalancerMember https://10.0.3.36/ route=1 hcmethod=GET hcexpr=ok234 hcuri=/favicon.ico
      BalancerMember https://10.0.4.15/ route=2 hcmethod=GET hcexpr=ok234 hcuri=/favicon.ico
      ProxySet stickysession=ROUTEID
      </Proxy>
      ProxyPreserveHost On
      ProxyPass / balancer://tableau/
      ProxyPassReverse / balancer://tableau/
      DocumentRoot /var/www/html
      ServerName tableau.example.com
      ServerSignature Off
      ErrorLog logs/error_sp.log
      CustomLog logs/access_sp.log combined
      LogLevel info ssl:warn
      SSLEngine on
      SSLCertificateFile /etc/ssl/certs/serverssl.crt
      SSLCertificateKeyFile /etc/ssl/private/serverssl.key
      SSLProxyEngine on
      SSLProxyVerify none
      SSLProxyCheckPeerName off
      SSLProxyCheckPeerExpire off
      </VirtualHost>
      <Location />
      #If you have configured a pre-auth module (e.g. Mellon) include those elements here.
      </Location>
      </IfModule>
    5. Voeg het bestand index.html toe om 403-fouten te onderdrukken:

      sudo touch /var/www/html/index.html
    6. Start httpd opnieuw:

      sudo systemctl restart httpd

    Stap 3: Tableau Server voor externe SSL configureren

    Kopieer de bestanden serverssl.crt en serverssl.key van de host Proxy 1 naar de oorspronkelijke Tableau Server (knooppunt 1).

    Voer de volgende opdrachten uit op knooppunt 1:

    tsm security external-ssl enable --cert-file serverssl.crt --key-file serverssl.key
    tsm pending-changes apply

    Stap 4: Optionele verificatieconfiguratie

    Als u een externe identiteitsprovider voor Tableau hebt geconfigureerd, moet u de retour-URL's waarschijnlijk bijwerken in het IdP-beheerdashboard.

    Als u bijvoorbeeld een Okta-toepassing voor voorafgaande verificatie gebruikt, moet u de toepassing zodanig bijwerken dat deze het HTTPS-protocol gebruikt voor de ontvangers-URL en de bestemmings-URL.

    Stap 5: AWS-loadbalancer voor HTTPS configureren

    Als u implementeert met AWS-loadbalancer zoals gedocumenteerd in deze gids, configureert u de AWS-loadbalancer opnieuw om HTTPS-verkeer naar de proxyservers te sturen:

    1. Hef de registratie van de bestaande HTTP-doelgroep op:

      Selecteer in Target Groups, (Doelgroepen) de HTTP-doelgroep die is geconfigureerd voor de loadbalancer, klik op Actions (Acties) en klik vervolgens op Register and deregister instance (Instantie registreren en deregistreren).

      Selecteer op de pagina Register and deregister targets (Doelen registreren en deregistreren) de instanties die momenteel geconfigureerd zijn, klik op Deregister (Deregistreren) en klik vervolgens op Save (Opslaan).

    2. Maak een HTTPS-doelgroep:

      Target groups > Create target group (Doelgroepen) > Doelgroep maken)

      • Selecteer 'Instances' (Instanties).
      • Voer een doelgroepnaam in, bijvoorbeeld TG-internal-HTTPS.
      • Selecteer uw VPC.
      • Protocol: HTTPS 443
      • Voeg de te lezen codelijst toe via Health checks (Statuscontroles) > Advanced health checks settings (Geavanceerde instellingen voor statuscontroles) > Success codes (Succescodes): 200,303.
      • Klik op Create (Maken).
    3. Selecteer de doelgroep die u zojuist hebt gemaakt en klik vervolgens op het tabblad Targets (Doelen): 

      • Klik op Edit (Bewerken).
      • Selecteer de EC2-instanties waarop de proxytoepassing wordt uitgevoerd en klik vervolgens op Toevoegen aan geregistreerd.
      • Klik op Opslaan.
    4. Nadat u de doelgroep hebt aangemaakt, moet u 'stickiness' (sessieaffiniteit) inschakelen:

      • Open de AWS-pagina voor de doelgroep (EC2> Load Balancing (Taakverdeling) > Target Groups (Doelgroepen)) en selecteer de doelgroepinstantie die u zojuist hebt ingesteld. Selecteer in het menu Action (Actie) de optie Edit attributes (Attributen bewerken).
      • Selecteer op de pagina Edit attributes (Attributen bewerken) de optie Stickiness (sessieaffiniteit), geef een duur van 1 day (1 dag) op en klik vervolgens op Save changes (Wijzigingen opslaan).
    5. Werk de listenerregels bij op de loadbalancer. Selecteer de loadbalancer die u voor deze implementatie hebt geconfigureerd en klik vervolgens op het tabblad Listeners.

      • Klik voor HTTP:80 op View/edit rules (Regels weergeven/bewerken). Klik op de resulterende pagina Rules (Regels) op het bewerkingspictogram (eenmaal bovenaan de pagina en vervolgens nogmaals naast de regel) om de regel te bewerken. Verwijder de bestaande THEN-regel en vervang deze door op Add action (Actie toevoegen) > Redirect to... (Omleiden naar) te klikken. Geef in de resulterende THEN-configuratie HTTPS en poort 443 op en laat de overige opties op de standaardinstellingen staan. Sla de instelling op en klik vervolgens op Update (Bijwerken).
      • Klik voor HTTP:443 op View/edit rules (Regels weergeven/bewerken). Klik op de resulterende pagina Rules (Regels) op het bewerkingspictogram (eenmaal bovenaan de pagina en vervolgens nogmaals naast de regel) om de regel te bewerken. Wijzig de doelgroep in de zojuist gemaakte HTTPS-groep onder Forward to... (Doorsturen naar) in de THEN-configuratie. Schakel Stickiness in onder Group-level stickiness (Sessieaffiniteit op groepsniveau) en stel de duur in op 1 dag. Sla de instelling op en klik vervolgens op Update (Bijwerken).

    Stap 6: SSL controleren

    Controleer de configuratie door naar https://tableau.example.com te gaan.

    Bedankt voor uw feedback.De feedback is verzonden. Dank u wel.