[chef] Re: Re: Re: Re: Re: Re: Re: Re: AWS Security Groups


Chronological Thread 
  • From: Douglas Garstang < >
  • To:
  • Subject: [chef] Re: Re: Re: Re: Re: Re: Re: Re: AWS Security Groups
  • Date: Mon, 17 Nov 2014 10:21:53 -0800

Apparently I'm still doing something wrong.

Using https://github.com/SearchSpring/aws_security.

Getting:
"Data Bag Items must contain a Hash or Mash!"

at:
==> cfgserver:  26:  if node['aws_security']['encrypted_data_bag']
==> cfgserver:  27>>   databag_item = Chef::EncryptedDataBagItem.load(
==> cfgserver:  28:      node['aws_security']['encrypted_data_bag'],
==> cfgserver:  29:        'aws_keys'


I've set the name of the encrypted data bag in the attribute node['aws_security']['encrypted_data_bag']. That's the name of the data bag, but how do I set the name of the data bag item? What's it looking for?

Also, how does the cookbook decrypt the data bag on the client side?

Doug.


On Mon, Nov 17, 2014 at 10:06 AM, Douglas Garstang < " target="_blank"> > wrote:
Thanks Eric and Fabien.

I hadn't realised that i need to download the encrypted version from the chef server in order to overwrite the unencrypted local version.

Doug.

On Mon, Nov 17, 2014 at 10:00 AM, Eric Herot < " target="_blank"> > wrote:

cc’ing Jeff ‘cause he’s my cow-orker…

So our workflow for this is a little more complicated than I’d like, but it basically works like this:

You run this command to create the data bag on the Chef server:

knife data bag create \
  —-secret-file ~/.chef/encrypted_data_bag_secret \
  data_bag_name \
  data_bag_item_name

This will open your editor and let you start creating your data bag. When you’re finished, you save and quit. This will encrypt the contents and upload it to your Chef server.

Next, you will want to save the encrypted version of that data bag to your source control system. For that you will need to output what’s on the Chef server in its encrypted form:

knife data bag show \
  data_bag_name \
  data_bag_item_name \
  -f json \
  > ~/path/to/data_bags/data_bag_name/data_bag_item_name.json

The newly created file will look something like this:

{
  "id": "data_bag_item_name",
  "some_top_level_key": {
    "encrypted_data": "e5WAWnV6aTlXTz4ZpSPXqZ2Y2gEFLBrxC6Jroic+qvgk5fB9Ad587NZJf1xc\nz94vqdzOwdWHYPxfbNg24G9hfljgi63ustAKrRFFH5B2xVI=\n",
    "iv": "MBxrn6waf9ZOwZYZOePJMg==\n",
    "version": 1,
    "cipher": "aes-256-cbc"
  }
}

Note that the top level keys are in plain text but everything else is encrypted.

You can then check that file into git:

git add data_bag_item_name.json && git commit data_bag_item_name.json

Does that make sense?



-- 
Eric

On November 17, 2014 at 12:40:21 PM, Douglas Garstang ( " target="_blank"> ) wrote:

This ain't half confusing is it.

The local file is not encrypted. It seems that knife does not encrypt it. Are you saying that I need to use a mechanism besides the knife command to independently encrypt the file?

Doug.

On Mon, Nov 17, 2014 at 9:38 AM, Eric Herot < " target="_blank"> > wrote:
In most setups, where the local file is what’s being pushed to source control, the data in that file *should* be encrypted. If you mean that you can easily look at the “raw” contents by looking at the local file, however, that would be correct.

-- 
Eric

On November 17, 2014 at 12:35:44 PM, Douglas Garstang ( " target="_blank"> ) wrote:

Well, I can also see the raw content by looking at my local file, since that's not encrypted either...

On Mon, Nov 17, 2014 at 9:28 AM, Jeff Byrnes < " target="_blank"> > wrote:
That’s correct. Knife will use your encryption key to de/encrypt the data in an encrypted data bag.

If you’d like to see the raw content of a data bag item, you can run this command:

knife exec -E "puts JSON.pretty_generate(api.get('/data/data_bag/data_bag_item'))"

That will output the raw JSON, pretty-printed, from your Chef Server.

To add to the confusion, if you have the `knife[:secret_file]` setting in your .knife.rb set, using the `knife data bag show` command will always display a decrypted data bag item, which can be _very_ confusing.

-- 
Jeff Byrnes
@berkleebassist
Lead DevOps Engineer

On November 17, 2014 at 12:24:27 PM, Douglas Garstang ( " target="_blank"> ) wrote:

I'm not following. The file is unencrypted locally. Are you saying that the knife command will encrypt the local file?


On Mon, Nov 17, 2014 at 5:41 AM, Fabien Delpierre < " target="_blank"> > wrote:
Yes. You can see that for yourself, just upload your JSON file with the secret, then use the knife download command to download it back from the server, then compare your original to the one you just downloaded, you'll see how the encryption works. And then you can add the encrypted version to Git, it is safe (or at least, it's as safe as your encryption key is).

On Mon, Nov 17, 2014 at 7:53 AM, Jeff Byrnes < " target="_blank"> > wrote:
Doug,

While the file itself won’t be encrypted, it’s contents will be, so it IS safe to version the file in Git (we do in a repo that covers our data bags, environments, & roles).

-- 
Jeff Byrnes
Operations Engineer

On November 17, 2014 at 12:36:03 AM, Douglas Garstang ( " target="_blank"> ) wrote:

Oh. Thanks for that. And, that's... terrible. :( The point is not to have the unencrypted file in git.

Doug.

On Sun, Nov 16, 2014 at 6:48 PM, Fabien Delpierre < " target="_blank"> > wrote:
RE: data bags being encrypted on the Chef server and not on your local system, that's correct.
I should say that data bags themselves are not encrypted. There's no difference between a data bag and an encrypted data bag. It's the items within the data bag that are (or aren't) encrypted. Even though they're called "encrypted data bag".
If you find it a problem that what's in your local file system is not encrypted, then what you can do is upload your JSON file with the secret (as seen in your other thread I just replied to), then delete the file from your local file system, and if you want the encrypted file locally, then just download it from the Chef server, it'll be encrypted then.



On Sun, Nov 16, 2014 at 9:11 PM, Douglas Garstang < " target="_blank"> > wrote:
Is there a known public cookbook for creating AWS security groups? I don't know about the security implications, but I'd like to try having the recipes creating the necessary security groups. Otherwise, it's a major hassle to put them into a script. AFAIK chef-metal/provisioner doesn't do security groups yet.

This one https://github.com/SearchSpring/aws_security, wants to use encrypted data bags and, well, that's a pain. I'd prefer to use IAM roles were possible. I'd never noticed before, but it looks like encrypted data bags are only encrypted on the Chef server, not on the local file system? If so, what's the point?

Doug





--




--



--



--



--



--



Archive powered by MHonArc 2.6.16.

§