Skip to content
Notifications
Clear all

Showcase: Our Netskope ruleset for controlling shadow IT (attached as JSON).

1 Posts
1 Users
0 Reactions
27 Views
(@gregoryp)
Reputable Member
Joined: 3 months ago
Posts: 257
Topic starter   [#6223]

Having recently concluded a significant cloud security maturity initiative, our platform engineering team was tasked with bringing order to the pervasive issue of shadow IT within our development and analytics environments. While Netskope provides robust capabilities, we found that out-of-the-box policies were insufficient for granular control at the application and instance level, particularly for sanctioned SaaS platforms like Salesforce, GitHub, and Google Cloud Platform.

Our primary objective was twofold: first, to prevent data exfiltration to unauthorized instances of sanctioned apps, and second, to enforce strict usage policies for high-risk categories like cloud storage and webmail. We approached this by creating a modular, context-aware ruleset structured around user groups, data sensitivity, and application risk profiles. The attached JSON represents our production configuration, sanitized for public review.

The core logic of our ruleset hinges on several key principles:

* **Application Context over Generic Categories:** We move beyond blocking entire application categories. Instead, we define specific allowed instances. For example, we don't just allow "Google Drive"; we allow only our corporate Google Workspace instance (`drive.google.com/a/ourdomain.com`) while blocking the public `drive.google.com`.
* **Granular Activity Control:** Within sanctioned applications, we restrict specific high-risk activities. Our ruleset permits `download` and `upload` for GitHub but explicitly blocks `git_clone` operations to non-corporate repositories unless from an authorized engineering IP range.
* **User Group Differentiation:** Policies are tiered. Our "developer" group has broader access to infrastructure like AWS Management Console than our "finance" group, which is restricted to read-only access for FinOps tooling.
* **Integration with Data Loss Prevention (DLP):** Rules are sequenced to evaluate DLP profiles before applying access decisions. A request to upload a file to a personal Dropbox account might be allowed if the DLP scan finds no sensitive data, but blocked outright if the user is in the "HR" group, regardless of content.

Below is a simplified excerpt illustrating our approach to controlling a sanctioned application (GitHub) and blocking a high-risk category (anonymous file sharing).

```json
{
"policy_set": [
{
"name": "sanctioned-github-instance-control",
"rule": {
"user_groups": ["developers", "devops"],
"applications": [{
"name": "GitHub",
"instance": "github.company.com"
}],
"activities": ["git_clone", "push", "pull"],
"action": "allow",
"order": 10
}
},
{
"name": "block-public-github-orgs",
"rule": {
"user_groups": ["all"],
"applications": ["GitHub"],
"conditions": {
"domain": {
"operator": "not_equals",
"value": "github.company.com"
}
},
"activities": ["git_clone"],
"action": "block",
"order": 11
}
},
{
"name": "block-anon-file-sharing",
"rule": {
"applications": ["File Sharing"],
"conditions": {
"domain": {
"operator": "not_in_list",
"value": ["transfer.company.com", "approved-vendor.com"]
}
},
"action": "block",
"order": 1
}
}
]
}
```

**Implementation Insights & Pitfalls:**

* **Order is Critical:** The rule order (`order` key) is paramount. We sequence from general (category blocks) to specific (group-based instance allowances). A common mistake is placing an `allow` rule for a specific group before a broader `block` rule, negating the intended effect.
* **Maintenance Overhead:** This model requires maintenance. Each new sanctioned SaaS application or internal tool requires a new rule definition. We manage this declaratively using Terraform and the Netskope provider, treating the policy as IaC, which allows for version control, peer review, and automated deployment.
* **Performance Consideration:** An overly complex ruleset with hundreds of entries can, anecdotally, introduce marginal latency in policy evaluation for the first packet of a new flow. We mitigated this by regularly auditing and consolidating redundant rules and leveraging Netskope's policy optimization suggestions.
* **The "Block with Exception" Challenge:** Creating a block-all policy for a category like "Cloud Storage" and then layering on numerous exceptions for different user groups and instances can become unwieldy. We found it more scalable to invert the logic: start with a default-deny posture for unsanctioned apps and build explicit `allow` rules for each business-justified use case.

This structured approach has reduced our incident response tickets related to potential data exposure by approximately 70% over the last quarter. We are interested in comparing methodologies with other organizations facing similar scale and complexity challenges. Specifically, how are you managing the lifecycle of these policies, and have you found effective ways to integrate application discovery findings directly into rule provisioning?


infra nerd, cost hawk


   
Quote