Browse Source

[DOC] Splits role mapping APIs into separate pages (#32797)

Lisa Cawley 7 years ago
parent
commit
2feda8aae0

+ 8 - 0
docs/reference/redirects.asciidoc

@@ -531,3 +531,11 @@ native realm:
 * <<security-api-enable-user,Enable users>>, <<security-api-disable-user,Disable users>>
 * <<security-api-enable-user,Enable users>>, <<security-api-disable-user,Disable users>>
 * <<security-api-change-password,Change passwords>>
 * <<security-api-change-password,Change passwords>>
 * <<security-api-get-user,Get users>>
 * <<security-api-get-user,Get users>>
+
+[role="exclude",id="security-api-role-mapping"]
+=== Role mapping APIs
+
+You can use the following APIs to add, remove, and retrieve role mappings:
+
+* <<security-api-put-role-mapping,Add role mappings>>, <<security-api-delete-role-mapping,Delete role mappings>>
+* <<security-api-get-role-mapping,Get role mappings>>

+ 5 - 2
x-pack/docs/en/rest-api/defs.asciidoc

@@ -2,8 +2,8 @@
 [[ml-api-definitions]]
 [[ml-api-definitions]]
 == Definitions
 == Definitions
 
 
-These resource definitions are used in {ml} APIs and in {kib} advanced
-job configuration options.
+These resource definitions are used in {ml} and {security} APIs and in {kib} 
+advanced {ml} job configuration options.
 
 
 * <<ml-calendar-resource,Calendars>>
 * <<ml-calendar-resource,Calendars>>
 * <<ml-datafeed-resource,{dfeeds-cap}>>
 * <<ml-datafeed-resource,{dfeeds-cap}>>
@@ -13,6 +13,7 @@ job configuration options.
 * <<ml-jobstats,Job statistics>>
 * <<ml-jobstats,Job statistics>>
 * <<ml-snapshot-resource,Model snapshots>>
 * <<ml-snapshot-resource,Model snapshots>>
 * <<ml-results-resource,Results>>
 * <<ml-results-resource,Results>>
+* <<role-mapping-resources,Role mappings>>
 * <<ml-event-resource,Scheduled Events>>
 * <<ml-event-resource,Scheduled Events>>
 
 
 [role="xpack"]
 [role="xpack"]
@@ -26,6 +27,8 @@ include::ml/jobresource.asciidoc[]
 [role="xpack"]
 [role="xpack"]
 include::ml/jobcounts.asciidoc[]
 include::ml/jobcounts.asciidoc[]
 [role="xpack"]
 [role="xpack"]
+include::security/role-mapping-resources.asciidoc[]
+[role="xpack"]
 include::ml/snapshotresource.asciidoc[]
 include::ml/snapshotresource.asciidoc[]
 [role="xpack"]
 [role="xpack"]
 include::ml/resultsresource.asciidoc[]
 include::ml/resultsresource.asciidoc[]

+ 12 - 2
x-pack/docs/en/rest-api/security.asciidoc

@@ -7,7 +7,6 @@ You can use the following APIs to perform {security} activities.
 * <<security-api-authenticate>>
 * <<security-api-authenticate>>
 * <<security-api-clear-cache>>
 * <<security-api-clear-cache>>
 * <<security-api-privileges>>
 * <<security-api-privileges>>
-* <<security-api-role-mapping>>
 * <<security-api-ssl>>
 * <<security-api-ssl>>
 
 
 [float]
 [float]
@@ -20,6 +19,15 @@ You can use the following APIs to add, remove, and retrieve roles in the native
 * <<security-api-clear-role-cache,Clear roles cache>>
 * <<security-api-clear-role-cache,Clear roles cache>>
 * <<security-api-get-role,Get roles>>
 * <<security-api-get-role,Get roles>>
 
 
+[float]
+[[security-role-mapping-apis]]
+=== Role mappings
+
+You can use the following APIs to add, remove, and retrieve role mappings:
+
+* <<security-api-put-role-mapping,Add role mappings>>, <<security-api-delete-role-mapping,Delete role mappings>>
+* <<security-api-get-role-mapping,Get role mappings>>
+
 [float]
 [float]
 [[security-token-apis]]
 [[security-token-apis]]
 === Tokens
 === Tokens
@@ -44,17 +52,19 @@ native realm:
 include::security/authenticate.asciidoc[]
 include::security/authenticate.asciidoc[]
 include::security/change-password.asciidoc[]
 include::security/change-password.asciidoc[]
 include::security/clear-cache.asciidoc[]
 include::security/clear-cache.asciidoc[]
+include::security/create-role-mappings.asciidoc[]
 include::security/clear-roles-cache.asciidoc[]
 include::security/clear-roles-cache.asciidoc[]
 include::security/create-roles.asciidoc[]
 include::security/create-roles.asciidoc[]
 include::security/create-users.asciidoc[]
 include::security/create-users.asciidoc[]
+include::security/delete-role-mappings.asciidoc[]
 include::security/delete-roles.asciidoc[]
 include::security/delete-roles.asciidoc[]
 include::security/delete-tokens.asciidoc[]
 include::security/delete-tokens.asciidoc[]
 include::security/delete-users.asciidoc[]
 include::security/delete-users.asciidoc[]
 include::security/disable-users.asciidoc[]
 include::security/disable-users.asciidoc[]
 include::security/enable-users.asciidoc[]
 include::security/enable-users.asciidoc[]
+include::security/get-role-mappings.asciidoc[]
 include::security/get-roles.asciidoc[]
 include::security/get-roles.asciidoc[]
 include::security/get-tokens.asciidoc[]
 include::security/get-tokens.asciidoc[]
 include::security/get-users.asciidoc[]
 include::security/get-users.asciidoc[]
 include::security/privileges.asciidoc[]
 include::security/privileges.asciidoc[]
-include::security/role-mapping.asciidoc[]
 include::security/ssl.asciidoc[]
 include::security/ssl.asciidoc[]

+ 239 - 0
x-pack/docs/en/rest-api/security/create-role-mappings.asciidoc

@@ -0,0 +1,239 @@
+[role="xpack"]
+[[security-api-put-role-mapping]]
+=== Add role mappings API
+
+Adds and updates role mappings.
+
+==== Request
+
+`POST /_xpack/security/role_mapping/<name>` +
+
+`PUT /_xpack/security/role_mapping/<name>`
+
+
+==== Description
+
+Role mappings define which roles are assigned to each user. Each mapping has 
+_rules_ that identify users and a list of _roles_ that are
+granted to those users.  
+
+NOTE: This API does not create roles. Rather, it maps users to existing roles.
+Roles can be created by using <<security-api-roles, Role Management APIs>> or
+{stack-ov}/defining-roles.html#roles-management-file[roles files].
+
+For more information, see 
+{stack-ov}/mapping-roles.html[Mapping users and groups to roles].
+
+
+==== Path Parameters
+
+`name`::
+ (string) The distinct name that identifies the role mapping. The name is
+  used solely as an identifier to facilitate interaction via the API; it does
+  not affect the behavior of the mapping in any way.
+
+
+==== Request Body
+
+The following parameters can be specified in the body of a PUT or POST request
+and pertain to adding a role mapping:
+
+`enabled` (required)::
+(boolean)  Mappings that have `enabled` set to `false` are ignored when role
+mapping is performed.
+
+`metadata`::
+(object) Additional metadata that helps define which roles are assigned to each
+user. Within the `metadata` object, keys beginning with `_` are reserved for
+system usage.
+
+`roles` (required)::
+(list) A list of roles that are granted to the users that match the role mapping
+rules.
+
+`rules` (required)::
+(object) The rules that determine which users should be matched by the mapping.
+A rule is a logical condition that is expressed by using a JSON DSL. See 
+<<role-mapping-resources>>. 
+
+
+==== Authorization
+
+To use this API, you must have at least the `manage_security` cluster privilege.
+
+
+==== Examples
+
+The following example assigns the "user" role to all users:
+
+[source, js]
+------------------------------------------------------------
+POST /_xpack/security/role_mapping/mapping1
+{
+  "roles": [ "user"],
+  "enabled": true, <1>
+  "rules": {
+    "field" : { "username" : "*" }
+  },
+  "metadata" : { <2>
+    "version" : 1
+  }
+}
+------------------------------------------------------------
+// CONSOLE
+<1> Mappings that have `enabled` set to `false` are ignored when role mapping
+    is performed.
+<2> Metadata is optional.
+
+A successful call returns a JSON structure that shows whether the mapping has
+been created or updated.
+
+[source,js]
+--------------------------------------------------
+{
+  "role_mapping" : {
+    "created" : true <1>
+  }
+}
+--------------------------------------------------
+// TESTRESPONSE
+<1> When an existing mapping is updated, `created` is set to false.
+
+The following example assigns the "user" and "admin" roles to specific users:
+
+[source,js]
+--------------------------------------------------
+POST /_xpack/security/role_mapping/mapping2
+{
+  "roles": [ "user", "admin" ],
+  "enabled": true,
+  "rules": {
+     "field" : { "username" : [ "esadmin01", "esadmin02" ] }
+  }
+}
+--------------------------------------------------
+// CONSOLE
+
+The following example matches any user where either the username is `esadmin`
+or the user is in the `cn=admin,dc=example,dc=com` group:
+
+[source, js]
+------------------------------------------------------------
+POST /_xpack/security/role_mapping/mapping3
+{
+  "roles": [ "superuser" ],
+  "enabled": true,
+  "rules": {
+    "any": [
+      {
+        "field": {
+          "username": "esadmin"
+        }
+      },
+      {
+        "field": {
+          "groups": "cn=admins,dc=example,dc=com"
+        }
+      }
+    ]
+  }
+}
+------------------------------------------------------------
+// CONSOLE
+
+The following example matches users who authenticated against a specific realm:
+[source, js]
+------------------------------------------------------------
+POST /_xpack/security/role_mapping/mapping4
+{
+  "roles": [ "ldap-user" ],
+  "enabled": true,
+  "rules": {
+    "field" : { "realm.name" : "ldap1" }
+  }
+}
+------------------------------------------------------------
+// CONSOLE
+
+The following example matches users within a specific LDAP sub-tree:
+
+[source, js]
+------------------------------------------------------------
+POST /_xpack/security/role_mapping/mapping5
+{
+  "roles": [ "example-user" ],
+  "enabled": true,
+  "rules": {
+    "field" : { "dn" : "*,ou=subtree,dc=example,dc=com" }
+  }
+}
+------------------------------------------------------------
+// CONSOLE
+
+The following example matches users within a particular LDAP sub-tree in a
+specific realm:
+
+[source, js]
+------------------------------------------------------------
+POST /_xpack/security/role_mapping/mapping6
+{
+  "roles": [ "ldap-example-user" ],
+  "enabled": true,
+  "rules": {
+    "all": [
+      { "field" : { "dn" : "*,ou=subtree,dc=example,dc=com" } },
+      { "field" : { "realm.name" : "ldap1" } }
+    ]
+  }
+}
+------------------------------------------------------------
+// CONSOLE
+
+The rules can be more complex and include wildcard matching. For example, the
+following mapping matches any user where *all* of these conditions are met:
+
+- the _Distinguished Name_ matches the pattern `*,ou=admin,dc=example,dc=com`,
+  or the username is `es-admin`, or the username is `es-system`
+- the user in in the `cn=people,dc=example,dc=com` group
+- the user does not have a `terminated_date`
+
+
+[source, js]
+------------------------------------------------------------
+POST /_xpack/security/role_mapping/mapping7
+{
+  "roles": [ "superuser" ],
+  "enabled": true,
+  "rules": {
+    "all": [
+      {
+        "any": [
+          {
+            "field": {
+              "dn": "*,ou=admin,dc=example,dc=com"
+            }
+          },
+          {
+            "field": {
+              "username": [ "es-admin", "es-system" ]
+            }
+          }
+        ]
+      },
+      {
+        "field": {
+          "groups": "cn=people,dc=example,dc=com"
+        }
+      },
+      {
+        "except": {
+          "field": {
+            "metadata.terminated_date": null
+          }
+        }
+      }
+    ]
+  }
+}
+------------------------------------------------------------
+// CONSOLE

+ 50 - 0
x-pack/docs/en/rest-api/security/delete-role-mappings.asciidoc

@@ -0,0 +1,50 @@
+[role="xpack"]
+[[security-api-delete-role-mapping]]
+=== Delete role mappings API
+
+Removes role mappings.
+
+==== Request
+
+`DELETE /_xpack/security/role_mapping/<name>` 
+
+==== Description
+
+Role mappings define which roles are assigned to each user. For more information, 
+see {stack-ov}/mapping-roles.html[Mapping users and groups to roles]. 
+
+==== Path Parameters
+
+`name`::
+ (string) The distinct name that identifies the role mapping. The name is
+  used solely as an identifier to facilitate interaction via the API; it does
+  not affect the behavior of the mapping in any way.
+
+//==== Request Body
+
+==== Authorization
+
+To use this API, you must have at least the `manage_security` cluster privilege.
+
+
+==== Examples
+
+The following example delete a role mapping:
+
+[source,js]
+--------------------------------------------------
+DELETE /_xpack/security/role_mapping/mapping1
+--------------------------------------------------
+// CONSOLE
+// TEST[setup:role_mapping]
+
+If the mapping is successfully deleted, the request returns `{"found": true}`.
+Otherwise, `found` is set to false.
+
+[source,js]
+--------------------------------------------------
+{
+  "found" : true
+}
+--------------------------------------------------
+// TESTRESPONSE

+ 74 - 0
x-pack/docs/en/rest-api/security/get-role-mappings.asciidoc

@@ -0,0 +1,74 @@
+[role="xpack"]
+[[security-api-get-role-mapping]]
+=== Get role mappings API
+
+Retrieves role mappings.
+
+==== Request
+
+`GET /_xpack/security/role_mapping` +
+
+`GET /_xpack/security/role_mapping/<name>` 
+
+==== Description
+
+Role mappings define which roles are assigned to each user. For more information, 
+see {stack-ov}/mapping-roles.html[Mapping users and groups to roles]. 
+
+==== Path Parameters
+
+`name`::
+ (string) The distinct name that identifies the role mapping. The name is
+  used solely as an identifier to facilitate interaction via the API; it does
+  not affect the behavior of the mapping in any way. You can specify multiple 
+  mapping names as a comma-separated list. If you do not specify this
+  parameter, the API returns information about all role mappings. 
+
+//==== Request Body
+
+==== Results
+
+A successful call retrieves an object, where the keys are the
+names of the request mappings, and the values are the JSON representation of 
+those mappings. For more information, see 
+<<role-mapping-resources>>.
+
+If there is no mapping with the requested name, the
+response will have status code `404`.
+
+
+==== Authorization
+
+To use this API, you must have at least the `manage_security` cluster privilege.
+
+
+==== Examples
+
+The following example retrieves information about the `mapping1` role mapping:
+
+[source,js]
+--------------------------------------------------
+GET /_xpack/security/role_mapping/mapping1
+--------------------------------------------------
+// CONSOLE
+// TEST[setup:role_mapping]
+
+
+[source,js]
+--------------------------------------------------
+{
+  "mapping1": {
+    "enabled": true,
+    "roles": [
+      "user"
+    ],
+    "rules": {
+      "field": {
+        "username": "*"
+      }
+    },
+    "metadata": {}
+  }
+}
+--------------------------------------------------
+// TESTRESPONSE

+ 89 - 0
x-pack/docs/en/rest-api/security/role-mapping-resources.asciidoc

@@ -0,0 +1,89 @@
+[role="xpack"]
+[[role-mapping-resources]]
+=== Role mapping resources
+
+A role mapping resource has the following properties: 
+
+`enabled`::
+(boolean)  Mappings that have `enabled` set to `false` are ignored when role
+mapping is performed.
+
+`metadata`::
+(object) Additional metadata that helps define which roles are assigned to each
+user. Within the `metadata` object, keys beginning with `_` are reserved for
+system usage.
+
+`roles`::
+(list) A list of roles that are granted to the users that match the role mapping
+rules.
+
+`rules`::
+(object) The rules that determine which users should be matched by the mapping.
+A rule is a logical condition that is expressed by using a JSON DSL. The DSL supports the following rule types:
+`any`::: 
+(array of rules) If *any* of its children are true, it evaluates to `true`.
+`all`::: 
+(array of rules) If *all* of its children are true, it evaluates to `true`.
+`field`::: 
+(object) See <<mapping-roles-rule-field>>. 
+`except`::
+(object) A single rule as an object. Only valid as a child of an `all` rule. If 
+its child is `false`, the `except` is `true`.
+
+
+[float]
+[[mapping-roles-rule-field]]
+==== Field rules
+
+The `field` rule is the primary building block for a role mapping expression.
+It takes a single object as its value and that object must contain a single
+member with key _F_ and value _V_. The field rule looks up the value of _F_
+within the user object and then tests whether the user value _matches_ the
+provided value _V_.
+
+The value specified in the field rule can be one of the following types:
+[cols="2,5,3m"]
+|=======================
+| Type               | Description | Example
+
+| Simple String      | Exactly matches the provided value.                             | "esadmin"
+| Wildcard String    | Matches the provided value using a wildcard.                    | "*,dc=example,dc=com"
+| Regular Expression | Matches the provided value using a
+                       {ref}/query-dsl-regexp-query.html#regexp-syntax[Lucene regexp]. | "/.\*-admin[0-9]*/"
+| Number             | Matches an equivalent numerical value.                          | 7
+| Null               | Matches a null or missing value.                                | null
+| Array              | Tests each element in the array in
+                      accordance with the above definitions.
+                      If _any_ of elements match, the match is successful.             | ["admin", "operator"]
+|=======================
+
+[float]
+===== User fields
+
+The _user object_ against which rules are evaluated has the following fields:
+
+`username`::
+(string) The username by which {security} knows this user. For example, `"username": "jsmith"`.
+`dn`::
+(string) The _Distinguished Name_ of the user. For example, `"dn": "cn=jsmith,ou=users,dc=example,dc=com",`.
+`groups`::
+(array of strings) The groups to which the user belongs. For example, `"groups" : [ "cn=admin,ou=groups,dc=example,dc=com","cn=esusers,ou=groups,dc=example,dc=com ]`.
+`metadata`::
+(object) Additional metadata for the user. For example, `"metadata": { "cn": "John Smith" }`.
+`realm`::  
+(object) The realm that authenticated the user. The only field in this object is the realm name. For example, `"realm": { "name": "ldap1" }`.
+
+The `groups` field is multi-valued; a user can belong to many groups. When a
+`field` rule is applied against a multi-valued field, it is considered to match
+if _at least one_ of the member values matches. For example, the following rule
+matches any user who is a member of the `admin` group, regardless of any
+other groups they belong to:
+
+[source, js]
+------------------------------------------------------------
+{ "field" : { "groups" : "admin" } }
+------------------------------------------------------------
+// NOTCONSOLE
+
+For additional realm-specific details, see
+{stack-ov}/mapping-roles.html#ldap-role-mapping[Mapping Users and Groups to Roles].

+ 0 - 404
x-pack/docs/en/rest-api/security/role-mapping.asciidoc

@@ -1,404 +0,0 @@
-[role="xpack"]
-[[security-api-role-mapping]]
-=== Role Mapping APIs
-
-The Role Mapping API enables you to add, remove, and retrieve role mappings.
-
-==== Request
-
-`GET /_xpack/security/role_mapping` +
-
-`GET /_xpack/security/role_mapping/<name>` +
-
-`DELETE /_xpack/security/role_mapping/<name>` +
-
-`POST /_xpack/security/role_mapping/<name>` +
-
-`PUT /_xpack/security/role_mapping/<name>`
-
-==== Description
-
-Role mappings have _rules_ that identify users and a list of _roles_ that are
-granted to those users.
-
-NOTE: This API does not create roles. Rather, it maps users to existing roles.
-Roles can be created by using <<security-role-apis,role management APIs>> or
-{xpack-ref}/defining-roles.html#roles-management-file[roles files].
-
-The role mapping rule is a logical condition that is expressed using a JSON DSL.
-The DSL supports the following rule types:
-
-|=======================
-| Type     | Value Type (child)         | Description
-
-| `any`    | An array of rules          | If *any* of its children are true, it
-                                          evaluates to `true`.
-| `all`    | An array of rules          | If *all* of its children are true, it
-                                          evaluates to `true`.
-| `field`  | An object                  | See <<mapping-roles-rule-field>>
-| `except` | A single rule as an object | Only valid as a child of an `all`
-                                          rule. If its child is `false`, the
-                                          `except` is `true`.
-|=======================
-
-[float]
-[[mapping-roles-rule-field]]
-===== The Field Rule
-
-The `field` rule is the primary building block for a role-mapping expression.
-It takes a single object as its value and that object must contain a single
-member with key _F_ and value _V_. The field rule looks up the value of _F_
-within the user object and then tests whether the user value _matches_ the
-provided value _V_.
-
-The value specified in the field rule can be one of the following types:
-[cols="2,5,3m"]
-|=======================
-| Type               | Description | Example
-
-| Simple String      | Exactly matches the provided value.                             | "esadmin"
-| Wildcard String    | Matches the provided value using a wildcard.                    | "*,dc=example,dc=com"
-| Regular Expression | Matches the provided value using a
-                       {ref}/query-dsl-regexp-query.html#regexp-syntax[Lucene regexp]. | "/.\*-admin[0-9]*/"
-| Number             | Matches an equivalent numerical value.                          | 7
-| Null               | Matches a null or missing value.                                | null
-| Array              | Tests each element in the array in
-                      accordance with the above definitions.
-                      If _any_ of elements match, the match is successful.             | ["admin", "operator"]
-|=======================
-
-===== User Fields
-
-The _user object_ against which rules are evaluated has the following fields:
-[cols="1s,,,m"]
-|=======================
-| Name        | Type            | Description | Example
-
-| username    | string          | The username by which {security} knows this user. | `"username": "jsmith"`
-| dn          | string          | The _Distinguished Name_ of the user. | `"dn": "cn=jsmith,ou=users,dc=example,dc=com",`
-| groups      | array-of-string | The groups to which the user belongs. | `"groups" : [ "cn=admin,ou=groups,dc=example,dc=com",
-"cn=esusers,ou=groups,dc=example,dc=com ]`
-| metadata    | object          | Additional metadata for the user. | `"metadata": { "cn": "John Smith" }`
-| realm       | object          | The realm that authenticated the user. The only field in this object is the realm name. | `"realm": { "name": "ldap1" }`
-|=======================
-
-The `groups` field is multi-valued; a user can belong to many groups. When a
-`field` rule is applied against a multi-valued field, it is considered to match
-if _at least one_ of the member values matches. For example, the following rule
-matches any user who is a member of the `admin` group, regardless of any
-other groups they belong to:
-
-[source, js]
-------------------------------------------------------------
-{ "field" : { "groups" : "admin" } }
-------------------------------------------------------------
-// NOTCONSOLE
-
-For additional realm-specific details, see
-{xpack-ref}/mapping-roles.html#ldap-role-mapping[Mapping Users and Groups to Roles].
-
-
-==== Path Parameters
-
-`name`::
- (string) The distinct name that identifies the role mapping. The name is
-  used solely as an identifier to facilitate interaction via the API; it does
-  not affect the behavior of the mapping in any way. If you do not specify this
-  parameter for the Get Role Mappings API, it returns information about all
-  role mappings.
-
-
-==== Request Body
-
-The following parameters can be specified in the body of a PUT or POST request
-and pertain to adding a role mapping:
-
-`enabled` (required)::
-(boolean)  Mappings that have `enabled` set to `false` are ignored when role
-mapping is performed.
-
-`metadata`::
-(object) Additional metadata that helps define which roles are assigned to each
-user. Within the `metadata` object, keys beginning with `_` are reserved for
-system usage.
-
-`roles` (required)::
-(list) A list of roles that are granted to the users that match the role-mapping
-rules.
-
-`rules` (required)::
-(object) The rules that determine which users should be matched by the mapping.
-A rule is a logical condition that is expressed by using a JSON DSL.
-
-
-==== Authorization
-
-To use this API, you must have at least the `manage_security` cluster privilege.
-
-
-==== Examples
-
-[[security-api-put-role-mapping]]
-To add a role mapping, submit a PUT or POST request to the `/_xpack/security/role_mapping/<name>` endpoint. The following example assigns
-the "user" role to all users:
-
-[source, js]
-------------------------------------------------------------
-POST /_xpack/security/role_mapping/mapping1
-{
-  "roles": [ "user"],
-  "enabled": true, <1>
-  "rules": {
-    "field" : { "username" : "*" }
-  },
-  "metadata" : { <2>
-    "version" : 1
-  }
-}
-------------------------------------------------------------
-// CONSOLE
-<1> Mappings that have `enabled` set to `false` are ignored when role mapping
-    is performed.
-<2> Metadata is optional.
-
-A successful call returns a JSON structure that shows whether the mapping has
-been created or updated.
-
-[source,js]
---------------------------------------------------
-{
-  "role_mapping" : {
-    "created" : true <1>
-  }
-}
---------------------------------------------------
-// TESTRESPONSE
-<1> When an existing mapping is updated, `created` is set to false.
-
-The following example assigns the "user" and "admin" roles to specific users:
-
-[source,js]
---------------------------------------------------
-POST /_xpack/security/role_mapping/mapping2
-{
-  "roles": [ "user", "admin" ],
-  "enabled": true,
-  "rules": {
-     "field" : { "username" : [ "esadmin01", "esadmin02" ] }
-  }
-}
---------------------------------------------------
-// CONSOLE
-
-The following example matches any user where either the username is `esadmin`
-or the user is in the `cn=admin,dc=example,dc=com` group:
-
-[source, js]
-------------------------------------------------------------
-POST /_xpack/security/role_mapping/mapping3
-{
-  "roles": [ "superuser" ],
-  "enabled": true,
-  "rules": {
-    "any": [
-      {
-        "field": {
-          "username": "esadmin"
-        }
-      },
-      {
-        "field": {
-          "groups": "cn=admins,dc=example,dc=com"
-        }
-      }
-    ]
-  }
-}
-------------------------------------------------------------
-// CONSOLE
-
-The following example matches users who authenticated against a specific realm:
-[source, js]
-------------------------------------------------------------
-POST /_xpack/security/role_mapping/mapping4
-{
-  "roles": [ "ldap-user" ],
-  "enabled": true,
-  "rules": {
-    "field" : { "realm.name" : "ldap1" }
-  }
-}
-------------------------------------------------------------
-// CONSOLE
-
-The following example matches users within a specific LDAP sub-tree:
-
-[source, js]
-------------------------------------------------------------
-POST /_xpack/security/role_mapping/mapping5
-{
-  "roles": [ "example-user" ],
-  "enabled": true,
-  "rules": {
-    "field" : { "dn" : "*,ou=subtree,dc=example,dc=com" }
-  }
-}
-------------------------------------------------------------
-// CONSOLE
-
-The following example matches users within a particular LDAP sub-tree in a
-specific realm:
-
-[source, js]
-------------------------------------------------------------
-POST /_xpack/security/role_mapping/mapping6
-{
-  "roles": [ "ldap-example-user" ],
-  "enabled": true,
-  "rules": {
-    "all": [
-      { "field" : { "dn" : "*,ou=subtree,dc=example,dc=com" } },
-      { "field" : { "realm.name" : "ldap1" } }
-    ]
-  }
-}
-------------------------------------------------------------
-// CONSOLE
-
-The rules can be more complex and include wildcard matching. For example, the
-following mapping matches any user where *all* of these conditions are met:
-
-- the _Distinguished Name_ matches the pattern `*,ou=admin,dc=example,dc=com`,
-  or the username is `es-admin`, or the username is `es-system`
-- the user in in the `cn=people,dc=example,dc=com` group
-- the user does not have a `terminated_date`
-
-
-[source, js]
-------------------------------------------------------------
-POST /_xpack/security/role_mapping/mapping7
-{
-  "roles": [ "superuser" ],
-  "enabled": true,
-  "rules": {
-    "all": [
-      {
-        "any": [
-          {
-            "field": {
-              "dn": "*,ou=admin,dc=example,dc=com"
-            }
-          },
-          {
-            "field": {
-              "username": [ "es-admin", "es-system" ]
-            }
-          }
-        ]
-      },
-      {
-        "field": {
-          "groups": "cn=people,dc=example,dc=com"
-        }
-      },
-      {
-        "except": {
-          "field": {
-            "metadata.terminated_date": null
-          }
-        }
-      }
-    ]
-  }
-}
-------------------------------------------------------------
-// CONSOLE
-
-[[security-api-get-role-mapping]]
-To retrieve a role mapping, issue a GET request to the
-`/_xpack/security/role_mapping/<name>` endpoint:
-
-[source,js]
---------------------------------------------------
-GET /_xpack/security/role_mapping/mapping7
---------------------------------------------------
-// CONSOLE
-// TEST[continued]
-
-A successful call retrieves an object, where the keys are the
-names of the request mappings, and the values are
-the JSON representation of those mappings.
-If there is no mapping with the requested name, the
-response will have status code `404`.
-
-[source,js]
---------------------------------------------------
-{
-  "mapping7": {
-    "enabled": true,
-    "roles": [
-      "superuser"
-    ],
-    "rules": {
-      "all": [
-        {
-          "any": [
-            {
-              "field": {
-                "dn": "*,ou=admin,dc=example,dc=com"
-              }
-            },
-            {
-              "field": {
-                "username": [
-                  "es-admin",
-                  "es-system"
-                ]
-              }
-            }
-          ]
-        },
-        {
-          "field": {
-            "groups": "cn=people,dc=example,dc=com"
-          }
-        },
-        {
-          "except": {
-            "field": {
-              "metadata.terminated_date": null
-            }
-          }
-        }
-      ]
-    },
-    "metadata": {}
-  }
-}
---------------------------------------------------
-// TESTRESPONSE
-
-You can specify multiple mapping names as a comma-separated list.
-To retrieve all mappings, omit the name entirely.
-
-[[security-api-delete-role-mapping]]
-To delete a role mapping, submit a DELETE request to the
-`/_xpack/security/role_mapping/<name>` endpoint:
-
-[source,js]
---------------------------------------------------
-DELETE /_xpack/security/role_mapping/mapping1
---------------------------------------------------
-// CONSOLE
-// TEST[setup:role_mapping]
-
-If the mapping is successfully deleted, the request returns `{"found": true}`.
-Otherwise, `found` is set to false.
-
-[source,js]
---------------------------------------------------
-{
-  "found" : true
-}
---------------------------------------------------
-// TESTRESPONSE

+ 1 - 1
x-pack/docs/en/security/authentication/configuring-active-directory-realm.asciidoc

@@ -173,7 +173,7 @@ represent user roles for different systems in the organization.
 
 
 The `active_directory` realm enables you to map Active Directory users to roles
 The `active_directory` realm enables you to map Active Directory users to roles
 via their Active Directory groups or other metadata. This role mapping can be
 via their Active Directory groups or other metadata. This role mapping can be
-configured via the <<security-api-role-mapping,role-mapping API>> or by using
+configured via the <<security-role-mapping-apis,role-mapping APIs>> or by using
 a file stored on each node. When a user authenticates against an Active
 a file stored on each node. When a user authenticates against an Active
 Directory realm, the privileges for that user are the union of all privileges
 Directory realm, the privileges for that user are the union of all privileges
 defined by the roles to which the user is mapped.
 defined by the roles to which the user is mapped.

+ 1 - 1
x-pack/docs/en/security/authentication/configuring-ldap-realm.asciidoc

@@ -133,7 +133,7 @@ supports both failover and load balancing modes of operation. See
 --
 --
 The `ldap` realm enables you to map LDAP users to to roles via their LDAP
 The `ldap` realm enables you to map LDAP users to to roles via their LDAP
 groups, or other metadata. This role mapping can be configured via the
 groups, or other metadata. This role mapping can be configured via the
-{ref}/security-api-role-mapping.html[role-mapping API] or by using a file stored
+{ref}/security-api-put-role-mapping.html[add role mapping API] or by using a file stored
 on each node. When a user authenticates with LDAP, the privileges
 on each node. When a user authenticates with LDAP, the privileges
 for that user are the union of all privileges defined by the roles to which
 for that user are the union of all privileges defined by the roles to which
 the user is mapped.
 the user is mapped.

+ 1 - 1
x-pack/docs/en/security/authentication/configuring-pki-realm.asciidoc

@@ -126,7 +126,7 @@ The `certificate_authorities` option can be used as an alternative to the
 +
 +
 --
 --
 You map roles for PKI users through the 
 You map roles for PKI users through the 
-<<security-api-role-mapping,role-mapping API>> or by using a file stored on
+<<security-role-mapping-apis,role mapping APIs>> or by using a file stored on
 each node. When a user authenticates against a PKI realm, the privileges for
 each node. When a user authenticates against a PKI realm, the privileges for
 that user are the union of all privileges defined by the roles to which the
 that user are the union of all privileges defined by the roles to which the
 user is mapped.
 user is mapped.

+ 3 - 3
x-pack/docs/en/security/authentication/saml-guide.asciidoc

@@ -592,9 +592,9 @@ When a user authenticates using SAML, they are identified to the Elastic Stack,
 but this does not automatically grant them access to perform any actions or
 but this does not automatically grant them access to perform any actions or
 access any data.
 access any data.
 
 
-Your SAML users cannot do anything until they are mapped to X-Pack Security
+Your SAML users cannot do anything until they are mapped to {security}
 roles. This mapping is performed through the
 roles. This mapping is performed through the
-{ref}/security-api-role-mapping.html[role-mapping API]
+{ref}/security-api-put-role-mapping.html[add role mapping API].
 
 
 This is an example of a simple role mapping that grants the `kibana_user` role
 This is an example of a simple role mapping that grants the `kibana_user` role
 to any user who authenticates against the `saml1` realm:
 to any user who authenticates against the `saml1` realm:
@@ -626,7 +626,7 @@ mapping are derived from the SAML attributes as follows:
 - `metadata`: See <<saml-user-metadata>>
 - `metadata`: See <<saml-user-metadata>>
 
 
 For more information, see <<mapping-roles>> and
 For more information, see <<mapping-roles>> and
-{ref}/security-api-role-mapping.html[Role Mapping APIs]. 
+{ref}/security-api.html#security-role-mapping-apis[role mapping APIs]. 
 
 
 If your IdP has the ability to provide groups or roles to Service Providers,
 If your IdP has the ability to provide groups or roles to Service Providers,
 then you should map this SAML attribute to the `attributes.groups` setting in
 then you should map this SAML attribute to the `attributes.groups` setting in

+ 1 - 1
x-pack/docs/en/security/authorization/mapping-roles.asciidoc

@@ -28,7 +28,7 @@ you are able to map users to both API-managed roles and file-managed roles
 ==== Using the role mapping API
 ==== Using the role mapping API
 
 
 You can define role-mappings through the
 You can define role-mappings through the
-{ref}/security-api-role-mapping.html[role mapping API].
+{ref}/security-api-put-role-mapping.html[add role mapping API].
 
 
 [[mapping-roles-file]]
 [[mapping-roles-file]]
 ==== Using role mapping files
 ==== Using role mapping files

+ 1 - 1
x-pack/plugin/src/test/resources/rest-api-spec/api/xpack.security.delete_role_mapping.json

@@ -1,6 +1,6 @@
 {
 {
   "xpack.security.delete_role_mapping": {
   "xpack.security.delete_role_mapping": {
-    "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-role-mapping.html#security-api-delete-role-mapping",
+    "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-delete-role-mapping.html",
     "methods": [ "DELETE" ],
     "methods": [ "DELETE" ],
     "url": {
     "url": {
       "path": "/_xpack/security/role_mapping/{name}",
       "path": "/_xpack/security/role_mapping/{name}",

+ 1 - 1
x-pack/plugin/src/test/resources/rest-api-spec/api/xpack.security.get_role_mapping.json

@@ -1,6 +1,6 @@
 {
 {
   "xpack.security.get_role_mapping": {
   "xpack.security.get_role_mapping": {
-    "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-role-mapping.html#security-api-get-role-mapping",
+    "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-role-mapping.html",
     "methods": [ "GET" ],
     "methods": [ "GET" ],
     "url": {
     "url": {
       "path": "/_xpack/security/role_mapping/{name}",
       "path": "/_xpack/security/role_mapping/{name}",

+ 1 - 1
x-pack/plugin/src/test/resources/rest-api-spec/api/xpack.security.put_role_mapping.json

@@ -1,6 +1,6 @@
 {
 {
   "xpack.security.put_role_mapping": {
   "xpack.security.put_role_mapping": {
-    "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-role-mapping.html#security-api-put-role-mapping",
+    "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role-mapping.html",
     "methods": [ "PUT", "POST" ],
     "methods": [ "PUT", "POST" ],
     "url": {
     "url": {
       "path": "/_xpack/security/role_mapping/{name}",
       "path": "/_xpack/security/role_mapping/{name}",