Skip to content
Snippets Groups Projects
  • Shaun Smekel's avatar
    1c68ae38
    Add full support for fernet · 1c68ae38
    Shaun Smekel authored
    This addresses the ansible aspects of fernet key bootstrapping as
    well as distributed key rotation.
    
    - Bootstrapping is handled in the same way as keystone bootstrap.
    - A new keystone-fernet and keystone-ssh container is created to allow
      the nodes to communicate with each other (taken from nova-ssh).
    - The keystone-fernet is a keystone container with crontab installed.
      This will handle key rotations through keystone-manage and trigger
      an rsync to push new tokens to other nodes.
    - Key rotation is setup to be balanced across the keystone nodes using
      a round-robbin style. This ensures that any node failures will not
      stop the keys from rotating. This is configured by a desired token
      expiration time which then determines the cron scheduling for each
      node as well as the number of fernet tokens in rotation.
    - Ability for recovered node to resync with the cluster. When a node
      starts it will run sanity checks to ensure that its fernet tokens
      are not stale. If they are it will rsync with other nodes to ensure
      its tokens are up to date.
    
    The Docker component is implemented in:
      https://review.openstack.org/#/c/349366
    
    Change-Id: I15052c25a1d1149d364236f10ced2e2346119738
    Implements: blueprint keystone-fernet-token
    1c68ae38
    History
    Add full support for fernet
    Shaun Smekel authored
    This addresses the ansible aspects of fernet key bootstrapping as
    well as distributed key rotation.
    
    - Bootstrapping is handled in the same way as keystone bootstrap.
    - A new keystone-fernet and keystone-ssh container is created to allow
      the nodes to communicate with each other (taken from nova-ssh).
    - The keystone-fernet is a keystone container with crontab installed.
      This will handle key rotations through keystone-manage and trigger
      an rsync to push new tokens to other nodes.
    - Key rotation is setup to be balanced across the keystone nodes using
      a round-robbin style. This ensures that any node failures will not
      stop the keys from rotating. This is configured by a desired token
      expiration time which then determines the cron scheduling for each
      node as well as the number of fernet tokens in rotation.
    - Ability for recovered node to resync with the cluster. When a node
      starts it will run sanity checks to ensure that its fernet tokens
      are not stale. If they are it will rsync with other nodes to ensure
      its tokens are up to date.
    
    The Docker component is implemented in:
      https://review.openstack.org/#/c/349366
    
    Change-Id: I15052c25a1d1149d364236f10ced2e2346119738
    Implements: blueprint keystone-fernet-token
main.yml 1.54 KiB