Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add: ignore findings #299

Merged
merged 5 commits into from
Jul 24, 2024
Merged

add: ignore findings #299

merged 5 commits into from
Jul 24, 2024

Conversation

gassara-kys
Copy link
Collaborator

cloudsploitのFinding除外設定を実装します。
slicesパッケージを使いたいのでGoもアプデします。

Copy link

PR Analysis

メインテーマ

Dockerfileおよびその他のファイルでGoのバージョンを1.18.2から1.21.3に更新しました。

PR サマリー

このPRは、複数のDockerfileとインストールスクリプト内のGoのバージョンを1.18.2から1.21.3に更新しました。

PR タイプ

Enhancement

PR フィードバック:

一般的なフィードバック

Goのバージョンを1.21.3に更新するこの変更は素晴らしいです。より新しいバージョンを使用することで、最新の機能や改善が活用できるようになります。

コードのフィードバック

  1. pkg/cloudsploit/cloudsploit.go:

    +	// remove ignore plugin
    +	results = s.removeIgnorePlugin(ctx, results)
    +
    +	// add meta data
    • removeIgnorePluginaddMetaDataの間にコメントがあることから、メタデータを追加する前にignoreプラグインを削除することが意図されているようです。この順序は問題ありませんが、コメントの明確さのため、順序が理由であることを示すコメントを追加すると良いでしょう。
  2. pkg/cloudsploit/cloudsploit.go:

    +func (s *SqsHandler) removeIgnorePlugin(ctx context.Context, findings []*cloudSploitResult) []*cloudSploitResult {
    • メソッド名と関数名の間に少しスペースを追加すると、可読性が向上します。

セキュリティ上の懸念:

no

Copy link

PR Analysis

メインテーマ

新しい cloudsploit パッケージとそれに関連するテストファイルが導入されました。

PR サマリー

この PR では、cloudsploit パッケージとそのテストファイルが追加されました。CloudsploitSetting 構造体に、IsIgnorePlugin と IsSkipResourceNamePattern という新しい関数が追加されました。

PR タイプ

  • Enhancement

PR フィードバック:

一般的なフィードバック

新しい機能や関数の追加は素晴らしいです。ただし、一部のコードに対していくつかの改善点があります。

コードのフィードバック

pkg/cloudsploit/cloudsploit_test.go

  • suggestion:
    • removeIgnorePlugin 関数内の reflect.DeepEqual の使用は、ポインタ型が比較されているため適切ではありません。代わりに、正確なフィールドを比較するカスタム比較関数を実装することを提案します。重要度: important
  • relevant line:
    • if got := testHandler.removeIgnorePlugin(context.Background(), tt.input.findings); !reflect.DeepEqual(got, tt.want) {

pkg/cloudsploit/setting.go

  • suggestion:
    • slices および strings パッケージがインポートされていますが、使用されていません。未使用のインポートを取り除くことを提案します。重要度: medium
  • relevant line:
    • import "slices"
    • import "strings"

pkg/cloudsploit/setting_test.go

  • suggestion:
    • const で定義された TEST_YAML は、関連するテストケースごとに再利用されるので、テストケースの外部で定義する代わりに、テストケース内で定義して使うようにすることを提案します。重要度: medium
  • relevant line:
    • const ( ... TEST_YAML = ...`

Copy link

セキュリティレビューを実施しました。
特に問題は見つかりませんでした👏

By RISKEN review

continue
}
if s.cloudsploitSetting.IsSkipResourceNamePattern(plugin, f.Resource) {
s.logger.Warnf(ctx, "Ignore resource: %s", f.Resource)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ログレベルはInfoで良い気がしますがいかがでしょうか?(例外ケースというわけではなさそうなので)
Infoでなく、Warnで出す必要があれば修正不要です。

Copy link
Contributor

@iiiidaaa iiiidaaa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link

PR Analysis

メインテーマ

Golang プロジェクトのバージョンを 1.18.2 から 1.21.3 に更新する

PR サマリー

このプルリクエストは、Golang プロジェクトの複数の部分でバージョンを 1.21.3 に更新し、新しいコードを追加しています。

PR タイプ

Enhancement

PR フィードバック:

一般的なフィードバック

新しいコードとバージョン更新がプロジェクト全体に適切に適用されているようです。ただし、それらの変更に伴うテストケースの更新をお勧めします。

コードのフィードバック

  1. pkg/cloudsploit/cloudsploit.go

    +	results = s.removeIgnorePlugin(ctx, results)
    • この変更は重要です。ただし、removeIgnorePlugin メソッド内での処理中に発生する可能性のあるエラーに対処するため、エラーハンドリングを追加することが重要です。
  2. dockers/access-analyzer/Dockerfile, dockers/admin-checker/Dockerfile, dockers/cloudsploit/Dockerfile, dockers/guard-duty/Dockerfile, dockers/portscan/Dockerfile

    + FROM golang:1.21.3 as builder
    • Golang のバージョンが正常に更新されています。ベストプラクティスとして、Dockerfile 内のワークディレクトリを明示的に作成することを検討することができます。

セキュリティ上の懸念:

no

注意: このレビューは、コードの品質向上とベストプラクティスへの準拠を目的としています。コメントやテストの追加は、コードの信頼性と保守性を向上させるのに役立ちます。

Copy link

PR Analysis

メインテーマ

  • 新しいテストを追加し、Cloudsploit関連のコードをテストするためのテストファイルを追加しました。

PR サマリー

このPRは、Cloudsploit関連のコードに対するテストファイルを追加しました。

PR タイプ

  • Tests

PR フィードバック:

一般的なフィードバック

この変更は機能を追加するのではなく、既存のコードの品質を向上させるためのものです。テストの追加はコードの信頼性を高め、予期しない問題を検出するのに役立ちます。

コードのフィードバック

pkg/cloudsploit/cloudsploit_test.go

  1. TestRemoveIgnorePlugin関数内のテストは、異なる条件に対して正しい振る舞いをテストしています。素晴らしいテストカバレッジです。

pkg/cloudsploit/setting.go

  1. SkipResourceNamePattern フィールドを配列から文字列に変更したのは良いアップデートです。これにより、複数のパターンを保持できるようになりました。
  2. IsIgnorePlugin メソッドは、渡されたプラグインが無視対象のものかどうかを判定します。ただし、エラー処理が欠落しているため、エラーを返すか、ログを出力するなどの追加が望ましいです。
  3. IsSkipResourceNamePattern メソッドはリソース名のパターンが一致するかどうかを判定します。ただし、SpecificPluginSetting が空の場合に適切に処理されていないため、そのケースに対する追加の処理が必要です。

pkg/cloudsploit/setting_test.go

  1. TEST_YAML 定数は、テストケースで共有されているため、適切な場所に移動することでコードの重複を避けることができます。

セキュリティ上の懸念:

no

注意: これらの提案が実装された場合、コードはより堅牢になり、メンテナンスが容易になることが期待されます。

Copy link

PR Analysis

メインテーマ

Goのバージョンを1.18.2から1.21.3に更新し、skipResourceNamePatternの設定を変更するPRです。

PR サマリー

このPRは、複数のDockerfileとスクリプトファイル内でGoのバージョンを1.18.2から1.21.3に更新し、cloudsploit.yamlファイルでskipResourceNamePatternの設定を変更する変更を含んでいます。

PR タイプ

  • Enhancement

PR フィードバック

一般的なフィードバック

GoのバージョンのアップデートとskipResourceNamePatternの変更は、パフォーマンス向上や機能の追加といった良い変更です。特に、セキュリティの改善や新しい機能の導入に寄与する可能性があります。

コードのフィードバック

codebuild/multi-arch/install-go.sh

  • 重要度: important
  • Goのバージョンを1.18.2から1.21.3に更新することで、スクリプト内のINSTALL_GO_VERSION変数を更新しました。この変更は正しく行われています。

dockers/*.Dockerfile

  • 重要度: important
  • Goのバージョンを1.18.2から1.21.3に正しく更新しています。Dockerfile内のベースイメージを適切に更新したことで、最新のGoバージョンを使用できるようになりました。

go.mod, go.sum

  • 重要度: important
  • Goのバージョンを1.18から1.21に更新し、toolchain go1.21.3を追加しています。これにより、使用されるツールチェーンのバージョンが明確になりました。

セキュリティ上の懸念

セキュリティ上の懸念はありません。

Copy link

PR Analysis

メインテーマ

  • Cloudsploit パッケージにおける新しい機能の追加とテストファイルの追加

PR サマリー

  • Cloudsploit パッケージに新しい機能が追加され、それに関連するテストファイルも追加されました。

PR タイプ

  • Enhancement

PR フィードバック:

一般的なフィードバック

新しいコードの導入は非常に良いです。ただし、IsSkipResourceNamePattern メソッドにいくつかの問題が見つかりました。

コードのフィードバック

pkg/cloudsploit/setting.go

  • suggestion:
    • IsSkipResourceNamePattern メソッドの現在の実装にはいくつかの問題があります。具体的には、SpecificPluginSetting マップ内のキーが見つからない場合にプログラムがクラッシュする可能性があることです。IsSkipResourceNamePattern メソッド内で、指定された pluginSpecificPluginSetting に存在するかどうかを事前に確認してから処理を続行するように修正することをお勧めします。
    • 重要度: important
  • relevant file: pkg/cloudsploit/setting.go
  • relevant line:
      if c.SpecificPluginSetting[plugin].SkipResourceNamePattern == nil {

セキュリティ上の懸念:

  • no

以上、フィードバックをご検討ください。

Copy link

PR Analysis

メインテーマ

ソフトウェアのバージョンアップと設定変更

PR サマリー

このプルリクエストは、複数のDockerイメージとshellスクリプトに対して、Golangのバージョンを1.18.2から1.21.3にアップデートし、いくつかの設定変更を加えました。

PR タイプ

Enhancement

PR フィードバック:

一般的なフィードバック

このプルリクエストは、Golangのバージョンアップと設定変更を行っています。バージョンアップはセキュリティの向上や機能の改善につながる可能性があります。設定変更に伴うリグレッションテストを実行することをお勧めします。

コードのフィードバック

- 関連ファイル: codebuild/multi-arch/install-go.sh
  - 提案: `INSTALL_GO_VERSION=1.21.3` の変更は重要です。バージョン番号を適切に更新することで、最新のGolangバージョンを利用できます。

- 関連ファイル: go.mod, go.sum
  - 提案: `go 1.21` の更新と `toolchain go1.21.3` の追加は重要です。ツールチェーンのバージョンも更新されるべきです。

セキュリティ上の懸念:

no

Copy link

PR Analysis

メインテーマ

パフォーマンス向上のためのコード変更

PR サマリー

このPRはCloudSploitツールのロジックを改善し、ignore pluginを除外する新しい機能を追加しています。

PR タイプ

  • Enhancement

PR フィードバック:

一般的なフィードバック

新しい機能の追加により、CloudSploitツールのロジックが改善されました。コードは読みやすく、明確です。ただし、単体テストのセットアップが完了していることを確認してください。

コードのフィードバック

pkg/cloudsploit/cloudsploit.go

  • suggestion:
    新しいリムーブメソッドを使用することで、removeIgnorePlugin関数がコードの可読性と効率性を向上させる可能性があります。また、ロジックが明確になるため、バグのリスクも低くなります。
  • relevant file:
    pkg/cloudsploit/cloudsploit.go
  • relevant line:
    results = s.removeIgnorePlugin(ctx, results)

pkg/cloudsploit/setting.go

  • suggestion:
    strings パッケージを使用して、SkipResourceNamePatternがスキップされるかどうかを確認する際に、効率的な方法を実装することができます。
  • relevant file:
    pkg/cloudsploit/setting.go
  • relevant line:
    if strings.Contains(resourceName, pattern) {

セキュリティ上の懸念:

no

総合的なフィードバック

このPRは、CloudSploitツールに有益な機能を追加し、コードの品質と可読性を向上させました。単体テストをさらに強化し、パフォーマンスに焦点を当てることで、さらなる改善が期待されます。

Copy link

PR Analysis

メインテーマ

  • 既存のGolangバージョンを1.18.2から1.21.3に更新します。

PR サマリー

このPRは、複数のDockerfileとスクリプトファイルのGolangバージョンを1.18.2から1.21.3に更新する変更を含んでいます。

PR タイプ

  • Enhancement

PR フィードバック:

一般的なフィードバック

Golangバージョンのアップグレードは良い決定です。ただし、追加のコード変更やテストの適切な更新が必要です。

コードのフィードバック

dockers/access-analyzer/Dockerfile

  • suggestion: このファイルでのGolangバージョンを1.18.2から1.21.3に更新することで、セキュリティの向上と最新の機能の利用が可能です。再ビルドして変更を反映させてください。
  • relevant file: dockers/access-analyzer/Dockerfile
  • relevant line: FROM golang:1.18.2 as builder

その他のDockerfileとスクリプトファイル

  • suggestion: 他のDockerfileおよびスクリプトファイルでも同様にGolangバージョンを1.21.3に更新してください。
  • relevant file: 各ファイル
  • relevant line: FROM golang:1.18.2 as builder

セキュリティ上の懸念:

no

Copy link

PR Analysis

メインテーマ

Cloudsploitツールにおける不要なプラグインを削除する機能を追加しました。

PR サマリー

このPR では、Cloudsploitツールに不要なプラグインを削除する機能が追加されています。新しい関数removeIgnorePluginが追加され、addMetaData関数が変更されました。また、テストファイルcloudsploit_test.gosetting_test.goも追加されています。

PR タイプ

  • Enhancement

PR フィードバック:

一般的なフィードバック

新しいremoveIgnorePlugin関数は、適切にクラウドスプロイトの結果からプラグインを削除する機能を提供しています。関数内のロジックは適切に見えますが、他の開発者が機能を使用する際に明確なドキュメントが必要です。関連するケースをカバーしたテストも素晴らしく書かれています。

コードのフィードバック

pkg/cloudsploit/cloudsploit.go

  • 重要: addMetaData関数がremoveIgnorePlugin関数の後に呼ばれていますが、これは意図した順序ではないかもしれません。addMetaData関数はresultsに変更を加える可能性があるため、addMetaData関数を呼び出す前にremoveIgnorePlugin関数を呼び出すべきです。

pkg/cloudsploit/setting.go

  • Medium: slices パッケージがインポートされていますが、実際には strings パッケージが必要なのではないでしょうか?slices パッケージを使用する代わりに、strings パッケージを使用していることを確認してください。

セキュリティ上の懸念

no

@gassara-kys
Copy link
Collaborator Author

手動でCI環境実行して成功したのでマージします

@gassara-kys gassara-kys merged commit 6148114 into master Jul 24, 2024
5 of 6 checks passed
@gassara-kys gassara-kys deleted the cloudsploit-yaml branch July 24, 2024 09:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants