| 451 | | <para>Quelques exemples des entrées de <filename>pg_hba.conf</filename> sont décrit |
|---|
| 452 | | ci-dessous dans l'<xref linkend="example-pg-hba.conf"/>. Voir la section suivante pour |
|---|
| 453 | | les détails des méthodes d'authentification. </para> |
|---|
| 454 | | |
|---|
| 455 | | <example id="example-pg-hba.conf"> <title>Exemple d'entrées de |
|---|
| 456 | | <filename>pg_hba.conf</filename></title> |
|---|
| 457 | | <programlisting># Permet à n'importe quel utilisateur du système local de se connecter à la base |
|---|
| 458 | | # de données sous n'importe quel nom d'utilisateur de la base de données en |
|---|
| 459 | | # utilisant les sockets du domaine Unix. (par défaut pour les connexions locales) |
|---|
| | 452 | <para> |
|---|
| | 453 | Quelques exemples d'entrées de <filename>pg_hba.conf</filename> sont |
|---|
| | 454 | donnés ci-dessous dans l'<xref linkend="example-pg-hba.conf"/>. Voir la |
|---|
| | 455 | section suivante pour les détails des méthodes d'authentification. </para> |
|---|
| | 456 | |
|---|
| | 457 | <example id="example-pg-hba.conf"> |
|---|
| | 458 | <title>Exemple d'entrées de <filename>pg_hba.conf</filename></title> |
|---|
| | 459 | <programlisting># Permettre à n'importe quel utilisateur du système local de se connecter |
|---|
| | 460 | # à la base de données sous n'importe quel nom d'utilisateur au travers |
|---|
| | 461 | # des sockets de domaine Unix (par défaut pour les connexions locales). |
|---|
| 541 | | soit le nom d'utilisateur de base de données qu'il fournisse (incluant le |
|---|
| 542 | | super-utilisateur de la base de données). Bien sûr, les restrictions |
|---|
| 543 | | apportées dans les colonnes <literal>database</literal> et <literal>user</literal> |
|---|
| 544 | | s'appliquent toujours. Cette méthode ne devrait être utilisée que s'il |
|---|
| 545 | | existe des protections au niveau système portant sur les connexions au |
|---|
| 546 | | serveur. |
|---|
| 547 | | </para> |
|---|
| 548 | | |
|---|
| 549 | | <para>L'authentification <literal>trust</literal> est appropriée et très pratique |
|---|
| 550 | | lors de connexions locales sur une station de travail mono-utilisateur. Elle |
|---|
| 551 | | n'est généralement <emphasis>pas</emphasis> appropriée en soi sur une machine |
|---|
| 552 | | multi-utilisateur. Cependant, vous pouvez utiliser <literal>trust</literal> même sur |
|---|
| 553 | | une machine multi-utilisateur, si vous restreignez l'accès au fichier socket du |
|---|
| 554 | | domaine Unix en utilisant les permissions du système de fichiers. Pour ce faire, |
|---|
| 555 | | positionnez les paramètres de configuration |
|---|
| 556 | | <varname>unix_socket_permissions</varname> (et si besoin |
|---|
| 557 | | <varname>unix_socket_group</varname>) comme décrit dans la <xref |
|---|
| 558 | | linkend="runtime-config-connection"/>. Vous pouvez aussi positionner le |
|---|
| 559 | | paramètre de configuration <varname>unix_socket_directory</varname> de façon à |
|---|
| 560 | | placer le fichier de socket dans un répertoire à l'accès convenablement |
|---|
| 561 | | restreint. </para> |
|---|
| 562 | | |
|---|
| 563 | | <para>Utiliser les droits du système de fichiers n'est utile que dans |
|---|
| 564 | | le cas de connexions utilisant des sockets Unix. Cela ne restreint pas les |
|---|
| 565 | | connexions TCP/IP locales ; ainsi, si vous voulez utiliser les droits du |
|---|
| 566 | | système de fichiers pour assurer la sécurité locale, supprimez la ligne |
|---|
| 567 | | <literal>host ...127.0.0.1 ...</literal> de <filename>pg_hba.conf</filename> ou changez-la |
|---|
| 568 | | - indiquer une méthode d'authentification différente de <literal>trust</literal>. |
|---|
| 569 | | </para> |
|---|
| 570 | | |
|---|
| 571 | | <para>L'authentification <literal>trust</literal> n'est utile pour les connexions |
|---|
| 572 | | TCP/IP que si chaque utilisateur de chaque machine autorisée à se connecter au |
|---|
| 573 | | serveur par les lignes <filename>pg_hba.conf</filename> indiquant <literal>trust</literal> est |
|---|
| 574 | | digne de confiance. Il est rarement raisonnable d'utiliser <literal>trust</literal> |
|---|
| 575 | | pour une connexion autre que celles issues de <systemitem>localhost</systemitem> |
|---|
| 576 | | (127.0.0.1). </para> |
|---|
| | 543 | soit le nom d'utilisateur de base de données qu'il fournit (ce qui |
|---|
| | 544 | inclut les super-utilisateurs). Les restrictions apportées dans les |
|---|
| | 545 | colonnes <literal>database</literal> et <literal>user</literal> |
|---|
| | 546 | continuent évidemment de s'appliquer. Cette méthode ne doit être utilisée |
|---|
| | 547 | que si le système assure un contrôle adéquat des connexions au serveur. |
|---|
| | 548 | </para> |
|---|
| | 549 | |
|---|
| | 550 | <para> |
|---|
| | 551 | L'authentification <literal>trust</literal> est appropriée et très pratique |
|---|
| | 552 | pour les connexions locales sur une station de travail mono-utilisateur. Elle |
|---|
| | 553 | n'est généralement <emphasis>pas</emphasis> appropriée en soi sur une machine |
|---|
| | 554 | multi-utilisateur. Cependant, <literal>trust</literal> peut tout de même |
|---|
| | 555 | être utilisé sur une machine multi-utilisateur, si l'accès au fichier |
|---|
| | 556 | socket de domaine Unix est restreint par les permissions du système de |
|---|
| | 557 | fichiers. Pour ce faire, on peut positionner les paramètres de configuration |
|---|
| | 558 | <varname>unix_socket_permissions</varname> (et au besoin |
|---|
| | 559 | <varname>unix_socket_group</varname>) comme cela est décrit dans la |
|---|
| | 560 | <xref linkend="runtime-config-connection"/>. |
|---|
| | 561 | On peut également positionner le paramètre de configuration |
|---|
| | 562 | <varname>unix_socket_directory</varname> pour placer le fichier de socket |
|---|
| | 563 | dans un répertoire à l'accès convenablement restreint. |
|---|
| | 564 | </para> |
|---|
| | 565 | |
|---|
| | 566 | <para> |
|---|
| | 567 | Le réglage des droits du système de fichiers n'a d'intérêt que le cas de |
|---|
| | 568 | connexions par les sockets Unix. Cela ne restreint pas les connexions |
|---|
| | 569 | TCP/IP locales ; ainsi, pour utiliser les droits du système de |
|---|
| | 570 | fichiers pour assurer la sécurité locale, il faut supprimer la ligne |
|---|
| | 571 | <literal>host ...127.0.0.1 ...</literal> de |
|---|
| | 572 | <filename>pg_hba.conf</filename> ou la modifier pour utiliser une méthode |
|---|
| | 573 | d'authentification différente de <literal>trust</literal>. |
|---|
| | 574 | </para> |
|---|
| | 575 | |
|---|
| | 576 | <para> |
|---|
| | 577 | L'authentification <literal>trust</literal> n'est valable pour les |
|---|
| | 578 | connexions TCP/IP que si chaque utilisateur de chaque machine autorisée |
|---|
| | 579 | à se connecter au serveur par les lignes <literal>trust</literal> du |
|---|
| | 580 | fichier <filename>pg_hba.conf</filename> est digne de confiance. Il est |
|---|
| | 581 | rarement raisonnable d'utiliser <literal>trust</literal> pour les |
|---|
| | 582 | connexions autres que celles issues de |
|---|
| | 583 | <systemitem>localhost</systemitem> (127.0.0.1). |
|---|
| | 584 | </para> |
|---|
| 605 | | Si vous êtes préoccupé par les attaques par <quote>interception |
|---|
| 606 | | (sniffing)</quote> de mot de passe, alors <literal>md5</literal> est préférable, avec |
|---|
| 607 | | <literal>crypt</literal> à n'utiliser que si vous devez supporter les client pré |
|---|
| 608 | | 7.2. Le simple <literal>password</literal> devrait particulièrement être |
|---|
| 609 | | évité pour les connexions ouvertes sur l'Internet (à moins d'utiliser |
|---|
| 610 | | <acronym>SSL</acronym>, <acronym>SSH</acronym> ou d'autres systèmes de sécurité par |
|---|
| 611 | | encapsulation de connexion). |
|---|
| 612 | | </para> |
|---|
| 613 | | |
|---|
| 614 | | <para> |
|---|
| 615 | | Les mots de passe de bases de données <productname>PostgreSQL</productname> |
|---|
| | 618 | S'il existe un risque d'attaque par <quote>interception (sniffing)</quote> |
|---|
| | 619 | des mots de passe, il est préférable d'utiliser <literal>md5</literal>, |
|---|
| | 620 | <literal>crypt</literal> devant être limité aux client pré-7.2. |
|---|
| | 621 | L'utilisation de <literal>password</literal>, en clair, est tout |
|---|
| | 622 | particulièrement à éviter lors de connexions ouvertes sur l'Internet |
|---|
| | 623 | (à moins d'utiliser <acronym>SSL</acronym>, <acronym>SSH</acronym> ou |
|---|
| | 624 | tout autre système de sécurisation par encapsulation de la connexion). |
|---|
| | 625 | </para> |
|---|
| | 626 | |
|---|
| | 627 | <para> |
|---|
| | 628 | Les mots de passe <productname>PostgreSQL</productname> |
|---|
| 683 | | <para>Les principaux clients doivent avoir leur nom d'utilisateur de la base |
|---|
| 684 | | de données <productname>PostgreSQL</productname> comme premier composant, par exemple |
|---|
| 685 | | <literal>nomutilisateurpg/autreschoses@domaine</literal>. Actuellement, le domaine du client |
|---|
| 686 | | n'est pas vérifié par <productname>PostgreSQL</productname> ; ainsi si vous avez activé |
|---|
| 687 | | l'authentification "cross-realm", chaque "principal" de chaque domaine qui peut |
|---|
| 688 | | communiquer avec le vôtre sera accepté. </para> |
|---|
| 689 | | |
|---|
| 690 | | <para>Assurez-vous que le fichier de clés du serveur est en lecture (et de |
|---|
| 691 | | préférence en lecture seule) pour le compte serveur |
|---|
| 692 | | <productname>PostgreSQL</productname> (voir aussi la <xref |
|---|
| 693 | | linkend="postgres-user"/>). L'emplacement du fichier de clés est indiqué grâce au |
|---|
| 694 | | paramètre de configuration <xref linkend="guc-krb-server-keyfile"/> fourni à l'exécution. |
|---|
| 695 | | La valeur par défaut est |
|---|
| 696 | | <filename>/etc/srvtab</filename> si vous utilisez Kerberos 4 et |
|---|
| 697 | | <filename>/usr/local/pgsql/etc/krb5.keytab</filename> (ou quel que soit le |
|---|
| 698 | | répertoire spécifié par <varname>sysconfdir</varname> à la compilation). </para> |
|---|
| 699 | | |
|---|
| 700 | | <para> |
|---|
| 701 | | Le fichier de clés est généré par le logiciel Kerberos ; voir la |
|---|
| 702 | | documentation de Kerberos pour les détails. L'exemple suivant corresponds |
|---|
| 703 | | à des implémentations de Kerberos 5 compatibles avec MIT : |
|---|
| | 698 | <para> |
|---|
| | 699 | Les principaux des clients doivent contenir le nom de leur utilisateur |
|---|
| | 700 | <productname>PostgreSQL</productname> comme premier composant, |
|---|
| | 701 | <literal>nomutilisateurpg/autreschoses@domaine</literal>, par exemple. |
|---|
| | 702 | Actuellement, le domaine du client n'est pas vérifié par |
|---|
| | 703 | <productname>PostgreSQL</productname> ; de ce fait, si |
|---|
| | 704 | l'authentification inter-domaine |
|---|
| | 705 | (<foreignphrase>cross-realm</foreignphrase>) est activée, tout |
|---|
| | 706 | "principal" de domaine qui peut communiquer avec celui considéré est accepté. |
|---|
| | 707 | </para> |
|---|
| | 708 | |
|---|
| | 709 | <para> |
|---|
| | 710 | Le fichier de clés du serveur doit être lisible (et de préférence |
|---|
| | 711 | uniquement lisible) par le compte serveur |
|---|
| | 712 | <productname>PostgreSQL</productname> (voir aussi la |
|---|
| | 713 | <xref linkend="postgres-user"/>). L'emplacement du fichier de clés est |
|---|
| | 714 | indiqué grâce au paramètre de configuration |
|---|
| | 715 | <xref linkend="guc-krb-server-keyfile"/> fourni à l'exécution. La valeur |
|---|
| | 716 | par défaut est <filename>/etc/srvtab</filename>, si Kerberos 4 est |
|---|
| | 717 | utilisé, et <filename>/usr/local/pgsql/etc/krb5.keytab</filename> sinon |
|---|
| | 718 | (ou tout autre répertoire indiqué comme <varname>sysconfdir</varname> à |
|---|
| | 719 | la compilation). |
|---|
| | 720 | </para> |
|---|
| | 721 | |
|---|
| | 722 | <para> |
|---|
| | 723 | Le fichier de clés est engendré par le logiciel Kerberos ; voir la |
|---|
| | 724 | documentation de Kerberos pour les détails. L'exemple suivant correspond |
|---|
| | 725 | à des implantations de Kerberos 5 compatibles avec MIT : |
|---|
| 708 | | <para>Lors de la connexion à la base de données, assurez-vous que vous avez |
|---|
| 709 | | un ticket pour un "principal" correspondant au nom d'utilisateur de la base de |
|---|
| 710 | | données demandé. Un exemple : pour le nom d'utilisateur de la base |
|---|
| 711 | | <literal>fred</literal>, les "principal" <literal>fred@EXAMPLE.COM</literal> et |
|---|
| 712 | | <literal>fred/users.exemple.com@EXAMPLE.COM</literal> devraient être utilisés pour |
|---|
| 713 | | authentifier le serveur de bases de données. </para> |
|---|
| 714 | | |
|---|
| 715 | | <para>Si vous utilisez <ulink |
|---|
| 716 | | url="http://modauthkerb.sf.net">mod_auth_kerb</ulink> et |
|---|
| 717 | | <application>mod_perl</application> sur votre serveur web |
|---|
| 718 | | <productname>Apache</productname>, vous pouvez utiliser <literal>AuthType |
|---|
| 719 | | KerberosV5SaveCredentials</literal> avec un script |
|---|
| 720 | | <application>mod_perl</application>. Cela fournit un accès sûr aux bases de |
|---|
| 721 | | données, sans demander de mots de passe supplémentaires. </para> |
|---|
| | 730 | <para> |
|---|
| | 731 | Lors de la connexion à la base de données, il faut s'assurer de posséder |
|---|
| | 732 | un ticket pour le "principal" correspondant au nom d'utilisateur de base |
|---|
| | 733 | de données souhaité. Par exemple, pour le nom d'utilisateur |
|---|
| | 734 | <literal>fred</literal>, les deux |
|---|
| | 735 | <foreignphrase>principal</foreignphrase> <literal>fred@EXAMPLE.COM</literal> |
|---|
| | 736 | et <literal>fred/users.exemple.com@EXAMPLE.COM</literal> peuvent être utilisés |
|---|
| | 737 | pour authentifier le serveur de bases de données. |
|---|
| | 738 | </para> |
|---|
| | 739 | |
|---|
| | 740 | <para> |
|---|
| | 741 | Si <ulink url="http://modauthkerb.sf.net">mod_auth_kerb</ulink> et |
|---|
| | 742 | <application>mod_perl</application> sont utilisés sur le serveur web |
|---|
| | 743 | <productname>Apache</productname>, |
|---|
| | 744 | <literal>AuthType KerberosV5SaveCredentials</literal> peut être utilisé |
|---|
| | 745 | avec un script <application>mod_perl</application>. Cela fournit un accès |
|---|
| | 746 | sûr aux bases de données, sans demander de mot de passe supplémentaire. |
|---|
| | 747 | </para> |
|---|
| 730 | | <para>La méthode d'authentification par identification fonctionne en |
|---|
| 731 | | obtenant les noms d'utilisateurs du système d'exploitation, puis en déterminant |
|---|
| 732 | | les noms d'utilisateurs de bases de données autorisés, en utilisant un fichier |
|---|
| 733 | | de correspondance qui liste les paires d'utilisateurs correspondants. |
|---|
| 734 | | Déterminer le nom d'utilisateur du client est le point critique en matière de |
|---|
| 735 | | sécurité, et il fonctionne différemment selon le type de connexion. </para> |
|---|
| 736 | | |
|---|
| 737 | | <sect3> <title>Authentification par identification sur TCP/IP</title> |
|---|
| 738 | | |
|---|
| 739 | | <para>Le <quote>protocole d'identification</quote> est décrit dans la |
|---|
| 740 | | <citetitle>RFC 1413</citetitle>. Théoriquement, chaque système d'exploitation de |
|---|
| 741 | | type Unix contient un serveur d'identification qui écoute par défaut le port TCP |
|---|
| 742 | | 113. La fonctionnalité basique d'un serveur d'identification est la réponse aux |
|---|
| 743 | | questions telles que <quote>Quel utilisateur a initié la connexion qui sort de |
|---|
| 744 | | votre port <replaceable>X</replaceable> et se connecte à mon port |
|---|
| 745 | | <replaceable>Y</replaceable>?</quote>. <productname>PostgreSQL</productname> connaissant |
|---|
| 746 | | <replaceable>X</replaceable> et <replaceable>Y</replaceable> quand une connexion physique est établie, |
|---|
| 747 | | il peut interroger le serveur d'identification de l'hôte du client qui se |
|---|
| 748 | | connecte et peut ainsi théoriquement déterminer quel est l'utilisateur du |
|---|
| 749 | | système d'exploitation pour n'importe quelle connexion. </para> |
|---|
| 750 | | |
|---|
| 751 | | <para>Le défaut de cette procédure est qu'elle dépend de l'intégrité du |
|---|
| 752 | | client : si la machine client est douteuse ou compromise, un attaquant peut |
|---|
| 753 | | lancer n'importe quel programme sur le port 113 et renvoyer un nom d'utilisateur |
|---|
| 754 | | de son choix. Cette méthode d'authentification n'est par conséquent appropriée |
|---|
| 755 | | que dans le cas de réseaux fermés dans lesquels chaque machine client est |
|---|
| 756 | | soumise à un contrôle strict et dans lesquels les administrateurs du système et |
|---|
| 757 | | des bases de données opèrent en proche collaboration. En d'autres mots, vous |
|---|
| 758 | | devez pouvoir faire confiance à la machine hébergeant le serveur |
|---|
| 759 | | d'identification. Considérez cet avertissement: <blockquote> <attribution>RFC |
|---|
| 760 | | 1413</attribution> <para>Le protocole d'identification n'a pas vocation à être |
|---|
| 761 | | un protocole d'autorisation ou de contrôle d'accès. </para> </blockquote> |
|---|
| 762 | | </para> |
|---|
| 763 | | |
|---|
| 764 | | <para> |
|---|
| 765 | | Quelques serveurs ident ont une option non standard qui font que le nom de |
|---|
| 766 | | l'utilisateur est renvoyé non chiffré en utilisant une clé que seul |
|---|
| 767 | | l'administrateur de la machine d'origine connaît. Cette option <emphasis>ne |
|---|
| 768 | | doit pas</emphasis> être utilisée lors de l'utilisation du serveur ident avec |
|---|
| 769 | | <productname>PostgreSQL</productname> car <productname>PostgreSQL</productname> n'a aucun moyen |
|---|
| 770 | | de décrire la chaîne renvoyée pour déterminer le nom réel de l'utilisateur. |
|---|
| | 755 | <para> |
|---|
| | 756 | La méthode d'authentification par ident fonctionne en obtenant les noms |
|---|
| | 757 | d'utilisateurs du système d'exploitation, puis en déterminant les noms |
|---|
| | 758 | d'utilisateurs de bases de données autorisés à l'aide d'un fichier |
|---|
| | 759 | de correspondance qui liste les paires autorisées de concordance de |
|---|
| | 760 | noms. La résolution du nom d'utilisateur du client est le point de sécurité |
|---|
| | 761 | critique. Elle fonctionne différemment selon le type de connexion. |
|---|
| | 762 | </para> |
|---|
| | 763 | |
|---|
| | 764 | <sect3> <title>Authentification par ident en TCP/IP</title> |
|---|
| | 765 | |
|---|
| | 766 | <para> |
|---|
| | 767 | Le <quote>protocole d'identification</quote> est décrit dans la |
|---|
| | 768 | <citetitle>RFC 1413</citetitle>. Théoriquement, chaque système |
|---|
| | 769 | d'exploitation de type Unix contient un serveur ident |
|---|
| | 770 | qui écoute par défaut sur le port TCP 113. La fonctionnalité basique |
|---|
| | 771 | d'un serveur ident est de répondre aux questions telles que : |
|---|
| | 772 | <quote>Quel utilisateur a initié la connexion qui sort du port |
|---|
| | 773 | <replaceable>X</replaceable> et se connecte à mon port |
|---|
| | 774 | <replaceable>Y</replaceable>?</quote>. |
|---|
| | 775 | Puisque <productname>PostgreSQL</productname> connaît |
|---|
| | 776 | <replaceable>X</replaceable> et <replaceable>Y</replaceable> dès lors |
|---|
| | 777 | qu'une connexion physique est établie, il peut interroger le serveur |
|---|
| | 778 | ident de l'hôte du client qui se connecte et peut ainsi théoriquement |
|---|
| | 779 | déterminer l'utilisateur du système d'exploitation pour n'importe quelle |
|---|
| | 780 | connexion. |
|---|
| | 781 | </para> |
|---|
| | 782 | |
|---|
| | 783 | <para> |
|---|
| | 784 | Le revers de cette procédure est qu'elle dépend de l'intégrité du |
|---|
| | 785 | client : si la machine cliente est douteuse ou compromise, un attaquant |
|---|
| | 786 | peut lancer n'importe quel programme sur le port 113 et retourner un nom |
|---|
| | 787 | d'utilisateur de son choix. Cette méthode d'authentification n'est, par |
|---|
| | 788 | conséquent, appropriée que dans le cas de réseaux fermés dans lesquels |
|---|
| | 789 | chaque machine cliente est soumise à un contrôle strict et dans lesquels |
|---|
| | 790 | les administrateurs système et bases de données opèrent en étroite |
|---|
| | 791 | collaboration. En d'autres mots, il faut pouvoir faire confiance à la |
|---|
| | 792 | machine hébergeant le serveur d'identification. Cet avertissement doit |
|---|
| | 793 | être gardé à l'esprit : |
|---|
| | 794 | <blockquote> |
|---|
| | 795 | <attribution>RFC 1413</attribution> |
|---|
| | 796 | <para> |
|---|
| | 797 | Le protocole d'identification n'a pas vocation à être un protocole |
|---|
| | 798 | d'autorisation ou de contrôle d'accès. |
|---|
| | 799 | </para> |
|---|
| | 800 | </blockquote> |
|---|
| | 801 | </para> |
|---|
| | 802 | |
|---|
| | 803 | <para> |
|---|
| | 804 | Certains serveurs ident ont une option non standard qui chiffre le nom de |
|---|
| | 805 | l'utilisateur retourné à l'aide d'une clé connue du seul administrateur |
|---|
| | 806 | de la machine dont émane la connexion. Cette option <emphasis>ne |
|---|
| | 807 | doit pas</emphasis> être employée lorsque le serveur ident est utilisé avec |
|---|
| | 808 | <productname>PostgreSQL</productname> car <productname>PostgreSQL</productname> |
|---|
| | 809 | n'a aucun moyen de déchiffré la chaîne renvoyée pour déterminer le nom réel |
|---|
| | 810 | de l'utilisateur. |
|---|
| 775 | | <sect3> <title>Authentification par l'identification sur sockets |
|---|
| 776 | | locaux</title> |
|---|
| 777 | | |
|---|
| 778 | | <para>Sur les systèmes supportant les requêtes <symbol>SO_PEERCRED</symbol> |
|---|
| 779 | | pour les sockets du domaine Unix (actuellement <systemitem |
|---|
| 780 | | class="osname">Linux</systemitem>, <systemitem class="osname">FreeBSD</systemitem>, <systemitem |
|---|
| 781 | | class="osname">NetBSD</systemitem>, <systemitem class="osname">OpenBSD</systemitem> et <systemitem |
|---|
| 782 | | class="osname">BSD/OS</systemitem>), l'authentification par identification peut aussi être |
|---|
| 783 | | appliquée aux connexions locales. Dans ce cas, l'utilisation de |
|---|
| 784 | | l'authentification par identification n'ajoute aucun risque lié à la sécurité. |
|---|
| 785 | | </para> |
|---|
| | 815 | <sect3> <title>Authentification par ident sur sockets locaux</title> |
|---|
| | 816 | |
|---|
| | 817 | <para> |
|---|
| | 818 | Sur les systèmes qui supportent les requêtes <symbol>SO_PEERCRED</symbol> |
|---|
| | 819 | pour les sockets de domaine Unix (actuellement |
|---|
| | 820 | <systemitem class="osname">Linux</systemitem>, |
|---|
| | 821 | <systemitem class="osname">FreeBSD</systemitem>, |
|---|
| | 822 | <systemitem class="osname">NetBSD</systemitem>, |
|---|
| | 823 | <systemitem class="osname">OpenBSD</systemitem> et |
|---|
| | 824 | <systemitem class="osname">BSD/OS</systemitem>), l'authentification par |
|---|
| | 825 | ident peut aussi être appliquée aux connexions locales. Dans ce cas, |
|---|
| | 826 | l'utilisation de l'authentification par ident n'ajoute aucun risque de |
|---|
| | 827 | sécurité en fait, c'est même un chois préférable sur ce genre de |
|---|
| | 828 | système. |
|---|
| | 829 | </para> |
|---|
| 799 | | <title>Correspondance d'identité</title> |
|---|
| 800 | | |
|---|
| 801 | | <para>Lorsque vous utilisez l'authentification basée sur l'identification, |
|---|
| 802 | | après avoir déterminé le nom de l'utilisateur du système d'exploitation qui a |
|---|
| 803 | | initié la connexion, <productname>PostgreSQL</productname> vérifie si cet |
|---|
| 804 | | utilisateur est autorisé à se connecter par le nom d'utilisateur de base de |
|---|
| 805 | | données qu'il demande. Ceci est contrôlé par l'argument ident map qui suit le |
|---|
| 806 | | mot clé <literal>ident</literal> dans le fichier <filename>pg_hba.conf</filename>. Il |
|---|
| 807 | | existe une correspondance d'identité prédéfinie, <literal>sameuser</literal>, |
|---|
| 808 | | qui permet à n'importe quel utilisateur du système d'exploitation de se |
|---|
| 809 | | connecter en tant qu'utilisateur de base de données du même nom (si ce dernier |
|---|
| 810 | | existe). Les autres correspondances doivent être créées manuellement. </para> |
|---|
| | 843 | <title>Correspondances d'identité</title> |
|---|
| | 844 | |
|---|
| | 845 | <para> |
|---|
| | 846 | Lorsque l'authentification par ident est utilisée, après avoir déterminé |
|---|
| | 847 | le nom de l'utilisateur du système d'exploitation qui a initié la |
|---|
| | 848 | connexion, <productname>PostgreSQL</productname> vérifie si cet utilisateur |
|---|
| | 849 | est autorisé à se connecter avec le nom d'utilisateur de base de données |
|---|
| | 850 | souhaité. Ceci est contrôlé par l'argument ident map qui suit le mot clé |
|---|
| | 851 | <literal>ident</literal> dans le fichier <filename>pg_hba.conf</filename>. |
|---|
| | 852 | Il existe une correspondance d'identité prédéfinie, |
|---|
| | 853 | <literal>sameuser</literal>, qui permet à n'importe quel utilisateur du |
|---|
| | 854 | système d'exploitation de se connecter en tant qu'utilisateur de la base de |
|---|
| | 855 | données du même nom (si cette dernière existe). Les autres correspondances |
|---|
| | 856 | doivent être créées manuellement. |
|---|
| | 857 | </para> |
|---|
| 832 | | d'exploitation donné peut correspondre et vice-versa. </para> |
|---|
| 833 | | |
|---|
| 834 | | <para>Le fichier <filename>pg_ident.conf</filename> est lu au démarrage et |
|---|
| 835 | | quand le processus serveur principal reçoit un signal |
|---|
| 836 | | <systemitem>SIGHUP</systemitem><indexterm><primary>SIGHUP</primary></indexterm>. |
|---|
| 837 | | Si vous éditez le fichier sur un système actif, vous aurez besoin de signaler au |
|---|
| 838 | | serveur (en utilisant <literal>pg_ctl reload</literal> ou <literal>kill |
|---|
| 839 | | -HUP</literal>) qu'il doit relire le fichier. </para> |
|---|
| 840 | | |
|---|
| 841 | | <para>L'<xref linkend="example-pg-ident.conf"/> montre un fichier |
|---|
| 842 | | <filename>pg_ident.conf</filename> pouvant être utilisé conjointement avec le |
|---|
| 843 | | fichier <filename>pg_hba.conf</filename> de l'<xref linkend="example-pg-hba.conf"/>. Dans |
|---|
| 844 | | cette configuration d'exemple, n'importe qui connecté sur une machine du réseau |
|---|
| 845 | | 192.168 qui n'a pas de nom utilisateur Unix <literal>bryanh</literal>, <literal>ann</literal>, |
|---|
| 846 | | ou <literal>robert</literal> ne pourra obtenir d'accès. L'utilisateur Unix |
|---|
| 847 | | <literal>robert</literal> ne sera autorisé à se connecter que lorsqu'il se connecte |
|---|
| 848 | | sous l'utilisateur <productname>PostgreSQL</productname> <literal>bob</literal> et non |
|---|
| 849 | | <literal>robert</literal> ni n'importe qui d'autre. <literal>ann</literal> ne sera autorisée |
|---|
| 850 | | à se connecter qu'en tant que <literal>ann</literal>. L'utilisateur <literal>bryanh</literal> |
|---|
| 851 | | ne sera autorisé à se connecter qu'en tant que <literal>bryanh</literal> lui-même ou |
|---|
| 852 | | comme <literal>guest1</literal>. </para> |
|---|
| | 880 | d'exploitation donné peut correspondre et vice-versa. |
|---|
| | 881 | </para> |
|---|
| | 882 | |
|---|
| | 883 | <para> |
|---|
| | 884 | Le fichier <filename>pg_ident.conf</filename> est lu au démarrage et |
|---|
| | 885 | à chaque fois que le processus serveur principal reçoit un signal |
|---|
| | 886 | <systemitem>SIGHUP</systemitem><indexterm><primary>SIGHUP</primary></indexterm>. |
|---|
| | 887 | Si le fichier est édité sur un système actif, il est nécessaire de signaler |
|---|
| | 888 | au serveur (à l'aide de la commande <literal>pg_ctl reload</literal> |
|---|
| | 889 | ou <literal>kill -HUP</literal>) qu'il doit relire le fichier. |
|---|
| | 890 | </para> |
|---|
| | 891 | |
|---|
| | 892 | <para> |
|---|
| | 893 | L'<xref linkend="example-pg-ident.conf"/> présente un fichier |
|---|
| | 894 | <filename>pg_ident.conf</filename> utilisable conjointement avec |
|---|
| | 895 | le fichier <filename>pg_hba.conf</filename> de |
|---|
| | 896 | l'<xref linkend="example-pg-hba.conf"/>. Dans cette configuration, |
|---|
| | 897 | quiconque est connecté sur une machine du réseau 192.168 et n'a pas pour nom |
|---|
| | 898 | d'utilisateur Unix <literal>bryanh</literal>, <literal>ann</literal> ou |
|---|
| | 899 | <literal>robert</literal> ne peut obtenir d'accès. L'utilisateur Unix |
|---|
| | 900 | <literal>robert</literal> n'est autorisé à se connecter que sous |
|---|
| | 901 | l'utilisateur <productname>PostgreSQL</productname> |
|---|
| | 902 | <literal>bob</literal> et non <literal>robert</literal> ou n'importe |
|---|
| | 903 | quel autre utilisateur. <literal>ann</literal> n'est autorisée à se |
|---|
| | 904 | connecter qu'en tant que <literal>ann</literal>. L'utilisateur |
|---|
| | 905 | <literal>bryanh</literal> n'est autorisé à se connecter qu'en tant que |
|---|
| | 906 | <literal>bryanh</literal> lui-même ou <literal>guest1</literal>. |
|---|
| | 907 | </para> |
|---|
| 922 | | <para>Cette méthode d'authentification fonctionne de façon similaire à |
|---|
| 923 | | <literal>password</literal> à ceci près qu'elle utilise PAM (Pluggable |
|---|
| 924 | | Authentication Modules) comme mécanisme d'authentification. Le nom du |
|---|
| 925 | | service PAM par défaut est <literal>postgresql</literal>. Vous pouvez |
|---|
| 926 | | éventuellement fournir votre nom de service grâce au mot clé <literal>pam</literal> |
|---|
| 927 | | du <filename>pg_hba.conf</filename>. PAM est seulement utilisé pour valider |
|---|
| 928 | | des paires nom utilisateur/mot de passe. Du coup, l'utilisateur doit déjà |
|---|
| 929 | | exister dans la base de données avant que PAM ne puisse être utilisé pour |
|---|
| 930 | | l'authentification. Pour plus d'informations sur PAM, merci de lire la |
|---|
| | 981 | <para> |
|---|
| | 982 | Ce mécanisme d'authentification fonctionne de façon similaire à |
|---|
| | 983 | <literal>password</literal> à ceci près qu'il utilise PAM (Pluggable |
|---|
| | 984 | Authentication Modules) comme méthode d'authentification. Le nom du |
|---|
| | 985 | service PAM par défaut est <literal>postgresql</literal>. Le nom de |
|---|
| | 986 | service personnel peut être fourni grâce au mot clé <literal>pam</literal> |
|---|
| | 987 | du <filename>pg_hba.conf</filename>. PAM n'est utilisé que pour valider |
|---|
| | 988 | des paires nom utilisateur/mot de passe. De ce fait, avant de pouvoir |
|---|
| | 989 | utiliser PAM pour l'authentification, l'utilisateur doit préalablement |
|---|
| | 990 | exister dans la base de données. Pour plus d'informations sur PAM, |
|---|
| | 991 | merci de lire la |
|---|