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

x-pack/filebeat/input/cel: allow users to redact state fields in logs #34302

Merged
merged 1 commit into from Jan 29, 2023

Conversation

efd6
Copy link
Contributor

@efd6 efd6 commented Jan 18, 2023

What does this PR do?

This add logic, configuration and documentation for redacting parts of pre- and post-processing CEL state when logging state to debug logs. The configuration allows users to specify fields that should not be entered into logs and whether these fields should be masked or deleted from the logged object.

Why is it important?

Leaking secrets to debug logs is a significant attack surface.

Checklist

  • My code follows the style guidelines of this project
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • I have made corresponding change to the default configuration files
  • I have added tests that prove my fix is effective or that my feature works
  • I have added an entry in CHANGELOG.next.asciidoc or CHANGELOG-developer.next.asciidoc.

Author's Checklist

  • [ ]

How to test this PR locally

Related issues

Use cases

Screenshots

Logs

@efd6 efd6 added enhancement Filebeat Filebeat Team:Security-External Integrations backport-skip Skip notification from the automated backport with mergify 8.7-candidate labels Jan 18, 2023
@efd6 efd6 requested a review from andrewkroh January 18, 2023 05:47
@efd6 efd6 self-assigned this Jan 18, 2023
@botelastic botelastic bot added needs_team Indicates that the issue/PR needs a Team:* label and removed needs_team Indicates that the issue/PR needs a Team:* label labels Jan 18, 2023
@efd6 efd6 force-pushed the cel/redact branch 2 times, most recently from b2b8131 to bf34bef Compare January 18, 2023 05:51
@elasticmachine
Copy link
Collaborator

elasticmachine commented Jan 18, 2023

💚 Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS
Pipeline View Test View Changes Artifacts preview preview

Expand to view the summary

Build stats

  • Start Time: 2023-01-27T09:54:17.812+0000

  • Duration: 75 min 32 sec

Test stats 🧪

Test Results
Failed 0
Passed 2547
Skipped 172
Total 2719

💚 Flaky test report

Tests succeeded.

🤖 GitHub comments

Expand to view the GitHub comments

To re-run your PR in the CI, just comment with:

  • /test : Re-trigger the build.

  • /package : Generate the packages and run the E2E tests.

  • /beats-tester : Run the installation tests with beats-tester.

  • run elasticsearch-ci/docs : Re-trigger the docs validation. (use unformatted text in the comment!)

@efd6 efd6 marked this pull request as ready for review January 18, 2023 08:20
@efd6 efd6 requested a review from a team as a code owner January 18, 2023 08:20
@elasticmachine
Copy link
Collaborator

Pinging @elastic/security-external-integrations (Team:Security-External Integrations)

@efd6
Copy link
Contributor Author

efd6 commented Jan 18, 2023

The golangci-lint action is wrong with its complaint.

@mergify
Copy link
Contributor

mergify bot commented Jan 24, 2023

This pull request is now in conflicts. Could you fix it? 🙏
To fixup this pull request, you can check out it locally. See documentation: https://help.github.com/articles/checking-out-pull-requests-locally/

git fetch upstream
git checkout -b cel/redact upstream/cel/redact
git merge upstream/main
git push upstream cel/redact

@efd6
Copy link
Contributor Author

efd6 commented Jan 24, 2023

/test

@efd6
Copy link
Contributor Author

efd6 commented Jan 25, 2023

/test

@mergify
Copy link
Contributor

mergify bot commented Jan 26, 2023

This pull request is now in conflicts. Could you fix it? 🙏
To fixup this pull request, you can check out it locally. See documentation: https://help.github.com/articles/checking-out-pull-requests-locally/

git fetch upstream
git checkout -b cel/redact upstream/cel/redact
git merge upstream/main
git push upstream cel/redact

@mergify
Copy link
Contributor

mergify bot commented Jan 27, 2023

This pull request is now in conflicts. Could you fix it? 🙏
To fixup this pull request, you can check out it locally. See documentation: https://help.github.com/articles/checking-out-pull-requests-locally/

git fetch upstream
git checkout -b cel/redact upstream/cel/redact
git merge upstream/main
git push upstream cel/redact

This add logic, configuration and documentation for redacting parts of pre- and
post-processing CEL state when logging state to debug logs. The configuration
allows users to specify fields that should not be entered into logs and whether
these fields should be masked or deleted from the logged object.
Copy link
Member

@andrewkroh andrewkroh left a comment

Choose a reason for hiding this comment

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

LGTM


// String renders the JSON corresponding to r.state after applying redaction
// operations.
func (r redactor) String() string {
Copy link
Member

Choose a reason for hiding this comment

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

If you wanted the data to remain in a structured format and do it lazily you could implement https://pkg.go.dev/go.uber.org/zap@v1.24.0/zapcore#ObjectMarshalerFunc.MarshalLogObject. I don't have any preference.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The recommended approach for doing that does not really simplify things from what I can see. This is from zap issue 750.

@efd6 efd6 merged commit 7925345 into elastic:main Jan 29, 2023
chrisberkhout pushed a commit that referenced this pull request Jun 1, 2023
…#34302)

This add logic, configuration and documentation for redacting parts of pre- and
post-processing CEL state when logging state to debug logs. The configuration
allows users to specify fields that should not be entered into logs and whether
these fields should be masked or deleted from the logged object.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
8.7-candidate backport-skip Skip notification from the automated backport with mergify enhancement Filebeat Filebeat
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants