イクジニアブログ

育児 + エンジニア = イクジニア

JulyTechFestaで「セキュアなBigQueryの運用方法」を話してきた

7/18に開催されたJulyTechFesta2021で「セキュアなBigQueryの運用方法」というタイトルで登壇してきました。

JulyTechFestaでの登壇はJulyTechFesta2021 winterに続き2回めとなります。

前回の登壇ブログ

nii-yan.hatenablog.com

登壇資料

speakerdeck.com

登壇動画

www.youtube.com

普段BigQuery周りの開発や、運用、セキュリティなどを担当しているので実際に運用してみて得た知識をベースに資料にしました。

BigQueryでは基本的にIDでのアクセス管理が基本となっていますが、IDでの管理のみとするには機密性(権限を与えるべき人にのみ権限が付与されている)の確保や、シークレットの管理など課題も多くあり、完璧にできている企業はなかなか無いと思います。

そこで、ネットワークでの制御も視野に入ってくるのですが、GCPでBigQueryなどVPC内に存在出来ないサービスをネットワーク制御するにはVpcServiceControlsが必要となってきます。

前回の登壇資料でVpcServiceControlsそのものの説明はいくらかしていたので、今回は今年4月にGAとなったingress/egress rulesについて触れてみました。

f:id:nii_yan:20210719201949p:plain こちら今までは同一のvpc-scに入ってないプロジェクトとデータのやり取りする際は境界ブリッジを作成しなくてはいけなかったのですが、こちらのrulesを使用することで境界ブリッジの作成なくデータをvpc-scの外部とやり取りすることが出来るようになります。

許可設定の方法として、今まであるアカウントやIPからのアクセスを許可すると方向性関係なく疎通が出来てしまっていたのですが、APIを叩く方向を指定して許可できるようになり、またアクセス元をプロジェクト単位でも許可出来るようになりました。
注意が必要なのは、APIを叩く方向性は制御出来ますが、データの方向性の制御は出来ません。
公式DOCでも注意書きされています。

また、叩くAPIは細かく制御が可能で、メソッド単位やパーミッション単位で指定出来ます。
現在BigQueryはメソッド単位での指定は出来ず、パーミッション単位での指定のみ出来ます。(CLIでのみ設定可能)

設定例 f:id:nii_yan:20210719202752p:plain

また下記の図のように、BigQueryからの通信を許可する場合は、一方向の通信であっても双方向の許可設定がいる場合があります

f:id:nii_yan:20210719203333p:plain

これはGCSの存在するプロジェクトからBigQueryのデータがあるプロジェクトへ、内部的にAPIの呼び出しが発生しているため、双方向での許可が必要になります。

登壇時には話さなかったのですが、 testIamPermissionsはigressだけでも大丈夫です。どんなAPIが内部的に呼ばれているかは実際に設定してみたあとにログを追っていくしかありません。

また、内部的に呼び出されるAPIはいつ変わるかわからないので、vps-sc使う際にあまり細かい設定はいれないほうがいいかな?とも思っています。

ingress/egressの設定周りは調査したときにかなり苦労したので別途ブログでまとめられたらと思っています。

おわりに

今回も登壇の機会をあたえてくださった、JulyTechFestaの運営の方々ありがとうございました!
聞かせていただいた他の登壇もとても学びがおおく、個人的にはとても満足度の高いカンファレンスとなりました。

vpc-scやBQ周りの設計相談や構築相談も受けてますので、ちょっと相談したい〜という方は気軽にtwitterのDM等でお知らせください。

BigQuery 2021/6月のupdate情報まとめ

BigQueryでは6月に多くのアップデートが発表されました
BigQueryリリースノート

以下の資料にまとめてみたのでそれぞれの機能を見ていきたいと思います

docs.google.com

パラメータ化されたデータ型

f:id:nii_yan:20210706203156p:plain

BQでは変数を宣言出来るのですが、宣言した変数にパラメータを指定可能となりました。
宣言した変数はscriptまたは列にて使用することが出来ます。
また、違う型の値を入れようとした場合はエラーとなります。

行レベルでの権限制御

f:id:nii_yan:20210706140813p:plain f:id:nii_yan:20210706141122p:plain テーブルレベル、カラムレベルに続き行レベルでの権限制御が可能になりました。
権限の設定はSQLからのみ行なえます。

これにより1つのテーブルでも人によって見え方が違うので、US担当の人はUSのデータのみ見せるといった使い方が可能になりました。
行レベル制御が入っているテーブルについてはスキャン量もユーザが見えるだけ(テーブル全体ではない)になるようです。

スナップショットテーブル

f:id:nii_yan:20210706141254p:plain f:id:nii_yan:20210706141316p:plain もともとBigQueryでは7日間はテーブルデータが自動で保存されていましたが、それ以上の日付も手動で保存することが出来るようになりました。
別テーブルを作って保存も今まで出来たのですが、スナップショットテーブルとして保存した場合はストレージ費用が元テーブルとの差分のみになります。

