2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

snowflake terraform provider version 0.50 -> 0.90 に上げた話

Posted at

version up のきっかけ

  • terraform-provider-snowflakeのGRANTまわりが大幅に変わった。
    → 2024/06/26にこれまでのgrant関係のリソースが使えなくなるので、慌てる。

  • 今までもGRANT周りの動きは怪しかったので(権限ついたりつかなかったりが、ランダム?)、毎回terraformを実行後に、GRANT文のSQLを流していた。
  • v70台あたりの動きがわちゃわちゃしてたので静観してたら、いつのまにかv90に!

手順

いま管理しているもの

  • DATABASE
    • SCHEMA
    • TABLE
    • PROCEDURE
    • TASK
    • FILE FORMAT
    • STAGE
  • ROLE(※Roleは全面見直しだ。。)
  • USER
  • WAREHOUSE

バージョンアップ計画と、ついでに管理していきたいもの

  1. 現在の状態をcommit
  2. privillege関連の調査とコメントアウト(grantとRoleをいっかい外す)
  3. snowflake provider バージョンアップ
  4. Role追加する
  5. ついでに新規ユーザ追加/IP制限(※ここからついでに追加管理したいもの)
  6. カラムのマスキング追加

バージョンアップしたけど、エラーになった

  • 環境変数が変わっていたよ
v0.55
export SNOWFLAKE_USER="tf-snow"
export SNOWFLAKE_PRIVATE_KEY_PATH="~/.ssh/snowflake_tf_snow_key.p8"
export SNOWFLAKE_REGION="ap-northeast-1.aws"
export SNOWFLAKE_ACCOUNT=xx99999"
v0.90
export SNOWFLAKE_USER="tf-snow"
export SNOWFLAKE_PRIVATE_KEY=`cat ~/.ssh/snowflake_tf_snow_key.p8`
export SNOWFLAKE_AUTHENTICATOR=JWT
export SNOWFLAKE_ACCOUNT="xx99999.ap-northeast-1.aws"
  • いつのまにかJWT認証増えてた・・
  • SNOWFLAKE_PRIVATE_KEYはSNOWFLAKE_PRIVATE_KEY_PATHのままでもいけるよ、とアドバイスもらいましたが、試してないです。すいません。その節はありがとうございました。
  • SNOWFLAKE_ACCOUNTにSNOWFLAKE_REGIONが合体してた。

慎重に、Roleを作成するターン

モジュール化してないときのRoleの追加手順

  • モジュール化推奨らしいですが、弊社の他のterraform codeがモジュール化してないので、今回はモジュール化しません。なので、作成順は以下で行いました。
  • 各オブジェクトは既に存在しているものとします。
  1. 各ユーザごとの権限に対するFunctional Rolesの作成
  2. 各リソースに対するAccess Rolesの作成
  3. Functional RolesにAccess Rolesをgrant
    1. WAREHOUSE
    2. DATABASE
    3. SCHEMA
  • 法務ユーザは法務SchemaのSelect権限あるけど、経理ユーザは法務SchemaのSelect権限なし、というような状態にしたかったので、ひとつひとつマメに作成→Role切り替えて確認の繰り返し。

作業中の引っかかりポイント

  • terraform ユーザの Role

    • SYSADMINでエラーになるところだけSECURITYADMINで作業してたけど、"snowflake_network_policy_attachment"でSYSADMINとSECURITYADMINの両方を持つRoleが必要になったので、terraformユーザにRole追加してproviderにも追加。providerが3つになってしまったので、どこかのタイミングで1つにしたい。
  • snowflake_user.hogehoge_user.name がsensitive判定となってエラーになったので、nonsensitive(snowflake_user.hogehoge_user.name) としてエラー回避。

  • procedure

    • return_behaviorが非推奨に。
      (return_behavior = "VOLATILE" がエラーになった)

終わりに

  • 「SnowVillage Unconference #1 – 初心者大歓迎!聞き専/飛入登壇, ご自由なスタイルで! -」にて、作業途中段階で「困ってるよー!」と投げかけて話を聞いてもらいました。困ってる仲間からたくさんアドバイスをいただきました。その節は大変お世話になりました。ありがとうございました。おかげで「困ってるのは私だけじゃない。よかった。」と安心して作業を進めることができました。
  • 近いうちに第2回も開催されそうなので、その時はまたよろしくお願いします!

参考文献(いつもありがとうございます)

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?