-
Notifications
You must be signed in to change notification settings - Fork 367
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
feat: [M3-8719] - Add a 'Mask Sensitive Data' setting to Cloud Manager #11143
feat: [M3-8719] - Add a 'Mask Sensitive Data' setting to Cloud Manager #11143
Conversation
8ec6f6b
to
8765249
Compare
@hkhalil-akamai Super helpful thoughts - thank you for the review! I'm looking into masking those places (except with VPC private IP, I think you're correct) now. As long as they play nicely with MaskableText, I think those are reasonable additions to make to this PR even though it will grow in size. If there are spots that become more complicated, I might punt them to a 'part 2' PR and get it into the same release.
I have conflicting thoughts here. I understand the scenario you present, it's valid. Defaulting to a set length also results in more abrupt changes in the UI when a user goes to toggle the visibility of the data, which was some feedback the team had when viewing the POC. And if we were to offer a default length, what length would be best - something about the length of an IP? |
@@ -11,7 +11,6 @@ export const StyledTableRow = styled(TableRow, { | |||
})(({ theme }) => ({ | |||
'& svg': { | |||
height: `12px`, | |||
opacity: 0, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removed this, because without doing so, the masked text visibility toggle icon wasn't visible. And it didn't seem to actually have a purpose.
I don't mind going in either direction, but I would like to hear the thoughts of other members. The length of an IP is a reasonable default, but we should make it configurable via a prop so it can be adjusted based on what kind of information it's masking. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for considering feedback! Verified all sensitive areas have been covered. The maskedTextLength
is a sensible and elegant approach to handling the length and gives excellent flexibility to developers.
One thought that didn't occur to me before -- should we update our documentation to mention using MaskableText
when appropriate? It may be forgotten by developers, especially if they haven't turned on the feature for themselves. This mention could possibly go under "Component Library" or "Accessibility".
Overall, excellent work on this feature and I'm sure this many users will find this addition extremely useful! 🎉
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice work! Looking forward to easier screenshots and videos 🚀
Thanks for the reviews - I'm going to merge this once CI finishes. 🎉 @hkhalil-akamai Great callout. I mentioned this feature in a few places that seemed appropriate:
I don't think this is overkill, since we want to actually make use of it! |
Cloud Manager E2E Run #6772
Run Properties:
|
Project |
Cloud Manager E2E
|
Branch Review |
develop
|
Run status |
Passed #6772
|
Run duration | 27m 17s |
Commit |
42f6cc20cd: feat: [M3-8719] - Add a 'Mask Sensitive Data' setting to Cloud Manager (#11143)
|
Committer | Mariah Jacobs |
View all properties for this run ↗︎ |
Test results | |
---|---|
Failures |
0
|
Flaky |
3
|
Pending |
2
|
Skipped |
0
|
Passing |
445
|
View all changes introduced in this branch ↗︎ |
Description 📝
There are several places in the Cloud Manager UI where sensitive data is displayed, and we currently lack a way to obscure this data in situations where users may want it to be present, but not visible in the UI.
We would like to offer a solution to this by adding a profile setting to mask sensitive data app-wide using the commonly used pattern of dots (such as in a password field) and a visibility (eye) icon to toggle visibility of masked fields individually. Sensitive data includes: IP addresses, contact/billing information (including usernames and email addresses), and security questions.
This toggle-able setting will be available to users via the Profile > Settings page.
Changes 🔄
Mask Sensitive Data
setting is ON, sensitive data throughout the app is masked with placeholder text.Mask Sensitive Data
setting is OFF, the UI displays as prod does today - all sensitive data is visible.IPAddress
andCopyTooltip
components to be able to mask IP addresses and copy the unmasked IP address while displaying masked text.MaskableText
andVisibilityTooltip
(and a story)createMaskedText
to convert a string to masked placeholder text (the dots).Target release date 🗓️
11/12/24
Preview 📷
Screenshots
IPAddress
withshowAll
IPAddress
withshowMore
How to test 🧪
Prerequisites
(How to setup test environment)
yarn dev
, then go to http://localhost:3000/profile/settingsyarn storybook
Verification steps
(How to verify changes)
Mask Sensitive Data
preference onMask Sensitive Data
preference off and confirm that the previously masked places are displaying unmasked dataAs an Author I have considered 🤔
Check all that apply