Closed5
IAP for Cloud Runを試す(特定ドメインにだけアプリを公開する)
What
Cloud RunにIAP認証を追加する場合、Load Balancerを作るなどの準備・費用が必要だった。
これが不要になる機能が2025年4月にPre-GAになったので試したメモ。
なお、新機能自体は昨年から知っていたが、筆者の環境では使えなかった。
Cloud Runサービスの作成
なんでも良いが、たまたま触っていたNext.jsで適当なDockerfileを作成
FROM node:lts-alpine AS base
FROM base AS deps
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN corepack enable pnpm && pnpm install --frozen-lockfile
FROM base AS builder
WORKDIR /app
COPY /app/node_modules ./node_modules
COPY . .
RUN corepack enable pnpm && pnpm run build
FROM base AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY /app/.next/standalone ./
COPY /app/.next/static ./.next/static
EXPOSE 3000
CMD ["node", "server.js"]
Cloud Buildは以下のように定義。
steps:
- name: "gcr.io/cloud-builders/docker"
entrypoint: "bash"
args:
- "-c"
- |
echo "BACKEND_URL=${_BACKEND_URL}" >> .env
docker build -f Dockerfile -t gcr.io/$PROJECT_ID/<serviceName>:$COMMIT_SHA .
- name: "gcr.io/cloud-builders/docker"
args: ["push", "gcr.io/$PROJECT_ID/<serviceName>:$COMMIT_SHA"]
- name: "gcr.io/cloud-builders/gcloud"
args:
- "beta"
- "run"
- "deploy"
- "<serviceName>"
- "--image"
- "gcr.io/$PROJECT_ID/<serviceName>:$COMMIT_SHA"
- "--iap"
- "--region"
- "asia-northeast1"
images:
- "gcr.io/$PROJECT_ID/<serviceName>:$COMMIT_SHA"
timeout: 900s
options:
logging: CLOUD_LOGGING_ONLY
ポイント
gcloudのアップデート
新しい機能なので、gcloud components update
をする。
betaコマンド & --iapを使う
gcloud beta run deploy <~~~> --iap
というコマンドで有効化できる。
アクセス権限付与
アカウント単位
gcloud beta iap web add-iam-policy-binding \
--resource-type=cloud-run \
--role=roles/iap.httpsResourceAccessor \
--member=user:<email> \
--region <region> \
--service=<serviceName>
ドメイン単位
gcloud beta iap web add-iam-policy-binding \
--resource-type=cloud-run \
--role=roles/iap.httpsResourceAccessor \
--member=domain:<domain> \
--region <region> \
--service=<serviceName>
権限がないと以下のエラーが出る。
このスクラップは5ヶ月前にクローズされました