Skip to main content

Service Accounts

· 5 min read

At Spider, I am continuously working to enhance our platform to meet the evolving needs of our users and integrate seamlessly into modern development and operations workflows.

I'm excited to announce the release of Service Accounts, a feature designed to provide a secure and programmatic way for third-party applications and scripts to interact with Spider API using standard OAuth2 client_credentials flow.

Why Service Accounts?

Spider provides deep visibility into your network communications, capturing packets, TLS secrets, and hostnames to rebuild and analyse interactions within your distributed systems.

While the Web UI offers powerful tools for analysis and debugging, there's often a need for automated access to this data or the ability to trigger actions programmatically.

Previously, integrating external tools or automating tasks might have required using personal user credentials, which is not ideal for security or auditability.
The Service Accounts feature addresses this by providing dedicated identities for your applications.

The Added Value

Service Accounts bring several key benefits for automating and integrating with Spider:

  • Enhanced Security:
    • Instead of using personal user accounts, applications can authenticate with their own credentials.
    • This isolates access and reduces the security risk associated with shared or compromised user accounts.
  • Granular Permissions:
    • Service Accounts can be granted specific permissions, limiting their access only to the data and features they need.
    • This aligns with the principle of least privilege and improves your overall security posture.
  • Improved Auditability:
    • Actions performed by a Service Account can be clearly distinguished from actions performed by human users, simplifying auditing and troubleshooting.
  • Automation Enablement:
    • Service Accounts are the standard way to allow automated processes and scripts to securely interact with APIs.
    • This unlocks possibilities for custom reporting, automated checks, integration with CI/CD pipelines, and more.

Design with much reuse

Spider is built using a microservices architecture with an Open API exposing REST APIs. The new Service Accounts feature leverages this existing API infrastructure to provide secure authentication for programmatic access.

Service account design reuses many current user's account features while replacing only some specific parts. As service account could be used in many use cases, reusing the user's account access, permissions and sharing features limit the new feature impacts in the code.

  • Service accounts are managed by the same microservice as user's accounts.
    • The only specific pieces are the creation API and the connection API.
  • Very limited changes have been made to the UI:
    • A new button is used to create the account on the UI
    • The user's profile details tab is adjusted to manage service accounts.
    • The Share tabs components have been adjusted as well.

Using standards

To make it easy for anyone to reuse Spider API, I decided to use well-known standards for third party connection rather than reusing Spider agents way of connecting - with custom signature.

Spider Service Accounts API connection offers OAuth2 client-credentials way for connection.
You may use either:

Basic Auth + application/x-www-form-urlencoded request body

POST /customer/v1/sessions/for/service-account
Authorization: Basic ...
Content-Type: application/x-www-form-urlencoded
Accept: application.json

grant_type=client_credentials

application/x-www-form-urlencoded request body only

POST /customer/v1/sessions/for/service-account
Content-Type: application/x-www-form-urlencoded
Accept: application.json

grant_type=client_credentials
&client_id=...
&client_secret=...

application/json request body

POST /customer/v1/sessions/for/service-account
Content-Type: application/json
Accept: application/json

{
"grant_type": "client_credentials",
"client_id": "...",
"client_secret": "..."
}

Response

The response is in JSON, and contains:

  • the JWT to reuse when calling the API,
  • its TTL
{
"access_token": "...",
"token_type": "Bearer",
"expires_in": 5400
}

When using wrong credentials, an error is returned.
The account is locked after a few consecutive unsuccessful attempts.

New permissions

Permissions have been added to manage Service Accounts, similar to those used to manage users:

SA_Permissions.png

UI changes

Managing Service Accounts is done directly within the Spider UI.

Users listing

Service accounts are listed after User's accounts in the User list drop down.
They have a nice robot icon 🤩

UserListing.png

It is possible to see only Service or User Accounts by searching ServiceAccount or Customer in the search input.

Service Account profiles

Service accounts profiles have a specific Profile tab:

SA_Profile.png

client_id and client_secret are the credentials to be used for connecting.

Client secret is stored encrypted and cannot be retrieved once created. You may set a random secret by clicking on the link, or edit it manually when editing the profile.

Sharing tabs of agents and teams

Team users listing as well as Agents sharing tabs have been updated to accept accounts ids as input on top of user's emails.
Thus, you can now add a service account to a team, or directly share agents with service accounts.

TeamSharing.png

The configuration options allow administrators to precisely control the scope of access granted to each Service Account.

Conclusion

I believe this addition will greatly enhance the flexibility and automation capabilities when working with Spider. Explore the API documentation to see what's possible!

To support this new feature, you will find a new section in the Spider administration documentation dedicated to API integration.