diff --git a/roles/phpmyadmin/defaults/main.yml b/roles/phpmyadmin/defaults/main.yml index cecc4ac..84f2c8a 100644 --- a/roles/phpmyadmin/defaults/main.yml +++ b/roles/phpmyadmin/defaults/main.yml @@ -72,3 +72,7 @@ pma_sso_groups: [] # - group: DB_Admins # sql_login: admin # sql_password: s3cr3t. + +# Instead of storing SQL credentials in clear text in sso.php, you can define an encryption key here +# This encryption key should be passed to phpMyAdmin in the X-Encryption-Token HTTP header so phpMyAdmin can decrypt the passwords +# pma_sso_encryption_token: myrandompassword diff --git a/roles/phpmyadmin/tasks/facts.yml b/roles/phpmyadmin/tasks/facts.yml index 1de8410..62226b5 100644 --- a/roles/phpmyadmin/tasks/facts.yml +++ b/roles/phpmyadmin/tasks/facts.yml @@ -35,3 +35,20 @@ - pass_file: "{{pma_root_dir }}/meta/ansible_dbpass" - set_fact: pma_db_pass={{ rand_pass }} tags: pma + +- name: Encrypt SQL user passwords + command: php{{ pma_php_version }} -r "echo openssl_encrypt('{{ item.sql_password }}','aes-128-cbc','{{ pma_sso_encryption_token }}',0,substr(hash('sha256','{{ item.user }}'),0,16));" + register: pma_sso_users_encrypted + changed_when: False + loop: "{{ pma_sso_users | default([]) }}" + when: pma_sso_encryption_token is defined + tags: pma + +- name: Encrypt SQL group passwords + command: php{{ pma_php_version }} -r "echo openssl_encrypt('{{ item.sql_password }}','aes-128-cbc','{{ pma_sso_encryption_token }}',0,substr(hash('sha256','{{ item.group }}'),0,16));" + register: pma_sso_groups_encrypted + changed_when: False + loop: "{{ pma_sso_groups | default([]) }}" + when: pma_sso_encryption_token is defined + tags: pma + diff --git a/roles/phpmyadmin/tasks/install.yml b/roles/phpmyadmin/tasks/install.yml index 9ff38a8..42302ad 100644 --- a/roles/phpmyadmin/tasks/install.yml +++ b/roles/phpmyadmin/tasks/install.yml @@ -52,3 +52,12 @@ when: db_created.changed tags: pma +- name: Setup a cron job to cleanup expired sessions + cron: + name: phpmyadmin_{{ pma_id }}_session_cleanup + cron_file: phpmyadmin + user: "{{ pma_php_user }}" + job: "find {{ pma_root_dir }}/sessions -type f -mmin +480 -exec rm -f \"{}\" \\;" + special_time: hourly + tags: pma + diff --git a/roles/phpmyadmin/templates/sso.php.j2 b/roles/phpmyadmin/templates/sso.php.j2 index 69fe722..059743e 100644 --- a/roles/phpmyadmin/templates/sso.php.j2 +++ b/roles/phpmyadmin/templates/sso.php.j2 @@ -1,20 +1,13 @@