😎

RedashのGoogle Login(OAuth)認証

2022/02/09に公開

はじめに

RedashのGoogle Login(OAuth)認証は、GCPプロジェクトのクライアントID、クライアントシークレットを使用して行う。
今回はローカルにRedash環境を構築し検証する。

Google Compute Cloud側の設定

GCPへログイン

gcloud auth login

プロジェクトの作成

gcloud projects create --name=redash

OAuth同意画面の作成

APIとサービス > OAuth同意画面
  • User Type: 内部
  • アプリ名: Redash
  • ユーザーサポートメール: <任意>
  • メールアドレス: <任意>

認証情報の作成

APIとサービス > 認証情報
  • 認証情報を作成: OAuthクライアントID
  • アプリケーションの種類: ウェブアプリケーション
  • 名前: Redash
  • 承認済みのリダイレクトURI: http://localhost:8080/oauth/google_callback

クライアントID、クライアントシークレットを控えておく。

Redash側の設定

compose.yml

compose.yml
x-redash-service: &redash-service
  image: redash/redash:10.1.0.b50633
  depends_on:
    - postgres
    - redis
    - mailhog
  env_file: .env
  restart: always
services:
  server:
    <<: *redash-service
    command: server
    ports:
      - "5000:5000"
    environment:
      REDASH_WEB_WORKERS: 4
  scheduler:
    <<: *redash-service
    command: scheduler
  worker:
    <<: *redash-service
    command: worker
    environment:
      QUEUES: "periodic emails default schemas scheduled_queries queries"
      WORKERS_COUNT: 2
  redis:
    image: redis:6.2.6-alpine3.15
    ports:
      - "6379:6379"
    restart: always
    volumes:
      - type: volume
        source: redis
        target: /data
  postgres:
    image: postgres:14.1-alpine3.15
    ports:
      - "5432:5432"
    env_file: .env
    volumes:
      - type: volume
        source: postgres
        target: /var/lib/postgresql/data
    restart: always
  nginx:
    image: redash/nginx:latest
    ports:
      - "8080:80"
    depends_on:
      - server
    external_links:
      - server:redash
    restart: always
  mailhog:
    image: mailhog/mailhog:latest
    ports:
      - "1025:1025"
      - "8025:8025"
    restart: always
  mysql:
    image: kakakakakku/mysql-world-database:5.7
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
      TZ: Japan
    ports:
      - "3306:3306"
    volumes:
      - type: volume
        source: mysql
        target: /var/lib/mysql
volumes:
  redis:
  postgres:
  mysql:

.env

.env
PYTHONUNBUFFERED=0
REDASH_LOG_LEVEL=INFO
REDASH_REDIS_URL=redis://redis:6379/0
POSTGRES_PASSWORD=mAor6Nd5QxcFBlLQtpwVK5uFrJxrY7U2
REDASH_COOKIE_SECRET=i5UV13bbfALHVmZLj0ROZBAjihI0plsF
REDASH_SECRET_KEY=56WAuxuGvCq9GjdHBycZaNdCx3sAsqi7
REDASH_DATABASE_URL=postgresql://postgres:mAor6Nd5QxcFBlLQtpwVK5uFrJxrY7U2@postgres/postgres

# mail
REDASH_MAIL_SERVER=mailhog
REDASH_MAIL_PORT=1025
REDASH_MAIL_USE_TLS=false
REDASH_MAIL_USE_SSL=false
REDASH_MAIL_USERNAME=
REDASH_MAIL_PASSWORD=
REDASH_MAIL_DEFAULT_SENDER=admin@example.com
REDASH_HOST=http://localhost:8080

# Google Login (OAuth)
REDASH_GOOGLE_CLIENT_ID=<クライアントID>
REDASH_GOOGLE_CLIENT_SECRET=<クライアントシークレット>

Redashの起動

docker compose run --rm server create_db
docker compose up -d

Admin Userの登録

http://localhost:8080
  • Name: admin
  • Email Address: admin@example.com
  • Password: password
  • Organization Name: redash-example

Google Login認証に変更する

Settings > General > Authentication
  • Password Loginをオフにする
  • Google Loginにドメインを追加

Redashを再起動

docker compose restart

できあがり

Discussion