JulyTechFestaで「セキュアなBigQueryの運用方法」を話してきた
7/18に開催されたJulyTechFesta2021で「セキュアなBigQueryの運用方法」というタイトルで登壇してきました。
JulyTechFestaでの登壇はJulyTechFesta2021 winterに続き2回めとなります。
前回の登壇ブログ
登壇資料
登壇動画
普段BigQuery周りの開発や、運用、セキュリティなどを担当しているので実際に運用してみて得た知識をベースに資料にしました。
BigQueryでは基本的にIDでのアクセス管理が基本となっていますが、IDでの管理のみとするには機密性(権限を与えるべき人にのみ権限が付与されている)の確保や、シークレットの管理など課題も多くあり、完璧にできている企業はなかなか無いと思います。
そこで、ネットワークでの制御も視野に入ってくるのですが、GCPでBigQueryなどVPC内に存在出来ないサービスをネットワーク制御するにはVpcServiceControlsが必要となってきます。
前回の登壇資料でVpcServiceControlsそのものの説明はいくらかしていたので、今回は今年4月にGAとなったingress/egress rulesについて触れてみました。
こちら今までは同一のvpc-scに入ってないプロジェクトとデータのやり取りする際は境界ブリッジを作成しなくてはいけなかったのですが、こちらのrulesを使用することで境界ブリッジの作成なくデータをvpc-scの外部とやり取りすることが出来るようになります。
許可設定の方法として、今まであるアカウントやIPからのアクセスを許可すると方向性関係なく疎通が出来てしまっていたのですが、APIを叩く方向を指定して許可できるようになり、またアクセス元をプロジェクト単位でも許可出来るようになりました。
注意が必要なのは、APIを叩く方向性は制御出来ますが、データの方向性の制御は出来ません。
公式DOCでも注意書きされています。
また、叩くAPIは細かく制御が可能で、メソッド単位やパーミッション単位で指定出来ます。
現在BigQueryはメソッド単位での指定は出来ず、パーミッション単位での指定のみ出来ます。(CLIでのみ設定可能)
設定例
また下記の図のように、BigQueryからの通信を許可する場合は、一方向の通信であっても双方向の許可設定がいる場合があります
これはGCSの存在するプロジェクトからBigQueryのデータがあるプロジェクトへ、内部的にAPIの呼び出しが発生しているため、双方向での許可が必要になります。
登壇時には話さなかったのですが、 testIamPermissionsはigressだけでも大丈夫です。どんなAPIが内部的に呼ばれているかは実際に設定してみたあとにログを追っていくしかありません。
また、内部的に呼び出されるAPIはいつ変わるかわからないので、vps-sc使う際にあまり細かい設定はいれないほうがいいかな?とも思っています。
ingress/egressの設定周りは調査したときにかなり苦労したので別途ブログでまとめられたらと思っています。
おわりに
今回も登壇の機会をあたえてくださった、JulyTechFestaの運営の方々ありがとうございました!
聞かせていただいた他の登壇もとても学びがおおく、個人的にはとても満足度の高いカンファレンスとなりました。
vpc-scやBQ周りの設計相談や構築相談も受けてますので、ちょっと相談したい〜という方は気軽にtwitterのDM等でお知らせください。