[role="xpack"] [[securing-aliases]] === Granting privileges for data streams and aliases {es} {security-features} allow you to secure operations executed against <> and <>. [[data-stream-privileges]] ==== Data stream privileges // tag::data-stream-security[] Use <> to control access to a data stream. Granting privileges on a data stream grants the same privileges on its backing indices. // end::data-stream-security[] For example, `my-data-stream` consists of two backing indices: `.ds-my-data-stream-2099.03.07-000001` and `.ds-my-data-stream-2099.03.08-000002`. A user is granted the `read` privilege to `my-data-stream`. [source,js] -------------------------------------------------- { "names" : [ "my-data-stream" ], "privileges" : [ "read" ] } -------------------------------------------------- // NOTCONSOLE Because the user is automatically granted the same privileges to the stream's backing indices, the user can retrieve a document directly from `.ds-my-data-stream-2099.03.08-000002`: //// [source,console] ---- PUT my-index/_doc/2 { "my-field": "foo" } ---- //// [source,console] ---- GET .ds-my-data-stream-2099.03.08-000002/_doc/2 ---- // TEST[continued] // TEST[s/.ds-my-data-stream-2099.03.08-000002/my-index/] Later `my-data-stream` <>. This creates a new backing index: `.ds-my-data-stream-2099.03.09-000003`. Because the user still has the `read` privilege for `my-data-stream`, the user can retrieve documents directly from `.ds-my-data-stream-2099.03.09-000003`: [source,console] ---- GET .ds-my-data-stream-2099.03.09-000003/_doc/2 ---- // TEST[continued] // TEST[s/.ds-my-data-stream-2099.03.09-000003/my-index/] [[index-alias-privileges]] ==== Alias privileges Use <> to control access to an <>. Privileges on an index or data stream do not grant privileges on its aliases. For information about managing aliases, see <>. IMPORTANT: Don't use <> in place of <>. {es} doesn't always apply alias filters. For example, the `current_year` alias points only to the `2015` index. A user is granted the `read` privilege for the `2015` index. [source,js] ---- { "names" : [ "2015" ], "privileges" : [ "read" ] } ---- // NOTCONSOLE When the user attempts to retrieve a document from the `current_year` alias, {es} rejects the request. [source,console] ---- GET current_year/_doc/1 ---- // TEST[s/^/PUT 2015\n{"aliases": {"current_year": {}}}\nPUT 2015\/_doc\/1\n{}\n/] To retrieve documents from `current_year`, the user must have the `read` index privilege for the alias. [source,js] ---- { "names" : [ "current_year" ], "privileges" : [ "read" ] } ---- // NOTCONSOLE