SGNL policies have been designed from the ground up with a goal to be human-readable, easy to understand, and simple to audit and maintain. With SGNL, we want to enable those that set organizational policies within an enterprise to have a seat at the table when policy is applied across applications and services.
The purpose of this quickstart guide is to provide a framework for establishing effective policies in your organization with SGNL. You can watch the video below for an overview of this quickstart guide.
The modern enterprise faces a broad range of challenges associated with authorization. Before embarking on any project to improve your organization’s security posture and accelerate business processes, defining a clear set of goals and objectives for the project is critical. You’ve probably already got some idea as to why you’re taking this project on, but it’s worth being intentional about what you’re working towards.
Common goals associated with rethinking your Enterprise Authorization strategy may include:
Once you’ve defined your goals, create a short, prioritized list of the top 2 or 3 that will dictate your success criteria.
With a clear set of goals in-hand, it’s time to determine the use-cases that will be most impactful to your business. When thinking about your use-cases, we recommend thinking about the Who (who is in scope of this use-case), What (what data does this use-case affect), Where (in what systems/apps/services do this use-case apply), When (when would this use-case be allowed or disallowed).
Let’s say your goal was:
To reduce the risk associated with any one of our employees or extended workforce having their account compromised.
You might have a few different, high priority use-cases:
It’s now time to describe each characteristic of your use-case in simple terms. Think about all of the systems in your environment that contain context about your business. Which of them would be authoritative for describing a specific characteristic of your use-case?
Taking the use case:
Characteristic | Description |
---|---|
Who: Customer Support team | Users in our HR System, Workday, that have a Role containing Support and report directly or indirectly to our Director of Customer Support |
What: Order records | Objects inside of our CRM solution that have a type of ‘Order’ |
Where: CRM Solution | Our CRM Solution is Salesforce |
When: With appropriate business justification | There needs to be an active ServiceNow Case that a user from the Customer created, that the Customer Support team member is the current assignee on |
SGNL Policies can contain snippets of different types, including principals, assets, actions, and conditions. Policies are intended to be human-readable and transferable from how you would describe the policies within your organization.
The next step is to describe your use-case in the format that SGNL uses to express policy.
Taking the use case:
Principal Snippets:
Policy Type:
Action Snippets (Optional):
Asset Snippets (Optional):
Condition Snippets (Optional):
Resulting in:
Now that you’ve successfully described each part of a SGNL policy, you can get into the details about what each of your Snippets mean, and how SGNL can get the data to enable them to be evaluated, the table below is a handy way to structure your discovery.
In the table, detail how you might define each of the snippets, where the data comes from (data sources), and what attributes or relationships to look at (both within data sources and across them)
Policy Details | ||||
Use Case 1 | Our Customer Support team should only be able to access a Customer’s orders in our CRM solution if they have business justification | |||
SGNL Policy 1 | [Customer Support] can [access] [Customer orders] if [an active customer case is assigned] | |||
Principal Snippet(s) | ||||
Policy Snippet | Data Source | Entity Type | Key Field (Key) | Field Value (Value) |
---|---|---|---|---|
Customer Support | Workday | User | Role | ~“Support” |
and | ||||
Workday | User | Manager.title | “Director of Customer Support” | |
Asset Snippet(s) | ||||
Policy Snippet | Data Source | Entity Type | Key Field (Key) | Field Value (Value) |
Customer orders | Salesforce | Order | Account | exists |
Condition Snippet(s) | ||||
Policy Snippet | Data Source | Entity Type | Key Fields (Key) | Field Value (Value) |
An active customer case is assigned | Workday, ServiceNow, Salesforce | User, \ Case, Account | User employeeId, Case Assignee, Case Customer, Customer Id | Step 1: Workday User (Related by: email address, to) |
Step 2: ServiceNow User (Related by: assignee, to) | ||||
Step 3: ServiceNow Case (Related by: customerId, to) | ||||
Step 4: Salesforce Account | ||||
and | ||||
ServiceNow | Case | status | “Active” | |
Action Snippet(s) | ||||
Policy Snippet | Request context | |||
Access | * - Any action |
Now that you’ve formulated how your policies and snippets are going to look, you need to onboard the required Systems of Record, the protected systems you want to protect (i.e. your apps/services), and start building your snippets and policies inside of SGNL.