Portail utilisateur et administrateur

Le rôle Ansible reemo-infra permet de personnaliser chaque portail via des variables définies au niveau host dans le fichier Inventory. Ces variables s’appliquent individuellement à chaque instance de portail.

URL des Portails

Par défaut les serveurs Infra et Portal répondent sur toutes les requêtes avec un certificat autosigné.

Pour configurer une URL spécifique pour le Portail utilisateur, utilisez la variable PORTAL_URL :

all:
    vars:
        API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
        ...
    infra_manager:
        vars:
            PORTAL_URL: "url.domain.tld"
        hosts:
            infra_manager1:
                ansible_host: "10.0.0.1"
            infra_manager2:
                ansible_host: "10.0.0.2"
            infra_manager3:
                ansible_host: "10.0.0.3"

Pour configurer une URL spécifique pour le Portail administrateur, utilisez la variable PORTALADMIN_URL :

all:
    vars:
        API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
        ...
    infra_manager:
        vars:
            PORTAL_URL: "url.domain.tld"
            PORTALADMIN_URL: "urladmin.domain.ltd"
        hosts:
            infra_manager1:
                ansible_host: "10.0.0.1"
            infra_manager2:
                ansible_host: "10.0.0.2"
            infra_manager3:
                ansible_host: "10.0.0.3"

Important

Il est recommandé de ne pas exposer le Portail Administrateur vers un réseau externe. Ce portail est destiné à être utilisé dans votre réseau interne.

Warning

Avec PORTALADMIN_URL activé, les administrateurs ne peuvent plus se connecter via l’URL du portail utilisateur.

Filtrage IP

Vous pouvez activer le filtrage par IP sur les portails utilisateur et administrateur en utilisant les variables PORTAL_URL_RESTRICT_IP et PORTALADMIN_URL_RESTRICT_IP :

all:
    vars:
        API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
        ...
    infra_manager:
        vars:
            PORTAL_URL: "url.domain.tld"
            PORTAL_URL_RESTRICT_IP: "10.1.1.1,10.2.2.0/24"
            PORTALADMIN_URL: "urladmin.domain.ltd"
            PORTALADMIN_URL_RESTRICT_IP: "10.3.1.2,10.3.2.0/24"
        hosts:
            infra_manager1:
                ansible_host: "10.0.0.1"
            infra_manager2:
                ansible_host: "10.0.0.2"
            infra_manager3:
                ansible_host: "10.0.0.3"

Gestion des Ports

Par défaut le Portail utilisateurs répond sur le port 443 avec une redirection automatique du port 80 vers le port 443 en SSL.

Pour le Portail administrateur, utilisez la variable PORTALADMIN_URL_PORT pour spécifier un autre port :

PORTALADMIN_URL_PORT: "8444"

Warning

Le port doit être différent de 80, 443 et 8443 qui sont déja utilisés pour d’autres services

Personnalisation visuelle du portail

Vous pouvez appliquer un thème visuel à un portail avec la variable PORTAL_CUSTOMIZATION, en choisissant librement le nom du thème (ex : BLUE, BLACK).

PORTAL_CUSTOMIZATION: "BLUE"

Séparation physique des Portails

Le rôle Ansible reemo-infra vous permet de séparer physiquement le Portail Utilisateurs et le Portail Administrateurs.

Portail dédié aux administrateurs d’instance

../../_static/images/infra/archi_infra_multidmz.png

Pour cela, créez un fichier inventaire en remplaçant le groupe infra_manager par deux groupes distincts : api_manager et portal_manager.

Note

Il vous faudra renseigner dans les variables un HMACSECRET qui sera partagé entre les 2 portails et l’API. Ce secret est utilisé pour signer les requêtes en provenance des portails vers l’API.

all:
    vars:
        API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
        HMACSECRET: "U6US67D70409RFAGQH5ZIWBFV8HX0UCZ"
portal_manager:
        children:
            portaluser_manager:
                vars:
                    PORTAL_URL: "url.domain.tld"
                    TRAEFIK_SSL_CERTS:
                        - cert_file: "/localpath/to/cert.crt"
                          key_file: "/localpath/to/key.key"
                    API_IP:
                        - ip: "10.3.1.1"
                        - ip: "10.3.1.2"
                        - ip: "10.3.1.3"
                hosts:
                    portaluser1:
                        ansible_host: "10.0.0.1"
                    portaluser2:
                        ansible_host: "10.0.0.2"
                    portaluser3:
                        ansible_host: "10.0.0.3"
            portaladmin_manager:
                vars:
                    PORTAL_URL: "admin.domain.tld"
                    TRAEFIK_SSL_CERTS:
                        - cert_file: "/localpath/to/cert.crt"
                          key_file: "/localpath/to/key.key"
                    API_IP:
                        - ip: "10.3.1.1"
                        - ip: "10.3.1.2"
                        - ip: "10.3.1.3"
                hosts:
                    portaladmin1:
                        ansible_host: "10.0.0.4"
                    portaladmin2:
                        ansible_host: "10.0.0.5"
                    portaladmin3:
                        ansible_host: "10.0.0.6"
api_manager:
        hosts:
            api1:
                ansible_host: "10.3.1.1"
            api2:
                ansible_host: "10.3.1.2"
            api3:
                ansible_host: "10.3.1.3"

Warning

Il est important de noter que dans l’exemple ci-dessus, les URLs renseignées utilisent la variable PORTAL_URL et ce même pour le portail administrateur. C’est la valeur à utiliser lorsqu’un seul portail est déclaré sur un serveur particulier.

Portail dédié à un SSO

En plus de la séparation physique, vous pouvez restreindre les connecteurs SSO disponibles sur chaque portail.

../../_static/images/infra/onprem_multiconnector.png

Lors de la création d’un connecteur, vous obtenez un GUID. Renseignez ce GUID dans le fichier inventaire, dans la section du portail ciblé, en utilisant la variable PORTAL_LDAP_CONNECTORS pour les connecteurs LDAP ou PORTAL_SAML_CONNECTORS pour les connecteurs SAML :

all:
    vars:
        API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
        HMACSECRET: "..."
portal_manager:
        children:
            portalsso_manager:
                vars:
                    PORTAL_URL: "urlldap.domain.tld"
                    TRAEFIK_SSL_CERTS:
                        - cert_file: "/localpath/to/cert.crt"
                          key_file: "/localpath/to/key.key"
                    PORTAL_LDAP_CONNECTORS:
                        - ldapid: "3182932d-9ee1-4c06-a4cf-c13c25f2ee93"
                    PORTAL_SAML_CONNECTORS:
                        - samlid: "692469bd-cb28-8332-aa65-9c95451c1a0e"
                hosts:
                    portalsso1:
                        ansible_host: "10.0.0.7"
                    portalsso2:
                        ansible_host: "10.0.0.8"
                    portalsso3:
                        ansible_host: "10.0.0.9"

Pour ajouter plusieurs connecteurs au même portail, ajoutez plusieurs lignes avec ldapid ou samlid :

all:
    vars:
        API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
        HMACSECRET: "..."
portal_manager:
        children:
            portalsso_manager:
                vars:
                    PORTAL_URL: "urlsso.domain.tld"
                    TRAEFIK_SSL_CERTS:
                        - cert_file: "/localpath/to/cert.crt"
                          key_file: "/localpath/to/key.key"
                    PORTAL_LDAP_CONNECTORS:
                        - ldapid: "3182932d-9ee1-4c06-a4cf-c13c25f2ee93"
                        - ldapid: "9c713681-b758-4179-b9a2-13618a7b804e"
                    PORTAL_SAML_CONNECTORS:
                        - samlid: "692469bd-cb28-8332-aa65-9c95451c1a0e"
                        - samlid: "4418cfb9-52c5-4d7c-88d1-7660e7809d23"
                hosts:
                    portalsso1:
                        ansible_host: "10.0.0.7"
                    portalsso2:
                        ansible_host: "10.0.0.8"
                    portalsso3:
                        ansible_host: "10.0.0.9"
