Skip to content

Commit

Permalink
acceptance: run python, psql containers as current uid
Browse files Browse the repository at this point in the history
`postgres`'s permission checking for certificates has gotten more
rigorous since [this commit](https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=a59c79564bdc209a5bc7b02d706f0d7352eb82fa).
This has broken a couple `acceptance` tests which do not pin to any
specific `postgres` version (see cockroachdb#81313, cockroachdb#81437).

Here we attempt to solve the problem "once and for all" by ensuring that
these containers run with a UID that is equal to the one that created
the certificates.

Release note: None
  • Loading branch information
rickystewart authored and andrewbaptist committed May 25, 2022
1 parent 803363b commit 34bebc0
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 4 deletions.
1 change: 1 addition & 0 deletions pkg/acceptance/compose/gss/docker-compose-python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ services:
- ${COCKROACH_BINARY:-../../../../cockroach-linux-2.6.32-gnu-amd64}:/cockroach/cockroach
python:
build: ./python
user: "${UID}:${GID}"
depends_on:
- cockroach
environment:
Expand Down
1 change: 1 addition & 0 deletions pkg/acceptance/compose/gss/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ services:
- ${COCKROACH_BINARY:-../../../../cockroach-linux-2.6.32-gnu-amd64}:/cockroach/cockroach
psql:
build: ./psql
user: "${UID}:${GID}"
depends_on:
- cockroach
environment:
Expand Down
11 changes: 9 additions & 2 deletions pkg/acceptance/compose/gss/psql/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,19 @@ RUN GO111MODULE=off go get -d -t -tags gss_compose
RUN GO111MODULE=off go test -v -c -tags gss_compose -o gss.test

# Copy the test binary to an image with psql and krb installed.
FROM postgres:11.15
FROM postgres:11

RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install --yes --no-install-recommends \
ca-certificates \
curl \
krb5-user

COPY --from=builder /workspace/gss.test .

ENTRYPOINT ["/start.sh"]
RUN curl -fsSL "https://github.com/benesch/autouseradd/releases/download/1.3.0/autouseradd-1.3.0-amd64.tar.gz" -o autouseradd.tar.gz \
&& echo "442dae58b727a79f81368127fac141d7f95501ffa05f8c48943d27c4e807deb7 autouseradd.tar.gz" | sha256sum -c - \
&& tar xzf autouseradd.tar.gz --strip-components 1 \
&& rm autouseradd.tar.gz

ENTRYPOINT ["autouseradd", "--user", "roach", "--no-create-home", "/start.sh"]
2 changes: 1 addition & 1 deletion pkg/acceptance/compose/gss/psql/start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ echo "Preparing SQL user ahead of test"
env \
PGSSLKEY=/certs/client.root.key \
PGSSLCERT=/certs/client.root.crt \
psql -c "ALTER USER root WITH PASSWORD rootpw"
psql -U root -c "ALTER USER root WITH PASSWORD rootpw"

echo "Running test"
./gss.test
8 changes: 7 additions & 1 deletion pkg/acceptance/compose/gss/python/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,19 @@ RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-k
echo "deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list && \
apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install --yes --no-install-recommends \
curl \
krb5-user \
postgresql-client-11

RUN curl -fsSL "https://github.com/benesch/autouseradd/releases/download/1.3.0/autouseradd-1.3.0-amd64.tar.gz" -o autouseradd.tar.gz \
&& echo "442dae58b727a79f81368127fac141d7f95501ffa05f8c48943d27c4e807deb7 autouseradd.tar.gz" | sha256sum -c - \
&& tar xzf autouseradd.tar.gz --strip-components 1 \
&& rm autouseradd.tar.gz

RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

ENTRYPOINT ["/start.sh"]
ENTRYPOINT ["autouseradd", "--user", "roach", "--no-create-home", "/start.sh"]
11 changes: 11 additions & 0 deletions pkg/acceptance/compose_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (
"os"
"os/exec"
"path/filepath"
"strconv"
"testing"

"github.com/cockroachdb/cockroach/pkg/acceptance/cluster"
Expand Down Expand Up @@ -61,6 +62,16 @@ func testCompose(t *testing.T, path string, exitCodeFrom string) {
} else {
path = filepath.Join(composeDir, path)
}
uid := os.Getuid()
err := os.Setenv("UID", strconv.Itoa(uid))
if err != nil {
t.Fatalf(err.Error())
}
gid := os.Getgid()
err = os.Setenv("GID", strconv.Itoa(gid))
if err != nil {
t.Fatalf(err.Error())
}
cmd := exec.Command(
"docker-compose",
"--no-ansi",
Expand Down

0 comments on commit 34bebc0

Please sign in to comment.