BigQuery Advent Calendar 2020 12/23の記事です。
BigQueryのデータには一般公開されているデータが多くあります。
同じように自分で持つデータを一般公開したい場合もBigQueryでは簡単に出来ます.
データを一般公開する方法
やり方はいたって簡単で、datasetに対し下記のいずれかのユーザの閲覧権限をつければよいだけです
- allUsers
- allAuthenticatedUsers
allAuthenticatedUsersとは、組織の認証を受けたユーザと勘違いしがちですが以下のユーザとなっております
allAuthenticatedUsers は、すべてのサービス アカウント、および Google アカウントで認証されたユーザー全員を表す特殊な識別子です。この ID には、個人用 Gmail アカウントなど、Google Workspace または Cloud Identity のドメインに接続していないアカウントも含まれます。認証されていないユーザー(匿名の訪問者など)は含まれません。
つまり、google認証通っているすべてのアカウントがallAuthenticatedUsersの対象となります。
一般公開の注意点
一般公開した場合は、監査ログからアクセス元のIDやIPは取れない仕様となっています。
公開設定しているデータセットの確認方法
意図した公開設定なら良いのですが、意図してないデータセットを公開してしまっている場合もあるかもしれません。
その際の確認方法としていくつかあるので紹介します。
組織単位での確認方法
-
Security Command Centerを使った確認方法
SecurityCommandCenter(以下SCC)ではBQの公開設定の検知が出来ます
SCCを使ってる人はまずはダッシュボードから確認するのがよいと思います -
Cloud Asset Inventoryを使った確認方法
CLIで確認したい場合はCloud Asset Inventoryのsearch-all-iam-policies使って確認が出来ます
サンプルコマンドはこちらです
gcloud asset search-all-iam-policies --scope organizations/ORGANIZATION_NUMBER --query "policy:(allAuthenticatedUsers OR allUsers)"
プロジェクト単位での確認方法
組織単位での確認権限が無いが自分のプロジェクトは確認しておきたいという場合もあるかと思います。
-
Cloud Asset Inventoryを使った確認方法
検索の範囲をプロジェクトに絞ることで組織権限がなくても確認することが出来ます
gcloud asset search-all-iam-policies --scope projects/PROJECT_ID --query "policy:(allAuthenticatedUsers OR allUsers)"
まとめ
BigQueryの公開設定方法と、公開設定の確認方法を共有させていただきました。
公開設定がされたかの検知をしたい場合はSCCでもCloudAssetInventoryでも検知結果をリアルタイムにpub/subに飛ばすことが出来るので、pub/subからslackなどに通知するシステムを作るのがいいのではないかと思います。