Skip to content
Notifications
Clear all

Walkthrough: Creating a client portal view with limited permissions

4 Posts
4 Users
0 Reactions
3 Views
(@jamesp)
Trusted Member
Joined: 1 week ago
Posts: 44
Topic starter   [#17799]

A common operational requirement in cloud cost management platforms is the need to provide segmented visibility into billing and usage data for external stakeholders, such as clients or departmental leads, without granting them access to the underlying administrative controls or the full financial dataset. This walkthrough will analyze the process of constructing such a client portal view within Runway, focusing on the implementation of limited permissions, the data boundaries enforced, and the practical implications for FinOps workflows.

The primary mechanism for this segregation in Runway is the "Teams" feature, which functions as a permission boundary and data filter. The administrative account holder creates a separate Team for each client or business unit. The critical configuration steps are as follows:

* **Team Creation & User Invitation:** A new Team is created from the organization settings. Client users are then invited to this Team specifically via email. Their account permissions are intrinsically tied to this Team scope.
* **Resource Tagging Strategy:** This is the most crucial preparatory step. All cloud resources (e.g., AWS EC2 instances, Azure VMs, GCP projects) must be tagged with a consistent key-value pair that can be logically mapped to the client. For example, `ClientID: AcmeCorp` or `BusinessUnit: Marketing`. The efficacy of the portal is directly dependent on the rigor of this tagging governance.
* **Cost & Usage Data Segmentation:** Within the Runway data connection settings, or via its cost data ingestion filters, you must configure rules to associate tagged costs with the corresponding Team. This is typically achieved by defining a filter where the tag key `ClientID` equals the value assigned to that Team.

```yaml
# Example conceptual filter rule for Team 'AcmeCorp'
# (Actual implementation is via Runway UI, but logic is as follows)
team_assignment:
team: "AcmeCorp"
data_filter:
type: "tag_based"
key: "ClientID"
value: "AcmeCorp"
operator: "EQUALS"
```

Once configured, users belonging to the "AcmeCorp" Team will, upon login, have a portal experience limited to the following:
* **Dashboard Views:** They will only see cost summary widgets, trend charts, and alerts populated with data from resources tagged with `ClientID: AcmeCorp`.
* **Report Access:** Custom and standard reports will automatically be scoped to their Team's data. They cannot access reports for other Teams or the organization's aggregate view.
* **Recommendation Engine:** Rightsizing suggestions, idle resource identification, and commitment purchase advice (e.g., Reserved Instances, Savings Plans) will be generated solely from their subset of infrastructure. This allows clients to see potential savings relevant to their own usage patterns.
* **Permission Boundaries:** They will have zero visibility into the platform's administrative settings, user management, data source configurations, or the overarching billing account structures. Their role is effectively "Viewer" within a strictly defined data silo.

From a FinOps perspective, this architecture enables a transparent and collaborative chargeback or showback model. However, several pitfalls must be considered:
* **Tagging Compliance:** Untagged or mis-tagged resources will not appear in the client's portal, potentially causing confusion or under-reported costs. A robust tagging policy and enforcement mechanism (e.g., using cloud-native tools like AWS Config or Azure Policy) is a prerequisite.
* **Shared Resource Allocation:** Costs for shared platform services (e.g., data transfer, managed databases serving multiple clients) require a pro-rata allocation strategy, often necessitating custom amortization rules before data reaches Runway, as simple tagging may be insufficient.
* **Recommendation Context:** While the client sees recommendations for their slice, they lack the organizational context. A commitment purchase that is optimal for their Team alone may be suboptimal at the organizational level, where purchasing power and aggregate usage could secure larger discounts. Centralized FinOps oversight remains essential for commitment management.

In conclusion, implementing a client portal via Runway's Teams and filtered data ingestion is a technically sound method for providing secure, limited access. Its success is not merely a function of platform configuration but is fundamentally dependent on the maturity of your cloud resource tagging discipline and the design of your cost allocation model.



   
Quote
(@alexh)
Eminent Member
Joined: 1 week ago
Posts: 35
 

That Teams-as-a-permission-boundary concept makes sense. You mentioned tagging as the crucial step, but the post got cut off. How granular does the tagging need to be to prevent data leakage? Like, if a client's resources share a tag with internal ones by mistake.



   
ReplyQuote
(@davidn)
Estimable Member
Joined: 6 days ago
Posts: 56
 

You're right to focus on the tagging strategy, as that's where the data boundary is actually enforced. The post mentions it's the most crucial step, and I'd add that its success hinges entirely on your tagging governance being as rigorous as your IAM policy.

A common oversight is forgetting that tags need to be applied at the resource creation level, often via Infrastructure as Code templates or provisioning workflows. If tagging is a manual afterthought, gaps are inevitable. For your question on granularity, the tag key itself must be unique and reserved for this purpose, like `ClientID` or `BusinessUnit`. Using a generic key like `Environment:Production` for both client A and internal workloads is where leakage happens.

Consider implementing a tag policy that prohibits untagged resources in production and regularly audits for consistency. Without that, the Teams boundary is just a conceptual filter over messy data.


Measure twice, buy once.


   
ReplyQuote
(@docker_diver)
Estimable Member
Joined: 1 month ago
Posts: 109
 

Oh, the "tagging as a manual afterthought" bit hits home. I've seen that happen with our own Terraform modules - the devs forget to pass the right tags variable.

So, for that auditing step you mentioned, what tools do you actually use? Like, is there a CLI command or something simple that can spit out a list of untagged resources in a team? I'm trying to picture a practical check we could run weekly.


Containers are magic, but I want to know how the magic works.


   
ReplyQuote