it-swarm.com.de

MySQL: Erstellen eines Benutzers, der eine Verbindung von mehreren Hosts aus herstellen kann

Ich verwende MySQL und muss ein Konto erstellen, das entweder vom lokalen Host oder von einem anderen Server aus eine Verbindung herstellen kann, d. H. 10.1.1.1. Also mache ich:

CREATE USER 'bob'@'localhost' IDENTIFIED BY 'password123';
CREATE USER 'bob'@'10.1.1.1' IDENTIFIED BY 'password123';
GRANT SELECT, INSERT, UPDATE, DELETE on MyDatabse.* to 'bob'@'localhost', 'bob'@'10.1.1.1';

Dies funktioniert einwandfrei. Gibt es jedoch eine elegantere Möglichkeit, ein Benutzerkonto zu erstellen, das mit mehreren IP-Adressen verknüpft ist, oder muss dies auf diese Weise erfolgen?

Meine Hauptsorge ist, dass in Zukunft die Berechtigungen für ein Bob-Konto aktualisiert werden, nicht jedoch für das andere.

33
DrStalker

Wenn Sie sich auf Host beschränken und nicht basierend auf einem Subnetz oder Platzhalter mit % Angeben möchten, ist dies die einzige Möglichkeit. Weitere Details finden Sie in der MySQL-Dokumentation .

Ich versuche immer noch, Wege zu finden, um Overhead bei der Verwaltung der Authentifizierung für große MySQL-Installationen zu vermeiden, und habe noch keine perfekte Lösung gefunden.

22
Warner

Beginnen wir damit, einen neuen Benutzer namens "chaminda" in der MySQL-Shell zu erstellen:

CREATE USER 'chaminda'@'%' IDENTIFIED BY 'password';

Das erste, was zu tun ist, ist, dem Benutzer die erforderliche Berechtigung zu erteilen, und hier habe ich dem jeweiligen Benutzer alle Berechtigungen erteilt.

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'%';

Laden Sie alle Berechtigungen neu.

FLUSH PRIVILEGES;

Wenn Sie einem bestimmten Benutzer einen IP-Bereich zulassen möchten, verwenden Sie Folgendes: 10.1.1.%

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'10.1.1.%';

Hinweis : Hier Hostname =% und das bedeutet, dass Sie von jedem Host aus auf diesen Datenbankserver zugreifen können. Das Gewähren aller Berechtigungen für den Benutzer ist ein großes Risiko, und dies ist keine bewährte Methode. Außerdem können Sie den Benutzer 'chaminda' durch 'bob' ersetzen.

10

Die Antwort von Warner kann mithilfe von CIDR-Bereichen in Ihrer Benutzerspezifikation (in der Notation 'Netzwerk'/'Netzmaske') verfeinert werden, z.

CREATE USER 'bob'@'10.0.0.0/255.0.0.0' IDENTIFIED BY 'password123';

CREATE USER 'bob'@'192.168.0.0/255.255.255.192' IDENTIFIED BY 'password123';

Dieses Konstrukt ermöglicht eine feinkörnigere Zugriffskontrolle. Mit der Antwort von Warner kann der Benutzer 'bob' von jedem Host in Ihrem Netzwerk (oder von jedem Host im öffentlichen Internet aus, wenn Ihr Server dem öffentlichen Netzwerk ausgesetzt ist) eine Verbindung herstellen, was wahrscheinlich nicht für alle Anwendungsfälle geeignet ist.

Es ist gängige Praxis, "Defense in Depth" anzuwenden, was dadurch gefördert wird, dass der Benutzerzugriff nur von gewünschten und vertrauenswürdigen Hostadressen beschränkt wird. Denken Sie auch daran, eingehende Verbindungen auf Host-Ebene zu begrenzen, indem Sie die gewünschten und vertrauenswürdigen Host-Adressen in Ihrer Host-basierten Firewall (z. B. iptables, firewalld usw.) wiedergeben.

0
rosco