Skip to content

Conversation

@sriddbs
Copy link
Contributor

@sriddbs sriddbs commented Jan 15, 2024

Closes #690

  • Add new configurable vars:
    • encrypt_audited_changes default to false
    • filter_encrypted_attributes default to true

@sriddbs
Copy link
Contributor Author

sriddbs commented Jan 15, 2024

@danielmorrison please review and let me if the proposed config in the PR is good, also I wonder why some of the specs are failing 🤔

Audited.filter_encrypted_attributes = false
```

If you want to encrypt the changes that are audited, you can simply add this line to your config
Copy link
Member

Choose a reason for hiding this comment

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

Maybe another header here to show that these are separate features?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

hmm, because we use encrypts, this config is also available only from Rails 7 ... so I grouped it under the same header

should I add a sub-header?

Copy link
Member

@danielmorrison danielmorrison left a comment

Choose a reason for hiding this comment

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

Looking good to me. Test errors are something strange with coverage? Doesn't make sense offhand.

@sriddbs
Copy link
Contributor Author

sriddbs commented Jan 16, 2024

Looking good to me. Test errors are something strange with coverage? Doesn't make sense offhand.

I had the same errors with spec/audited/audit_spec, rspec clearly showed me the errors locally and I could fix it

for this it just runs fine

rspec spec/audited/auditor_spec.rb
Created database ':memory:'
............................................................................................................*.....*........................

Pending: (Failures listed here are expected and do not affect your suite's status)

  1) Audited::Auditor without auditing should be thread safe using a #without_auditing block
     # No reason given
     # ./spec/audited/auditor_spec.rb:996

  2) Audited::Auditor with auditing should be thread safe using a #with_auditing block
     # No reason given
     # ./spec/audited/auditor_spec.rb:1077

@sriddbs
Copy link
Contributor Author

sriddbs commented Jan 30, 2024

@danielmorrison if this PR looks good, please merge?

tvararu added a commit to nhsuk/manage-vaccinations-in-schools that referenced this pull request May 29, 2024
Audited automatically replaces entries in the `audited_changes` field on
audits with `[FILTERED]` for attributes that are encrypted. This is
designed to prevent leaking of sensitive information in
`audited_changes` which is an unencrypted field.

The downside to this is that the `audited_changes` field now provides
less information about what the audit actually changed.

To solve this, collectiveidea/audited#694 adds
additional configuration attributes:

- `Audited.filter_encrypted_attributes = false` disables the automatic
  replacement with `[FILTERED]`
- `Audited.encrypt_audited_changes = true` encrypts the actual entire
  `audited_changes` field, ensuring that sensitive information isn't
  leaked

See:

- collectiveidea/audited#690
- collectiveidea/audited#694
serialize :audited_changes, YAMLIfTextColumnType
end

if Rails.gem_version >= Gem::Version.new("7.0") && Audited.encrypt_audited_changes
Copy link

Choose a reason for hiding this comment

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

This doesn't seem to work as expected, it appears that this is evaluated before the Audited.encrypt_audited_changes = true in the initializer runs so it evaluates to false initially and is never re-evaluated. The encrypts call below never runs as a result.

tvararu added a commit to nhsuk/manage-vaccinations-in-schools that referenced this pull request May 29, 2024
Audited automatically replaces entries in the `audited_changes` field on
audits with `[FILTERED]` for attributes that are encrypted. This is
designed to prevent leaking of sensitive information in
`audited_changes` which is an unencrypted field.

The downside to this is that the `audited_changes` field now provides
less information about what the audit actually changed.

To solve this, collectiveidea/audited#694 adds
additional configuration attributes:

- `Audited.filter_encrypted_attributes = false` disables the automatic
  replacement with `[FILTERED]`
- `Audited.encrypt_audited_changes = true` encrypts the actual entire
  `audited_changes` field, ensuring that sensitive information isn't
  leaked

See:

- collectiveidea/audited#690
- collectiveidea/audited#694
tvararu added a commit to nhsuk/manage-vaccinations-in-schools that referenced this pull request May 29, 2024
Audited automatically replaces entries in the `audited_changes` field on
audits with `[FILTERED]` for attributes that are encrypted. This is
designed to prevent leaking of sensitive information in
`audited_changes` which is an unencrypted field.

The downside to this is that the `audited_changes` field now provides
less information about what the audit actually changed.

To solve this, collectiveidea/audited#694 adds
additional configuration attributes:

- `Audited.filter_encrypted_attributes = false` disables the automatic
  replacement with `[FILTERED]`
- `Audited.encrypt_audited_changes = true` encrypts the actual entire
  `audited_changes` field, ensuring that sensitive information isn't
  leaked

See:

- collectiveidea/audited#690
- collectiveidea/audited#694
tvararu added a commit to nhsuk/manage-vaccinations-in-schools that referenced this pull request May 29, 2024
Audited automatically replaces entries in the `audited_changes` field on
audits with `[FILTERED]` for attributes that are encrypted. This is
designed to prevent leaking of sensitive information in
`audited_changes` which is an unencrypted field.

The downside to this is that the `audited_changes` field now provides
less information about what the audit actually changed.

To solve this, collectiveidea/audited#694 adds
additional configuration attributes:

- `Audited.filter_encrypted_attributes = false` disables the automatic
  replacement with `[FILTERED]`
- `Audited.encrypt_audited_changes = true` encrypts the actual entire
  `audited_changes` field, ensuring that sensitive information isn't
  leaked

See:

- collectiveidea/audited#690
- collectiveidea/audited#694
@srg-bnd
Copy link

srg-bnd commented Jul 12, 2024

How are you doing with PR?

end

if Rails.gem_version >= Gem::Version.new("7.0") && Audited.encrypt_audited_changes
encrypts :audited_changes
Copy link

Choose a reason for hiding this comment

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

Is it necessary to take into account the deterministic encryption?

@jesseduffield
Copy link

Just stumbled upon this PR. I'd love to have this functionality. Is anything blocking this currently @danielmorrison ?

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.

Encryption for audited_changes / disabling the FILTERED feature

5 participants