Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server Linux rendszeren
Az SQL Server 2017 (14.x) tárolók alapértelmezés szerint gyökérfelhasználóként indulnak el, ami biztonsági problémákat okozhat. Ez a cikk az SQL Server Linux-tárolók futtatásakor elérhető biztonsági lehetőségekről, valamint az SQL Server-tárolók nem gyökérfelhasználóként való létrehozásának módjáról szól.
A cikkben szereplő példák feltételezik, hogy Dockert használ, de ugyanezeket az alapelveket alkalmazhatja más tárolóvezénylési eszközökre, például a Kubernetesre is.
Nem gyökérszintű SQL Server 2017-tárolók létrehozása és futtatása
Kövesse az alábbi lépéseket egy SQL Server 2017-tároló (14.x) létrehozásához, amely mssql (nem gyökérszintű) felhasználóként indul el.
Jegyzet
Az SQL Server 2019 (15.x) és újabb verziók tárolói automatikusan nem gyökérként indulnak el, míg az SQL Server 2017 (14.x) tárolók alapértelmezés szerint gyökérként indulnak el. További információ az SQL Server-tárolók nem gyökérként való futtatásáról: Biztonságos SQL Server Linux-tárolók.
Töltse le a minta Docker-fájlt a nem rendszergazdai SQL Server-tárolókhoz, és mentse el
dockerfilenéven.Futtassa a következő parancsot a dockerfile könyvtár kontextusában a nem gyökérszintű SQL Server-tároló létrehozásához:
cd <path to dockerfile> docker build -t 2017-latest-non-root .Indítsa el a tárolót.
Fontos
A
SA_PASSWORDkörnyezeti változó elavult. Használjon inkábbMSSQL_SA_PASSWORD.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" --cap-add SYS_PTRACE --name sql1 -p 1433:1433 -d 2017-latest-non-rootJegyzet
A
--cap-add SYS_PTRACEjelző szükséges ahhoz, hogy a nem gyökérszintű SQL Server-tárolók hibaelhárítási célból memóriaképeket generáljanak.Ellenőrizze, hogy a tároló nem gyökérfelhasználóként fut-e:
docker exec -it sql1 bashFuttassa a
whoamiparancsot, amely a tárolón belül futó felhasználót adja vissza.whoami
Másik, nem root felhasználóként futtassa a tárolót a gazdagépen.
Ha az SQL Server-tárolót nem gyökérfelhasználóként szeretné futtatni, adja hozzá a -u jelzőt a docker run parancshoz. A nem gyökérszintű tárolóra vonatkozik az a korlátozás, hogy a root csoport részeként kell futnia, kivéve, ha a kötet /var/opt/mssql van csatlakoztatva, amelyhez a nem gyökérfelhasználó hozzáférhet. A root csoport nem ad további gyökérengedélyeket a nem gyökérfelhasználónak.
Futtatás felhasználóként 4000-es UID azonosítóval
Az SQL Servert egyéni UID azonosítóval is elindíthatja. Az alábbi parancs például a UID 4000 azonosítóval indítja el az SQL Servert:
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" --cap-add SYS_PTRACE -u 4000:0 -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest
Figyelmeztetés
Győződjön meg arról, hogy az SQL Server-tároló nevesített felhasználóval rendelkezik, például mssql vagy root, ellenkező esetben az sqlcmd nem futtatható a tárolón belül. A tárolón belüli whoami futtatásával ellenőrizheti, hogy az SQL Server-tároló nevesített felhasználóként fut-e.
A nem root jogosultságú tároló futtatása root felhasználóként.
Szükség esetén gyökérfelhasználóként futtathatja a nem gyökértárolót, amely automatikusan minden fájlengedélyt megad a tárolónak, mert magasabb jogosultsággal rendelkezik.
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -u 0:0 -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest
Felhasználóként történő futtatás a gazdagépen
Az SQL Servert a következő paranccsal indíthatja el egy meglévő felhasználóval a gazdagépen:
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" --cap-add SYS_PTRACE -u $(id -u myusername):0 -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest
Futtatás másik felhasználóként és csoportként
Az SQL Servert egyéni felhasználóval és csoporttal is elindíthatja. Ebben a példában a csatlakoztatott kötet rendelkezik a gazdaszámítógép felhasználójára vagy csoportjára konfigurált engedélyekkel.
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" --cap-add SYS_PTRACE -u $(id -u myusername):$(id -g myusername) -v /path/to/mssql:/var/opt/mssql -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest
Állandó tárolási engedélyek konfigurálása nem gyökértárolókhoz
Annak érdekében, hogy a nem gyökérfelhasználó hozzáférhessen a csatlakoztatott köteteken lévő adatbázisfájlokhoz, győződjön meg arról, hogy a tárolót futtató felhasználó vagy csoport az állandó fájltárolóból tud olvasni és írni.
Ezzel a paranccsal lekérheti az adatbázisfájlok aktuális tulajdonjogát.
ls -ll <database file dir>
Futtassa az alábbi parancsok egyikét, ha az SQL Server nem rendelkezik hozzáféréssel a tárolt adatbázisfájlokhoz.
A gyökércsoportnak olvasási/írási hozzáférés biztosítása az adatbázisfájlokhoz
Adjon a gyökércsoport-engedélyeket a következő könyvtáraknak, hogy a nem gyökérszintű SQL Server-tároló hozzáférhessen az adatbázisfájlokhoz.
chgrp -R 0 <database file dir>
chmod -R g=u <database file dir>
A nem root felhasználót állítsa be a fájlok tulajdonosának
A tulajdonos lehet az alapértelmezett nem gyökérfelhasználó, vagy bármely más, nem gyökérszintű felhasználó, amit meg szeretne adni. Ebben a példában az UID 10001-et állítja be nem gyökérfelhasználóként.
chown -R 10001:0 <database file dir>
Sql Server Linux-tárolók kapcsolatainak titkosítása
Fontos
Amikor Konfigurálja az Active Directory hitelesítési vagy titkosítási beállításait, például a Transzparens adattitkosítást (TDE) és az SSL/TLS-t linuxos vagy tárolókon futó SQL Serverhez, több fájl is létezik, például a kulcstartó, a tanúsítvány és a gépkulcs, amelyek alapértelmezés szerint a mappa /var/opt/mssql/secretsalatt jönnek létre, és amelyekhez alapértelmezés szerint mssqlroot csak a felhasználók férhetnek hozzá. Ha tartós tárolót konfigurál az SQL Server tárolókhoz, használja ugyanazt a hozzáférési stratégiát, hogy biztosítsa, a tárolón belüli /var/opt/mssql/secrets mappához hozzárendelt gazdagép vagy megosztott kötet útvonal csak a gazdagép mssql és root felhasználói számára legyen elérhető és védett. Ha az elérési út/mappa hozzáférése sérült, a rosszindulatú felhasználók hozzáférhetnek ezekhez a kritikus fájlokhoz, veszélyeztetve a titkosítási hierarchiát és/vagy az Active Directory-konfigurációkat.
Az SQL Server Linux-tárolókkal való kapcsolatok titkosításához a következő követelményekkel rendelkező tanúsítványra van szüksége.
Az alábbiakban egy példát mutatunk be arra, hogyan titkosítható a kapcsolat SQL Server Linux-tárolókkal. Itt önaláírt tanúsítványt használ, amelyet nem szabad éles helyzetekben használni. Ilyen környezetekben inkább ca-tanúsítványokat kell használnia.
Hozzon létre önaláírt tanúsítványt, amely csak teszt és nem gyártási környezetekre használható.
openssl req -x509 -nodes -newkey rsa:2048 -subj '/CN=sql1.contoso.com' -keyout /container/sql1/mssql.key -out /container/sql1/mssql.pem -days 365Az előző kódmintában
sql1az SQL-tároló állomásneve, így a tárolóhoz való csatlakozáskor a kapcsolati sztringben használt névsql1.contoso.com,portlesz. Azt is meg kell győződnie, hogy a mappa elérési útja/container/sql1/már létezik az előző parancs futtatása előtt.Győződjön meg arról, hogy a megfelelő engedélyeket adja meg a
mssql.keyésmssql.pemfájlokhoz, így elkerülheti a hibákat, amikor a fájlokat SQL Server-tárolóhoz csatlakoztatja:chmod 440 /container/sql1/mssql.pem chmod 440 /container/sql1/mssql.keyMost hozzon létre egy
mssql.conffájlt a következő tartalommal a kiszolgáló által kezdeményezett titkosítás engedélyezéséhez. Ügyfél által kezdeményezett titkosítás esetén módosítsa az utolsó sortforceencryption = 0.[network] tlscert = /etc/ssl/certs/mssql.pem tlskey = /etc/ssl/private/mssql.key tlsprotocols = 1.2 forceencryption = 1Jegyzet
Egyes Linux-disztribúciók esetében a tanúsítvány és a kulcs tárolásának elérési útja is lehet
/etc/pki/tls/certs/és/etc/pki/tls/private/. Az SQL Server-tárolókmssql.conffrissítése előtt ellenőrizze az elérési utat. A megadott hely azmssql.confa hely, ahol a tárolóban lévő SQL Server keresni fogja a tanúsítványt és annak kulcsát. Ebben az esetben ez a hely/etc/ssl/certs/és/etc/ssl/private/.A
mssql.conffájl ugyanazon a mappahelyen is létrejön,/container/sql1/. A fenti lépések futtatása után három fájlnak kell lennie:mssql.conf,mssql.keyésmssql.pemasql1mappában.Telepítse az SQL Server-tárolót a következő paranccsal (cserélje le
<password>érvényes jelszóval):docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 5434:1433 --name sql1 -h sql1 -v /container/sql1/mssql.conf:/var/opt/mssql/mssql.conf -v /container/sql1/mssql.pem:/etc/ssl/certs/mssql.pem -v /container/sql1/mssql.key:/etc/ssl/private/mssql.key -d mcr.microsoft.com/mssql/server:2019-latestAz előző parancsban a
mssql.conf,mssql.pemésmssql.keyfájlokat csatlakoztatta a tárolóhoz, és a tárolóban lévő 1433-as (az SQL Server alapértelmezett portja) portot a gazdagépen az 5434-es portra térképezte át.Jegyzet
Ha a Red Hat Enterprise Linux 8-at vagy újabb verziókat használja, a
podman runhelyett adocker runparancsot is használhatja.
Kövesse a Ügyfél által kezdeményezett titkosítási dokumentumban szereplő "Tanúsítvány regisztrálása az ügyfélszámítógépen" és a "Példakapcsolati karakterláncok" szakaszokat az SQL Serverhez való kapcsolat titkosításának elindításához Linux-tárolókon.
Kapcsolódó tartalom
- Kezdjen dolgozni az SQL Server 2017 (14.x) konténerképekkel a Docker használatával a gyors útmutató segítségével
- Kezdje el az SQL Server 2019 (15.x) konténer képeivel a Dockeren a rövid útmutatón keresztül.
- Kezdje el az SQL Server 2022 (16.x) konténerképek használatát a Dockeren keresztül a gyors útmutató segítségével.
- Ismerkedés az SQL Server 2025 -ös (17.x) tárolórendszerképekkel a Dockeren a rövid útmutató végigvezetésével