Skip to main content

Snyk IaCでAWS CloudFormationの設定ミスをスキャン

著者
Headshot of Ilianna Papastefanou

Ilianna Papastefanou

Infrastructure as Code security

2021年6月17日

0 分で読めます

Snyk Infrastructure as CodeでAWS CloudFormationのサポートを開始しました。先日公開したInfrastructure as Code Security Insightsレポートでは、回答者の36%が主要なインフラストラクチャ・アズ・コードツールとしてAWS CloudFormation(CF)を利用していることがわかりました。Snyk Infrastructure as Codeを使用すると、包括的なAWSセキュリティルールに照らして、CFのYAMLまたはJSONテンプレートをスキャンできます。

この新機能により、CloudFormationファイルを他のコードと同じように扱い、開発プロセスの早い段階からセキュリティを組み込めます。セキュリティをインフラストラクチャの開発・デプロイパイプラインに不可欠な要素として取り入れ、セキュリティを左にシフトできます。

必要な場所に統合

この機能は、リポジトリをインポートする方法とCLIを使う方法の両方で利用できます。ローカル開発からソース管理、CI/CDパイプラインまで、あらゆる場所に統合できます。

安全でないCloudFormationテンプレートファイルを含むこちらのサンプルリポジトリを使い、GitHubからSnykにリポジトリを統合したところ、CFファイル全体からさまざまな問題が検出されました。

重大度別の件数と「レポートを表示」リンクが表示された、snyk/snyk-iac-cloudformation の Snyk プロジェクトダッシュボード。

Snykでリポジトリを展開すると、スキャンされた設定ファイルの一覧を表示できます。以下の画面では、db.yml ファイルを選択しています。検出された設定上の問題が、元のCFテンプレート内の該当行にリンクされていることがわかります。

RDSの設定と、RDS IAM認証が無効になっていることを示す警告が表示されたAWS CloudFormationテンプレート

Snyk CLIを使って同じフィードバックを得ることもできます。ファイルはローカルで処理されるため、データがSnykに送信されることはありません。

$ snyk iac test db.yml

Testing db.yml...

Infrastructure as code issues:
  ✗ Non-encrypted RDS instance at rest [Medium Severity] [SNYK-CC-TF-201] in RDS
    introduced by Resources[Database] > Properties > StorageEncrypted

  ✗ RDS IAM authentication is disabled [Medium Severity] [SNYK-CC-AWS-414] in RDS
    introduced by Resources[Database] > Properties > EnableIAMDatabaseAuthentication

  ✗ Non-Encrypted SNS Topic [Medium Severity] [SNYK-CC-TF-55] in SNS
    introduced by Resources > DatabaseAlarmTopic > Properties > KmsMasterKeyId

  ✗ SNS topic is not encrypted with customer managed key [Low Severity] [SNYK-CC-AWS-422] in SNS
    introduced by Resources[DatabaseAlarmTopic] > Properties > KmsMasterKeyId

Organization:      mycompany.test
Type:              CloudFormation
Target file:       db.yml
Project name:      cloudformation-example
Open source:       no
Project path:      /Users/iliana/workspace/snyk-iac-cloudformation

Tested db.yml for known issues, found 4 issues

AWS Cloud Development Kitを使用する

AWS Cloud Development Kit(AWS CDK)は、使い慣れたプログラミング言語でクラウドアプリケーションのリソースを定義できるオープンソースのソフトウェア開発フレームワークです。AWS CDKを使うと、YAMLを書く代わりに、TypeScriptやPythonなど自分になじみのあるプログラミング言語でインフラストラクチャを定義できます。開発者が慣れ親しんだ言語やIDEを使えるため、柔軟性と利用しやすさが高まります。また、プログラミングの構成要素を活用して、YAMLファイルをテンプレート化する必要もなくなります。

AWS CDKに組み込まれたsynthサブコマンドでJSONファイルに変換すれば、Snyk CLIのiac test機能を使ってAWS CDKファイルをスキャンすることもできます。

インフラストラクチャをTypeScriptで定義した別のサンプルを使い、次のコマンドを実行すると、Snyk CLIでパイプライン内の設定をテストできます。

# install your dependencies
npm install
# convert your typescript to a CloudFormation json file
cdk synth

