Minor documentation fixes/tweaks (#597)
Mostly typos, grammar errors and inconsistent indentation in code examples. Some errors detected using Topy (https://github.com/intgr/topy), all changes verified by hand.
This commit is contained in:
parent
fbcedc2fa0
commit
71ddbb409c
|
@ -415,7 +415,7 @@ The following configuration properties are required to use the Digicert issuer p
|
||||||
CFSSL Issuer Plugin
|
CFSSL Issuer Plugin
|
||||||
^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The following configuration properties are required to use the the CFSSL issuer plugin.
|
The following configuration properties are required to use the CFSSL issuer plugin.
|
||||||
|
|
||||||
.. data:: CFSSL_URL
|
.. data:: CFSSL_URL
|
||||||
:noindex:
|
:noindex:
|
||||||
|
@ -489,7 +489,7 @@ STS-AssumeRole
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Next we will create the the Lemur IAM role.
|
Next we will create the Lemur IAM role.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
@ -739,7 +739,7 @@ and to get help on sub-commands
|
||||||
Upgrading Lemur
|
Upgrading Lemur
|
||||||
===============
|
===============
|
||||||
|
|
||||||
To upgrade Lemur to the newest release you will need to ensure you have the lastest code and have run any needed
|
To upgrade Lemur to the newest release you will need to ensure you have the latest code and have run any needed
|
||||||
database migrations.
|
database migrations.
|
||||||
|
|
||||||
To get the latest code from github run
|
To get the latest code from github run
|
||||||
|
@ -947,7 +947,7 @@ Identity and Access Management
|
||||||
|
|
||||||
Lemur uses a Role Based Access Control (RBAC) mechanism to control which users have access to which resources. When a
|
Lemur uses a Role Based Access Control (RBAC) mechanism to control which users have access to which resources. When a
|
||||||
user is first created in Lemur they can be assigned one or more roles. These roles are typically dynamically created
|
user is first created in Lemur they can be assigned one or more roles. These roles are typically dynamically created
|
||||||
depending on a external identity provider (Google, LDAP, etc.,) or are hardcoded within Lemur and associated with special
|
depending on an external identity provider (Google, LDAP, etc.), or are hardcoded within Lemur and associated with special
|
||||||
meaning.
|
meaning.
|
||||||
|
|
||||||
Within Lemur there are three main permissions: AdminPermission, CreatorPermission, OwnerPermission. Sub-permissions such
|
Within Lemur there are three main permissions: AdminPermission, CreatorPermission, OwnerPermission. Sub-permissions such
|
||||||
|
|
|
@ -48,7 +48,7 @@ of Lemur. You'll want to make sure you have a few things on your local system fi
|
||||||
* pip
|
* pip
|
||||||
* virtualenv (ideally virtualenvwrapper)
|
* virtualenv (ideally virtualenvwrapper)
|
||||||
* node.js (for npm and building css/javascript)
|
* node.js (for npm and building css/javascript)
|
||||||
* (Optional) Potgresql
|
* (Optional) PostgreSQL
|
||||||
|
|
||||||
Once you've got all that, the rest is simple:
|
Once you've got all that, the rest is simple:
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ This is accomplished with a Gulp task:
|
||||||
The gulp task compiles all the JS/CSS/HTML files and opens the Lemur welcome page in your default browsers. Additionally any changes to made to the JS/CSS/HTML with be reloaded in your browsers.
|
The gulp task compiles all the JS/CSS/HTML files and opens the Lemur welcome page in your default browsers. Additionally any changes to made to the JS/CSS/HTML with be reloaded in your browsers.
|
||||||
|
|
||||||
Developing with Flask
|
Developing with Flask
|
||||||
----------------------
|
---------------------
|
||||||
|
|
||||||
Because Lemur is just Flask, you can use all of the standard Flask functionality. The only difference is you'll be accessing commands that would normally go through manage.py using the ``lemur`` CLI helper instead.
|
Because Lemur is just Flask, you can use all of the standard Flask functionality. The only difference is you'll be accessing commands that would normally go through manage.py using the ``lemur`` CLI helper instead.
|
||||||
|
|
||||||
|
@ -175,7 +175,7 @@ Schema changes should always introduce the new schema in a commit, and then intr
|
||||||
|
|
||||||
Removing columns and tables requires a slightly more painful flow, and should resemble the follow multi-commit flow:
|
Removing columns and tables requires a slightly more painful flow, and should resemble the follow multi-commit flow:
|
||||||
|
|
||||||
- Remove all references to the column or table (but dont remove the Model itself)
|
- Remove all references to the column or table (but don't remove the Model itself)
|
||||||
- Remove the model code
|
- Remove the model code
|
||||||
- Remove the table or column
|
- Remove the table or column
|
||||||
|
|
||||||
|
|
|
@ -167,7 +167,7 @@ By defining an `accountNumber` we can make this plugin handle many N number of A
|
||||||
|
|
||||||
The schema for defining plugin options are pretty straightforward:
|
The schema for defining plugin options are pretty straightforward:
|
||||||
|
|
||||||
- **Name**: name of the variable you wish to present the user, snake case (snakeCase) is preferrred as Lemur
|
- **Name**: name of the variable you wish to present the user, snake case (snakeCase) is preferred as Lemur
|
||||||
will parse these and create pretty variable titles
|
will parse these and create pretty variable titles
|
||||||
- **Type** there are currently four supported variable types
|
- **Type** there are currently four supported variable types
|
||||||
- **Int** creates an html integer box for the user to enter integers into
|
- **Int** creates an html integer box for the user to enter integers into
|
||||||
|
@ -200,7 +200,7 @@ You would also then need to build additional code to trigger the new notificatio
|
||||||
|
|
||||||
The second is `ExpirationNotificationPlugin`, this object inherits from `NotificationPlugin` object.
|
The second is `ExpirationNotificationPlugin`, this object inherits from `NotificationPlugin` object.
|
||||||
You will most likely want to base your plugin on, if you want to add new channels for expiration notices (Slack, Hipcat, Jira, etc.). It adds default options that are required by
|
You will most likely want to base your plugin on, if you want to add new channels for expiration notices (Slack, Hipcat, Jira, etc.). It adds default options that are required by
|
||||||
by all expiration notifications (interval, unit). This interface expects for the child to define the following function::
|
all expiration notifications (interval, unit). This interface expects for the child to define the following function::
|
||||||
|
|
||||||
def send(self):
|
def send(self):
|
||||||
# request.post("some alerting infrastructure")
|
# request.post("some alerting infrastructure")
|
||||||
|
@ -210,10 +210,10 @@ Source
|
||||||
------
|
------
|
||||||
|
|
||||||
When building Lemur we realized that although it would be nice if every certificate went through Lemur to get issued, but this is not
|
When building Lemur we realized that although it would be nice if every certificate went through Lemur to get issued, but this is not
|
||||||
always be the case. Often times there are third parties that will issue certificates on your behalf and these can get deployed
|
always be the case. Oftentimes there are third parties that will issue certificates on your behalf and these can get deployed
|
||||||
to infrastructure without any interaction with Lemur. In an attempt to combat this and try to track every certificate, Lemur has a notion of
|
to infrastructure without any interaction with Lemur. In an attempt to combat this and try to track every certificate, Lemur has a notion of
|
||||||
certificate **Sources**. Lemur will contact the source at periodic intervals and attempt to **sync** against the source. This means downloading or discovering any
|
certificate **Sources**. Lemur will contact the source at periodic intervals and attempt to **sync** against the source. This means downloading or discovering any
|
||||||
certificate Lemur does not know about and adding the certificate to it's inventory to be tracked and alerted on.
|
certificate Lemur does not know about and adding the certificate to its inventory to be tracked and alerted on.
|
||||||
|
|
||||||
The `SourcePlugin` object has one default option of `pollRate`. This controls the number of seconds which to get new certificates.
|
The `SourcePlugin` object has one default option of `pollRate`. This controls the number of seconds which to get new certificates.
|
||||||
|
|
||||||
|
@ -230,7 +230,7 @@ The `SourcePlugin` object requires implementation of one function::
|
||||||
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
Often times to facilitate code re-use it makes sense put source and destination plugins into one package.
|
Oftentimes to facilitate code re-use it makes sense put source and destination plugins into one package.
|
||||||
|
|
||||||
|
|
||||||
Export
|
Export
|
||||||
|
|
|
@ -18,7 +18,7 @@ that Lemur can then manage.
|
||||||
|
|
||||||
.. figure:: create_authority.png
|
.. figure:: create_authority.png
|
||||||
|
|
||||||
Enter a authority name and short description about the authority. Enter an owner,
|
Enter an authority name and short description about the authority. Enter an owner,
|
||||||
and certificate common name. Depending on the authority and the authority/issuer plugin
|
and certificate common name. Depending on the authority and the authority/issuer plugin
|
||||||
these values may or may not be used.
|
these values may or may not be used.
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ Import an Existing Certificate
|
||||||
|
|
||||||
.. figure:: upload_certificate.png
|
.. figure:: upload_certificate.png
|
||||||
|
|
||||||
Enter a owner, short description and public certificate. If there are intermediates and private keys
|
Enter an owner, short description and public certificate. If there are intermediates and private keys
|
||||||
Lemur will track them just as it does if the certificate were created through Lemur. Lemur generates
|
Lemur will track them just as it does if the certificate were created through Lemur. Lemur generates
|
||||||
a certificate name but you can override that by passing a value to the `Custom Name` field.
|
a certificate name but you can override that by passing a value to the `Custom Name` field.
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@ Doing a Release
|
||||||
doing-a-release
|
doing-a-release
|
||||||
|
|
||||||
FAQ
|
FAQ
|
||||||
----
|
---
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
|
@ -37,13 +37,13 @@ Entropy
|
||||||
-------
|
-------
|
||||||
|
|
||||||
Lemur generates private keys for the certificates it creates. This means that it is vitally important that Lemur has enough entropy to draw from. To generate private keys Lemur uses the python library `Cryptography <https://cryptography.io>`_. In turn Cryptography uses OpenSSL bindings to generate
|
Lemur generates private keys for the certificates it creates. This means that it is vitally important that Lemur has enough entropy to draw from. To generate private keys Lemur uses the python library `Cryptography <https://cryptography.io>`_. In turn Cryptography uses OpenSSL bindings to generate
|
||||||
keys just like you might from the OpenSSL command line. OpenSSL draws it's initial entropy from system during startup and uses PRNGs to generate a stream of random bytes (as output by /dev/urandom) whenever it needs to do a cryptographic operation.
|
keys just like you might from the OpenSSL command line. OpenSSL draws its initial entropy from system during startup and uses PRNGs to generate a stream of random bytes (as output by /dev/urandom) whenever it needs to do a cryptographic operation.
|
||||||
|
|
||||||
What does all this mean? Well in order for the keys
|
What does all this mean? Well in order for the keys
|
||||||
that Lemur generates to be strong, the system needs to interact with the outside world. This is typically accomplished through the systems hardware (thermal, sound, video user-input, etc.) since the physical world is much more "random" than the computer world.
|
that Lemur generates to be strong, the system needs to interact with the outside world. This is typically accomplished through the systems hardware (thermal, sound, video user-input, etc.) since the physical world is much more "random" than the computer world.
|
||||||
|
|
||||||
If you are running Lemur on its own server with its own hardware "bare metal" then the entropy of the system is typically "good enough" for generating keys. If however you are using an VM on shared hardware there is a potential that your initial seed data (data that was initially
|
If you are running Lemur on its own server with its own hardware "bare metal" then the entropy of the system is typically "good enough" for generating keys. If however you are using a VM on shared hardware there is a potential that your initial seed data (data that was initially
|
||||||
fed to the PRNG) is not very good. What's more VMs have been known to be unable to inject more entropy into the system once it has been started. This is because there is typically very little interaction with the server once it has been started.
|
fed to the PRNG) is not very good. What's more, VMs have been known to be unable to inject more entropy into the system once it has been started. This is because there is typically very little interaction with the server once it has been started.
|
||||||
|
|
||||||
The amount of effort you wish to expend ensuring that Lemur has good entropy to draw from is up to your specific risk tolerance and how Lemur is configured.
|
The amount of effort you wish to expend ensuring that Lemur has good entropy to draw from is up to your specific risk tolerance and how Lemur is configured.
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ Nginx is a very popular choice to serve a Python project:
|
||||||
Nginx doesn't run any Python process, it only serves requests from outside to
|
Nginx doesn't run any Python process, it only serves requests from outside to
|
||||||
the Python server.
|
the Python server.
|
||||||
|
|
||||||
Therefore there are two steps:
|
Therefore, there are two steps:
|
||||||
|
|
||||||
- Run the Python process.
|
- Run the Python process.
|
||||||
- Run Nginx.
|
- Run Nginx.
|
||||||
|
@ -223,7 +223,7 @@ Also included in the configurations above are several best practices when it com
|
||||||
HSTS, disabling vulnerable ciphers are all good ideas when it comes to deploying Lemur into a production environment.
|
HSTS, disabling vulnerable ciphers are all good ideas when it comes to deploying Lemur into a production environment.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
This is a rather incomplete apache config for running Lemur (needs mod_wsgi etc.,), if you have a working apache config please let us know!
|
This is a rather incomplete apache config for running Lemur (needs mod_wsgi etc.), if you have a working apache config please let us know!
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
`Mozilla SSL Configuration Generator <https://mozilla.github.io/server-side-tls/ssl-config-generator/>`_
|
`Mozilla SSL Configuration Generator <https://mozilla.github.io/server-side-tls/ssl-config-generator/>`_
|
||||||
|
|
|
@ -16,7 +16,7 @@ Some basic prerequisites which you'll need in order to run Lemur:
|
||||||
* PostgreSQL 9.4 or greater
|
* PostgreSQL 9.4 or greater
|
||||||
* Nginx
|
* Nginx
|
||||||
|
|
||||||
.. note:: Lemur was built with in AWS in mind. This means that things such as databases (RDS), mail (SES), and TLS (ELB), are largely handled for us. Lemur does **not** require AWS to function. Our guides and documentation try to be be as generic as possible and are not intended to document every step of launching Lemur into a given environment.
|
.. note:: Lemur was built with in AWS in mind. This means that things such as databases (RDS), mail (SES), and TLS (ELB), are largely handled for us. Lemur does **not** require AWS to function. Our guides and documentation try to be as generic as possible and are not intended to document every step of launching Lemur into a given environment.
|
||||||
|
|
||||||
|
|
||||||
Installing Build Dependencies
|
Installing Build Dependencies
|
||||||
|
@ -105,7 +105,7 @@ Update your configuration
|
||||||
|
|
||||||
Once created, you will need to update the configuration file with information about your environment, such as which database to talk to, where keys are stored etc.
|
Once created, you will need to update the configuration file with information about your environment, such as which database to talk to, where keys are stored etc.
|
||||||
|
|
||||||
.. note:: If you are unfamiliar with with the SQLALCHEMY_DATABASE_URI string it can be broken up like so:
|
.. note:: If you are unfamiliar with the SQLALCHEMY_DATABASE_URI string it can be broken up like so:
|
||||||
``postgresql://userame:password@<database-fqdn>:<database-port>/<database-name>``
|
``postgresql://userame:password@<database-fqdn>:<database-port>/<database-name>``
|
||||||
|
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ Next, we will create our new database:
|
||||||
.. _InitializingLemur:
|
.. _InitializingLemur:
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
For this guide we assume you will use the `postgres` user to connect to your database, when deploying to a VM or container this is often all you will need. If you have a shared database it is recommend you give Lemur it's own user.
|
For this guide we assume you will use the `postgres` user to connect to your database, when deploying to a VM or container this is often all you will need. If you have a shared database it is recommend you give Lemur its own user.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
Postgres 9.4 or greater is required as Lemur relies advanced data columns (e.g. JSON Column type)
|
Postgres 9.4 or greater is required as Lemur relies advanced data columns (e.g. JSON Column type)
|
||||||
|
|
|
@ -60,7 +60,7 @@ and public disclosure may be shortened considerably.
|
||||||
|
|
||||||
The list of people and organizations who receives advanced notification of
|
The list of people and organizations who receives advanced notification of
|
||||||
security issues is not, and will not, be made public. This list generally
|
security issues is not, and will not, be made public. This list generally
|
||||||
consists of high profile downstream distributors and is entirely at the
|
consists of high-profile downstream distributors and is entirely at the
|
||||||
discretion of the ``lemur`` team.
|
discretion of the ``lemur`` team.
|
||||||
|
|
||||||
.. _`master`: https://github.com/Netflix/lemur
|
.. _`master`: https://github.com/Netflix/lemur
|
||||||
|
|
|
@ -108,7 +108,7 @@ class Login(Resource):
|
||||||
class Ping(Resource):
|
class Ping(Resource):
|
||||||
"""
|
"""
|
||||||
This class serves as an example of how one might implement an SSO provider for use with Lemur. In
|
This class serves as an example of how one might implement an SSO provider for use with Lemur. In
|
||||||
this example we use a OpenIDConnect authentication flow, that is essentially OAuth2 underneath. If you have an
|
this example we use an OpenIDConnect authentication flow, that is essentially OAuth2 underneath. If you have an
|
||||||
OAuth2 provider you want to use Lemur there would be two steps:
|
OAuth2 provider you want to use Lemur there would be two steps:
|
||||||
|
|
||||||
1. Define your own class that inherits from :class:`flask.ext.restful.Resource` and create the HTTP methods the \
|
1. Define your own class that inherits from :class:`flask.ext.restful.Resource` and create the HTTP methods the \
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.authorities.models
|
.. module: lemur.authorities.models
|
||||||
:platform: unix
|
:platform: unix
|
||||||
:synopsis: This module contains all of the models need to create a authority within Lemur.
|
:synopsis: This module contains all of the models need to create an authority within Lemur.
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
.. moduleauthor:: Kevin Glisson <kglisson@netflix.com>
|
.. moduleauthor:: Kevin Glisson <kglisson@netflix.com>
|
||||||
|
|
|
@ -18,7 +18,7 @@ from lemur.certificates.service import upload
|
||||||
|
|
||||||
def update(authority_id, description=None, owner=None, active=None, roles=None):
|
def update(authority_id, description=None, owner=None, active=None, roles=None):
|
||||||
"""
|
"""
|
||||||
Update a an authority with new values.
|
Update an authority with new values.
|
||||||
|
|
||||||
:param authority_id:
|
:param authority_id:
|
||||||
:param roles: roles that are allowed to use this authority
|
:param roles: roles that are allowed to use this authority
|
||||||
|
@ -178,7 +178,7 @@ def render(args):
|
||||||
else:
|
else:
|
||||||
query = database.filter(query, Authority, terms)
|
query = database.filter(query, Authority, terms)
|
||||||
|
|
||||||
# we make sure that a user can only use an authority they either own are are a member of - admins can see all
|
# we make sure that a user can only use an authority they either own are a member of - admins can see all
|
||||||
if not args['user'].is_admin:
|
if not args['user'].is_admin:
|
||||||
authority_ids = []
|
authority_ids = []
|
||||||
for authority in args['user'].authorities:
|
for authority in args['user'].authorities:
|
||||||
|
|
|
@ -95,7 +95,7 @@ class AuthoritiesList(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int default is 1
|
:query page: int default is 1
|
||||||
:query filter: key value pair. format is k;v
|
:query filter: key value pair. format is k;v
|
||||||
:query count: count number default is 10
|
:query count: count number default is 10
|
||||||
|
@ -285,7 +285,7 @@ class Authorities(AuthenticatedResource):
|
||||||
"""
|
"""
|
||||||
.. http:put:: /authorities/1
|
.. http:put:: /authorities/1
|
||||||
|
|
||||||
Update a authority
|
Update an authority
|
||||||
|
|
||||||
**Example request**:
|
**Example request**:
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ from lemur.roles import service as role_service
|
||||||
|
|
||||||
def get(cert_id):
|
def get(cert_id):
|
||||||
"""
|
"""
|
||||||
Retrieves certificate by it's ID.
|
Retrieves certificate by its ID.
|
||||||
|
|
||||||
:param cert_id:
|
:param cert_id:
|
||||||
:return:
|
:return:
|
||||||
|
@ -42,7 +42,7 @@ def get(cert_id):
|
||||||
|
|
||||||
def get_by_name(name):
|
def get_by_name(name):
|
||||||
"""
|
"""
|
||||||
Retrieves certificate by it's Name.
|
Retrieves certificate by its Name.
|
||||||
|
|
||||||
:param name:
|
:param name:
|
||||||
:return:
|
:return:
|
||||||
|
|
|
@ -111,7 +111,7 @@ class CertificatesList(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int. default is 1
|
:query page: int. default is 1
|
||||||
:query filter: key value pair format is k;v
|
:query filter: key value pair format is k;v
|
||||||
:query count: count number. default is 10
|
:query count: count number. default is 10
|
||||||
|
@ -296,10 +296,10 @@ class CertificatesUpload(AuthenticatedResource):
|
||||||
Accept: application/json, text/javascript
|
Accept: application/json, text/javascript
|
||||||
|
|
||||||
{
|
{
|
||||||
"owner": "joe@exmaple.com",
|
"owner": "joe@example.com",
|
||||||
"publicCert": "---Begin Public...",
|
"publicCert": "-----BEGIN CERTIFICATE-----...",
|
||||||
"intermediateCert": "---Begin Public...",
|
"intermediateCert": "-----BEGIN CERTIFICATE-----...",
|
||||||
"privateKey": "---Begin Private..."
|
"privateKey": "-----BEGIN RSA PRIVATE KEY-----..."
|
||||||
"destinations": [],
|
"destinations": [],
|
||||||
"notifications": [],
|
"notifications": [],
|
||||||
"replacements": [],
|
"replacements": [],
|
||||||
|
@ -427,7 +427,7 @@ class CertificatePrivateKey(AuthenticatedResource):
|
||||||
Content-Type: text/javascript
|
Content-Type: text/javascript
|
||||||
|
|
||||||
{
|
{
|
||||||
"key": "----Begin ...",
|
"key": "-----BEGIN ...",
|
||||||
}
|
}
|
||||||
|
|
||||||
:reqheader Authorization: OAuth token to authenticate
|
:reqheader Authorization: OAuth token to authenticate
|
||||||
|
@ -732,7 +732,7 @@ class NotificationCertificatesList(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int default is 1
|
:query page: int default is 1
|
||||||
:query filter: key value pair format is k;v
|
:query filter: key value pair format is k;v
|
||||||
:query count: count number default is 10
|
:query count: count number default is 10
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.status.views
|
.. module: lemur.defaults.views
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -56,7 +56,7 @@ def delete(destination_id):
|
||||||
|
|
||||||
def get(destination_id):
|
def get(destination_id):
|
||||||
"""
|
"""
|
||||||
Retrieves an destination by it's lemur assigned ID.
|
Retrieves an destination by its lemur assigned ID.
|
||||||
|
|
||||||
:param destination_id: Lemur assigned ID
|
:param destination_id: Lemur assigned ID
|
||||||
:rtype : Destination
|
:rtype : Destination
|
||||||
|
@ -67,7 +67,7 @@ def get(destination_id):
|
||||||
|
|
||||||
def get_by_label(label):
|
def get_by_label(label):
|
||||||
"""
|
"""
|
||||||
Retrieves a destination by it's label
|
Retrieves a destination by its label
|
||||||
|
|
||||||
:param label:
|
:param label:
|
||||||
:return:
|
:return:
|
||||||
|
|
|
@ -82,7 +82,7 @@ class DestinationsList(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int. default is 1
|
:query page: int. default is 1
|
||||||
:query filter: key value pair format is k;v
|
:query filter: key value pair format is k;v
|
||||||
:query count: count number default is 10
|
:query count: count number default is 10
|
||||||
|
@ -392,7 +392,7 @@ class CertificateDestinations(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int default is 1
|
:query page: int default is 1
|
||||||
:query filter: key value pair format is k;v
|
:query filter: key value pair format is k;v
|
||||||
:query count: count number default is 10
|
:query count: count number default is 10
|
||||||
|
|
|
@ -34,7 +34,7 @@ def get_all():
|
||||||
|
|
||||||
def get_by_name(name):
|
def get_by_name(name):
|
||||||
"""
|
"""
|
||||||
Fetches domain by it's name
|
Fetches domain by its name
|
||||||
|
|
||||||
:param name:
|
:param name:
|
||||||
:return:
|
:return:
|
||||||
|
|
|
@ -68,7 +68,7 @@ class DomainsList(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int default is 1
|
:query page: int default is 1
|
||||||
:query filter: key value pair format is k;v
|
:query filter: key value pair format is k;v
|
||||||
:query count: count number. default is 10
|
:query count: count number. default is 10
|
||||||
|
@ -115,7 +115,7 @@ class DomainsList(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int default is 1
|
:query page: int default is 1
|
||||||
:query filter: key value pair format is k;v
|
:query filter: key value pair format is k;v
|
||||||
:query count: count number default is 10
|
:query count: count number default is 10
|
||||||
|
@ -255,7 +255,7 @@ class CertificateDomains(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int default is 1
|
:query page: int default is 1
|
||||||
:query filter: key value pair format is k;v
|
:query filter: key value pair format is k;v
|
||||||
:query count: count number default is 10
|
:query count: count number default is 10
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.certificate.cli
|
.. module: lemur.endpoints.cli
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.endpoints.models
|
.. module: lemur.endpoints.models
|
||||||
:platform: unix
|
:platform: unix
|
||||||
:synopsis: This module contains all of the models need to create a authority within Lemur.
|
:synopsis: This module contains all of the models need to create an authority within Lemur.
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
.. moduleauthor:: Kevin Glisson <kglisson@netflix.com>
|
.. moduleauthor:: Kevin Glisson <kglisson@netflix.com>
|
||||||
|
|
|
@ -51,7 +51,7 @@ class EndpointsList(AuthenticatedResource):
|
||||||
|
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int default is 1
|
:query page: int default is 1
|
||||||
:query filter: key value pair. format is k;v
|
:query filter: key value pair. format is k;v
|
||||||
:query limit: limit number default is 10
|
:query limit: limit number default is 10
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.log.views
|
.. module: lemur.logs.views
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
|
@ -57,7 +57,7 @@ class LogsList(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int default is 1
|
:query page: int default is 1
|
||||||
:query filter: key value pair format is k;v
|
:query filter: key value pair format is k;v
|
||||||
:query count: count number default is 10
|
:query count: count number default is 10
|
||||||
|
|
|
@ -372,7 +372,7 @@ class LemurServer(Command):
|
||||||
|
|
||||||
app = WSGIApplication()
|
app = WSGIApplication()
|
||||||
|
|
||||||
# run startup tasks on a app like object
|
# run startup tasks on an app like object
|
||||||
pre_app = create_app(kwargs.get('config'))
|
pre_app = create_app(kwargs.get('config'))
|
||||||
validate_conf(pre_app, REQUIRED_VARIABLES)
|
validate_conf(pre_app, REQUIRED_VARIABLES)
|
||||||
|
|
||||||
|
|
|
@ -127,7 +127,7 @@ def delete(notification_id):
|
||||||
|
|
||||||
def get(notification_id):
|
def get(notification_id):
|
||||||
"""
|
"""
|
||||||
Retrieves an notification by it's lemur assigned ID.
|
Retrieves an notification by its lemur assigned ID.
|
||||||
|
|
||||||
:param notification_id: Lemur assigned ID
|
:param notification_id: Lemur assigned ID
|
||||||
:rtype : Notification
|
:rtype : Notification
|
||||||
|
@ -138,7 +138,7 @@ def get(notification_id):
|
||||||
|
|
||||||
def get_by_label(label):
|
def get_by_label(label):
|
||||||
"""
|
"""
|
||||||
Retrieves a notification by it's label
|
Retrieves a notification by its label
|
||||||
|
|
||||||
:param label:
|
:param label:
|
||||||
:return:
|
:return:
|
||||||
|
|
|
@ -95,7 +95,7 @@ class NotificationsList(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int default is 1
|
:query page: int default is 1
|
||||||
:query filter: key value pair format is k;v
|
:query filter: key value pair format is k;v
|
||||||
:query count: count number default is 10
|
:query count: count number default is 10
|
||||||
|
@ -419,7 +419,7 @@ class CertificateNotifications(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int default is 1
|
:query page: int default is 1
|
||||||
:query filter: key value pair format is k;v
|
:query filter: key value pair format is k;v
|
||||||
:query count: count number default is 10
|
:query count: count number default is 10
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.bases.destination
|
.. module: lemur.plugins.bases.destination
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.bases.export
|
.. module: lemur.plugins.bases.export
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.bases.issuer
|
.. module: lemur.plugins.bases.issuer
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.bases.metric
|
.. module: lemur.plugins.bases.metric
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.bases.notification
|
.. module: lemur.plugins.bases.notification
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.bases.source
|
.. module: lemur.plugins.bases.source
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.plugins.lemur_acme.acme
|
.. module: lemur.plugins.lemur_acme.plugin
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:synopsis: This module is responsible for communicating with a ACME CA.
|
:synopsis: This module is responsible for communicating with an ACME CA.
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
|
|
||||||
|
@ -179,7 +179,7 @@ class ACMEIssuerPlugin(IssuerPlugin):
|
||||||
|
|
||||||
def create_certificate(self, csr, issuer_options):
|
def create_certificate(self, csr, issuer_options):
|
||||||
"""
|
"""
|
||||||
Creates a ACME certificate.
|
Creates an ACME certificate.
|
||||||
|
|
||||||
:param csr:
|
:param csr:
|
||||||
:param issuer_options:
|
:param issuer_options:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.plugins.lemur_aws.elb
|
.. module: lemur.plugins.lemur_aws.ec2
|
||||||
:synopsis: Module contains some often used and helpful classes that
|
:synopsis: Module contains some often used and helpful classes that
|
||||||
are used to deal with ELBs
|
are used to deal with ELBs
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.plugins.lemur_aws.aws
|
.. module: lemur.plugins.lemur_aws.plugin
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.common.services.aws.sts
|
.. module: lemur.plugins.lemur_aws.sts
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.plugins.lemur_digicert.digicert
|
.. module: lemur.plugins.lemur_digicert.plugin
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:synopsis: This module is responsible for communicating with the DigiCert '
|
:synopsis: This module is responsible for communicating with the DigiCert '
|
||||||
Advanced API.
|
Advanced API.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.plugins.lemur_kubernetes.aws
|
.. module: lemur.plugins.lemur_kubernetes.plugin
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.plugins.lemur_slack.slack
|
.. module: lemur.plugins.lemur_slack.plugin
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.plugins.lemur_verisign.verisign
|
.. module: lemur.plugins.lemur_verisign.plugin
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:synopsis: This module is responsible for communicating with the VeriSign VICE 2.0 API.
|
:synopsis: This module is responsible for communicating with the VeriSign VICE 2.0 API.
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
|
@ -196,7 +196,7 @@ class VerisignIssuerPlugin(IssuerPlugin):
|
||||||
|
|
||||||
def get_available_units(self):
|
def get_available_units(self):
|
||||||
"""
|
"""
|
||||||
Uses the Verisign to fetch the number of available unit's left. This can be used to get tabs
|
Uses the Verisign to fetch the number of available units left. This can be used to get tabs
|
||||||
on the number of certificates that can be issued.
|
on the number of certificates that can be issued.
|
||||||
|
|
||||||
:return:
|
:return:
|
||||||
|
|
|
@ -79,7 +79,7 @@ class PluginsList(AuthenticatedResource):
|
||||||
|
|
||||||
|
|
||||||
class Plugins(AuthenticatedResource):
|
class Plugins(AuthenticatedResource):
|
||||||
""" Defines the the 'plugins' endpoint """
|
""" Defines the 'plugins' endpoint """
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(Plugins, self).__init__()
|
super(Plugins, self).__init__()
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ def get(role_id):
|
||||||
|
|
||||||
def get_by_name(role_name):
|
def get_by_name(role_name):
|
||||||
"""
|
"""
|
||||||
Retrieve a role by it's name
|
Retrieve a role by its name
|
||||||
|
|
||||||
:param role_name:
|
:param role_name:
|
||||||
:return:
|
:return:
|
||||||
|
|
|
@ -70,7 +70,7 @@ class RolesList(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int default is 1
|
:query page: int default is 1
|
||||||
:query filter: key value pair format is k;v
|
:query filter: key value pair format is k;v
|
||||||
:query count: count number default is 10
|
:query count: count number default is 10
|
||||||
|
@ -353,7 +353,7 @@ class UserRolesList(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int default is 1
|
:query page: int default is 1
|
||||||
:query filter: key value pair format is k;v
|
:query filter: key value pair format is k;v
|
||||||
:query count: count number default is 10
|
:query count: count number default is 10
|
||||||
|
@ -412,7 +412,7 @@ class AuthorityRolesList(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int default is 1
|
:query page: int default is 1
|
||||||
:query filter: key value pair format is k;v
|
:query filter: key value pair format is k;v
|
||||||
:query count: count number default is 10
|
:query count: count number default is 10
|
||||||
|
|
|
@ -257,7 +257,7 @@ def delete(source_id):
|
||||||
|
|
||||||
def get(source_id):
|
def get(source_id):
|
||||||
"""
|
"""
|
||||||
Retrieves an source by it's lemur assigned ID.
|
Retrieves an source by its lemur assigned ID.
|
||||||
|
|
||||||
:param source_id: Lemur assigned ID
|
:param source_id: Lemur assigned ID
|
||||||
:rtype : Source
|
:rtype : Source
|
||||||
|
@ -268,7 +268,7 @@ def get(source_id):
|
||||||
|
|
||||||
def get_by_label(label):
|
def get_by_label(label):
|
||||||
"""
|
"""
|
||||||
Retrieves a source by it's label
|
Retrieves a source by its label
|
||||||
|
|
||||||
:param label:
|
:param label:
|
||||||
:return:
|
:return:
|
||||||
|
|
|
@ -75,7 +75,7 @@ class SourcesList(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int default is 1
|
:query page: int default is 1
|
||||||
:query filter: key value pair format is k;v
|
:query filter: key value pair format is k;v
|
||||||
:query count: count number default is 10
|
:query count: count number default is 10
|
||||||
|
@ -331,7 +331,7 @@ class CertificateSources(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int default is 1
|
:query page: int default is 1
|
||||||
:query filter: key value pair format is k;v
|
:query filter: key value pair format is k;v
|
||||||
:query count: count number default is 10
|
:query count: count number default is 10
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
.. module: lemur.user.views
|
.. module: lemur.users.views
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
:license: Apache, see LICENSE for more details.
|
:license: Apache, see LICENSE for more details.
|
||||||
|
@ -75,7 +75,7 @@ class UsersList(AuthenticatedResource):
|
||||||
}
|
}
|
||||||
|
|
||||||
:query sortBy: field to sort on
|
:query sortBy: field to sort on
|
||||||
:query sortDir: acs or desc
|
:query sortDir: asc or desc
|
||||||
:query page: int default is 1
|
:query page: int default is 1
|
||||||
:query filter: key value pair format is k;v
|
:query filter: key value pair format is k;v
|
||||||
:query count: count number default is 10
|
:query count: count number default is 10
|
||||||
|
|
|
@ -70,7 +70,7 @@ class Vault(types.TypeDecorator):
|
||||||
"""
|
"""
|
||||||
A custom SQLAlchemy column type that transparently handles encryption.
|
A custom SQLAlchemy column type that transparently handles encryption.
|
||||||
|
|
||||||
This uses the MultiFernet from the cryptography package to faciliate
|
This uses the MultiFernet from the cryptography package to facilitate
|
||||||
key rotation. That class handles encryption and signing.
|
key rotation. That class handles encryption and signing.
|
||||||
|
|
||||||
Fernet uses AES in CBC mode with 128-bit keys and PKCS7 padding. It
|
Fernet uses AES in CBC mode with 128-bit keys and PKCS7 padding. It
|
||||||
|
|
Loading…
Reference in New Issue