seguro guardar google gestor contraseñas chrome administrador deployment configuration chef

deployment - google - es seguro guardar contraseñas en chrome



¿Guardar contraseñas en chef? (9)

Actualmente, el enfoque más utilizado y, en la mayoría de los casos, lo suficientemente seguro es utilizar la bóveda de chef.

Utiliza el secreto compartido para cifrar sus datos (similitud con la base de datos encriptada por el chef). Este secreto compartido se cifra para cada cliente y / o usuario que lo usará (si lo permite).

Beneficios:

  • En el entorno de prueba, puede utilizar datos sin cifrar.
  • Uno no almacena secretos compartidos como texto simple
  • Uno puede otorgar acceso solo a algunos servidores para leer y escribir algunas bases de datos.

Ejemplo

export EDITOR=vi #sets your favourite text editor knife vault create secret_data john_doe --admins "admin" --search "*:*" --mode client

El comando anterior crea en el secret_data base de secret_data secret_data: john_doe que puede ser modificado por el admin y utilizado por todos los clientes. Después de ese comando, EDITOR se abrirá para que pueda escribir o pegar sus datos secretos (en json).

La consulta de búsqueda puede ser: "role:basic" : lo que significa que solo los servidores con role basic pueden leer estos datos.

En tu libro de cocina

chef_gem ''chef-vault'' do compile_time true if respond_to?(:compile_time) end require ''chef-vault'' item = ChefVault::Item.load("secret_data", "john_doe") item["password"]

y en metadata.rb : depends ''chef-vault'', ''1.3.0''

más información aquí: https://blog.chef.io/2016/01/21/chef-vault-what-is-it-and-what-can-it-do-for-you/

y aquí: https://github.com/chef/chef-vault

¿Cuál es la mejor práctica para almacenar contraseñas y claves API con Chef? Es realmente tentador almacenar las contraseñas de las bases de datos, las claves de api de AWS y otras credenciales confidenciales como atributos del servidor Chef para usar en recetas, pero ¿qué hay de las consideraciones de seguridad? ¿Cuál es la mejor práctica para esto?


Chef encapsulado data_bags es de hecho una solución legítima. Además de esto, también puede usar una gema de rubí que le permite cifrar un elemento de bolsa de datos de chef utilizando las claves públicas de una lista de nodos de chef. Esto permite que solo los nodos chef descifren los valores cifrados. cf. https://github.com/Nordstrom/chef-vault



Desde el canal IRC de #chef, muchas personas almacenan este tipo de datos en una bolsa de datos en el servidor de chef.

Por ejemplo, una bolsa de datos puede ser ''aws'', con un elemento ''main'', refiriéndose a la cuenta primaria de AWS. Las claves separadas en el elemento serían para cada valor particular. P.ej:

{ "id": "main", "aws_secret_key": "The secret access key", "aws_access_key": "The access key" }

También puede estar interesado en bolsas de datos cifrados . Escribí sobre ellos con más detalle para administrar la autenticación SASL postfix .

Actualización : he escrito publicaciones de blog sobre Chef Vault en mi blog y sysadvent .


Esta pregunta es antigua y no tiene una respuesta aceptada; sin embargo, la respuesta correcta a esta pregunta es que Chef permite el uso de bolsas de datos cifrados para almacenar datos confidenciales en bolsas de datos .


La mejor práctica es mantener las claves y contraseñas en las bolsas de datos del chef. Una bolsa de datos contiene elementos de la base de datos. El elemento de bolsa de datos individual está en formato json.

Por ejemplo:

