On 06/10/2014 08:28 PM, Scott Sturdivant wrote:
> This is something I'd be quite interested in as well. All of our
> private data is stored via ansible-vault, but then it winds up being
> displayed in plain text as the playbook executes. In a slightly
> contrived example, I've got an encrypted users.yml file that has user
> passwords. In my playbook, I pass the variable to the users module as
> "with_items: users", and wind up seeing all of the passwords, exactly
> like Thom pasted above.
>
> Certainly the argument can be made that since I knew the vault
> password, I could go look up that information anyway, but I'm more
> concerned with someone looking over my shoulder, or the output being
> some where I don't control (Jenkins, for instance).
>
> So nothing valuable to add to this discussion, only hoping to see what
> others have done to work around this!
>
>
> On Tue, Jun 10, 2014 at 7:46 AM, Nadir Lloret <[email protected]
> <mailto:[email protected]>> wrote:
>
> I was facing some similar problem.
> Mine is just that the dictionary being included in the output has
> too many values that it makes output messy and I would prefer just
> to include dict.key at the item=() output.
>
> It would be really nice to be able to decide if all the item or
> just a part of it is printed to the output.
>
> El jueves, 5 de junio de 2014 20:15:48 UTC+2, Thom Seddon escribió:
>
>
> When you use a loop in an ansible task, e.g. with_items or
> with_dict, a dump of the item is included in the output.
> Sometimes these items contain secure infomation which it is
> undesirable to have output on screen, for example:
>
> |
> ---
> -name:Test
> hosts:127.0.0.1
> vars:
> dbs:
> prod:
> port:3306
> password:secret
> dev:
> port:3307
> password:notsosecret
> tasks:
> -command:echo {{item.value.port }}
> with_dict:dbs
>
> |
>
> outputs:
>
> |
> [thom@ThomComp test]$ ansible-playbook ansible/test.yml
>
>
> PLAY
>
> [Test]*******************************************************************
>
>
> GATHERING FACTS
> ***************************************************************
> ok:[127.0.0.1]
>
>
> TASK:[command echo
> {{item.value.port}}]**************************************
>
> changed:[127.0.0.1]=>(item={'value':{'password':'secret','port':3306},'key':'prod'})
>
> changed:[127.0.0.1]=>(item={'value':{'password':'notsosecret','port':3307},'key':'dev'})
>
>
> PLAY RECAP
> ********************************************************************
> 127.0.0.1 :ok=2 changed=1 unreachable=0
> failed=0
>
> |
>
> At best, I think there should be a way to choose what is
> output (in this case I would choose the dict.key), at least I
> think there should be a way to suppress this output.
>
> Opinions/ideas?
>
> Thanks
>
> --
> You received this message because you are subscribed to the Google
> Groups "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it,
> send an email to [email protected]
> <mailto:[email protected]>.
> To post to this group, send email to
> [email protected]
> <mailto:[email protected]>.
> To view this discussion on the web visit
>
> https://groups.google.com/d/msgid/ansible-project/35cc2483-54d2-40db-99ef-172bd0b970d5%40googlegroups.com
>
> <https://groups.google.com/d/msgid/ansible-project/35cc2483-54d2-40db-99ef-172bd0b970d5%40googlegroups.com?utm_medium=email&utm_source=footer>.
>
>
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to [email protected]
> <mailto:[email protected]>.
> To post to this group, send email to [email protected]
> <mailto:[email protected]>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/CAPcsqxnEn_wLyAsVHaEGtQuaHVb9i0X1qiczfCp1ob7h%2BSJnBA%40mail.gmail.com
> <https://groups.google.com/d/msgid/ansible-project/CAPcsqxnEn_wLyAsVHaEGtQuaHVb9i0X1qiczfCp1ob7h%2BSJnBA%40mail.gmail.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout.
This is indeed a security weakness (unnecessary exposure of sensitive data).
So, I propose the introduction of a new playbook directive called
'sensitive_keys' with a list of keys that are considered to hold
sensitive data. Then, at output (logs / console output), all variables
would be recursively checked if they contain a key that is included in
the 'sensitive_keys' list. If a key is matched, its value would be
replaced with a 'hidden' version. For example:
sensitive_keys:
- password
- key
So, the following var:
users:
- name: Alice
password: somesecret
- name: Bob
password: anothersecret
api:
url: http://example.org/api/
key: someapikey
would have this 'hidden' version at logs / console output:
users:
- name: Alice
password: xxxxxxx
- name: Bob
password: xxxxxxx
api:
url: http://example.org/api/
key: xxxxxxx
As a proactive measure, if 'sensitive_keys' is not explicitly set, it
could include 'password' by default. Also, for debugging purposes or to
speed up things if users are not interested in that measure, a
configuration option that disables all this could be introduced.
What do you think?
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/53981BA1.7040205%40yahoo.gr.
For more options, visit https://groups.google.com/d/optout.