SnykとSolvoでS3バケットの設定とアクセスを保護
Lauren Place
David Hendri
2021年10月18日
0 分で読めますSolvo は、最小権限のアクセスでクラウドインフラを迅速かつ大規模に運用できるようにすることで、開発者やDevOpsエンジニアを支援しています。この記事では、Solvoの自動化プラットフォームと Snyk Infrastructure as Code (Snyk IaC) を組み合わせ、Lambda関数からAWS S3バケットへのアクセスをカスタマイズして安全にするワークフローをご紹介します。この記事は Solvoのウェブサイトに初めて掲載されたものです。
クラウドリソースの設定管理に、Infrastructure as Code(IaC)モデルを採用する組織が増えています。
コードを使ってインフラを設定すると、バージョン管理やソース管理がしやすくなり、ある環境の状態を別の環境で追跡・再現しやすくなります。この方法は、コードやその他の有用なデータの保存に便利なAWS S3バケットを迅速に作成する場合に特に役立ちます。クラウドリソースであるS3バケットは、チーム内で簡単に共有できます。
しかし、S3バケットが「共有しすぎ」になってしまうこともあります。作業を急いでいると、クラウド資産(S3、Lambda、EC2など)用の安全なIAMポリシーの作成は、開発者が後回しにしがちです。スピードと利便性を優先するあまり、開発者がバケットのセキュリティポリシーを過度に緩く設定し、バケット内のコンテンツが漏えいするリスクを招くことは珍しくありません。
ポリシーに起因するセキュリティリスクと、それを回避する方法を見ていきましょう。
設定に問題があるLambdaの例
以下は、画像をS3バケットに格納するAWS Lambdaを設定するTerraform構成です。IAMロールとセキュリティポリシーのコードも確認できます。
この構成から、内容やセキュリティレベルについてどのようなことがわかるでしょうか。
このアプリケーションでは、Lambdaは犬の画像をS3バケットに格納するように設定されています。このLambdaにはそのための権限のほか、Put、Get、Delete、Create、Listなどの操作権限があります。S3以外のすべてのサービスも考慮すると、許可される操作はさらに増えます。
これは52~54行目の記述が原因です。実質的に、すべてのリソースに対するすべての操作をALLOWしています。つまり、管理者権限を付与しているのです。
これは権限が広すぎます。ここで許可すべき操作は「put」だけです。それ以外は過剰な権限であり、データ漏えいや破損につながったり、資産の調査に悪用されたりするおそれがあります。
TerraformとAWS IAMに精通していて、この構成だけをレビューするのであれば、問題を見つけるのは簡単かもしれません。しかし通常、Terraformの構成ははるかに大規模で、設定の細部を把握し続けるのは困難です。そのため、開発者やセキュリティチームのメンバーがTerraformモジュール群の奥深くに埋もれた危険なポリシーに気づく可能性は低くなります。
幸いなことに、こうした問題の発見と修正を大幅に容易にし、IaCを利用するすべてのエンジニアリングチームにセキュリティの責任を広げるための新しいツールが登場しています。
安全でない設定をスキャンする
Snyk Infrastructure as Code (IaC)は、Terraform、Kubernetes、AWS CloudFormationの構成をスキャンし、AWS、Azure、GCP全体の危険なポリシーを特定できるIaCテストツールです。上の例のように、ポリシーの権限を過剰に広げてしまうアスタリスクのような単純な問題を検出できます。また、たとえば「read」にすべきところが「write」になっているケースも見つけられます。
継続的な自動静的テストにより、Snyk IaCは大規模なTerraform構成をスキャンできるため、組織のIaC管理に効果を発揮します。スキャンで危険な設定が見つかると、Snykが修正方法を案内します。さらに、SolvoをSnyk IaCと併用すれば、潜在的なリスクを軽減する安全なポリシーを自動生成できます。
実際の動作を見てみましょう。
スキャンを実行するには、Snyk CLIを使って構成に対しsnyk iac testを実行します。

スキャンにより、「*」を使ったポリシーの設定ミスが見つかりました。すべての操作を許可するため、権限が過剰になっています。
Snyk IaCは、この構成に潜むリスクの情報と問題の修正に関する一般的なアドバイスを提供します。Solvoはさらに、環境に合わせて最小権限のIAM構成を自動生成します。両者を組み合わせれば、コードの作成中に問題を見つけて修正できるため、必要な修正をすばやく行い、デプロイ前に安全性を確保できます。

これで、ポリシーが「PutObject」だけを許可していることが確認できました。犬の写真も安全です。

Solvoでポリシーを適用した後、Terraformファイルをもう一度スキャンすると、Snyk IaCによって管理者権限がすべてなくなったことを確認できます。

インテグレーションの組み合わせでカバー範囲を拡大
Snyk IaCのスキャンを活用すれば、Terraform、Kubernetes、CloudFormationなどのIaCに含まれる危険なポリシーを事前に特定し、修正できます。Solvoと組み合わせると、Solvoが危険なポリシーに代わる安全なポリシーを生成し、追加の人員や専門知識を必要とせずに、設定ミスの迅速な修正とセキュリティの向上を支援します。
Solvoによるクラウドインフラのリスク自動低減について詳しくは、Solvoのウェブサイトで利用を開始するか、無料デモをお申し込みください。Snyk IaCをまだお試しでない方は、無料で利用を開始できます。
David Hendri はSolvoの共同創業者兼CTOです
Lauren Place はSnykのプロダクトマーケティングマネージャーです
ソースコードの段階からインフラを保護
Snykはワークフロー内のIaCセキュリティとコンプライアンスを自動化し、構成ドリフトや不足しているリソースを検出します。
