
OpenTacoのGitHub CODEOWNERS統合でTerraform適用の承認制御を実現する
「本番環境のTerraform適用は特定ユーザーの承認を経たうえで実行したい」ケースがあると思います。
OpenTacoのGitHub CODEOWNERS統合を利用することでこれを実現できます。
CODEOWNERSの詳細は以下をご確認ください。
以下を参考に試してみました。
ディレクトリ構成
以下のディレクトリ構成のリポジトリで設定しました。
├── .github
│ └── digger_workflow.yml
├── digger.yml
├── prod
│ └── main.tf
└── README.md
CODEOWNERSファイルを追加する
prod @hoge-user
ブランチ保護設定の追加
GitHubリポジトリ -> Settings -> Rules -> <Rule>名 -> Branch Rules -> Require a pull request before mergingにチェックを入れます。
以下を設定します。
Required approvals: 1Require review from Code Owners: チェック

動作確認
動作確認のために、PRを作成しました。
通常通り、PR作成時点でPlanが実行されました。

レビュー担当者のApprove前にTerraformを適用する場合: digger apply失敗
Approve前にdigger applyを実行してみます。
適用条件(今回はレビュー担当者によるレビュー)を満たしていない旨のエラーがでて、digger applyが失敗しました。

レビュー担当者のApprove後にTerraformを適用する場合: digger apply成功
レビュー担当者がApproveを行いました。
その後digger applyを実行してみます。
今回は適用条件を満たしているため、digger applyが成功しました

CODEOWNERSで指定していないユーザーでApproveしてTerraform適用する場合: digger apply失敗
CODEOWNERSで指定していないユーザーでApproveして、digger applyを試してみました。
Approve 1以上の条件は満たしていますが、CODEOWNERSからのApproveではないためdigger applyに失敗します。

おわりに
OpenTacoのGitHub CODEOWNERS統合を利用することで、Terraform適用の承認制御を簡単に実現できました。
特定ユーザーの承認を必須化することで、本番環境への変更適用をより安全に実行できるようになります。
ブランチ保護設定と組み合わせることで、セキュリティと責任分離の両方を効
率的に強化できます。
他の承認制御機能として、digger.yamlで設定できるApply Requirementsという機能もあります。
apply_requirementsフィールドにapprovedを設定することで1つ以上のApproveがないとApplyできないように制御できます。
こちらはプロジェクトレベルで設定可能です。詳細は以下をご確認ください。







