The Roles API enables you to add, remove, and retrieve roles in the native
realm. To use this API, you must have at least the manage_security cluster
privilege.
The Roles API is now the preferred way to manage roles.
To add a role, submit a PUT or POST request to the /_xpack/security/role/<rolename>
endpoint:
POST /_xpack/security/role/my_admin_role
{
"cluster": ["all"],
"indices": [
{
"names": [ "index1", "index2" ],
"privileges": ["all"],
"field_security" : { // optional
"grant" : [ "title", "body" ]
},
"query": "{\"match\": {\"title\": \"foo\"}}" // optional
}
],
"run_as": [ "other_user" ], // optional
"metadata" : { // optional
"version" : 1
}
}The name, cluster, and indices fields are required at the top-level.
Within the indices array, the names and privileges fields are required.
Within the metadata object, keys beginning with _ are reserved for system
usage.
A successful call returns a JSON structure that shows whether the role has been created or updated.
To retrieve a role from the native Security realm, issue a GET request to the
/_xpack/security/role/<rolename> endpoint:
GET /_xpack/security/role/my_admin_role
A successful call returns an array of roles with the JSON representation of the
role. If the role is not defined in the native realm, the request 404s.
{
"my_admin_role": {
"cluster" : [ "all" ],
"indices" : [ {
"names" : [ "index1", "index2" ],
"privileges" : [ "all" ],
"field_security" : {
"grant" : [ "title", "body" ]
},
"query" : "{\"match\": {\"title\": \"foo\"}}"
} ],
"run_as" : [ "other_user" ],
"metadata" : {
"version" : 1
}
}
}You can specify multiple roles as a comma-separated list. To retrieve all roles, omit the role name.
# Retrieve roles "r1", "r2", and "my_admin_role" GET /_xpack/security/role/r1,r2,my_admin_role # Retrieve all roles GET /_xpack/security/role
To delete a role, submit a DELETE request to the /_xpack/security/role/<rolename>
endpoint:
DELETE /_xpack/security/role/my_admin_role
If the role is successfully deleted, the request returns {"found": true}.
Otherwise, found is set to false.
{
"found" : true
}The Clear Roles Cache API evicts roles from the native role cache. To clear the
cache for a role, submit a POST request /_xpack/security/role/<rolename>/_clear_cache
endpoint:
POST /_xpack/security/role/my_admin_role/_clear_cache