GoogleトレンドのデータをBQからクエリ可能に

f:id:nii_yan:20210706142059p:plain f:id:nii_yan:20210706142114p:plain f:id:nii_yan:20210706142157p:plain Googleトレンドのデータがpublicデータとして公開されました。(現在はUSのみ)
社内のデータと紐付けてマーケティングなどに活用が出来るかなと思います。

トレンドになっているテーマ、地域、スコア、ランクなどのデータが入っています。

Table関数

f:id:nii_yan:20210706142551p:plain f:id:nii_yan:20210706142607p:plain tableが戻り値として返る関数を作れるようになりました。
viewと似ていますが、引数をつけられるのが特徴です。where句に毎回生年月日を指定したいなどの場合に使えます。

ALTER COLUMN SET OPTIONS

f:id:nii_yan:20210706142858p:plain 今までは、GUIAPIでしか書けなかった列の説明(description)をSQLで追加出来るようになりました。

PARSE NUMERIC / PARSE BIGNUMERIC

f:id:nii_yan:20210706145352p:plain CASTとは違い数字の前や後ろにスペースや改行が入ってる文字列もNUMERICに変換してくれます。(CASTだとエラーになる)

CASTした際にFORMT指定可能に

f:id:nii_yan:20210706145543p:plain 以前からも一部は出来た気がするので、previewがGAになったよ。だとは思うのですが、
文字列から様々な型へのCAST
様々な型から文字列へのCAST
の際にFORMAT指定が出来るようになりました

INT64の別名

f:id:nii_yan:20210706145846p:plain こちらもINTEGERなど元々あったので、エイリアスが増えたのかpreviewがGAになったのかだと思うのですが、INT/SMALLINT/INTEGER/BIGINT/TINYINT/BYTEINTはすべてINT64として扱われるようになりました。

ST_GEOGFROM関数

f:id:nii_yan:20210706150046p:plain 地理データの型に変換する関数がリリースされました。

SQLで権限制御が出来るように

f:id:nii_yan:20210706150147p:plain

DCL(GRANT/REVOKE)がサポートされ。SQLでの権限制御が出来るようになりました。

INFORMATION_SCHEMAから権限情報の取得が可能に

f:id:nii_yan:20210706150402p:plain INFORMATION_SCHEMAにOBJECT_PRIVILEGESが加わり、権限情報が取得出来るようになりました。

トランザクションサポート

f:id:nii_yan:20210706150532p:plain トランザクションがサポートされました!!!ただ、GUIからSQL実行する場合など、1回の実行毎にセッションが切れてしまうので、現在はscript用となっています。
MySQLの用に間にDDL挟むと暗黙的commit走るのかな?と思ったのですが、そもそもエラーになりました!

以上で、6月のBQ updateは終わりです。 7月のリリースも多かったらまた来月もやりたいと思います。

参考にさせていただいたサイト

bqfun.jp

GCP 組織間(org間)でのProjectの移動方法

GCPでは組織間で既存のprojectを移動させる機能があります (2021/05/10現在 プレビュー)

cloud.google.com

例えば会社の統合や分社化などで、組織(org)を統合しなくてはいけない、または組織を分けなくてはいけないときにこちらの機能を使えば1からプロジェクト作成をやりなおすのではなく、リソースなどはそのままに紐付いている組織だけを変更することが出来ます。

移動した際はリソース(GCEやネットワーク設定など)はそのまま残っていますが、例えば組織ポリシーで継承されているIAMなどは移行されないので注意してください。

移動準備

移動をするにあたって、移動元組織と移動先組織でそれぞれ組織ポリシーの変更が必要になります。
また組織ポリシーの変更にあたっては、組織ポリシー管理者などの権限が必要となります

https://cloud.google.com/resource-manager/docs/project-migration#import_export_folders

移動元

プロジェクトの移動はデフォルトの組織ポリシーで禁止されています
ですので、まずは組織ポリシーで移動許可をしなくてはいけません

こちらはホワイトリストで移動出来る組織の指定を行います

参考コマンド

gcloud beta resource-manager org-policies /
   allow constraints/resourcemanager.allowedExportDestinations /
   --organization 移動元組織ID under:organizations/移動先組織ID
移動先

移動先でもどの組織からの受け入れが出来るかホワイトリストで許可をしないといけません

参考コマンド

gcloud beta resource-manager org-policies /
   allow constraints/resourcemanager.allowedImportSources /
   --organization 移動先組織ID under:organizations/移動元組織ID

移動

移動準備が出来ましたらあとは実際に移動コマンドを打てば完成です コマンド実行のために必要な権限はこちらを参考にしてください

