Kasutaja Dockeris

Andrei Kopylov, meie tehnilise direktori, kes armastab, kasutab aktiivselt ja propageerib Dockerit. Uues artiklis rÀÀgib ta, kuidas luua kasutajaid Dockeris. Õige töö nende kallal, miks ei tohi kasutajaid jĂ€tta root Ă”igustega ja kuidas lahendada Dockerfile'i indikaatorite mittesobivuse probleem.

KÔik konteineris töötavad protsessid töötavadroot kasutaja alt, kui seda ei mÀÀrata eraldi. See tundub vÀga mugav, kuna sellel kasutajal ei ole mingeid piiranguid. Just seetÔttu on vale töötada root Ôigustes turvalisuse seisukohalt. Kui lokaal arvutis ei tohi keegi mÔistuse juures töötada root Ôigustes, siis paljud kÀivitavad protsesse 'root' all konteinerites.

Alati on olemas vead, mis lubavad pahatahtlikul vÀlja pÀÀseda konteinerist ja jÔuda host-arvutisse. Eeldades halvimat, peame tagama, et protsessid kÀivituvad konteineris kasutaja alt, kellel puuduvad Ôigused host-arvutis.

Kasutaja loomine

Kasutaja loomine konteineris ei erine tema loomisest Linuxi distributsioonides. Kuid erinevate aluseks olevate piltide puhul vÔivad kÀsud erineda.

Debian pÔhinevate distributsioonide jaoks tuleb Dockerfile'i lisada:

RUN groupadd --gid 2000 node 
  && useradd --uid 2000 --gid node --shell /bin/bash --create-home node

Alpine jaoks:

RUN addgroup -g 2000 node 
    && adduser -u 2000 -G node -s /bin/sh -D node

Protsesside kÀivitamine kasutaja alt

Tehke jÀrgmist, et kÔik edasised protsessid töötaksid kasutaja UID 2000 alt:

USER 2000

Tehke jÀrgmist, et kÔik edasised protsessid töötaksid kasutaja node alt:

USER node

Rohkem infot dokumentatsioon.

Hoidlate mountimine

Hoidlate mountimisel konteinerisse veenduge, et kasutajal oleks vÔimalik faile lugeda ja (vÔi) kirjutada. Selle saavutamiseks peavad konteineri kasutaja UID (GID) ja konteinerist vÀljaspool oleva kasutaja UID (GID), kellel on vastavad juurdepÀÀsuÔigused, olema vastavuses. Kasutajanimed ei oma sel juhul tÀhtsust.

Tihti on Linuxi arvutis kasutajal UID ja GID vÔrdsed 1000. Need identifikaatorid antakse esimeselle arvuti kasutajale.

Oma identifikaatorite leidmine on lihtne:

id

Saate pÔhjalikku teavet oma kasutaja kohta.
Asendage 2000 nÀidetes oma identifikaatoriga ja kÔik on korras.

Kasutajale UID ja GID mÀÀramine

Kui kasutaja on varem loodud, kuid ID-sid on vaja muuta, saab seda teha jÀrgmiselt:

RUN usermod -u 1000 node 
  && groupmod -g 1000 node

Kui kasutate aluseks olevat alpine pilti, siis tuleb installida shadow paket:

RUN apk add --no-cache shadow

Kasutaja ID edastamine konteinerisse pildi ehitamise ajal

Kui teie ID ja kÔigi teiste projektiga töötavate inimeste ID-d kattuvad, piisab, kui mÀrkida see ID Dockerfile'i. Kuid sageli ei lÀhe kasutajate ID-d kokku.

Kuidas soovitud tulemus saavutada, ei ole kohe selge. See oli mulle kĂ”ige raskem osa Docker'i Ă”ppimise protsessis. Paljud Docker'i kasutajad ei mĂ”tle sellele, et piltide elutsĂŒkli jooksul on erinevad etapid. Alguses kogutakse pilti, selleks kasutatakse Dockerfile'i. Kogu konteineri kĂ€ivitamisel Dockerfile'i ei kasutata.

Kasutajate loomine peab toimuma pildi ehitamise ajal. See kehtib ka kasutaja mÀÀramisel, kelle alt protsessid kÀivitatakse. See tÀhendab, et peame mingil viisil edastama UID (GID) konteinerisse.

ZDockerfile'is vĂ€liste muutujaid kasutatakse kĂ€skude kaudu ENV ja ARG. Üksikasjalik vĂ”rdlus kĂ€skudest siit.

Dockerfile

ARG UID=1000
ARG GID=1000
ENV UID=${UID}
ENV GID=${GID}
RUN usermod -u $UID node 
  && groupmod -g $GID node

Argumentide edastamine docker-compose'i kaudu on vÔimalik jÀrgmiselt:

version: '1' services: simplesample-sonar: image: sonarqube:lts ports: - 9001:9000 - 9092:9092 network_mode: bridge

build:
  context: ./src/backend
  args:
    UID: 1000
    GID: 1000

P.S. Docker'i kÔikide saladuste omandamiseks ei piisa pelgalt dokumentatsiooni vÔi artiklite lugemisest. Tuleb palju harjutada, tuleb tunnetada Docker'it.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster