Terraform policy for さくらのクラウドで始めるPaCによるセキュリティとガバナンス管理
はじめに
さくらインターネット SRE室の伊東です。当社では以前よりTerraformからさくらのクラウドを操作するためのプラグインである、Terraform for さくらのクラウドを提供しています。そしてこのたび、新しくTerraform policy for さくらのクラウドをリリースしました。これはTerraform for さくらのクラウドを利用して実装されたコードを静的解析し、セキュリティやガバナンスの観点でチェックを行うものです。本記事ではTerraform policy for さくらのクラウドの概要、そしてユーザーの皆様のどのような課題を解決し、どのような価値を提供するのかをご紹介します。
Policy as Codeとは
アプリケーションやインフラストラクチャを構築する際、セキュリティ、ガバナンス、コンプライアンスなど様々なリスクを最小限にするために、組織が定めた運用ポリシーやベストプラクティスに準拠する必要があります。一方で、これらのポリシーに準拠しているかどうかを手動で確認するには非常に労力がかかり、抜け漏れが発生するリスクもあります。
PaC(Policy as Code)は、これらのポリシーをドキュメントではなく機械的に処理可能な形式で定義することを指します。これにより、ポリシーに準拠しているかどうかの確認を機械的に処理することが可能になり、結果的に継続的インテグレーション(CI)などの開発プロセスにポリシーのチェックを組み込むことが可能となります。また、ポリシーをGitのようなバージョン管理システムで管理することで、ポリシーの追加・変更・削除などを管理することにも役立ちます。
さくらのクラウドにおけるPaC
Terraform policy for さくらのクラウドはOPA(Open Policy Agent)を中心としたOPA Ecosystemのプロダクトを使用したPaCを実現するためのツールです。OPAは汎用的なポリシーエンジンであり、インプットされたデータがポリシー記述言語Regoで記述されたポリシーに準拠しているかどうかをチェックします。
Terraform policy for さくらのクラウドでは、さくらのクラウドを利用するにあたってセキュリティやガバナンスの観点で注意すべきポイントをRegoでポリシーとして記述して公開しています。また、Conftestを利用することでTerraformのコードをインプットとして扱い、さくらのクラウド向けに定義されたポリシーと照合することが可能です。
なお、具体的な利用方法などは以下のGitHubリポジトリとドキュメントをご参照ください。
- https://github.com/sacloud/terraform-provider-sakuracloud-policy
- https://docs.usacloud.jp/terraform-policy/
PaCの価値とねらい
セキュリティやガバナンスの脆弱性を狙った攻撃は顕在化してからでは手遅れなケースが多く、個人情報やクレジットカード番号等の流出、データの改ざん、ランサムウェアなど様々な被害が想定されます。そこで当社がさくらのクラウドを利用していただくうえでセキュリティやガバナンスの観点で注意すべきポイントをポリシーという形で提供することで、さくらのクラウドのユーザーの皆様が簡単にチェックしていただくことが可能となり、結果として上記のような問題を未然に防ぐ助けになることを期待しています。
また、さくらのクラウドユーザーの皆様はもちろんのこと、さくらのクラウド上でホスティングされたサービスを利用するユーザーの皆様も含めて不利益を被る可能性を下げることが、さくらのクラウドにおけるPaCの価値ではないかと考えています。一方で、あくまでもこのポリシーはTerraformのコードから読み取れる範囲をチェックするものであり、当然ながらインフラストラクチャ上に構築されたアプリケーションの実装に起因するような問題を見つけることはできません。ですので、当社が提供するポリシーのみではなく、アプリケーションを構築するにあたってご利用になられるフレームワークやミドルウェア等に対応したチェックツールも別途利用すべき点はご注意ください。
おわりに
本記事では、Terraform policy for さくらのクラウドを利用して、さくらのクラウドのセキュリティとガバナンスを強化する方法をご紹介しました。さくらのクラウドのユーザーの皆様の一助になれば幸いです。
また、現在提供中のポリシーに加えて更に追加すべきポリシーの案がございましたら、ぜひGitHubの/sacloud/terraform-provider-sakuracloud-policyリポジトリのIssueやPull Requestでコントリビュートをお願いいたします。