# scan the rendered json file using the Snyk IaC CLI
snyk iac test cdk.out/VpcStackWithIssues.template.json

Testing VpcStackWithIssues.template.json...

Infrastructure as code issues:
  ✗ Security Group allows open ingress [Medium Severity] [SNYK-CC-TF-1] in VPC
    introduced by Resources > SSHSG26D56496 > Properties > SecurityGroupIngress[0]

  ✗ AWS Security Group allows open egress [Low Severity] [SNYK-CC-TF-73] in VPC
    introduced by Resources[SSHSG26D56496] > Properties > SecurityGroupEgress[0] > CidrIp

  ✗ Rule allows open egress [Low Severity] [SNYK-CC-TF-72] in VPC
    introduced by Resources[SSHSG26D56496] > Properties > SecurityGroupEgress[0]

Organization:      mycompany.test
Type:              CloudFormation
Target file:       cdk.out/VpcStackWithIssues.template.json
Project name:      cdk.out
Open source:       no
Project path:      cdk.out/VpcStackWithIssues.template.json

Tested VpcStackWithIssues.template.json for known issues, found 3 issues

このワークフローは、プルリクエストごとに完全に自動化できるビルドパイプラインに最適です。この記事の公開時点では、AWS CDKファイルのスキャンはCLIを使ったワークフローでのみ可能です。

包括的な設定セキュリティルール

包括的なセキュリティフィードバックを得るには、セキュリティルールの深さと幅広さが重要です。Snykには専任のセキュリティエンジニアリングチームがあり、調査と検証を行いながら、製品に新しいルールを継続的に追加しています。AWS向けのルールは100を超え、今も増え続けています。

ルールを追加する際は、広く知られたベストプラクティスと独自のセキュリティ調査を組み合わせ、適切なカバレッジを確保しています。ベストプラクティスは、クラウドプロバイダーやコミュニティの標準に基づいており、CISベンチマークやKubernetes、AWSのベストプラクティスなどが含まれます。独自のセキュリティ調査では、主要な利用パターンを対象とする脅威モデリングなどの手法を用います。たとえば、マネージドKubernetesサービスの設定を調査し、適切にIaCを強化することで回避できる弱点を特定します。

Snyk IaCルールの重大度は、Snyk組織のSettingsに移動し、左側のメニューからInfrastructure as Codeを選択すると確認・変更できます。AWS CloudFormationだけに絞り込むには、Severity settingsの下にあるタブからAWSを選び、CloudFormation(またはTerraform)を選択してください。ルールはフォーマットに依存しないよう設計しているため、ほとんどのルールはどの切り替えを選んでも表示されます。

API Gatewayのセキュリティ問題に対するCloudFormationのチェックと、低・中・高の重大度設定を示すAWS画面

サイトのSecurity Rulesセクションでは、AWS CloudFormationのセキュリティルール一覧をすべて公開しています。

TLSポリシー、匿名アクセス、X-Rayトレーシング、ログ記録、暗号化のチェックなど、API Gatewayのセキュリティルールを掲載したSnyk AWS CloudFormationのページ。

Snyk IaCを無料で始める

これらの新機能は、無料プランのユーザーを含むすべての方にお試しいただけます。始め方は簡単です。

  • Snykアカウントをお持ちでない場合は、無料でご登録ください。

  • Snyk CLIをインストールしてください。すでにインストール済みの場合は、CLI 1.629.0以降であることをご確認ください。新機能をご利用いただけます。

  • CloudFormationファイルをスキャンします。新機能を使ってIaCをスキャンするには、次のコマンドを実行します。snyk iac test <path-to-file-or-folder>

対応しているさまざまなスキャンオプションについては、Snykのドキュメントをご覧いただくか、CLIで次のコマンドを実行してCLIドキュメントをご確認ください。snyk iac --help

ぜひフィードバックをお寄せください。すでにSnykをご利用の場合は、カスタマーサクセスチームへの連絡が製品に関するフィードバックを伝える最適な方法です。どなたでもSnyk Community forumにコメントをお寄せいただけます。

ソースコードの段階からインフラを保護

Snykはワークフロー内のIaCセキュリティとコンプライアンスを自動化し、構成ドリフトや不足しているリソースを検出します。

カテゴリー: