LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

Facebook X Instagram
サービス・製品 | 

Google CloudのBig Queryへのアクセス制御 - Prisma® Cloudから考えるセキュリティ(4)

クラウドサービス部の石井です。

ラックでは、Prisma® Cloud(プリズマクラウド)を用いたクラウドセキュリティ統制支援サービスを提供しています。Prisma® Cloudは、パロアルトネットワークス社が展開する、マルチクラウドやハイブリッドクラウド環境におけるクラウドリソースの設定上の脆弱性や不審な挙動を、業界標準の各種コンプライアンス基準や独自の基準に従い、継続的に監視・可視化するSaaS型のサービスです。

機能の1つとして、Prisma® Cloud側で事前定義されたアラートポリシーに基づいて、不適切な設定や不審な挙動を検知・アラートします。非常に多くのアラートポリシーが定義されているので、そのなかでも特に注意したいものを連載でお届けしていきます。

連載4回目となる本記事では、「GCP BigQuery dataset is publicly accessible」というアラートポリシーを題材に、Google CloudのBigQueryへのアクセス制御について紹介します。

アラートの内容

このアラートは、パブリックにアクセス可能な状態にあるBigQueryデータセットを検知します。これは、データセット名とテーブル名を知るあらゆるユーザーから、BigQueryに保管されたデータにアクセスされ、情報が流出・改ざんされるリスクがあることを意味します。詳細なアラートの条件は、以下のいずれかを満たしたBigQueryデータセットを検知します。

個々のBigQueryデータセットに対するアクセス許可に「allAuthenticatedUsers」が使用されている

BigQueryデータセットは、テーブルを整理し、管理するためのコンテナのようなものです。データの実体となるテーブルやビューは、このデータセット配下に作成します。

BigQueryではデータセットやテーブルといったリソースごとにアクセス許可を設定できます。IAMではBigQueryのリソース全体に対してのアクセス許可しか定義できず、個々のリソース単位でのアクセス許可は設定できません。そのため、個別のデータセットやテーブルごとにアクセスできるユーザーを設定したい場合は、リソースごとのアクセス許可を利用することになります。

IAMによるアクセス許可の例
IAMによるアクセス許可の例
リソースごとのアクセス許可の例
リソースごとのアクセス許可の例

リソースごとのアクセス許可においては、「allAuthenticatedUsers」を指定できます。「allAuthenticatedUsers」を指定した場合、Googleを経由して作成されたプリンシパル(Googleアカウントやサービスアカウントなど)の全てを対象としたアクセス許可を設定できます。Googleを経由して作成されたプリンシパルであれば、第三者が作成したものでもアクセスが許可されるので、「allAuthenticatedUsers」の利用には注意が必要です。

個々のBigQueryデータセットに対するアクセス許可に「allUsers」が使用されている

リソースごとのアクセス許可においては、「allUsers」も指定できます。「allUsers」を指定した場合、全てのユーザーにアクセス許可を設定することになります。前述したallAuthenticatedUsersよりも、さらに広くアクセスが許可されるため、「allUsers」についても注意して使用する必要があります。

allUsersとallAuthenticatedUsersでアクセス許可されるユーザーのイメージ
allUsersとallAuthenticatedUsersでアクセス許可されるユーザーのイメージ

対処方法

ここからは、データセットに対してallAuthenticatedUsersやallUsersへのアクセス許可が設定されているケースを想定し、修正方法を紹介します。

アクセス許可の状況確認

①Google CloudコンソールからBigQueryを開き、対象のデータセットの「権限の管理」を開きます。

BigQueryを開き、対象のデータセットの「権限の管理」を開く

②「継承されたロールをテーブルに表示」のチェックをOFFにして、リソースに対して個別で設定されたアクセス許可のみを表示します。

※ チェックをONにすると、IAMにて定義したアクセス許可を含む、そのリソースにアクセスできる全てのプリンシパルが表示されます。

「継承されたロールをテーブルに表示」のチェックを外し、リソースに対して個別で設定されたアクセス許可のみを表示

アクセス許可の削除

前述したアクセス許可の状況確認>②の画面から、削除したいプリンシパルのゴミ箱アイコンをクリックします。

削除したいプリンシパルのゴミ箱アイコンをクリック

表示されたダイアログの「削除」をクリックします。

「プリンシパルからロールを削除しますか?」ダイアログの「削除」をクリック

対象のアクセス許可が削除されたことを確認します。

アクセス許可が削除された画面

上記手順を実施し、allAuthenticatedUsersやallUsersを削除することで、それ以外のアクセス許可されたユーザー・グループのみが、データセットにアクセスできるようになります。

対応実施後のアクセス許可のイメージ
対応実施後のアクセス許可のイメージ

BigQueryアクセス制御の具体例

BigQueryのアクセス制御は、以下2つから設定できます。

  • IAMによる、プロジェクト内のBigQuery全体へのアクセス制御
  • リソース(テーブルやデータセット)単位のアクセス制御

上記のいずれかでアクセスが許可されていれば、許可されたユーザーは定義された権限の範囲内で、対象のBigQueryに対する操作を行えるようになります。許可のみであればシンプルな設定ですが、一部の操作や一部のリソースへの操作を制限したい場合は工夫が必要になるため、いくつかのケースにおいての対応案の一例を紹介します。

プロジェクト全体でテーブル削除を禁止したいケース

2023年のリリースにて、IAM側では一部の操作に対して拒否ポリシーを定義できるようになりました。これを利用することで、特定のユーザーやグループなどに対する、特定操作の拒否が設定できます。

例えば、public:allに対して、bigquery.googleapis.com/tables.deleteを拒否するポリシーを設定すれば、IAMやリソース単位のアクセス制御でテーブル削除を許可する設定が存在しても、全てのユーザーがプロジェクト上に存在するBigQueryテーブルの削除が行えなくなります。削除を含むBigQueryテーブルの操作が許可された状態から、プロジェクト上のテーブル削除を設定するためには、以下の手順を実施します。

①拒否ポリシーを設定したいプロジェクトのIAM>許可しないを開き、「拒否ポリシーの作成」をクリックします。

「IAM」の「許可しない」を開いた画面で「拒否ポリシーの作成」をクリック

②対象のプリンシパルと、拒否する権限(操作内容)を設定し、作成をクリックします。

※ 画像では全ユーザーのBigQueryテーブル削除を禁止するよう、パラメータを指定しています。

※ 「例外のプリンシパル」を使用すれば、管理者は削除可能にすることもできます。

対象のプリンシパルと、拒否する権限(操作内容)を設定し、作成をクリック

③全ユーザーがBigQueryテーブルを削除できない拒否ポリシーが適用され、テーブルの削除ボタンがクリックできない状態になります。

拒否ポリシーが適用され、「この操作には権限が必要です」と表示される

特定テーブルを参照できるユーザーを制限したいケース

IAM側でBigQueryテーブルへの参照権限を付与すると、プロジェクト上の全BigQueryテーブルに対してアクセス許可が付与されます。特定テーブルについて参照できるユーザーを制限したい場合、テーブル個別のアクセス制御では拒否ルールを設定する機能は実装されていません。

手段の1つとして、IAM側ではBigQueryの参照許可を設定せず、テーブル個別のアクセス制御にて特定ユーザーの閲覧権限を付与することで、ケースに対応できます。IAM側で全てのBigQueryテーブルの閲覧が許可された状態から、テーブルごとに閲覧許可を付与するためには、以下の手順を実施します。

①IAMから、BigQueryテーブルの閲覧許可を含むロールを持つプリンシパルの編集ボタンをクリックします。

IAMの画面でBigQueryテーブルの閲覧許可を含むロールを持つプリンシパルの編集ボタンをクリック

②権限の編集画面にて、対象のロールを削除し、変更内容を保存します。

権限の編集画面で、対象のロールを削除し、保存をクリック

③BigQuery>共有を開き、「プリンシパルの追加」をクリックします。

「BigQuery」の「共有」を開き、「プリンシパルの追加」をクリック

④プリンシパルとロールを指定し、保存します。

プリンシパルとロールを指定して、保存をクリック

おわりに

今回紹介したアラート以外にも、Prisma®‌ Cloudは多様なセキュリティリスクを検知します。そして、ラックの豊富なシステム開発とセキュリティのノウハウを結集した「クラウドセキュリティ統制支援サービス」では、検知したアラートへの対応サポートを提供しています。

ラックならではの知見を活かし、セキュリティトレンドやメーカーの対応状況を踏まえたラック独自のポリシーを提供することで、継続的に最新のセキュリティ対策を行えます。Google Cloud含め、パブリッククラウドのセキュリティに不安がありましたら、ぜひラックにご相談ください。

プロフィール

石井 友也

石井 友也
Google Cloudを中心としたクラウド基盤の保守・運用・改善に従事しています。AWSやAzureなどを含めたクラウドサービス全般に興味があり、資格試験を通して学習しています。これまでに20以上の資格試験に合格しています。クラウドサービスや資格取得をテーマとした情報発信を行っていきます。

「Prisma®‌ Cloud」に関するお問い合わせ

この記事は役に立ちましたか?

はい いいえ

関連記事

LAC WATCH

関連記事をご紹介します

  • Amazon EC2 IMDSv1に起因した情報流出を防ぐ - Prisma® Cloudから考えるセキュリティ(1)

  • 第三者によるAWS Lambda関数URLの不正実行を防ぐ - Prisma® Cloudから考えるセキュリティ(2)

  • AWS シャドウリソース攻撃から情報を守る - Prisma® Cloudから考えるセキュリティ(3)

page top