{ /* This is a supported comment style */ // This style is also supported "id": "ITEM_NAME", "key": "value" }

Cifre el elemento de la bolsa de datos : el elemento de la bolsa de datos se puede cifrar usando un cifrado secreto compartido. Esto permite que cada elemento de la bolsa de datos almacene información confidencial (como una contraseña de base de datos o claves ssh) o que se administre en un sistema de control de origen (sin que aparezcan datos de texto sin formato en el historial de revisiones). Esto se puede hacer de la siguiente manera:

Crete Secret Keys: crea una clave secreta llamada encrypted_data_bag_secret por ejemplo

$ openssl rand -base64 512 | tr -d ''/r/n'' > encrypted_data_bag_secret

donde encrypted_data_bag_secret es el nombre del archivo que contendrá la clave secreta

Cifrar la bolsa de datos : un artículo de bolsa de datos se cifra con un comando de cuchillo similar a:

$ knife data bag create passwords mysql --secret-file /tmp/my_data_bag_key

donde "contraseñas" es el nombre de la bolsa de datos, "mysql" es el nombre del elemento de la bolsa de datos, y "/ tmp / my_data_bag_key" es la ruta a la ubicación en la que se encuentra el archivo que contiene la clave secreta

Verificar cifrado: cuando el contenido de un paquete de datos está cifrado, no se podrá leer hasta que se descifre. El cifrado se puede verificar con un comando de cuchillo similar a:

$ knife data bag show passwords mysql

Descifrar bolsa de datos: un artículo de bolsa de datos cifrados se descifra con un comando de cuchillo similar a:

$ knife data bag show --secret-file /tmp/my_data_bag_key passwords mysql


Nunca he probado bolsas de datos, pero probablemente sea porque me parece que todo, aparte de chef-solo es un poco complicado. Por eso Scalarium chef con un servicio llamado Scalarium .

Por lo tanto, el problema con las contraseñas, o por ejemplo las claves privadas y todo tipo de credenciales es bastante difícil. Yo también tengo un montón de recetas donde las contraseñas necesitan ser creadas, o configuradas correctamente.

Por lo general, lo que hago es especificar lo que la gente de scalarium llama custom json . Este json es similar al node.json algunas personas le dan a chef-solo usando chef-solo -j node.json .

Así, por ejemplo, en mi json personalizado en la interfaz web de Scalarium, tengo lo siguiente:

{"super_secure_password":"foobar"}

Lo que esto hace es que mi contraseña súper segura está disponible durante mi ejecución de chef en el node[:super_secure_password] y puedo usarla en recetas o plantillas.

Esto funciona bien siempre y cuando solo despliegue mi servidor utilizando Scalarium, pero también usamos nuestras recetas en casillas locales errantes para un entorno de desarrollo y pruebas más fáciles. Y cuando uso vagrant (o incluso chef-solo), no tengo acceso al json personalizado en Scalarium.

Esto es lo que hago para arreglar eso, en my_recipe/attributes/default :

set_unless[:super_secure_password] = "test123"

Esto significa que cuando mi receta se ejecuta fuera de scalarium, la contraseña todavía está disponible en el node[:super_secure_password] y mis recetas funcionan, etc. Cuando la receta se ejecuta en el contexto de scalarium, no anulará lo que proporcionan.


Yo sugeriría usar el rol de IAM con el aprovisionamiento de chef

require ''chef/provisioning/aws_driver'' iam = AWS::Core::CredentialProviders::EC2Provider.new puts iam.credentials.inspect with_driver( ''aws:IAM:eu-west-1'', :aws_credentials => { ''IAM'' => iam.credentials } )


Chef Vault puede ser una buena opción. Proporciona una interfaz simple para almacenar datos cifrados en el servidor chef, la administración de acceso. Cargar, editar, actualizar datos con knife vault ... comandos.

Para obtener datos de la receta, use el comando ChefVault::Item.load

chef_gem "chef-vault" require ''chef-vault'' item = ChefVault::Item.load("passwords", "root") item["password"]

Para configurar los usuarios, que pueden actualizar los datos, use la propiedad knife vault_admins .

knife[:vault_admins] = [ ''example-alice'', ''example-bob'', ''example-carol'' ]