2016-07-22 23:44:27 +01:00
---
2018-02-04 07:09:23 +00:00
- name : set fact change_api_password to false
set_fact : change_api_password=false
2016-07-23 16:41:37 +01:00
2018-02-04 07:09:23 +00:00
- name : set fact manage_native_users to false
set_fact : manage_native_users=false
2016-07-22 23:44:27 +01:00
2018-02-04 07:09:23 +00:00
- name : set fact manage_native_users to true
set_fact : manage_native_users=true
2019-06-07 15:54:10 +02:00
when : es_users is defined and es_users.native is defined and es_users.native.keys() | list | length > 0
2016-07-22 23:44:27 +01:00
2018-02-04 07:09:23 +00:00
- name : set fact manage_native_role to false
set_fact : manage_native_roles=false
2016-07-22 23:44:27 +01:00
2018-02-04 07:09:23 +00:00
- name : set fact manange_native_roles to true
set_fact : manage_native_roles=true
2019-06-07 15:54:10 +02:00
when : es_roles is defined and es_roles.native is defined and es_roles.native.keys() | list | length > 0
2016-07-22 23:44:27 +01:00
2017-01-11 13:02:23 +00:00
#If the node has just has security installed it maybe either stopped or started 1. if stopped, we need to start to load native realms 2. if started, we need to restart to load
2016-07-22 23:44:27 +01:00
#List current users
- name : List Native Users
uri :
2019-10-11 17:16:35 +01:00
url : "{{ es_api_uri }}/{{ es_security_api }}/user"
2016-07-22 23:44:27 +01:00
method : GET
user : "{{es_api_basic_auth_username}}"
password : "{{es_api_basic_auth_password}}"
force_basic_auth : yes
status_code : 200
2019-10-12 00:03:47 +01:00
validate_certs : "{{ es_validate_certs }}"
2016-07-22 23:44:27 +01:00
register : user_list_response
when : manage_native_users
2019-03-14 09:23:24 +01:00
check_mode : no
2016-07-22 23:44:27 +01:00
2018-02-04 07:09:23 +00:00
- name : set fact reserved_users equals user_list_response.json
set_fact : reserved_users={{ user_list_response.json | filter_reserved }}
2017-09-19 20:11:09 +01:00
when : manage_native_users
2017-01-16 15:17:18 +00:00
#Current users not inc. those reserved
2018-02-04 07:09:23 +00:00
- name : set fact current_users equals user_list_response.json.keys not including reserved
2019-06-07 15:54:10 +02:00
set_fact : current_users={{ user_list_response.json.keys() | list | difference (reserved_users) }}
2016-07-22 23:44:27 +01:00
when : manage_native_users
2017-09-19 20:11:09 +01:00
#We are changing the es_api_basic_auth_username password, so we need to do it first and update the param
2018-02-04 07:09:23 +00:00
- name : set fact native_users
set_fact : native_users={{ es_users.native }}
2016-07-22 23:44:27 +01:00
when : manage_native_users
2018-02-04 07:09:23 +00:00
- name : set fact change_api_password to true
set_fact : change_api_password=true
2017-09-19 20:11:09 +01:00
when : manage_native_users and es_api_basic_auth_username in native_users and native_users[es_api_basic_auth_username].password is defined
- name : Update API User Password
uri :
2019-10-11 17:16:35 +01:00
url : "{{ es_api_uri }}/{{ es_security_api }}/user/{{es_api_basic_auth_username}}/_password"
2017-09-19 20:11:09 +01:00
method : POST
body_format : json
body : "{ \"password\":\"{{native_users[es_api_basic_auth_username].password}}\" }"
status_code : 200
user : "{{es_api_basic_auth_username}}"
password : "{{es_api_basic_auth_password}}"
force_basic_auth : yes
2019-10-12 00:03:47 +01:00
validate_certs : "{{ es_validate_certs }}"
2017-09-19 20:11:09 +01:00
when : change_api_password
2018-02-04 07:09:23 +00:00
- name : set fact es_api_basic_auth_password
set_fact : es_api_basic_auth_password={{native_users[es_api_basic_auth_username].password}}
2017-09-19 20:11:09 +01:00
when : change_api_password
#Identify users that are present in ES but not declared and thus should be removed
2018-02-04 07:09:23 +00:00
- name : set fact users_to_remove
2019-06-07 15:54:10 +02:00
set_fact : users_to_remove={{ current_users | difference ( native_users.keys() | list) }}
2017-09-19 20:11:09 +01:00
when : manage_native_users
#Delete all non required users NOT inc. reserved
2016-07-22 23:44:27 +01:00
- name : Delete Native Users
uri :
2019-10-11 17:16:35 +01:00
url : "{{ es_api_uri }}/{{ es_security_api }}/user/{{item}}"
2016-07-22 23:44:27 +01:00
method : DELETE
status_code : 200
user : "{{es_api_basic_auth_username}}"
password : "{{es_api_basic_auth_password}}"
force_basic_auth : yes
2019-10-12 00:03:47 +01:00
validate_certs : "{{ es_validate_certs }}"
2019-10-28 14:25:52 +00:00
when : manage_native_users and es_delete_unmanaged_native
2017-09-19 20:11:09 +01:00
with_items : "{{ users_to_remove | default([]) }}"
2017-03-15 17:24:10 -04:00
2018-02-04 07:09:23 +00:00
- name : set fact users_to_ignore
2019-06-07 15:54:10 +02:00
set_fact : users_to_ignore={{ native_users.keys() | list | intersect (reserved_users) }}
2017-09-19 20:11:09 +01:00
when : manage_native_users
2018-02-04 07:09:23 +00:00
- name : debug message
debug :
2017-09-19 20:11:09 +01:00
msg : "WARNING: YOU CAN ONLY CHANGE THE PASSWORD FOR RESERVED USERS IN THE NATIVE REALM. ANY ROLE CHANGES WILL BE IGNORED: {{users_to_ignore}}"
when : manage_native_users and users_to_ignore | length > 0
2016-07-22 23:44:27 +01:00
2017-09-19 20:11:09 +01:00
#Update password on all reserved users
- name : Update Reserved User Passwords
2016-07-22 23:44:27 +01:00
uri :
2019-10-16 16:36:17 +01:00
url : "{{ es_api_uri }}/{{ es_security_api }}/user/{{ item | urlencode }}/_password"
2016-07-22 23:44:27 +01:00
method : POST
body_format : json
2017-09-19 20:11:09 +01:00
body : "{ \"password\":\"{{native_users[item].password}}\" }"
2016-07-22 23:44:27 +01:00
status_code : 200
user : "{{es_api_basic_auth_username}}"
password : "{{es_api_basic_auth_password}}"
force_basic_auth : yes
2019-10-12 00:03:47 +01:00
validate_certs : "{{ es_validate_certs }}"
2017-09-19 20:11:09 +01:00
when : native_users[item].password is defined
2017-01-16 15:38:54 +00:00
no_log : True
2017-09-19 20:11:09 +01:00
with_items : "{{ users_to_ignore | default([]) }}"
2018-02-04 07:09:23 +00:00
- name : set fact users_to_modify
2019-06-07 15:54:10 +02:00
set_fact : users_to_modify={{ native_users.keys() | list | difference (reserved_users) }}
2017-09-19 20:11:09 +01:00
when : manage_native_users
#Overwrite all other users NOT inc. those reserved
- name : Update Non-Reserved Native User Details
uri :
2019-10-16 16:36:17 +01:00
url : "{{ es_api_uri }}/{{ es_security_api }}/user/{{ item | urlencode }}"
2017-09-19 20:11:09 +01:00
method : POST
body_format : json
body : "{{ native_users[item] | to_json }}"
status_code : 200
user : "{{es_api_basic_auth_username}}"
password : "{{es_api_basic_auth_password}}"
force_basic_auth : yes
2019-10-12 00:03:47 +01:00
validate_certs : "{{ es_validate_certs }}"
2017-09-19 20:11:09 +01:00
when : manage_native_users
no_log : True
with_items : "{{ users_to_modify | default([]) }}"
## ROLE CHANGES
2016-07-22 23:44:27 +01:00
2017-01-16 15:17:18 +00:00
#List current roles not. inc those reserved
2016-07-22 23:44:27 +01:00
- name : List Native Roles
uri :
2019-10-11 17:16:35 +01:00
url : "{{ es_api_uri }}/{{ es_security_api }}/role"
2016-07-22 23:44:27 +01:00
method : GET
2016-08-29 16:34:14 +01:00
body_format : json
2016-07-22 23:44:27 +01:00
user : "{{es_api_basic_auth_username}}"
password : "{{es_api_basic_auth_password}}"
force_basic_auth : yes
status_code : 200
2019-10-12 00:03:47 +01:00
validate_certs : "{{ es_validate_certs }}"
2016-07-22 23:44:27 +01:00
register : role_list_response
when : manage_native_roles
2019-03-14 09:23:24 +01:00
check_mode : no
2016-07-22 23:44:27 +01:00
2018-02-04 07:09:23 +00:00
- name : set fact reserved roles
set_fact : reserved_roles={{ role_list_response.json | filter_reserved }}
2017-01-16 15:17:18 +00:00
when : manage_native_roles
2017-09-19 12:21:46 +01:00
2018-02-04 07:09:23 +00:00
- name : set fact current roles
2019-06-07 15:54:10 +02:00
set_fact : current_roles={{ role_list_response.json.keys() | list | difference (reserved_roles) }}
2017-09-19 12:21:46 +01:00
when : manage_native_roles
2016-07-22 23:44:27 +01:00
2018-02-04 07:09:23 +00:00
- name : set fact roles to ignore
2019-06-07 15:54:10 +02:00
set_fact : roles_to_ignore={{ es_roles.native.keys() | list | intersect (reserved_roles) | default([]) }}
2017-09-19 20:11:09 +01:00
when : manage_native_roles
2018-02-04 07:09:23 +00:00
- name : debug message
debug :
2017-09-19 20:11:09 +01:00
msg : "WARNING: YOU CANNOT CHANGE RESERVED ROLES. THE FOLLOWING WILL BE IGNORED: {{roles_to_ignore}}"
when : manage_native_roles and roles_to_ignore | length > 0
2018-02-04 07:09:23 +00:00
- name : set fact roles_to_remove
2019-06-07 15:54:10 +02:00
set_fact : roles_to_remove={{ current_roles | difference ( es_roles.native.keys() | list) }}
2016-07-22 23:44:27 +01:00
when : manage_native_roles
2017-09-19 20:11:09 +01:00
#Delete all non required roles NOT inc. reserved
2016-07-22 23:44:27 +01:00
- name : Delete Native Roles
uri :
2019-10-16 16:36:17 +01:00
url : "{{ es_api_uri }}/{{ es_security_api }}/role/{{ item | urlencode }}"
2016-07-22 23:44:27 +01:00
method : DELETE
status_code : 200
user : "{{es_api_basic_auth_username}}"
password : "{{es_api_basic_auth_password}}"
force_basic_auth : yes
2019-10-12 00:03:47 +01:00
validate_certs : "{{ es_validate_certs }}"
2019-10-28 14:25:52 +00:00
when : manage_native_roles and es_delete_unmanaged_native
2017-03-15 17:24:10 -04:00
with_items : "{{roles_to_remove | default([]) }}"
2016-07-22 23:44:27 +01:00
2018-02-04 07:09:23 +00:00
- name : set fact roles_to_modify
2019-06-07 15:54:10 +02:00
set_fact : roles_to_modify={{ es_roles.native.keys() | list | difference (reserved_roles) }}
2017-09-19 20:11:09 +01:00
when : manage_native_roles
2016-07-22 23:44:27 +01:00
2017-09-19 20:11:09 +01:00
#Update other roles - NOT inc. reserved roles
2016-07-22 23:44:27 +01:00
- name : Update Native Roles
uri :
2019-10-16 16:36:17 +01:00
url : "{{ es_api_uri }}/{{ es_security_api }}/role/{{ item | urlencode }}"
2016-07-22 23:44:27 +01:00
method : POST
body_format : json
2017-09-19 20:11:09 +01:00
body : "{{ es_roles.native[item] | to_json}}"
2016-07-22 23:44:27 +01:00
status_code : 200
user : "{{es_api_basic_auth_username}}"
password : "{{es_api_basic_auth_password}}"
force_basic_auth : yes
2019-10-12 00:03:47 +01:00
validate_certs : "{{ es_validate_certs }}"
2017-09-19 20:11:09 +01:00
when : manage_native_roles
2018-02-04 07:09:23 +00:00
with_items : "{{ roles_to_modify | default([]) }}"