Skip to content

feat: [UIE-9144] - IAM RBAC: perm check nodebalancer settings tab - #12871

Merged
aaleksee-akamai merged 3 commits into
linode:developfrom
aaleksee-akamai:UIE-9144-iam-nodebalancers-settings-tab
Sep 16, 2025
Merged

aaleksee-akamai merged 3 commits into
linode:developfrom
aaleksee-akamai:UIE-9144-iam-nodebalancers-settings-tab

Conversation

@aaleksee-akamai

Copy link
Copy Markdown
Contributor

Description 📝

This PR implements IAM RBAC permissions for NodeBalancer settings tab

Changes 🔄

List any change(s) relevant to the reviewer.

  • Implement permissions in the /nodebalancers/${nodebalancersId}/settings flow
  • Update unit tests
  • Filter the available firewalls in the /linodes/${linodeID}/networking Add Firewall flow

Scope 🚢

Upon production release, changes in this PR will be visible to:

  • All customers
  • Some customers (e.g. in Beta or Limited Availability)
  • No customers / Not applicable

Target release date 🗓️

09/23

Preview 📷

Before After
image image
image 📷
image image
image 📷

How to test 🧪

Prerequisites

(How to setup test environment)

  • MSW or iam (restricted) + regular account to compare

To test the create_firewall_device, delete_firewall_device permissions, use the account_firewall_admin or firewall_admin roles.
To test the update_nodebalancer, delete_nodebalancer permissions, use the nodebalancer_admin and/or nodebalancer_viewer roles.

Verification steps

(How to verify changes)

  • Confirm the buttons/inputs are disabled according the grant model with IAM is off, and according to the RBAC model when IAM is on.
  • Confirm the list of firewalls is filtered based on permissions for assigning to nodebalancer/linode entity
Author Checklists

As an Author, to speed up the review process, I considered 🤔

👀 Doing a self review
❔ Our contribution guidelines
🤏 Splitting feature into small PRs
➕ Adding a changeset
🧪 Providing/improving test coverage
🔐 Removing all sensitive information from the code and PR description
🚩 Using a feature flag to protect the release
👣 Providing comprehensive reproduction steps
📑 Providing or updating our documentation
🕛 Scheduling a pair reviewing session
📱 Providing mobile support
♿ Providing accessibility support


  • I have read and considered all applicable items listed above.

As an Author, before moving this PR from Draft to Open, I confirmed ✅

  • All tests and CI checks are passing
  • TypeScript compilation succeeded without errors
  • Code passes all linting rules

@aaleksee-akamai
aaleksee-akamai requested a review from a team as a code owner September 12, 2025 10:57
@aaleksee-akamai
aaleksee-akamai requested review from bnussman-akamai and hasyed-akamai and removed request for a team September 12, 2025 10:57

@abailly-akamai abailly-akamai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Image

I find it odd I am able to add a firewall device to a nodebalancer I only have viewer permissions for. I assume it's ok since it appears API seems to allow it, but wanted to point it out

: {};
const disabledProps =
!firewallPermissions.delete_firewall_device &&
!nodeBalancerPermissions.update_nodebalancer

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Should this be

!firewallPermissions.delete_firewall_device || !nodeBalancerPermissions.update_nodebalancer

here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

we need to check both permissions for unassigning a firewall, if user doesn't have a update permission for nodebalancer, he will have an unauthorized error (however, he can assign a firewall)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

and my previous condition didn't work, updated it to
!(firewallPermissions.delete_firewall_device && nodeBalancerPermissions.update_nodebalancer)

@linode-gh-bot

Copy link
Copy Markdown

Cloud Manager UI test results

🔺 1 failing test on test run #3 ↗︎

❌ Failing✅ Passing↪️ Skipped🕐 Duration
1 Failing744 Passing6 Skipped39m 11s

Details

Failing Tests
SpecTest
object-storage-objects-multicluster.spec.tsCloud Manager Cypress Tests→Object Storage Multicluster objects » "before all" hook for "can upload, access, and delete objects"

Troubleshooting

Use this command to re-run the failing tests:

pnpm cy:run -s "cypress/e2e/core/objectStorageMulticluster/object-storage-objects-multicluster.spec.ts"

@github-project-automation github-project-automation Bot moved this from Review to Approved in Cloud Manager Sep 15, 2025
@corya-akamai corya-akamai added the Approved Multiple approvals and ready to merge! label Sep 15, 2025
@aaleksee-akamai
aaleksee-akamai merged commit 9f6233f into linode:develop Sep 16, 2025
34 of 35 checks passed
@github-project-automation github-project-automation Bot moved this from Approved to Merged in Cloud Manager Sep 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Approved Multiple approvals and ready to merge! IAM (Identity & Access Management) NodeBalancers Relating to NodeBalancers

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

4 participants