📔

【Looker】General Settingsで設定した方がよい項目

8 min read 2

はじめに

今回は、かなり地味なお話です^^

管理 > General > Settingsで設定できる内容の調査結果になります。

General Settings

記事を書くに至った経緯

LookerをBigQueryに接続して利用していますが、BigQueryに対するセキュリティ対策として
GCPのVPC Service Controls[1]で保護しています。

VPC Service ControlsでLookerからBigQueryに対する通信のみ許可するため
セキュアなデータベースアクセスを可能にするに記載されているIPアドレスを許可して
利用していました。

AWS東京リージョンを指定してLookerを利用していたので、下記の2つのIPアドレスですね。

アジア
・ 52.68.85.40
・ 52.68.108.109

【構成図】

2021年3月中旬以降、急にLookerからBigQueryへのクエリでエラーが出ました。
むむ、何も設定は変えていないのになぜだ!となりました(笑)

Lookerで表示されたエラーメッセージは以下の通りです。

The Google BigQuery Standard SQL database encountered an error while running this query.
Query execution failed: - VPC Service Controls: Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: XXXXXXXXXXXX.

どうもVPC Service Controlsが悪さしてそうだ。。なぜだ。。
念の為、GCP側もCloud Loggingでログを確認してみたところ、同様にエラってました。

NO_MATCHING_ACCESS_LEVEL
{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "status": {
      "code": 7,
      "message": "Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: XXXXXXXXXXXX",
      "details": [
        {
          "@type": "type.googleapis.com/google.rpc.PreconditionFailure",
          "violations": [
            {
              "type": "VPC_SERVICE_CONTROLS",
              "description": "XXXXXXXXXXXX"
            }
          ]
        }
      ]
    },
    "authenticationInfo": {
      "principalEmail": "looker-poc-user@<project_name>.iam.gserviceaccount.com",
      "serviceAccountKeyName": "//iam.googleapis.com/projects/<project_name>/serviceAccounts/looker-poc-user@<project_name>.iam.gserviceaccount.com/keys/XXXXXXXXXXXXXXXXXXXXX"
    },
    "requestMetadata": {
      "callerIp": "54.250.91.57",
      "requestAttributes": {},
      "destinationAttributes": {}
    },
    "serviceName": "bigquery.googleapis.com",
    "methodName": "permission:bigquery.jobs.create",
    "resourceName": "projects/XXXXXXXXXXXX",
    "metadata": {
      "resourceNames": [
        "projects/XXXXXXXXXXXX"
      ],
      "violationReason": "NO_MATCHING_ACCESS_LEVEL",
      "accessLevels": [
        "no_matching_definitions"
      ],
      "@type": "type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata",
      "intermediateServices": [
        "bigquery.googleapis.com"
      ],
      "securityPolicyInfo": {
        "organizationId": "XXXXXXXXXXXXX",
        "servicePerimeterName": "accessPolicies/XXXXXXXXXXXX/servicePerimeters/vpc_sc_looker_poc"
      },
      "vpcServiceControlsUniqueId": "XXXXXXXXXXXX",
      "ingressViolations": [
        {
          "targetResource": "projects/XXXXXXXXXXXX",
          "servicePerimeter": "accessPolicies/XXXXXXXXXXXX/servicePerimeters/vpc_sc_looker_poc"
        }
      ]
    }
  },
  "insertId": "1cuc80td345p",
  "resource": {
    "type": "audited_resource",
    "labels": {
      "project_id": "<project_name>",
      "method": "permission:bigquery.jobs.create",
      "service": "bigquery.googleapis.com"
    }
  },
  "timestamp": "2021-03-15T11:33:02.331662432Z",
  "severity": "ERROR",
  "logName": "projects/<project_name>/logs/cloudaudit.googleapis.com%2Fpolicy",
  "receiveTimestamp": "2021-03-15T11:33:03.084027697Z"
}

あれ、接続元IPが54.250.91.57になっているではないですか。。

改めてセキュアなデータベースアクセスを可能にするを確認してみると
次世代ホスティングという項目に以下のIPアドレスがありました。

アジア太平洋地域(東京)(ap-northeast-1)
・ 54.250.91.57
・ 13.112.30.110
・ 54.92.76.241

あれ、、そんな話、聞いていないぞ (゚o゚;
ということで問い合わせてみたところ、次世代ホスティングインフラストラクチャへの移行についての内容をTechnical Contactsの技術担当にも通知していますで!とのことでした。

ふむ、なるほど。それは設定してないぞ!(笑)
ということで、改めてGeneral Settingsを見直してみようと流れになりました^^
(前置きが長くてすいまそん。。)

利用環境

Product version
Looker 21.4.17
BigQuery 2021年3月15日時点
VPC Service Controls 2021年3月15日時点
Region asia-northeast1

設定項目

以下、General Settingsで設定できる項目になります。
(公式サイトの和訳に近い内容になっています)

【Settings】

項目名 初期値 内容
License Key <Looker社が設定> 契約しているライセンスキー
Host URL <Looker社が設定> LookerのログインページのURL
Technical Contacts - 技術サポートの依頼担当の連絡先、重要な情報の通知先
Application Time Zone US Pacific (America - Los Angeles) スケジュールされたLookジョブが認識するタイムゾーン

今回のトリガーとなったTechnical Contactsはデフォルトで空欄になっていました。
自分ともう1名のメンバーを追加しました!
すると先月末に新バージョンに関するメール通知が届きました。

Application Time ZoneUS Pacific (America - Los Angeles)となっていました。
このタイミングに合わせて、Asia / Tokyoに変更しました。

日本国内のメンバーだけで運用するのであれば、これだけでOKだと思います。
様々なタイムゾーンの国に分かれて対応するような場合は、User Specific Time Zones
Enabledにして、ユーザ個々にタイムゾーンを設定することをお勧めします。

【Feature Configuration】

項目名 初期値 内容
New Account Notification Disabled 新規アカウント作成時の管理者への通知設定
In-app Guides Enabled 機能に関するお役立ち情報を提供するポップアップ表示設定
Cookie Notification Banner Disabled Cookie通知バナーの表示設定
Curated Search Enabled キュレート検索機能の設定
Use Gravatar Enabled Gravatarアプリを使ったプロフィール写真の表示設定
User Specific Time Zones Disabled ユーザ固有のタイムゾーン設定
Default Visualization Colors Boardwalk ビジュアライゼーションのデフォルトのカラーコレクション設定
Persist Assets in Browser cache Disabled 静的アセットを各ユーザーのブラウザストレージにキャッシュする設定
Mobile Application Access Disabled Lookerモバイルアプリを使用したアクセス設定

New Account Notificationを追加でEnabledにしました。
知らない間に勝手に新規ユーザが作成されても管理者にメール通知が来るようになります。

Use Gravatarですが、Gravatar[2]というサイトでアバター(画像)をアップすると
対応しているサイトでGravatar画像と公開プロフィールが自動的にフォローされるようです。
このサービス、初めて知りました。利用する想定がなかったので、Disabledにしました。

【Data Policy】

項目名 初期値 内容
Public URLs Disabled ログイン不要な公開URLの設定
Email Domain Allowlist for Scheduled Content No domains specified. コンテンツやアラート配信先のメールアドレスのドメインホワイトリスト設定
URL Allowlist for Data Actions All urls allowed for data actions. DimensionのActionパラメータでリンク先に指定するURLのホワイトリスト設定
Bock Inline Embedded Images in Query Resultsl Enabled クエリ結果のインライン埋め込み画像(Base64でエンコード)のブロック設定
Block Formulas and Macros in CSV and Excel Files Disabled CSVおよびExcelファイルの数式とマクロのブロック設定(文字をサニタイズします)
Outgoing Webhook Token xxxxxxxxxxx Webhookを使ってコンテンツ配信する場合のリクエストに含めるLookerトークン
Default Export Format TXT デフォルトのエクスポート形式 (利用できる形式: txt、xlsx、csv、json、html、md)

まとめ

さて、いかがでしたでしょうか?

運用が始まるとあまり見ることのないページだと思います。
というかこれまでちゃんと設定項目を把握していませんでした。反省です。

Lookerのモバイルアプリ[3]とかも初めて知りました^^

脚注
  1. VPC Service Controlsとは ↩︎

  2. Gravatarとは ↩︎

  3. Looker Mobileとは ↩︎

Discussion

Gravatar は WordPress.com に統合されたサービスですね!
WordPress と Looker 以外でも他でちょいちょい使われていて、プロフィール画像アップロードの手間が要らなくなるので、微妙に重宝しています。

コメントありがとうございます!
なるほど、そうなんですね。使われているんですね^^

ログインするとコメントできます