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

Consumer roles list page is very slow #1459

Closed
fourtyplustwo opened this issue Aug 6, 2024 · 2 comments
Closed

Consumer roles list page is very slow #1459

fourtyplustwo opened this issue Aug 6, 2024 · 2 comments

Comments

@fourtyplustwo
Copy link
Contributor

fourtyplustwo commented Aug 6, 2024

We have about 15 total IAM roles on a single environment, 9 of them are data.all managed. The list loads very slowly about 13 seconds or so. I would like the roles to load much faster maybe 2-3 seconds tops and ideally less.

@noah-paige
Copy link
Contributor

Thanks for raising this concern @zsaltys - I believe @SofiaSazonova had worked on a similar issue where fetching the managed policy status for many consumption roles when requesting share access (PR)

I would think we can re-use a similar approach where we load all of the role information besides this additional fields which is resolved via boto3 call and likely causing the long runtime

That information can be run afterwards via separate API call or on displayed on demand via some mechanism

Please let us know if there is any particular expected behavior(s) you had in mind other than faster runtimes?

@dlpzx dlpzx moved this to Backlog in Data.all Backlog Aug 12, 2024
@fourtyplustwo
Copy link
Contributor Author

@noah-paige I would say we should check if role has policy attached async in background ECS jobs and allow user to refresh a status if they need to.. Another option is to load it asynchronously from the list. Meaning we render the consumer roles list FIRST ... and then we show spinning circle that we're pulling information to figure out if the policy is attached.. I think maybe the second option would be my preferred one as it's going to show the truth just a bit slower...

dlpzx pushed a commit that referenced this issue Feb 3, 2025
### Feature or Bugfix
- Feature

### Detail

- Updates the process of modifying the IAM policies after approve /
revoke to add / delete resources and also split the policies into chunks
- Updates the managed IAM policies to have indexes at the end 
- Contains backward compatibility and other additional checks to make
sure correct policies are created and older policies are deleted
- Contains a UI update to address this issue -
#1459

### Relates

- #884
- #1459

### Tests

- Inviting / removing team to an environment ✅ 
- Adding/ Removing consumption role to an environment ✅ 
- Creating / revoking a share with consumption role for S3 bucket with
bucketpolicy sharing ✅
- Creating / revoking a share with environment team for S3 bucket with
bucketpolicy sharing ✅
- Creating / revoking a share with consumption role for S3 access point
✅
- Creating / revoking a share with environment team for S3 access point
✅
- Creating a share with requestors IAM policy being on the brink of
policy length limits and checking if new indexed policy is getting
created ✅
- Revoking a share with requestors IAM policy being on the brink of
policy length limits and checking if extra policies are deleted ✅
- Checking if all consumption roles are loaded quickly on the
environment teams UI asynchronously ✅
- Check if requestor’s receive emails when an IAM role is about to reach
the managed policy attachment limit ( Email Notification Changes )
- Migrating Shares from old to new policy management. via share
validator and share verifier ( Share verifier successfully mentions
error message and Share re-applier successfully converts policies to
indexed managed policies ) ✅
- Creating new environment and deleting an environment ✅ 

### Security
Please answer the questions below briefly where applicable, or write
`N/A`. Based on
[OWASP 10](https://owasp.org/Top10/en/).

- Does this PR introduce or modify any input fields or queries - this
includes
fetching data from storage outside the application (e.g. a database, an
S3 bucket)? No
  - Is the input sanitized?
- What precautions are you taking before deserializing the data you
consume?
  - Is injection prevented by parametrizing queries?
  - Have you ensured no `eval` or similar functions are used?
- Does this PR introduce any functionality or component that requires
authorization? No
- How have you ensured it respects the existing AuthN/AuthZ mechanisms?
  - Are you logging failed auth attempts?
- Are you using or adding any cryptographic features? No
  - Do you use a standard proven implementations?
- Are the used keys controlled by the customer? Where are they stored?No
- Are you introducing any new policies/roles/users? **yes**
  - Have you used the least-privilege principle? How? **yes**


By submitting this pull request, I confirm that my contribution is made
under the terms of the Apache 2.0 license.

---------

Co-authored-by: trajopadhye <tejas.rajopadhye@yahooinc.com>
@dlpzx dlpzx closed this as completed Feb 3, 2025
@github-project-automation github-project-automation bot moved this from Backlog to Done in Data.all Backlog Feb 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

No branches or pull requests

3 participants