背景
dbt を使う上で、
- source
- seed
- staging model
- snapshot
- ref
などの色んな用語が出てきますが、それぞれどういったときに使うべきなのか分からなかったので関係性を図でまとめてみました。
環境
- dbt v1.12
関係性
関係図
一般的な dbt project の依存関係例としては次のようになります。

dbt を使う上で、
などの色んな用語が出てきますが、それぞれどういったときに使うべきなのか分からなかったので関係性を図でまとめてみました。
一般的な dbt project の依存関係例としては次のようになります。

以前Goで機密情報の漏洩防止について触れました。
今回はPythonでどうするべきかについて説明します。
トークン等のシークレットが検証エラー・ログ・repr 経由で漏れないための対策を一覧化します。
| 漏洩経路 | SecretStr(型) |
hide_input_in_errors(ConfigDict) |
Field(repr=False) |
Field(exclude=True) |
|---|---|---|---|---|
A. print(settings)/f"{settings}"(モデルを文字列化) |
✅ ********** |
❌ | ✅ 項目ごと非表示 | ❌ raw 出る |
B. settings.token を直接ログ/f-string |
✅ 要get_secret_value() |
❌ | ❌ raw | ❌ raw |
| C. 第三者lib/例外がモデルをrepr (traceback locals等) |
✅ | ❌ | ✅ | ❌ |
D. model_dump()/model_dump_json() をログ |
✅ json→********** |
❌ | ❌ raw | ✅ 出力から除外 |
E. 検証エラーの input_value(モデルレベルは生 dict) |
❌ raw漏れ | ✅ | ❌ | ❌ |
依存しているライブラリに次のようなコードがありました。
※簡単のためシンプルにしています
on: pull_request_target jobs: coverage: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} - run: npm ci && npm run test:coverage - uses: actions/github-script@v7 with: script: | await github.rest.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number, body: 'Coverage report generated' });
一見テストを実行してテストカバレッジをPRにコメントしているだけのCIですが、セキュリティ的には大きな問題があります。
大きく2つの問題点があります。
pull_request_targetを使っているのにPR元のコードを参照しているpermissionsで権限を制限していないこれらの詳細について、pull_request, pull_request_target の使い分けを踏まえながら説明していきます。
前回の
をチームのモノリポに導入する際にハマったことをまとめていきます。
この記事は
人向けです。
モノリポでは1つのリポジトリで全てのサービス・コンポーネントを管理するため次のメリットがあります。
一方で次のような問題が生まれます。
それらを自動的に解決できるツールとして、Google自身がモノリポでのリリースに利用しているRelease PleaseというGitHub Actionsがあります。
今回はこちらの導入方法を紹介します。
次のような挙動になります。
conventional commitに従う歴史的経緯もあり、GitHubでは様々な種類のトークンがあります。
それぞれの特徴、使い分けが分かりにくかったので、フローチャートでまとめました。
ユースケースに応じたフローチャートはこちらです。
続きを読む以前Google Cloud サービスアカウントのimpersonationを使った Workload Identity Federation の例を紹介しました。
ただ最近は従来のWIFから、Direct Workload Identity Federationと呼ばれるサービスアカウントを挟まず直接KSAをプリンシパルにすることができる方法が推奨され始めたので、今回はそちらで実現できるようにします。
前回と同じ図です。図を見て分かるように、SnowflakeのWIFはKubernetesからのOIDCにも対応しています。
