User lists are local white- or blacklists of usernames that allow fine-control over who can access a connection or a channel.
NOTE: User lists on SPS cannot prevent a user from accessing the server from a local terminal.
You can use user lists when configuring gateway_groups or remote_groups in the allowed_for element of channel policies. For more information on configuring channel policies, see Channel policy.
To use this option, you must also configure web gateway authentication in the connection policy, or client-side gateway authentication back-end in the authentication policy.
URL
GET https://<IP-address-of-SPS>/api/configuration/policies/userlists
Sample request
The following command lists the user lists created on SPS.
curl --cookie cookies https://<IP-address-of-SPS>/api/configuration/policies/userlists
The following command retrieves the properties of a specific list.
curl --cookie cookies https://<IP-address-of-SPS>/api/configuration/policies/userlists/<key-id>
Response
The following is a sample response received when retrieveing the user lists.
The keys with negative ID values are the default user lists of SPS.
{
"meta": {
"first": "/api/configuration/policies/audit_policies",
"href": "/api/configuration/policies/userlists",
"last": "/api/configuration/policies/usermapping_policies",
"next": "/api/configuration/policies/usermapping_policies",
"parent": "/api/configuration/policies",
"previous": "/api/configuration/policies/user_databases",
"transaction": "/api/transaction"
},
"items": [
{
"key": "-1",
"meta": {
"href": "/api/configuration/policies/userlists/-1"
}
},
{
"key": "-2",
"meta": {
"href": "/api/configuration/policies/userlists/-2"
}
},
{
"key": "-3",
"meta": {
"href": "/api/configuration/policies/userlists/-3"
}
},
{
"key": "-4",
"meta": {
"href": "/api/configuration/policies/userlists/-4"
}
},
{
"key": "20088200245706af301b1ba",
"meta": {
"href": "/api/configuration/policies/userlists/20088200245706af301b1ba"
}
}
]
}
When retrieving the endpoint of a specific user list, the response is the following.
{
"body": {
"allow": "no_user",
"except": [
"root"
],
"name": "root_only"
},
"key": "-4",
"meta": {
"href": "/api/configuration/policies/userlists/-4"
}
},
"key": "-4",
"meta": {
"first": "/api/configuration/policies/userlists/-1",
"href": "/api/configuration/policies/userlists/-4",
"last": "/api/configuration/policies/userlists/20088200245706af301b1ba",
"next": "/api/configuration/policies/userlists/20088200245706af301b1ba",
"parent": "/api/configuration/policies/userlists",
"previous": "/api/configuration/policies/userlists/-3",
"transaction": "/api/transaction"
}
}
key |
|
string |
Top level element, contains the ID of the user list |
body |
|
Top level element (string) |
The elements of the user policy. |
|
allow |
string |
The default policy of the user list. Possible values are:
-
all_users creates a blacklist, where every user is permitted, except the ones listed in the except field.
-
no_user creates a whitelist, where only the users listed in the except field are allowed access. |
|
name |
string |
The name of the user list. |
|
except |
list |
The usernames added to the list. |
201 |
Created |
The new resource was successfully created. |
400 |
InvalidQuery |
The requested filter or its value is invalid. |
401 |
Unauthenticated |
The requested resource cannot be retrieved because the client is not authenticated and the resource requires authorization to access it. The details section contains the path that was attempted to be accessed, but could not be retrieved. |
403 |
Unauthorized |
The requested resource cannot be retrieved because the client is not authorized to access it. The details section contains the path that was attempted to be accessed, but could not be retrieved. |
404 |
NotFound |
The requested object does not exist. |
Examples
The following defines a blacklist called no_root that permits every username except root.
{
"allow": "all_users",
"except": [
"root"
],
"name": "no_root"
}
The following defines a whitelist called my_list that permits only the permitted_user1 and permitted_user2 usernames.
{
"allow": "no_user",
"except": [
"permitted_user1",
"permitted_user2"
],
"name": "no_root"
}
Add a user list
To add a user list, you have to:
-
Create the JSON object for the new user list.
POST the JSON object to the https://<IP-address-of-SPS>/api/configuration/policies/userlists endpoint. You can find a detailed description of the available parameters listed in Element .
If the POST request is successful, the response includes the key of the new user list. For example:
{
"key": "321314dc-eca0-4e97-b445-0612fedc0165",
"meta": {
"href": "/api/configuration/policies/userlists/321314dc-eca0-4e97-b445-0612fedc0165",
"parent": "/api/configuration/policies/userlists",
"transaction": "/api/transaction"
}
}
Modify a user list
To modify a user list, you have to:
-
Modify the JSON object of the user list.
PUT the modified JSON object to the https://<IP-address-of-SPS>/api/configuration/policies/userlists/<key-of-the-object> endpoint. You can find a detailed description of the available parameters listed in Element .
List of endpoints for configuring the policies, options and connection rules of HTTP connections.
URL
GET https://<IP-address-of-SPS>/api/configuration/http
Sample request
The following command lists the available settings for configuring for HTTP connections.
curl --cookie cookies https://<IP-address-of-SPS>/api/configuration/http
Response
The following is a sample response received when listing the configuration settings.
{
"items": [
{
"key": "authentication_policies",
"meta": {
"href": "/api/configuration/http/authentication_policies"
}
},
{
"key": "channel_policies",
"meta": {
"href": "/api/configuration/http/channel_policies"
}
},
{
"key": "connections",
"meta": {
"href": "/api/configuration/http/connections"
}
},
{
"key": "options",
"meta": {
"href": "/api/configuration/http/options"
}
},
{
"key": "settings_policies",
"meta": {
"href": "/api/configuration/http/settings_policies"
}
}
],
"meta": {
"first": "/api/configuration/aaa",
"href": "/api/configuration/http",
"last": "/api/configuration/x509",
"next": "/api/configuration/ica",
"parent": "/api/configuration",
"previous": "/api/configuration/datetime",
"transaction": "/api/transaction"
}
}
authentication_policies |
List of the default and custom authentication policies. |
channel_policies |
List of the default and custom channel policies. |
connections |
List of the HTTP connection policies. |
options |
List of global HTTP options that affect all connections. |
settings_policies |
List of protocol-level settings (idle and session timeout). You can create multiple variations, and choose the appropriate one for each connection policy. |
401 |
Unauthenticated |
The requested resource cannot be retrieved because the client is not authenticated and the resource requires authorization to access it. The details section contains the path that was attempted to be accessed, but could not be retrieved. |
403 |
Unauthorized |
The requested resource cannot be retrieved because the client is not authorized to access it. The details section contains the path that was attempted to be accessed, but could not be retrieved. |
404 |
NotFound |
The requested object does not exist. |
Connection policies determine if a server can be accessed from a particular client. Connection policies reference other resources (policies, usergroups, keys) that must be configured and available before creating a connection policy.
URL
GET https://<IP-address-of-SPS>/api/configuration/http/connections/
Sample request
The following command lists HTTP connection policies.
curl --cookie cookies https://<IP-address-of-SPS>/api/configuration/http/connections/
The following command retrieves the properties of a specific policy.
curl --cookie cookies https://<IP-address-of-SPS>/api/configuration/http/connections/<connection-key>
Response
The following is a sample response received when querying an HTTP connection policy with proxy connection.
{
"key": "http-connection-simple-proxy",
"body":
{
"name": "http_proxy",
"active": true,
"network": {
"clients": ["0.0.0.0/0"],
"targets": ["0.0.0.0/0"],
"ports": [3128]
},
"server_address": {
"selection": "inband",
"dns_server": null,
"dns_suffixes": [],
"exception_domains": [],
"domains": [
{
"domain": {
"selection": "domain",
"value": "*"
},
"port": 80
}
]
},
"source_address": {
"selection": "box_address"
},
"web_proxy": {
"enabled": true,
"transport_security": {
"selection": "disabled"
}
},
"transport_security": {
"selection": "disabled"
},
"access_control": [],
"indexing": {
"enabled": true,
"policy": {
"key": "-50000",
"meta": { "href": "/api/configuration/policies/indexing/-50000" }
},
"priority": 3
},
"rate_limit": {
"enabled": false
},
"log_audit_trail_downloads": true,
"channel_database_cleanup": {
"enabled": false
},
"policies": {
"channel_policy": {
"key": "-304001002",
"meta": { "href": "/api/configuration/http/channel_policies/-304001002" }
},
"settings": {
"key": "-3040010",
"meta": { "href": "/api/configuration/http/settings_policies/-3040010" }
},
"audit_policy": {
"key": "78101850949e47437dd91d",
"meta": { "href": "/api/configuration/policies/audit_policies/78101850949e47437dd91d" }
},
"ldap_server": null,
"backup_policy": null,
"authentication_policy": {
"key": "-304002001",
"meta": { "href": "/api/configuration/http/authentication_policies/-304002001" }
},
"usermapping_policy": null,
"archive_cleanup_policy": null,
"analytics_policy": null
}
}
}
key |
|
|
string |
Top level element, contains the ID of the connection policy. |
body |
|
|
Top level element (string) |
Contains the properties of the connection policy. |
|
name |
|
string |
The name of the connection policy |
|
active |
|
boolean |
Set to false to suspend the connection policy. Connection settings are preserved. |
|
network |
|
Top level element |
|
|
|
clients |
list, string |
List of client ("from") IP addresses. |
|
|
ports |
list, integers |
List of target ports. |
|
|
targets |
list, string |
List of target IP addresses. |
|
server_address |
|
Top level item |
Defines the address where the clients connect to. |
|
source_address |
|
Top level element |
Allows you to configure Source Network Address Translation (SNAT) on the server side of SPS. SNAT determines the IP address SPS uses in the server-side connection. The target server will see the connection coming from this address. |
|
|
selection |
string |
Configures Source Network Address Translation. Possible values are:
-
box_address
Default. Uses the network address of the logical interface of SPS.
-
original
Uses the IP address of the client, as seen by SPS.
-
fix
Uses a fixed address when connecting to the remote server.
Must be used with the address element. |
|
|
address |
string |
Must be used if the value of the selection element is set to fix.
The IP address to use as the source address in server-side connections. |
|
web_proxy |
|
Top level element |
This will allow the clients to use SPS as an HTTP web proxy. |
|
|
enabled |
boolean |
When set to true This will allow the clients to use SPS as an HTTP web proxy. |
|
|
transport_security |
Top level element |
Configures the transport security (TLS) of the web proxy connection, between the client and SPS. Note that this setting requires a compatible client application that is capable of using TLS-secured web proxy connections. |
|
transport_security |
|
Top level element |
Configures the end-to-end encryption used in the sessions. |
|
access_control |
|
Top level list |
Collection of access policies. Access policies define who can authorize and audit a connection. |
|
indexing |
|
Top level item |
Configures indexing for the connection policy. |
|
|
enabled |
boolean |
Set to true to enable indexing the connections. |
|
|
policy |
string |
References the identifier of the indexing policy. You can configure indexing policies at the /api/configuration/policies/indexing/ endpoint.
To modify or add an indexing policy, use the value of the returned key as the value of the policy element, and remove any child elements (including the key). |
|
|
priority |
int |
Specifies the indexing priority for the connection. Possible values are:
|
|
rate_limit |
|
Top level element |
Connection rate limit. |
|
|
enabled |
boolean |
Set to true to provide a connection rate limit. |
|
|
value |
int |
The number of connections (per minute) that are allowed in the connection policy. |
|
log_audit_trail_downloads |
|
boolean |
Set to true to log audit trail downloads. |
|
channel_database_cleanup |
|
Top level item |
Configures cleanup of the connection metadata on the connection policy's level. |
|
|
days |
int |
Retention time, in days. Must not exceed the retention time of the archive_cleanup_policy, and the retention time configured in the global settings of the protocol.
The global settings of the HTTP protocol are available at the api/configuration/http/options endpoint. |
|
|
enabled |
boolean |
Set to true to enable periodical cleanup of the connection metadata. |
|
override_log_level |
|
Top level item |
|
|
policies |
|
Top level item |
List of policies referenced by the connection policy. |
|
|
channel_policy |
string |
You can configure HTTP channel policies at the /api/configuration/http/channel_policies/ endpoint. |
|
|
settings |
string |
You can configure HTTP settings policies at the /api/configuration/http/settings_policies/ endpoint. |
|
|
audit_policy |
string |
Cannot be null.
References the identifier of the audit policy. You can configure audit policies at the /api/configuration/policies/audit_policies/ endpoint.
To modify or add an audit policy, use the value of the returned key as the value of the audit_policy element, and remove any child elements (including the key). |
|
|
ldap_server |
string |
References the identifier of the LDAP server. You can configure LDAP servers at the /api/configuration/policies/ldap_servers/ endpoint.
To modify or add an LDAP server, use the value of the returned key as the value of the ldap_server element, and remove any child elements (including the key). |
|
|
backup_policy |
string |
References the identifier of the backup policy. You can configure backup policies at the /api/configuration/policies/backup_policies/ endpoint.
To modify or add a backup policy, use the value of the returned key as the value of the backup_policy element, and remove any child elements (including the key). |
|
|
authentication_policy |
string |
Cannot be null.
References the identifier of the authentication policy. You can configure authentication policies at the /api/configuration/http/authentication_policies/ endpoint.
To modify or add an authentication policy, use the value of the returned key as the value of the authentication_policy element, and remove any child elements (including the key). |
|
|
usermapping_policy |
string |
References the identifier of a Usermapping Policy. You can configure Usermapping Policies at the /api/configuration/policies/usermapping_policies/ endpoint.
To modify or add a Usermapping Policy, use the value of the returned key as the value of the usermapping_policies element, and remove any child elements (including the key). |
|
|
archive_cleanup_policy |
string |
References the identifier of the archive/cleanup policy. You can configure archive and cleanup policies at the /api/configuration/policies/archive_cleanup_policies/ endpoint.
To modify or add an archive/cleanup policy, use the value of the returned key as the value of the archive_cleanup_policy element, and remove any child elements (including the key). |
|
|
analytics_policy |
string |
References the identifier of the analytics policy. You can configure analytics policies at the /api/configuration/analytics/ endpoint.
To add or modify an analytics policy, use the value of the returned key as the value of the analytics element, and remove any child elements (including the key). |
custom_dns |
|
|
string |
|
selection |
|
|
string |
Configures the address where the clients connect to. Possible values are:
-
original
Connect to the same address specified by the client.
-
nat
Perform a network address translation on the target address.
Must be used with the network element.
-
fix
Must be used with the address and port elements.
-
inband
Extract the address of the server from the username.
Must be used with the domains element.
Optional elements: exception_domains, dns_server, and dns_suffixes. |
dns_server |
|
|
string |
Can only be used if selection is set to inband.
IP address or the hostname of the domain name server used to resolve the address of the target server. |
dns_suffixes |
|
|
list, string |
Can only be used if selection is set to inband.
If the clients do not include the domain name when addressing the server (for example they use username@server instead of username@server.example.com), SPS can automatically add domain information (for example example.com).
You can add multiple domain names. SPS attempts to resolve the target address by appending the domain names in the provided order, and uses the first successfully resolved address to establish the connection. |
domains |
|
|
Top level list |
Must be used if selection is set to inband. |
|
domain |
|
Top level item |
Lists the address ranges that are included in the connection policy. |
|
|
selection |
string |
Specifies if the target address range is provided as a domain or as an IP range. Possible values are:
|
|
|
value |
string |
The address range of the target server(s).
Use the selection element to specify if the address is an IP range, or a domain. |
|
port |
|
int |
The port of the targer server(s). |
exception_domains |
|
|
Top level list |
Can only be used if selection is set to inband.
Lists the address ranges that are excluded from the connection policy. |
|
domain |
|
Top level item |
Contains the excluded address range. |
|
|
selection |
string |
Specifies if the excluded address(es) are provided as a domain or as an IP range. Possible values are:
|
|
|
value |
string |
The excluded address(es).
Use the selection element to specify if the address is an IP range, or a domain. |
|
port |
|
int |
The excluded port. |
selection |
|
|
string |
Configures the encryption used in the sessions.
-
disabled: Use unencrypted web proxy connection between the HTTP client and . "transport_security": {
"selection": "disabled"
},
-
tls: Enables TLS-encryption. "transport_security": {
"selection": "tls"
} |
host_certification_method |
|
|
JSON object |
Selects the certificate to show to the peers. You have the following options:
-
Use the same certificate for each connection:
Select this option if you want to use the same certificate for each connection. Note that you must reference a certificate that includes its private key that you have already uploaded to SPS. For details, see Certificates stored on SPS. "host_certification_method": {
"selection": "fix",
"x509_identity": "893b7eb7-8c6f-403a-ba3a-1d09dc4b4c7a"
}
-
Generate a certificate for the target requested by the client:
Select this option if you want to generate a certificate for the target requested by the client. Note that you must reference a Signing CA that you have already configured on SPS. For details, see Signing CA policies. "host_certification_method": {
"selection": "generate",
"signing_ca": "1904188625a843f11d30a5"
}, |
|
selection |
|
string |
Possible values:
- fix: if you want to use the same certificate for every peer.
- generate: if you want to generate a certificate for the target requested by the client.
|
|
x509_identity |
|
string |
Reference a certificate that includes its private key that you have already uploaded to SPS. For details, see Certificates stored on SPS. |
|
signing_ca |
|
string |
Reference the Signing CA that you have already configured on SPS. For details, see Signing CA policies. |
selection |
|
|
string |
Configures the encryption used in the sessions.
-
disabled: Use unencrypted connection between the HTTP client and server. "transport_security": {
"selection": "disabled"
},
-
client-only: Enables half-sided TLS encryption. Require HTTPS on client side, and HTTP on server side. "transport_security": {
"selection": "client-only"
}
-
client-server: Enables end-to-end TLS-encryption. To allow unencrypted HTTP requests in addition to HTTPS requests, set allow_non_encrypted to true. "transport_security": {
"selection": "client-server",
"allow_non_encrypted": true
"server_certificate_check": {}
} |
allow_non_encrypted |
|
|
boolean |
Only if selection is set to client_server. To allow unencrypted HTTP requests in addition to HTTPS requests, set allow_non_encrypted to true. |
server_certificate_check |
|
|
Top level item |
By default, SPS accepts any certificate shown by the server. "server_certificate_check": {
"enabled": false
},
To verify the certificate of the destination server, configure and reference a Trusted CA list. "server_certificate_check": {
"enabled": true,
"trusted_ca": "9106862955a844051d7bf6"
}, |
|
enabled |
|
boolean |
To verify the certificate of the destination server, set to true. In this case, you will also have to reference a trusted_ca. |
|
trusted_ca |
|
string |
Reference a Trusted CA list. |
host_certification_method |
|
|
JSON object |
Selects the certificate to show to the peers. You have the following options:
-
Use the same certificate for each connection:
Select this option if you want to use the same certificate for each connection. Note that you must reference a certificate that includes its private key that you have already uploaded to SPS. For details, see Certificates stored on SPS. "host_certification_method": {
"selection": "fix",
"x509_identity": "893b7eb7-8c6f-403a-ba3a-1d09dc4b4c7a"
}
-
Generate a certificate for the target requested by the client:
Select this option if you want to generate a certificate for the target requested by the client. Note that you must reference a Signing CA that you have already configured on SPS. For details, see Signing CA policies. "host_certification_method": {
"selection": "generate",
"signing_ca": "1904188625a843f11d30a5"
}, |
|
selection |
|
string |
Possible values:
- fix: if you want to use the same certificate for every peer.
- generate: if you want to generate a certificate for the target requested by the client.
|
|
x509_identity |
|
string |
Reference a certificate that includes its private key that you have already uploaded to SPS. For details, see Certificates stored on SPS. |
|
signing_ca |
|
string |
Reference the Signing CA that you have already configured on SPS. For details, see Signing CA policies. |
authorizer |
|
string |
The usergroup (local or LDAP) who can authorize or audit the connection.
Local usergroups can be added or modified at the /api/configuration/aaa/local_database/groups/ endpoint. |
permission |
|
string |
Defines the permissions of the authorizer usergroup. Possible values are:
-
audit
The usergroup with the audit permission can monitor ongoing connections, and download the audit trails of a closed and indexed connection.
-
authorize
The usergroup with the authorize permission can authorize connection requests.
-
audit_and_authorize
The usergroup with the audit_and_authorize permission can authorize connection requests, monitor connections, and download the audit trail of closed and indexed connections. |
require_different_ip |
|
boolean |
Set to true to require the authorizing user and its subject to have different IP addresses. |
require_different_username |
|
boolean |
Set to true to require the authorizing user and its subject to have different usernames. |
subject |
|
Top level item |
Defines the subjects of the access control policy. |
|
group |
string |
The usergroup (local or LDAP) that is subject to the access control policy.
Local usergroups can be added or modified at the /api/configuration/aaa/local_database/groups/ endpoint. |
|
selection |
string |
Possible values:
-
everybody
Every user is subject to the access control policy.
-
only
Requires the group element.
Members of the usergroup specified in the group element are subject to the access control policy. |
201 |
Created |
The new resource was successfully created. |
400 |
InvalidQuery |
The requested filter or its value is invalid. |
404 |
NotFound |
The requested object does not exist. |