Skip to content
This repository has been archived by the owner on Jun 8, 2022. It is now read-only.

Secure payload documentation #53

Merged
merged 2 commits into from Oct 13, 2020
Merged

Conversation

axelsimon
Copy link
Contributor

This is a new version of #41, based on Luke and Nabil's work.

I cleaned up the document a bit, improved some of the language and checked it for consistency.

It doesn't address @jetwhiz comment as i wasn't sure either way.

Other than that, it should be ready to go. Reviews appreciated 🙂

Copy link
Member

@mpeters mpeters left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some minor nitty changes that I think would help, but aren't necessary for merge.

docs/user_guide/secure_payloads.rst Outdated Show resolved Hide resolved
this like a very simple form of `cloud-init <https://cloudinit.readthedocs.io/>`_.
By default this script is called `autorun.sh`. You can configure this to some
other script with the `payload_script` option in `keylime.conf`. Note that this
script must be contained in the encrypted zip file and must be located in
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Saying the script "must be located in" seems to imply that I need to somehow put the script there. Instead maybe say keylime will extract the script into that location on unzip.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, changing the wording to be more helpful.

docs/user_guide/secure_payloads.rst Outdated Show resolved Hide resolved
This mode of Keylime automates many common actions that tenants will want to do
when provisioning their Agents. First, Keylime can create an X509 certificate
authority (CA) and then issue certificates and corresponding private keys to each
provisioned node. This CA lives on the tenant and can be used to bootstrap many
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this case, what does "tenant" mean? Is it where the verifier and registrar run (which can be on separate nodes)? Or where the tenant commands are issued from? Or is this defined better somewhere else?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a good question. I'm not sure. I understand "tenant" here to be the machine from which the tenant issues their commands, although the machine which hosts the Keylime Registrar would make more sense, considering Keylime's architecture. @jetwhiz or @lukehinds, can you weigh in?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand "tenant" here to be the machine from which the tenant issues their commands

I believe this is correct. I guess I was just asking that the document make that explicitly clear. Maybe language like "This CA lives on the same host where the tenant commands are issued and ..."


Revocation actions are small Python scripts that will run on an Agent when a valid
revocation is received. They should contain an `execute` function that takes
one argument. This argument is a Python dictionary of metadata that can be used
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be nice to have this Python dictionary documented somewhere. When I was working on revocation actions I had to first create a dummy action that just dumped the contents of the dict so I could figure out how to use it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Absolutely, tough this sounds like something a bit out of scope for this document / PR.
I think we should create an issue to track this.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it should actually live in this documented (unless there's a better place for it that I'm unaware of). But it doesn't have to be part of this current PR and can just be a future improvement.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tracking this in #54. Let's keep the conversation going there.

docs/user_guide/secure_payloads.rst Outdated Show resolved Hide resolved
@mpeters
Copy link
Member

mpeters commented Oct 7, 2020

Sorry I took so long to review. Not sure whey this slipped through the cracks

@axelsimon
Copy link
Contributor Author

I've addressed most of your remarks @mpeters, thanks!
The tenant question i couldn't answer and have summoned higher powers to solve it :)

docs/user_guide/secure_payloads.rst Outdated Show resolved Hide resolved
This mode of Keylime automates many common actions that tenants will want to do
when provisioning their Agents. First, Keylime can create an X509 certificate
authority (CA) and then issue certificates and corresponding private keys to each
provisioned node. This CA lives on the tenant and can be used to bootstrap many
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand "tenant" here to be the machine from which the tenant issues their commands

I believe this is correct. I guess I was just asking that the document make that explicitly clear. Maybe language like "This CA lives on the same host where the tenant commands are issued and ..."

Copy link
Member

@mpeters mpeters left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@axelsimon
Copy link
Contributor Author

Right, just made one last push to improve the language surrounding the use of keylime_ca and i think this is good to go.

Comment on lines +73 to +77
take when provisioning their Agents. First, Keylime can create an X509
certificate authority (CA) using `keylime_ca -d listen` and then issue
certificates and the corresponding private keys to each provisioned node. This
CA lives on the same host where the tenant issues the `keylime_ca` command and
can be used to bootstrap many other security solutions like mutual TLS or SSH.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to make sure, this is correct @lukehinds / @nabilschear ?

Copy link
Member

@mpeters mpeters left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@lukehinds lukehinds merged commit 62571ee into keylime:master Oct 13, 2020
@axelsimon axelsimon deleted the secure_payloads branch October 20, 2020 17:42
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants