Looker StudioでCloud Storageの画像が表示されない時の対処法

記事タイトルとURLをコピーする

G-gen の藤岡です。Looker Studio で IMAGE 関数を利用して Cloud Storage 上の画像を表示させようとしたとき、画像が表示されない場合の原因と対処法を紹介します。

前提知識

Cloud Storage のアクセス制御

Cloud Storage のバケットには、インターネット上の任意の場所からアクセス可能な状態(パブリック公開)と、適切な権限を持つユーザーのみがアクセスできる状態(パブリック公開の禁止)のアクセス制御をかけられます。パブリック公開の禁止を設定すると、認証無しのアクセスは拒否されます。

Cloud Storage の基本については、以下の記事を参照してください。 blog.g-gen.co.jp

パブリック公開を禁止したバケットでは、オブジェクトごとに認証付き URL を発行できます。バケットに対して適切な読み取り権限を持った Google アカウントにログインした状態でこの URL にアクセスすると、オブジェクトをダウンロードすることができます。

IMAGE 関数

Looker Studio レポートでは IMAGE 関数を使うことで、表の中に画像を表示することができます。

IMAGE 関数による画像の表示

事象

Cloud Storage でパブリック公開の禁止を設定したバケットに置かれた画像ファイルを Looker Studio で IMAGE 関数を使って表示させようとしました。画像ファイルの認証付き URL を指定して IMAGE 関数を設定しましたが、何も表示されませんでした。

Looker Studio の計算フィールドとディメンションは以下のように設定しました。image_url 列にはオブジェクトの認証済み URL が格納されています。

計算フィールドの設定
ディメンションの設定

Looker Studio の認証情報には「オーナーの認証情報」を使っており、対象のユーザーには実行に必要な権限が付与されています。

認証情報の設定

原因

Cloud Storage の認証済み URL は、データアクセス監査ログが有効化されていると使用できないという制約があります。データアクセス監査ログは、Google Cloud リソースへの読み取り系 API のアクセスログを残す機能であり、デフォルトでは BigQuery を除いてオフになっています。環境によっては、監査目的で、このログを有効化している場合があります。

この制約については、公式ドキュメントの Cloud Storage での Cloud Audit Logs の制限事項およびトラブルシューティングのページに記載されています。

今回検証を行った環境では、Cloud Storage が所属するプロジェクトでデータアクセス監査ログが有効になっていたため、IMAGE 関数で適切な権限を持ったユーザーでも画像が表示されませんでした。

このプロジェクトでは、Looker Studio 経由だけでなく、認証付き URL に対してブラウザで直接アクセスしても、403: Forbidden としてアクセスが拒否されます。

対処法

概要

データアクセス監査ログを有効にしたプロジェクトに所属する Cloud Storage バケットに配置した画像に対して、認証付き URL を使ってアクセスするには、以下の2つの方法があります。

  • データアクセス監査ログの Cloud Storage で「データ読み取り」を無効にする
  • データアクセス監査ログの Cloud Storage で除外プリンシパルを追加し、そのプリンシパルに対して「データ読み取り」を無効にする

後者のほうが、影響範囲が限定的になります。ただし、この設定を行うと、Cloud Storage へのアクセス履歴が記録されなくなるため、設定する場合は自社(自組織)のセキュリティポリシーに従い、慎重に検討してください。

当記事では、後者の除外プリンシパルを追加する方法を紹介します。

監査ログに除外プリンシパル追加

当環境では、組織レベルでデータアクセス監査ログが有効になっています。

データアクセス監査ログの設定画面

除外プリンシパルに Looker Studio を閲覧するユーザーを設定します。

除外プリンシパルを設定

レポート確認

レポートに表示されていなかった画像が、表示されるようになりました。

今回の検証時は、除外プリンシパルを追加してからレポートに画像が表示されるようになるまで、数分かかりました。

レポート画面

注意点

サービスアカウント認証を使っていてもユーザーアカウントでアクセスする

Looker Studio レポートでは、データソースが BigQuery の場合に、サービスアカウント認証が利用できます。

今回、追加検証として以下のように BigQuery データソースをサービスアカウント認証に変更したうえで同サービスアカウントを除外プリンシパルとして設定しましたが、画像は表示されませんでした。

  • ドキュメントに従ってサービスカウント認証を設定
  • 除外プリンシパルにサービスアカウントを設定

一方で、レポートにアクセスするユーザーアカウントを除外プリンシパルに追加すると、画像が表示されました。

つまり、Cloud Storage の認証付き URL を使って Looker Studio レポート上で画像を表示させるには、レポートを表示するユーザー全員をデータアクセス監査ログの除外プリンシパルに追加する必要があります。

Looker Studio のサービスアカウント認証については以下の記事で紹介しているためご参照ください。

blog.g-gen.co.jp

藤岡 里美 (記事一覧)

クラウドソリューション部

数年前までチキン売ったりドレスショップで働いてました!2022年9月 G-gen にジョイン。ハイキューの映画を4回は見に行きたい。

Google Cloud All Certifications Engineer / Google Cloud Partner Top Engineer 2024