=====Apache Guacamole unter Oracle Linux 8 mit dem MS SQL Server verwenden=====
Aufgabe: Als Datenbank für Apache Guacamole soll ein MS SQL Server 2019 statt der bestehenden MySQL verwendet werden.
In diese Umgebung liegt einen geclusterte MS SQL Datenbank vor, um hier mehr Ausfall Sicherheit zu erhalten wird diese Datenbank nun auch für Guacamole verwendet.
Ablauf:
* MS Repository hinterlegen
* MS ODBC installieren (für die ms-Tools)
* MS Tools installieren (für die DB Konfiguration)
* Auf dem MSSQL Server eine Datenbank und einen Eigentümer für die DB anlegen
* Guacamole Datenbank Objekte installieren
* Guacamole MS SQL User für den Connect zur DB anlegen
* MS SQL Properties in der guacamole.conf hinterlegen
* MS SQL JDBC Treiber hinterlegen
* Guacamole Erweiterung für den MS SQLServer hinterlegen
* Neu Starten und konfigurieren
Voraussetzung: Guacamole installiert nach folgender Anleitung => [[linux:oracle_linux_8_guacamole|Eine Oracle System Umgebung mit Apache Guacamole auf Oracle Linux 8.7 verwalten]]
----
====Vorbereitung MS SQLServer Umgebung auf dem Linux Rechner ====
Zu ODBC/MS Tools unter Linux siehe auch => [[dba:db_link_linux_ms_sql_12c|Oracle 12c RAC Real Application Cluster Datenbank über einen Datenbank Link mit einer MS SQL 2017 Datenbank verbinden - Oracle Database Gateway unter Oracle Linux 7 einsetzen]] und https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server
===Für Oracle Linux 8===
MS SQL Tools installieren:
# als root
curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo
dnf remove unixODBC-utf16 unixODBC-utf16-devel
ACCEPT_EULA=Y dnf install -y msodbcsql18
ACCEPT_EULA=Y dnf install -y mssql-tools18
===JDBC jar bereitstellen ===
Zuvor Java Version prüfen:
java -version
openjdk version "1.8.0_362"
Und passende Lib laden von z.B. https://central.sonatype.com/namespace/com.microsoft.sqlserver
Für meine Umgebung habe ich am Ende die "mssql-jdbc-8.4.0.jre8.jar" verwendet (https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/8.4.0.jre8/).
==Problem mit dem aktuellsten Treiber "mssql-jdbc-12.2.0.jre8.jar"==
Im ersten Schritt natürlich den aktuellsten Treiber **mssql-jdbc-12.2.0.jre8.jar** von https://learn.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver16 verwendet.
ABER:
13:25:08.768 [ajp-nio-127.0.0.1-8009-exec-7] WARN o.a.g.e.AuthenticationProviderFacade - The "sqlserver" authentication provider has encountered an internal error which will halt the authentication process. If this is unexpected or you are the developer of this authentication provider, you may wish to enable debug-level logging. If this is expected and you wish to ignore such failures in the future, please set "skip-if-unavailable: sqlserver" within your guacamole.properties.
13:25:08.771 [ajp-nio-127.0.0.1-8009-exec-7] ERROR o.a.g.rest.RESTExceptionMapper - Unexpected internal error:
### Error querying database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target". ClientConnectionId:c4a1b75a-de43-4989-8f01-778e10ccb428
Daher nun eine viel älteren Version verwendet, es ist mir nicht gelungen das in Guacamole so zu konfigurieren das des auch mit dem neusten Treiber klappt.
Vermutlich ist jetzt aber die Verbindung zur DB nicht verschlüsselt!
----
====Auf dem MSSQL Server eine Datenbank und einen Eigentümer für die DB anlegen====
Auf der MSSQL DB Umgebung einen User und eine Datenbank "guacamole" anlegen lassen, für das Setup den User "guacamole" SYSADMIN Rechte einräumen lassen, diese aber nach der Installation wieder entfernen!
Test ob ein Konnect zur DB möglich ist:
/opt/mssql-tools/bin/sqlcmd -S msdbCluster -U guacamole -P xxxDASGeheimePWDxx
use guacamole
go
SELECT NAME FROM sys.sysdatabases;
go
----
====Guacamole Datenbank Objekte installieren====
Schema installieren über die DB Skripte von Guacamole:
# In das zuvor ausgepackte Verzeichnis wechseln
cd /srv/guacamole-client-1.5.0/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/schema/
/opt/mssql-tools/bin/sqlcmd -S msdbCluster -U guacamole -d guacamole -i ./001-create-schema.sql
# Admin User guacadmin anlegen
/opt/mssql-tools/bin/sqlcmd -S msdbCluster -U guacamole -d guacamole -i ./002-create-admin-user.sql
# Login User guacamole_user anlegen
/opt/mssql-tools/bin/sqlcmd -S msdbCluster -U guacamole
CREATE LOGIN guacamole_user WITH PASSWORD = 'SehrStrengGeheimesPWD';
GO
USE guacamole;
GO
CREATE USER guacamole_user;
GO
ALTER ROLE db_datawriter ADD MEMBER guacamole_user;
ALTER ROLE db_datareader ADD MEMBER guacamole_user;
GO
quit
----
====Guacamole konfigurieren ====
Unter "/etc/guacamole" die Datei guacamole.properties anpassen:
...
# SQL Server properties
sqlserver-hostname: msdbCluster
sqlserver-port: 1433
sqlserver-database: guacamole
sqlserver-username: guacamole_user
sqlserver-password: SehrStrengGeheimesPWD
sqlserver-default-max-connections-per-user: 0
sqlserver-default-max-group-connections-per-user: 0
sqlserver-user-required: false
...
== JDBC Lib hinterlegen ==
Die notwendigen Lib "mssql-jdbc-8.4.0.jre8.jar" für den JDBC Connect nach "/etc/guacamole/lib" kopieren.
== Extension Lib hinterlegen ==
Die Extension für die MSQL Server Anbindung "guacamole-auth-jdbc-sqlserver-1.5.0.jar" nach "/etc/guacamole/extensions" kopieren.
=== Neu starten ===
Als root starten:
systemctl stop tomcat.service
systemctl start tomcat.service
Prüfen:
cd /srv/tomcat/tomcat/conf/logs
tail -f catalina.out
----
----
==== Quellen ====
Doku:
* https://guacamole.apache.org/doc/gug/jdbc-auth.html#creating-the-guacamole-database