../../_static/images/infra/portal_saml_connectors_fr.png

Page de connexion avec plusieurs connecteurs SAML — l’utilisateur sélectionne son connecteur dans la liste déroulante.

Note

Les identifiants des connecteurs SAML sont disponibles dans verified_user Zone d’administration > dashboard Général > passkey Connecteurs SSO.

Pour un portail administrateur dédié, utilisez PORTALADMIN_SAML_CONNECTORS à la place de PORTAL_SAML_CONNECTORS pour restreindre les connecteurs SAML disponibles spécifiquement sur ce portail.

all:
    vars:
        API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
        HMACSECRET: "..."
portal_manager:
    children:
        portaluser_manager:
            vars:
                PORTAL_URL: "url.domain.tld"
                PORTAL_SAML_CONNECTORS:
                    - samlid: "692469bd-cb28-8332-aa65-9c95451c1a0e"
            hosts:
                portaluser1:
                    ansible_host: "10.0.0.1"
        portaladmin_manager:
            vars:
                PORTAL_URL: "admin.domain.tld"
                PORTALADMIN_SAML_CONNECTORS:
                    - samlid: "236cc1d9-a87d-4f16-becb-6cd6a0bba67f"
            hosts:
                portaladmin1:
                    ansible_host: "10.0.0.4"

Serveur Signal par Portail

Pour séparer complètement les portails, assignez des serveurs Signal spécifiques à chaque portail. Ces serveurs seront utilisés par les conteneurs lancés depuis ces portails en utilisant la variable PROVISION_SIGNAL_IP :

portal_manager:
    vars:
        API_IP:
            - ip: "10.0.0.1"
    children:
        portal1_user:
            hosts:
                portal1_user1:
                    ansible_host: "10.0.0.2"
                    PORTAL_URL: "portal1.domain.tld"
                    PROVISION_SIGNAL_IP:
                        - ip: "10.0.0.2"
        portal2_user:
            hosts:
                portal2_user1:
                    ansible_host: "10.0.0.3"
                    PORTAL_URL: "portal2.domain.tld"
                    PROVISION_SIGNAL_IP:
                        - ip: "10.0.0.3"

Routage par tags des fournisseurs de conteneurs

La variable PORTAL_CONTAINER_PROVIDERS_TAGS restreint les fournisseurs de conteneurs disponibles sur un portail donné. Seuls les fournisseurs dont les tags correspondent à cette liste fourniront les sessions de conteneurs pour ce portail :

portal_manager:
    vars:
        API_IP:
            - ip: "10.0.0.1"
    children:
        portal1_user:
            hosts:
                portal1_user1:
                    ansible_host: "10.0.0.2"
                    PORTAL_URL: "portal1.domain.tld"
                    PORTAL_CONTAINER_PROVIDERS_TAGS:
                        - tag: "blue"
        portal2_user:
            hosts:
                portal2_user1:
                    ansible_host: "10.0.0.3"
                    PORTAL_URL: "portal2.domain.tld"
                    PORTAL_CONTAINER_PROVIDERS_TAGS:
                        - tag: "black"

Dans cet exemple, portal1_user1 n’a accès qu’aux fournisseurs tagués blue, et portal2_user1 uniquement aux fournisseurs tagués black.

../../_static/images/infra/portal_tag_routing_fr.png

Routage par tags : chaque portail se déploie uniquement sur les fournisseurs dont les tags correspondent à PORTAL_CONTAINER_PROVIDERS_TAGS.

Note

Les tags des fournisseurs de conteneurs s’assignent depuis verified_user Zone d’administration > view_in_ar Conteneurs & Stations de travail > dns Fournisseurs de conteneurs (champ Tags, voir Créer un fournisseur de conteneur direct). Les noms de tags respectent la casse et doivent correspondre exactement aux valeurs définies dans PORTAL_CONTAINER_PROVIDERS_TAGS.