https://cloud.google.com/resource-manager/docs/project-migration#assign_permissions

権限がついたら以下のコマンドをたたけば組織間でのプロジェクト移動の完成です

gcloud beta projects move 移動するプロジェクトID /
    --organization 移動先組織ID

以上で組織間のプロジェクト移動が出来ました!!

GCP Professional Cloud Architectの最速合格方法

受験動機

2019/4に資格を取ったのですが、2年で期限が切れるため再認定で受けました
再認定の場合、期限が切れるまえに試験を受けると$100の割引を受けることが出来ました

試験概要

公式ページ

勉強方法

今回は再認定ということもあり、あまり勉強に時間をかけたくなかったのでUdemyのコースを購入し
こちらについている問題集だけで試験に合格出来るか挑戦してみました

購入したコースはこちら
Ultimate Google Cloud Certifications: All in one Bundle (4)

定価は¥12,000と高いですがセールで¥1,500になるときがあるのでセールの時に買いました

また、試験直前には公式の模擬問題をときました

試験結果

Udemyのコースで出て来た範囲の問題がほとんどで、合格することが出来ました
問題集ベースで勉強したので、実質の勉強時間は8hほどになるかと思います。

所感

今回購入したUdemyのコースは神がかっていたと思います。
また、このコースはProfessional Cloud Architect以外にも以下の資格にも対応しているので買っておいて損はないと思います

  • Associate Cloud Engineer
  • Professional Cloud Developer
  • Professional Cloud Data Engineer(今後対応予定)
  • Professional DevOps Engineer(今後対応予定)

まったく0からの知識でUdemyの問題集だけで合格はさすがに難しいと思いますが、

  • 再認定
  • 普段GCPを使っている
  • GCE,GAE,Dataflow,CloudSQL,BQと言われてどんなサービスかぱっと答えられる

のどれかに当てはまる方でしたら問題集のわからないところを補足して勉強する程度で受かるのでは?と思います

また、GCP全体的な知識をつけたい場合でしたら、Professional Cloud Architectに特化した本などは今のところ無いようなので、以下の書籍がおすすめです(Kindle Unlimitedで無料で読めます)

AWS 認定セキュリティ専門知識(SCS-C01)に合格しました

受験動機

現在、クラウドのセキュリティ周りを中心に担当していることからせっかくなら資格を取ろうと思い受験をし、結果 2021/2に無事に合格することが出来ました

f:id:nii_yan:20210226140353p:plain

試験概要

制限時間:170分

分野 試験における比重
インシデント対応 12%
ログ収集と監視 20%
インフラストラクチャのセキュリティ 26%
IDとアクセスの管理 20%
データ保護 22%

勉強方法

セキュリティ試験用の対策本が出ているので一通り読破 (重要な事はほぼ、この本に載っています!)

サンプル問題を解いてみる

わからなかったところを、中心に対策本をもう一度読破(2回目)
自分はKMSの理解が難しく、KMSはかなり読み込みました

擬試験を受験 (この時点で60%の正解率)
(AWSの試験を受けるのが初めてだったので、今回模擬試験を受けたのですがスコアがわかるのみで正解はわからない&有料なので受けなくて良い気がします)

わからなかったところを、中心に対策本をもう一度読破(3回目)

試験対策用のコース、Exam Readiness シリーズのセキュリティのコース(日本語字幕版)を受講(無料)
試験対策本で載ってない部分も多少あるのと、確認試験も無料で受けられます(この時点で65%の正解率)

わからなかったところを、中心に対策本をもう一度読破(4回目)

試験対策のExam Readiness が無料で受けられるのが知ったのが受験前夜で慌てて受けましたが、こちらをやって本当によかったです。(受験前夜なのに、正解率が65%でめちゃめちゃ焦りました・・・)
勉強した期間は全部で2週間ほどでした

受験所感

今はオンラインでも受けられるのですが、私は家に子供がいたりなどの都合上オンサイトで受けました。 結果とても集中出来てよかったと思ってます。

試験時間は170分と長いので、全然余るだろうな〜と思っていましたが、問題をよく理解し考えて解くということを繰り返した結果 120分で一通り問題を解き、残りの50分で見直しというギリギリの時間でした。

また、試験終わった後のアンケートも含めて170分なので少し余裕を持って終わらせることをお勧めします。 (最後、めっちゃ急いでアンケート答えました)

また、試験を日本語で受験しても、英語で原文を見ることが出来ます。 なんかこの試験問題おかしくない?って思ったら英語でも見てみることをお勧めします!!! 自分が受けた時は英語から日本語に訳すところでサービス名が変わってしまっているものがありました・・・

受験後書

こちらの認定試験は受験料が$300と高額なので、落ちたらこの金額が無駄になってしまう〜〜〜!!と思っていたのですが、なんとか1回で合格出来てよかったです。

次回の受験半額券をもらえたので、次はdevopsあたりを受けてみようかな?と思っています。

July Tech Festa 2021 winterでGCPのセキュリティ周りについて登壇してきた

実に4年ぶりのブログになります。最近qiitaぐらいしか書いてなかったので、今年からブログを復活させようかなぁと思っております

1/24 に開催された July Tech Festa 2021 winterGCPのセキュリティ周りについて登壇して来ました。

今まではメインの業務はデータ基盤周り中心だったのですが、ここ1年ほどセキュリティをメインに見るようになってきていましてちょうど組織のGCPセキュリティを見直していたので、ここで得られた知見の備忘も合わせて資料を作らせてもらいました。

登壇資料「GCPでセキュリティガードレールを作るための方法と推しテク」

資料補足

f:id:nii_yan:20210129201228p:plain セキュリティ基盤を作るのにはお金かかるけど、特に売上を上げるというわけではないので予算が降りにくい会社もあるかと思います。
なので、守るだけではなくガードレールを作ってあげることでクラウドを使うユーザは事業に集中が出来、結果売上があがるという説明までつけることが大事だと思っているのであえて事業をドライブさせるといれてます

f:id:nii_yan:20210129201534p:plain サブネットを作った際にはセキュリティ観点からフローログのonを推奨します
SecurityCommandCenterで外部からの侵入検知機能などありますが、こちらはフローログをデータソースにするのでフローログがないと検知が出来ません ただ、フローログはonにするとログ量が増えてインフラ料金の増加につながるので、設定を見直しログ量を少なくセキュリティレベルは上げる設定に変えるのがおすすめです

  • 集約の間隔
    デフォルトだと5秒なのですが、これだとログ量が多くなってしまいます 5秒毎の通信量など細かい値を取る必要がない場合は15分の設定にするのが良いかと思います 15分の間にあった通信がサマられるだけでデータが欠損することはありません

  • その他のフィールド
    デフォルトではメタデータを含めるになってます メタデータとは通信の相手がGCPだった場合にGCEやVPCの名前などが取れます ただ、メタデータを含めなくても重要なIPや通信量は取れるので必要ない場合は取らないで良いと思います

  • サンプルレート
    デフォルトでは50%です 50%ではデータ欠損するので100%がおすすめです

f:id:nii_yan:20210129204319p:plain VpcServiceControlsはセキュリティを高める上では良いソリューションですが、利便性が確実に下がります
最近対応サービスも増えて来ていますが資料に載せた情報以外にも例えばCloudAssetInventoryで設定情報取る時に、VpcServiceControlsによって取れなかったり、組織のログをすべてsinkで集約しようとしたときにVpcServiceControlsによって取れなかったりと組織に1つでもVpcServiceControlsを使っているプロジェクトがあるとセキュリティの全体設計が変わってきます

f:id:nii_yan:20210129204603p:plain SecurityCommandCenterは組織を作るとすぐに使えます、プレミアムプランにしないかぎりは無料で使えるので見たことないひとはとりあえずどんな警告が出ているか見てみましょう
ただ、SecurityCommandCenterですべての検知をしようとすると毎日ダッシュボードを見るか、検知通知機能を独自に実装する必要があります

f:id:nii_yan:20210129204906p:plain このような基盤を一緒に作りたい!というエンジニアを募集してますので、気になるから話しを聞いてみたいというかたは是非ともtwitterからDMお願いします

登壇動画


B2:GCPでセキュリティガードレールを作るための方法と推しテク

今回JulyTechFestaに登壇することで、資料もまとめられ基盤を見直すよい機会になりました。 運営の皆様ありがとうございました。

今年は登壇を多くしていこうと思ってますので、登壇や記事に執筆依頼などございましたらDMで連絡を頂きたいと思います

Hadoop / Spark Conference Japan 2016でLTしてきた

バルミューダのトースターにはまっているにいやんです。こんばんわ。

いいですね。バルミューダ。これでパン焼くとカリフワの美味しいパンが焼けます!! ちょっとトースターとしてはお高いですが、かなりお勧め。 パンの種類によって、焼き加減調整できるのも良いですよね。

さて、先日開催された、Hadoop / Spark Conference Japan 2016でLTしてきました。

一番メインの会場で、人もまあまあ入ってる中。ランチ中でのLTでした。

会社の面談受けた時に

「開発したいですか?運用したいですか?」

みたいなこと聞かれたことあって、どっちもしたいわ!!って思ったんですね。 今までもそうしてきたし。

でも、そうでもない現場が結構あるんだなーって思って以下のような発表になりましたw

www.slideshare.net

最強のビックデータエンジニア目指したいですね!!

自分の場合はずっとオンプレの運用やってきたので、まずはAWSなどのクラウドを学んでいこうと思います!