Filtrage des roles utilisateurs sur un Portail

Vous pouvez restreindre le type d’utilisateurs autorisés à se connecter à un portail particulier. Le filtrage s’effecture sur le rôle des utilisateurs.

  • Administrateur d’instance

  • Administrateur d’organisation

  • Membre d’une organisation

Portail Principal

Par défaut, tous les utilisateurs peuvent s’authentifier sur un portail. Avec la variable PORTAL_TYPE, vous pouvez restreindre l’accès à un type d’utilisateur spécifique :

PORTAL_TYPE

par défaut

user

admin

orgadmin

instadmin

orguser

Administrateur d’instance

Administrateur d’organisation

Membre d’une organisation

Portail Admin

Le portail secondaire est configuré par défaut pour les administrateurs. Avec la variable PORTALADMIN_TYPE, vous pouvez spécifier quels types d’administrateurs peuvent se connecter :

PORTALADMIN_TYPE

par défaut

orgadmin

instadmin

Administrateur d’instance

Administrateur d’organisation

Membre d’une organisation

Exemple avec un portail dédié aux utilisateurs et le portail administrateur dédié uniquement aux administrateurs d’instance:

all:
    vars:
        API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
        HMACSECRET: "..."
portal_manager:
    children:
        portaluser_manager:
            vars:
                PORTAL_URL: "url.domain.tld"
                PORTAL_TYPE: "user"
                TRAEFIK_SSL_CERTS:
                    - cert_file: "/localpath/to/cert.crt"
                        key_file: "/localpath/to/key.key"
            hosts:
                portaluser1:
                    ansible_host: "10.0.0.1"
                portaluser2:
                    ansible_host: "10.0.0.2"
                portaluser3:
                    ansible_host: "10.0.0.3"
        portaladmin_manager:
            vars:
                PORTAL_URL: "admin.domain.tld"
                PORTAL_TYPE: "instadmin"
                TRAEFIK_SSL_CERTS:
                    - cert_file: "/localpath/to/cert.crt"
                        key_file: "/localpath/to/key.key"
            hosts:
                portaladmin1:
                    ansible_host: "10.0.0.4"
                portaladmin2:
                    ansible_host: "10.0.0.5"
                portaladmin3:
                    ansible_host: "10.0.0.6"
api_manager:
    hosts:
        api1:
            ansible_host: "10.3.1.1"
        api2:
            ansible_host: "10.3.1.2"
        api3:
            ansible_host: "10.3.1.3"

Masquer la zone d’administration

Sur un portail sans séparation physique dédiée, utilisez la variable PORTAL_DISABLE_ADMIN_AREA pour masquer la zone d’administration aux utilisateurs qui s’y connectent :

portal_manager:
    vars:
        API_IP:
            - ip: "10.0.0.1"
    children:
        portal1_user:
            hosts:
                portal1_user1:
                    ansible_host: "10.0.0.2"
                    PORTAL_URL: "portal1.domain.tld"
                    PORTAL_DISABLE_ADMIN_AREA: true
        portal2_user:
            hosts:
                portal2_user1:
                    ansible_host: "10.0.0.3"
                    PORTAL_URL: "portal2.domain.tld"
                    PORTAL_DISABLE_ADMIN_AREA: false

Dans cet exemple, les administrateurs qui se connectent via portal1.domain.tld n’ont pas accès à la zone d’administration, même s’ils disposent des droits nécessaires. Ils doivent utiliser portal2.domain.tld pour y accéder.

Note

PORTAL_DISABLE_ADMIN_AREA masque l’accès à l’interface, indépendamment du rôle de l’utilisateur. Pour restreindre l’authentification elle-même selon le rôle, utilisez plutôt PORTAL_TYPE / PORTALADMIN_TYPE (voir ci-dessus).