From d7af9cd95c341a4f66b79576ec2dd428a05fc091 Mon Sep 17 00:00:00 2001 From: meng-han <4225835+meng-han@users.noreply.github.com> Date: Wed, 16 Oct 2024 22:17:40 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20master=20@?= =?UTF-8?q?=2078f7057af795b1f0e48b1044c475b2b8dd896ed9=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .buildinfo | 2 +- .doctrees/api.doctree | Bin 250869 -> 250869 bytes .doctrees/autogen/confidant.services.doctree | Bin 199594 -> 144375 bytes .../tests.unit.confidant.services.doctree | Bin 119602 -> 74535 bytes .doctrees/environment.pickle | Bin 469977 -> 456503 bytes .../tests.unit.confidant.services.rst.txt | 9 - _static/documentation_options.js | 2 +- acls.html | 4 +- api.html | 36 +-- autogen/confidant.authnz.html | 4 +- autogen/confidant.clients.html | 4 +- autogen/confidant.html | 4 +- autogen/confidant.lib.html | 4 +- autogen/confidant.models.html | 4 +- autogen/confidant.routes.html | 4 +- autogen/confidant.schema.html | 4 +- autogen/confidant.scripts.html | 4 +- autogen/confidant.services.html | 224 ++---------------- autogen/confidant.utils.html | 4 +- autogen/dev_wsgi.html | 4 +- autogen/manage.html | 4 +- autogen/setup.html | 4 +- autogen/tests.html | 4 +- .../tests.integration.confidant.authnz.html | 4 +- autogen/tests.integration.confidant.html | 4 +- autogen/tests.integration.html | 4 +- autogen/tests.unit.confidant.authnz.html | 4 +- autogen/tests.unit.confidant.html | 5 +- autogen/tests.unit.confidant.models.html | 4 +- autogen/tests.unit.confidant.routes.html | 4 +- autogen/tests.unit.confidant.services.html | 102 +------- autogen/tests.unit.html | 5 +- blind_secrets.html | 4 +- changelog.html | 4 +- client.html | 4 +- configuration.html | 4 +- contents.html | 4 +- contributing.html | 4 +- data_schema.html | 4 +- genindex.html | 163 ++----------- http-routingtable.html | 4 +- install.html | 4 +- kms_auth.html | 4 +- maintenance.html | 4 +- objects.inv | Bin 11314 -> 10939 bytes py-modindex.html | 9 +- search.html | 4 +- searchindex.js | 2 +- security_reporting.html | 4 +- support.html | 4 +- threat_model.html | 4 +- upgrade.html | 4 +- using_confidant.html | 4 +- 53 files changed, 140 insertions(+), 567 deletions(-) diff --git a/.buildinfo b/.buildinfo index c1cc6bea..87c969dd 100644 --- a/.buildinfo +++ b/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: c161d53b19956c230366c3aad3625c54 +config: 0c7beff1f873ff949b92d3dbd59c647d tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.doctrees/api.doctree b/.doctrees/api.doctree index 7d11e5b00a9ba6a4774977709b46bdaa5edb8ba0..5fd85de2537565c11f978160a416c6c1132ee4cc 100644 GIT binary patch delta 342 zcmW;EPbh6vHApB}X_mxM%8o>&RxFtPb_B&XF5a*<@k1$!Lcw|B4nVP*cXGBGJ(RCd!oVsb0aBp0%B2W$=z zcITMB;m8msrCzMdr8tmmIFem>le!={MJSGOebMRl;Gt2#=eV1T^Jv%FU{_rz7kR|A zPDE7^@uo8HS}8s(b@Wk7Hf@V8Ov64^{9KwAaT=z z-=`nkrG4CHEi4(gKL1=8_EOZK`(LJ34Vhhs=$q9<$V($E5FsV0Ow)VOzry-v>B?Z3 hZLTm~hN+)&>^Dr^$>oSK8PZyGfeLZS=t9w)_6N=PiBSLm delta 330 zcmeymod4@`{tZcrll@gp85d4&RZ*F|Q_*PhZ55r#qDmr@rB&lLw}lUJ%3O-@MSocu*maWcEA$mDrRJd;h8{5Mys+L%p#6lc%Bo|Azg zgFSXihFFhqfPe6$7~jdY@n(}7V?-t&kI&uwKjtyxh!PB9qt4@JzlEFEx30jLT+|gqqCh=QSDSC!am}Z}P93PD}zKlkIL9Z+1An zi)Z@$ql}W1g>IalT(DPm@}C?3ChNWAoP6b!1yir+WWLizn+tCN6+IAQlGyC>Jhc&Q z&h%p$j6bIf6foK{hEDe@VAS8PmBsjh8En*aqddlAAhV{6=K~e(&t$Y=d_4V6CZpc= X+5(UwkWuYzC5%AKw7so_IX@l%--?7y diff --git a/.doctrees/autogen/confidant.services.doctree b/.doctrees/autogen/confidant.services.doctree index 942c788a98d1fee6d10e91b36bde41256da9ddfe..62ce4ebbd952fd4e9596df498305acf1711bc71e 100644 GIT binary patch literal 144375 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 literal 199594 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 T$KeP_1E!B4tnRGvf7Aa4RVMZD literal 119602 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�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�s9C>BR+)t(?w7^zKvn}A#Ap3>Fd1wv= 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 p2``sS=PJ1etFU8-_ooI+p`}$^xZ - Access Controls (ACLs) — confidant 6.6.2-e682a6 documentation + Access Controls (ACLs) — confidant 6.6.2-78f705 documentation @@ -37,7 +37,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/api.html b/api.html index 99331edf..ae7e0b7c 100644 --- a/api.html +++ b/api.html @@ -4,7 +4,7 @@ - API — confidant 6.6.2-e682a6 documentation + API — confidant 6.6.2-78f705 documentation @@ -37,7 +37,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
@@ -359,11 +359,11 @@

API route documentation

Authenticate

-

POST /v1/login

+

GET /v1/login

Send user through login flow.

-

GET /v1/login

+

POST /v1/login

Certificate

@@ -423,11 +423,11 @@

API route documentation

Get a list of the metadata for all current

Email Address

-

POST /v1/user/email

+

GET /v1/user/email

Get the email address associated with the

-

GET /v1/user/email

+

POST /v1/user/email

IAM Roles

@@ -608,9 +608,9 @@

API route documentation -
-
-POST /v1/user/email¶
+
+
+GET /v1/user/email¶

Get the email associated with the currently authenticated user.

Example request:

GET /v1/user/email
@@ -639,9 +639,9 @@ 

API route documentation

-
-
-GET /v1/user/email¶
+
+
+POST /v1/user/email¶

Get the email associated with the currently authenticated user.

Example request:

GET /v1/user/email
@@ -937,9 +937,9 @@ 

API route documentation

-
-
-POST /v1/login¶
+
+
+GET /v1/login¶

Send user through login flow. Response depends on configured authentication plugin.

Example request:

@@ -948,9 +948,9 @@

API route documentation

-
-
-GET /v1/login¶
+
+
+POST /v1/login¶

Send user through login flow. Response depends on configured authentication plugin.

Example request:

diff --git a/autogen/confidant.authnz.html b/autogen/confidant.authnz.html index df22ca4e..d72884a6 100644 --- a/autogen/confidant.authnz.html +++ b/autogen/confidant.authnz.html @@ -4,7 +4,7 @@ - confidant.authnz package — confidant 6.6.2-e682a6 documentation + confidant.authnz package — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/confidant.clients.html b/autogen/confidant.clients.html index 9e484111..5bad9815 100644 --- a/autogen/confidant.clients.html +++ b/autogen/confidant.clients.html @@ -4,7 +4,7 @@ - confidant.clients package — confidant 6.6.2-e682a6 documentation + confidant.clients package — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/confidant.html b/autogen/confidant.html index 6200f2bf..aeaf6d81 100644 --- a/autogen/confidant.html +++ b/autogen/confidant.html @@ -4,7 +4,7 @@ - confidant package — confidant 6.6.2-e682a6 documentation + confidant package — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/confidant.lib.html b/autogen/confidant.lib.html index 1b5cf277..e8a16ad6 100644 --- a/autogen/confidant.lib.html +++ b/autogen/confidant.lib.html @@ -4,7 +4,7 @@ - confidant.lib package — confidant 6.6.2-e682a6 documentation + confidant.lib package — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/confidant.models.html b/autogen/confidant.models.html index 3b82bbb3..361a306d 100644 --- a/autogen/confidant.models.html +++ b/autogen/confidant.models.html @@ -4,7 +4,7 @@ - confidant.models package — confidant 6.6.2-e682a6 documentation + confidant.models package — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/confidant.routes.html b/autogen/confidant.routes.html index 87f151b1..fda62457 100644 --- a/autogen/confidant.routes.html +++ b/autogen/confidant.routes.html @@ -4,7 +4,7 @@ - confidant.routes package — confidant 6.6.2-e682a6 documentation + confidant.routes package — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/confidant.schema.html b/autogen/confidant.schema.html index d2cb90a3..abcb4951 100644 --- a/autogen/confidant.schema.html +++ b/autogen/confidant.schema.html @@ -4,7 +4,7 @@ - confidant.schema package — confidant 6.6.2-e682a6 documentation + confidant.schema package — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/confidant.scripts.html b/autogen/confidant.scripts.html index 55c642f0..d0e5d6c1 100644 --- a/autogen/confidant.scripts.html +++ b/autogen/confidant.scripts.html @@ -4,7 +4,7 @@ - confidant.scripts package — confidant 6.6.2-e682a6 documentation + confidant.scripts package — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/confidant.services.html b/autogen/confidant.services.html index 93992e5b..a1fb6a8a 100644 --- a/autogen/confidant.services.html +++ b/autogen/confidant.services.html @@ -4,7 +4,7 @@ - confidant.services package — confidant 6.6.2-e682a6 documentation + confidant.services package — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
@@ -310,222 +310,28 @@

Submodules

confidant.services.certificatemanager module¶

-
-class confidant.services.certificatemanager.CachedCertificate(lock=False, response=None)¶
-

Bases: object

-
-
-property lock¶
-
- -
-
-property response¶
-
- -
- -
-
-class confidant.services.certificatemanager.CertificateAuthority(ca)¶
-

Bases: object

-
-
-_get_cached_certificate_with_key(cache_id)¶
-

For the cache id, get the cached response, or, if another thread is in -the process of issuing the same certificate, wait for the other thread -to populate the cache.

-
- -
-
-decode_csr(pem_csr)¶
-

Return a csr object from the pem encoded csr.

-
- -
-
-encode_certificate(cert)¶
-

Return the PEM string encoded version of the certificate object.

-
- -
-
-encode_csr(csr)¶
-

Return a PEM string encoded version of the csr object.

-
- -
-
-encode_key(key)¶
-

Return the PEM encoded version of the provided private RSA key object

-
- -
-
-encode_san_dns_names(san)¶
-

Return a list of x509.DNSName attributes from a list of strings.

-
- -
-
-generate_csr(key, cn, san=None)¶
-

Using the provided rsa key object, a string common name, and a list of -string subject alternative names, generate and return a csr object.

-
- -
-
-generate_key()¶
-

Generate and return a private RSA key object

-
- -
-
-generate_self_signed_certificate(key, cn, validity, san=None)¶
-

Using the provided rsa key, a string common name, a validity (in number -of days), and a list of subject alternative names (as strings), generate -and return a signed certificate object.

-
- -
-
-generate_x509_name(cn)¶
-

For the given common name string, generate and return an x509.Name, with -attributes configured in the settings.

-
- -
-
-get_certificate_authority_certificate()¶
-

Return the PEM encoded CA certificate and certificate chain from the CA -ARN.

-
- -
-
-get_certificate_from_arn(certificate_arn)¶
-

Get the PEM encoded certificate from the provided ARN.

-
- -
-
-get_csr_common_name(csr)¶
-

From the provided csr object, return the string value of the common -name attribute.

-
- -
-
-get_csr_san(csr)¶
-

From the provided csr object, return a list of the string values of the -subjust alternative name extension.

-
- -
-
-issue_certificate(csr, validity)¶
-

Given a PEM encoded csr, and a validity for the certificate (in number -of days), issue a certificate from ACM Private CA, and return the ARN -of the issued certificate.

-
- -
-
-issue_certificate_with_key(cn, validity, san=None)¶
-

Given the string common name, the validity length of the certificate (in -number of days), and a list of subject alternative names, return a dict -with the PEM encoded certificate, certificate chain, and private RSA -key.

-
- -
- -
-
-exception confidant.services.certificatemanager.CertificateAuthorityNotFoundError¶
-

Bases: Exception

-
- -
-
-class confidant.services.certificatemanager.CertificateCache(cache_size)¶
-

Bases: object

-
-
-get(cache_id)¶
-

Get the CachedCertificate for the given cache_id.

-
- -
-
-get_cache_id(cn, validity, san)¶
-

Return a unique string from the provided arguments, for use in the -certificate cache. The current day is included in the id, to ensure -cache invalidation (minumum validity is 1 day).

-
- -
-
-lock(cache_id)¶
-

Lock the CachedCertificate for the given cache_id. If the id is not in -the cache, create a CachedCertificate for the cache_id, add it to the -cache, and lock it.

-
- -
-
-release(cache_id)¶
-
- -
-
-set_response(cache_id, response)¶
-
- -
- -
-
-class confidant.services.certificatemanager.CertificateCacheNoOp¶
-

Bases: object

-
-
-get(cache_id)¶
-
- -
-
-get_cache_id(cn, validity, san)¶
-
- -
-
-lock(cache_id)¶
-
- -
-
-release(cache_id)¶
+
+class confidant.services.certificatemanager.CAType(value)¶
+

Bases: Enum

+

Enum for CA types.

+
+
+AWS_ACM_PCA = 'aws_acm_pca'¶
-
-
-set_response(cache_id, response)¶
+
+
+CUSTOM_CA = 'custom_ca'¶
-
-
-exception confidant.services.certificatemanager.CertificateNotReadyError¶
-

Bases: Exception

-
-
confidant.services.certificatemanager.get_ca(ca)¶
-
+

get_ca returns a CertificateAuthority object for the given CA, +based on the CA type in settings.

+
diff --git a/autogen/confidant.utils.html b/autogen/confidant.utils.html index dd489c96..18d63975 100644 --- a/autogen/confidant.utils.html +++ b/autogen/confidant.utils.html @@ -4,7 +4,7 @@ - confidant.utils package — confidant 6.6.2-e682a6 documentation + confidant.utils package — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/dev_wsgi.html b/autogen/dev_wsgi.html index 7651ec43..c491c4bf 100644 --- a/autogen/dev_wsgi.html +++ b/autogen/dev_wsgi.html @@ -4,7 +4,7 @@ - dev_wsgi module — confidant 6.6.2-e682a6 documentation + dev_wsgi module — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/manage.html b/autogen/manage.html index ad854df9..f722e046 100644 --- a/autogen/manage.html +++ b/autogen/manage.html @@ -4,7 +4,7 @@ - manage module — confidant 6.6.2-e682a6 documentation + manage module — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/setup.html b/autogen/setup.html index 20c5e114..1ab46def 100644 --- a/autogen/setup.html +++ b/autogen/setup.html @@ -4,7 +4,7 @@ - setup module — confidant 6.6.2-e682a6 documentation + setup module — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/tests.html b/autogen/tests.html index 1d288eff..9c22a867 100644 --- a/autogen/tests.html +++ b/autogen/tests.html @@ -4,7 +4,7 @@ - tests package — confidant 6.6.2-e682a6 documentation + tests package — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/tests.integration.confidant.authnz.html b/autogen/tests.integration.confidant.authnz.html index 2ac7018c..da75cc62 100644 --- a/autogen/tests.integration.confidant.authnz.html +++ b/autogen/tests.integration.confidant.authnz.html @@ -4,7 +4,7 @@ - tests.integration.confidant.authnz package — confidant 6.6.2-e682a6 documentation + tests.integration.confidant.authnz package — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/tests.integration.confidant.html b/autogen/tests.integration.confidant.html index 17d95f7a..d5d49587 100644 --- a/autogen/tests.integration.confidant.html +++ b/autogen/tests.integration.confidant.html @@ -4,7 +4,7 @@ - tests.integration.confidant package — confidant 6.6.2-e682a6 documentation + tests.integration.confidant package — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/tests.integration.html b/autogen/tests.integration.html index e49e82fc..c7e141ea 100644 --- a/autogen/tests.integration.html +++ b/autogen/tests.integration.html @@ -4,7 +4,7 @@ - tests.integration package — confidant 6.6.2-e682a6 documentation + tests.integration package — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/tests.unit.confidant.authnz.html b/autogen/tests.unit.confidant.authnz.html index 3661d166..a117505b 100644 --- a/autogen/tests.unit.confidant.authnz.html +++ b/autogen/tests.unit.confidant.authnz.html @@ -4,7 +4,7 @@ - tests.unit.confidant.authnz package — confidant 6.6.2-e682a6 documentation + tests.unit.confidant.authnz package — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
diff --git a/autogen/tests.unit.confidant.html b/autogen/tests.unit.confidant.html index 4827bec4..c6654848 100644 --- a/autogen/tests.unit.confidant.html +++ b/autogen/tests.unit.confidant.html @@ -4,7 +4,7 @@ - tests.unit.confidant package — confidant 6.6.2-e682a6 documentation + tests.unit.confidant package — confidant 6.6.2-78f705 documentation @@ -35,7 +35,7 @@ confidant
- 6.6.2-e682a6 + 6.6.2-78f705
@@ -334,7 +334,6 @@

Subpackagestests.unit.confidant.services package
  • test_diff_credential() (in module tests.unit.confidant.routes.credentials_test) -
  • -
  • test_encode_certificate() (in module tests.unit.confidant.services.certificatemanager_test) -
  • -
  • test_encode_csr() (in module tests.unit.confidant.services.certificatemanager_test) -
  • -
  • test_encode_key() (in module tests.unit.confidant.services.certificatemanager_test) -
  • -
  • test_encode_san_dns_names() (in module tests.unit.confidant.services.certificatemanager_test)
  • test_encrypted_key() (in module tests.conftest)
  • @@ -2609,24 +2519,10 @@

    T

  • test_exempt_from_rotation() (in module tests.unit.confidant.models.credential_test) -
  • -
  • test_generate_csr() (in module tests.unit.confidant.services.certificatemanager_test) -
  • -
  • test_generate_key() (in module tests.unit.confidant.services.certificatemanager_test) -
  • -
  • test_generate_self_signed_certificate() (in module tests.unit.confidant.services.certificatemanager_test) -
  • -
  • test_generate_x509_name() (in module tests.unit.confidant.services.certificatemanager_test)
  • test_get_ca() (in module tests.unit.confidant.routes.certificates_test)
  • test_get_certificate() (in module tests.unit.confidant.routes.certificates_test) -
  • -
  • test_get_certificate_authority_certificate() (in module tests.unit.confidant.services.certificatemanager_test) -
  • -
  • test_get_certificate_from_arn_no_exception() (in module tests.unit.confidant.services.certificatemanager_test) -
  • -
  • test_get_certificate_from_arn_with_exception() (in module tests.unit.confidant.services.certificatemanager_test)
  • test_get_certificate_from_csr() (in module tests.unit.confidant.routes.certificates_test)
  • @@ -2635,10 +2531,6 @@

    T

  • test_get_credential() (in module tests.unit.confidant.routes.credentials_test)
  • test_get_credential_list() (in module tests.unit.confidant.routes.credentials_test) -
  • -
  • test_get_csr_common_name() (in module tests.unit.confidant.services.certificatemanager_test) -
  • -
  • test_get_csr_san() (in module tests.unit.confidant.services.certificatemanager_test)
  • test_get_jwks() (in module tests.unit.confidant.services.jwkmanager_test)
  • @@ -2692,12 +2584,6 @@

    T

  • test_invalid_kms_auth_token() (in module tests.integration.confidant.authnz.authnz_test)
  • -
  • test_issue_certificate() (in module tests.unit.confidant.services.certificatemanager_test) -
  • -
  • test_issue_certificate_with_key() (in module tests.unit.confidant.services.certificatemanager_test) -
  • - - +
    • test_lowercase_credential_pairs() (in module tests.unit.confidant.services.credentialmanager_test)
    • test_next_rotation_date_last_rotation_present() (in module tests.unit.confidant.models.credential_test) @@ -2914,13 +2802,6 @@

      T

    • -
    • - tests.unit.confidant.services.certificatemanager_test - -
    • diff --git a/http-routingtable.html b/http-routingtable.html index 15134997..26e691a8 100644 --- a/http-routingtable.html +++ b/http-routingtable.html @@ -3,7 +3,7 @@ - HTTP Routing Table — confidant 6.6.2-e682a6 documentation + HTTP Routing Table — confidant 6.6.2-78f705 documentation @@ -41,7 +41,7 @@ confidant
      - 6.6.2-e682a6 + 6.6.2-78f705
      diff --git a/install.html b/install.html index e123e08b..0fccbb8a 100644 --- a/install.html +++ b/install.html @@ -4,7 +4,7 @@ - Installation — confidant 6.6.2-e682a6 documentation + Installation — confidant 6.6.2-78f705 documentation @@ -37,7 +37,7 @@ confidant
      - 6.6.2-e682a6 + 6.6.2-78f705
      diff --git a/kms_auth.html b/kms_auth.html index 06c66e55..35d4ffe6 100644 --- a/kms_auth.html +++ b/kms_auth.html @@ -4,7 +4,7 @@ - KMS authentication — confidant 6.6.2-e682a6 documentation + KMS authentication — confidant 6.6.2-78f705 documentation @@ -37,7 +37,7 @@ confidant
      - 6.6.2-e682a6 + 6.6.2-78f705
      diff --git a/maintenance.html b/maintenance.html index 5b55c26c..1a7fc04a 100644 --- a/maintenance.html +++ b/maintenance.html @@ -4,7 +4,7 @@ - Maintenance — confidant 6.6.2-e682a6 documentation + Maintenance — confidant 6.6.2-78f705 documentation @@ -37,7 +37,7 @@ confidant
      - 6.6.2-e682a6 + 6.6.2-78f705
      diff --git a/objects.inv b/objects.inv index be25f5c691e1b964cce09067aa8d047a8c380000..bc61414b8d9185293190897becfd91bec626395d 100644 GIT binary patch delta 10906 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 delta 11284 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 K{|Ax-#&FP5Pw_?o diff --git a/py-modindex.html b/py-modindex.html index b24ce3de..8b0cef2a 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -3,7 +3,7 @@ - Python Module Index — confidant 6.6.2-e682a6 documentation + Python Module Index — confidant 6.6.2-78f705 documentation @@ -37,7 +37,7 @@ confidant
      - 6.6.2-e682a6 + 6.6.2-78f705
      @@ -723,11 +723,6 @@

      Python Module Index

          tests.unit.confidant.services - - -     - tests.unit.confidant.services.certificatemanager_test -     diff --git a/search.html b/search.html index 03119690..55fb196f 100644 --- a/search.html +++ b/search.html @@ -3,7 +3,7 @@ - Search — confidant 6.6.2-e682a6 documentation + Search — confidant 6.6.2-78f705 documentation @@ -37,7 +37,7 @@ confidant
      - 6.6.2-e682a6 + 6.6.2-78f705
      diff --git a/searchindex.js b/searchindex.js index 43c743c6..1ab6bc11 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["acls", "api", "autogen/confidant", "autogen/confidant.authnz", "autogen/confidant.clients", "autogen/confidant.lib", "autogen/confidant.models", "autogen/confidant.routes", "autogen/confidant.schema", "autogen/confidant.scripts", "autogen/confidant.services", "autogen/confidant.utils", "autogen/dev_wsgi", "autogen/manage", "autogen/setup", "autogen/tests", "autogen/tests.integration", "autogen/tests.integration.confidant", "autogen/tests.integration.confidant.authnz", "autogen/tests.unit", "autogen/tests.unit.confidant", "autogen/tests.unit.confidant.authnz", "autogen/tests.unit.confidant.models", "autogen/tests.unit.confidant.routes", "autogen/tests.unit.confidant.services", "blind_secrets", "changelog", "client", "configuration", "contents", "contributing", "data_schema", "install", "kms_auth", "maintenance", "security_reporting", "support", "threat_model", "upgrade", "using_confidant"], "filenames": ["acls.md", "api.rst", "autogen/confidant.rst", "autogen/confidant.authnz.rst", "autogen/confidant.clients.rst", "autogen/confidant.lib.rst", "autogen/confidant.models.rst", "autogen/confidant.routes.rst", "autogen/confidant.schema.rst", "autogen/confidant.scripts.rst", "autogen/confidant.services.rst", "autogen/confidant.utils.rst", "autogen/dev_wsgi.rst", "autogen/manage.rst", "autogen/setup.rst", "autogen/tests.rst", "autogen/tests.integration.rst", "autogen/tests.integration.confidant.rst", "autogen/tests.integration.confidant.authnz.rst", "autogen/tests.unit.rst", "autogen/tests.unit.confidant.rst", "autogen/tests.unit.confidant.authnz.rst", "autogen/tests.unit.confidant.models.rst", "autogen/tests.unit.confidant.routes.rst", "autogen/tests.unit.confidant.services.rst", "blind_secrets.md", "changelog.md", "client.md", "configuration.md", "contents.rst", "contributing.md", "data_schema.md", "install.md", "kms_auth.md", "maintenance.md", "security_reporting.md", "support.md", "threat_model.md", "upgrade.md", "using_confidant.md"], "titles": ["Access Controls (ACLs)", "API", "confidant package", "confidant.authnz package", "confidant.clients package", "confidant.lib package", "confidant.models package", "confidant.routes package", "confidant.schema package", "confidant.scripts package", "confidant.services package", "confidant.utils package", "dev_wsgi module", "manage module", "setup module", "tests package", "tests.integration package", "tests.integration.confidant package", "tests.integration.confidant.authnz package", "tests.unit package", "tests.unit.confidant package", "tests.unit.confidant.authnz package", "tests.unit.confidant.models package", "tests.unit.confidant.routes package", "tests.unit.confidant.services package", "Server-blinded secrets", "Changelog", "Using the Confidant client", "Configuration", "Confidant", "Contributing", "DynamoDB Data Schema", "Installation", "KMS authentication", "Maintenance", "Reporting security vulnerabilities", "Support", "Threat model", "Upgrading", "Managing secrets and mappings"], "terms": {"The": [0, 1, 2, 3, 5, 7, 9, 10, 25, 26, 27, 28, 30, 31, 32, 33, 34, 37, 38, 39], "manag": [0, 2, 3, 25, 26, 29, 33, 34, 37, 38], "fine": [0, 25, 26], "grain": [0, 25, 26], "confid": [0, 1, 15, 16, 19, 26, 31, 33, 34, 35, 36, 38, 39], "rel": [0, 28], "simpl": [0, 8, 9, 39], "ar": [0, 1, 3, 7, 9, 26, 28, 29, 30, 31, 33, 36, 37, 38, 39], "call": [0, 1, 3, 5, 7, 8, 25, 26, 28, 31, 33], "whenev": [0, 26], "resourc": [0, 1, 3, 4, 25, 26, 28, 29, 33], "type": [0, 1, 3, 5, 7, 8, 9, 11, 25, 26, 28, 31, 33, 39], "an": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 38, 39], "end": [0, 1, 7, 25, 29, 34, 39], "user": [0, 1, 3, 7, 10, 25, 26, 27, 29, 31, 34, 36, 39], "look": [0, 5, 26, 27, 28, 32, 33], "like": [0, 3, 5, 25, 26, 27, 28, 33], "check": [0, 3, 11, 26, 29, 32, 33, 34], "acl_module_check": 0, "resource_typ": [0, 3], "action": [0, 3, 9, 25, 26, 28, 33, 37, 38], "resource_id": [0, 3], "id": [0, 1, 6, 7, 8, 9, 10, 25, 26, 28, 31, 33, 34], "some": [0, 1, 3, 7, 25, 26, 28, 34, 38], "includ": [0, 10, 26, 28, 30, 32, 34], "extra": [0, 8, 33], "inform": [0, 1, 3, 7, 9, 10, 11, 26, 28, 31, 33], "via": [0, 26, 27, 28, 30, 32, 38], "kwarg": [0, 3, 33], "credential_id": [0, 9, 10], "combined_cred_id": 0, "These": [0, 26, 28, 38], "all": [0, 1, 3, 7, 9, 10, 11, 26, 27, 28, 30, 31, 33, 34, 37, 38, 39], "back": [0, 9, 26, 29, 30], "same": [0, 2, 10, 26, 27, 28, 31, 33, 38, 39], "function": [0, 3, 8, 9, 11, 26, 28], "which": [0, 3, 9, 25, 26, 27, 28, 30, 33, 36, 37, 38, 39], "default": [0, 1, 2, 3, 6, 7, 8, 9, 11, 25, 26, 27, 28, 33, 34, 39], "def": [0, 8, 33], "default_acl": [0, 3, 26, 28], "arg": [0, 3, 26, 33], "alwai": [0, 3, 8, 28], "return": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 25, 26, 33], "true": [0, 1, 2, 3, 6, 7, 8, 9, 11, 25, 26, 28, 33], "enforc": 0, "restrict": [0, 25, 29], "also": [0, 1, 3, 7, 25, 26, 27, 28, 33, 34, 36, 39], "pass": [0, 3, 9, 25, 26, 27, 28, 29], "we": [0, 2, 3, 8, 9, 10, 11, 25, 26, 28, 30, 31, 32, 33, 35, 36, 38], "would": [0, 1, 7, 8, 9, 26, 28, 33, 37, 39], "resource_kwarg": 0, "authnz": [0, 1, 2, 7, 11, 16, 17, 19, 20, 26, 27, 28, 33], "user_is_user_typ": [0, 3], "elif": [0, 33], "doe": [0, 1, 7, 9, 11, 27, 33], "match": [0, 3, 11, 25, 26, 28, 31, 33, 39], "authent": [0, 1, 3, 7, 26, 29], "usernam": [0, 3, 28, 30, 33], "user_is_servic": [0, 3], "current": [0, 1, 3, 7, 10, 11, 26, 28, 31, 34], "onli": [0, 1, 7, 8, 9, 26, 28, 30, 31, 37], "allow": [0, 1, 3, 9, 25, 26, 28, 33, 34, 37, 38, 39], "fals": [0, 1, 2, 6, 7, 8, 9, 10, 11, 26, 28], "els": [0, 33], "thi": [0, 1, 2, 3, 5, 7, 8, 9, 10, 25, 26, 28, 30, 32, 33, 34, 38, 39], "should": [0, 1, 3, 7, 9, 10, 25, 26, 28, 30, 31, 32, 33, 37, 39], "never": [0, 3, 28, 32, 34], "happen": 0, "paranoia": [0, 33], "win": 0, "out": [0, 9, 26, 27, 28, 32, 34], "defin": [0, 1, 3, 7, 26, 28, 31, 34, 37, 39], "acl_modul": [0, 3, 26], "set": [0, 1, 3, 7, 8, 9, 10, 11, 25, 26, 27, 29, 30, 31, 32, 33, 34, 38, 39], "rbac": [0, 1, 2, 11, 26], "format": [0, 1, 3, 5, 7, 8, 26, 27, 28, 33, 38], "python": [0, 3, 11, 26, 28, 32, 33, 34, 38], "path": [0, 3, 5, 7, 9, 26, 28, 38], "modul": [0, 26, 33], "function_in_modul": 0, "you": [0, 1, 3, 7, 8, 9, 25, 26, 27, 28, 30, 32, 33, 34, 35, 36, 38, 39], "can": [0, 1, 3, 6, 7, 25, 26, 27, 28, 29, 30, 32, 33, 34, 39], "us": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 26, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38], "implement": [0, 3, 9, 26, 33, 37], "approach": [0, 33], "integr": [0, 3, 15, 30], "your": [0, 1, 25, 26, 28, 30, 32, 33, 34, 35, 38], "own": [0, 26, 29, 33], "enviro": 0, "adjust": [0, 26, 28], "s": [0, 3, 11, 25, 26, 27, 29, 30, 32, 33, 34, 38, 39], "behavior": [0, 26], "need": [0, 1, 3, 6, 7, 9, 25, 26, 28, 30, 33, 34, 38], "when": [0, 3, 6, 9, 25, 26, 28, 30, 31, 32, 33, 35, 38, 39], "new": [0, 1, 6, 7, 25, 26, 28, 37, 38, 39], "rememb": 0, "two": [0, 1, 7, 11, 28, 33, 36, 38, 39], "By": [0, 8, 26, 27, 28, 34, 39], "through": [0, 1, 7, 9, 25, 26, 28, 29, 30, 34], "kmsauth": [0, 1, 26, 28], "wherea": 0, "come": [0, 27, 28, 34], "one": [0, 1, 7, 9, 26, 28, 36], "other": [0, 2, 5, 9, 10, 26, 28, 33, 37, 38], "form": [0, 3, 26, 28, 31], "auth": [0, 3, 26, 29, 37], "intend": [0, 9, 26, 33], "ui": [0, 1, 26], "both": [0, 1, 7, 11, 26, 27, 28, 30, 39], "addition": [0, 28], "unless": [0, 25, 26, 28], "re": [0, 3, 9, 25, 26, 28, 30, 33], "featur": [0, 26, 28, 39], "follow": [0, 2, 27, 28, 30, 32, 33, 37, 38], "avail": [0, 26, 28, 30, 31, 32], "specif": [0, 26, 27, 28, 33], "pair": [0, 1, 7, 25, 26, 27, 28, 31, 37, 39], "appli": [0, 26, 33, 37], "provid": [0, 1, 3, 5, 7, 10, 25, 26, 28, 33], "global": [0, 27, 28], "permiss": [0, 1, 7, 8, 26, 28], "so": [0, 11, 25, 26, 28, 30, 33, 34, 38, 39], "note": [0, 3, 9, 25, 27, 28, 32, 33, 37, 39], "probabl": [0, 3, 10, 28], "want": [0, 2, 8, 25, 26, 28, 30, 32, 33, 34, 38], "requir": [0, 1, 7, 8, 9, 25, 26, 27, 28, 29, 30, 38], "view": [0, 25, 26, 28, 29, 37], "edit": [0, 26], "folk": 0, "rollback": 0, "chang": [0, 9, 25, 26, 28, 30, 33, 34, 38, 39], "without": [0, 5, 26, 28, 32, 33], "them": [0, 9, 25, 26, 27, 28, 30, 32, 34, 37, 39], "data": [0, 1, 3, 5, 7, 8, 25, 26, 28, 29, 34, 37], "map": [0, 1, 7, 8, 9, 26, 28, 29, 33, 34, 37], "ha": [1, 2, 3, 25, 26, 28, 34, 37, 39], "programmat": 1, "access": [1, 3, 4, 7, 25, 26, 28, 29, 30, 33, 34], "from": [1, 3, 5, 6, 7, 8, 9, 10, 26, 27, 28, 29, 33, 34], "librari": [1, 26, 28, 33], "cli": [1, 27, 28, 32], "endpoint": [1, 3, 7, 26, 28], "saml": [1, 2, 3, 26, 29], "oauth": [1, 3, 26, 28], "etc": [1, 26, 27, 28, 33, 37], "base": [1, 2, 3, 6, 8, 9, 10, 26, 28, 33], "configur": [1, 3, 7, 9, 10, 25, 26, 29, 30, 31, 32, 34, 37], "see": [1, 9, 26, 28, 30, 32, 38], "more": [1, 9, 25, 26, 28, 33, 39], "about": [1, 25, 26, 28, 32], "author": [1, 3, 7, 26, 29, 37], "oper": [1, 7, 33], "descript": [1, 30], "get": [1, 2, 3, 4, 7, 10, 25, 26, 27, 28, 29, 32, 33], "v1": [1, 3, 7, 26, 28, 33], "metadata": [1, 3, 6, 7, 8, 26, 28, 29, 31, 37, 39], "post": [1, 3, 7, 26], "consum": [1, 3, 7, 28], "logout": [1, 3, 7, 26, 28], "login": [1, 3, 7, 26, 28], "debug": [1, 7, 26, 28], "credenti": [1, 2, 9, 10, 23, 25, 26, 27, 29, 31, 37, 38], "archiv": [1, 2, 7, 10, 29, 31], "jwk": [1, 2, 10, 24], "public": [1, 7], "environ": [1, 2, 7, 10, 26, 27, 29, 30, 32], "token": [1, 7, 8, 26, 29, 33, 37], "send": [1, 7, 26, 29, 35], "flow": [1, 7, 26, 28, 33], "certif": [1, 2, 3, 5, 10, 26, 29], "ca": [1, 3, 7, 8, 10, 26, 28], "cn": [1, 3, 7, 10, 26, 28], "issu": [1, 7, 9, 10, 26, 28, 29, 35, 37], "list": [1, 3, 7, 8, 9, 10, 23, 26, 27, 28, 29, 31, 34, 36, 39], "detail": [1, 10, 26, 28, 30, 37], "client": [1, 2, 5, 7, 26, 29, 33], "client_config": [1, 7, 26, 28], "help": [1, 7, 9, 26, 27, 28, 30, 32, 34], "creat": [1, 5, 7, 8, 10, 26, 28, 29, 31, 33, 34, 37], "put": [1, 7, 26, 28, 32, 33, 34, 38], "to_revis": [1, 7], "revert": [1, 7, 26, 29, 39], "updat": [1, 7, 9, 11, 26, 28, 29, 31, 34], "diff": [1, 6, 7, 39], "old_revis": [1, 7], "new_revis": [1, 7], "revis": [1, 6, 7, 8, 10, 28, 31, 34, 37, 39], "histori": [1, 7, 26, 29], "servic": [1, 2, 3, 4, 19, 20, 23, 25, 26, 27, 28, 29, 30, 31, 34], "email": [1, 3, 7, 28, 35], "address": [1, 3, 28, 37], "associ": [1, 7, 28, 31, 33], "iam": [1, 7, 26, 29, 31, 34, 37, 39], "role": [1, 7, 10, 25, 29, 31, 33, 39], "km": [1, 2, 5, 10, 26, 29, 30, 31, 37], "grant": [1, 7, 10, 25, 26, 29, 33, 37], "ensur": [1, 7, 10, 26, 28, 33, 38], "random": [1, 28], "valu": [1, 2, 3, 7, 8, 9, 10, 11, 25, 26, 28, 39], "value_gener": [1, 7], "randomli": [1, 7, 26, 28], "gener": [1, 3, 5, 7, 10, 26, 28, 30, 31, 32, 33], "object": [1, 2, 3, 5, 6, 7, 8, 9, 10, 26, 38], "specifi": [1, 2, 7, 11, 27, 28, 32, 33], "exampl": [1, 2, 7, 8, 9, 26, 27, 28, 29, 33], "request": [1, 3, 7, 10, 26, 28, 29, 31, 33], "abcd12345bf4f1cafe8e722d3860404": [1, 7], "queri": [1, 7], "paramet": [1, 3, 5, 7, 9, 11], "next_pag": [1, 7, 8], "string": [1, 2, 3, 5, 7, 8, 9, 10, 11, 26, 28, 31], "If": [1, 2, 5, 7, 10, 11, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 37, 38], "page": [1, 3, 7, 9, 26], "result": [1, 7, 8, 9, 26], "were": [1, 7, 9, 26], "fetch": [1, 7, 26, 31], "next": [1, 7, 25, 26, 39], "respons": [1, 3, 7, 10, 26, 28, 33], "http": [1, 3, 7, 8, 27, 28, 30, 32, 33, 36, 37], "1": [1, 6, 7, 8, 9, 10, 25, 27, 28, 29, 31, 33, 38], "200": [1, 7, 33], "ok": [1, 7], "content": [1, 25, 33], "applic": [1, 7, 11, 28], "json": [1, 3, 6, 7, 11, 25, 26, 27, 33], "name": [1, 2, 3, 6, 7, 8, 9, 10, 25, 26, 28, 31, 33, 37, 39], "credential_kei": [1, 6, 7, 8, 9, 10], "credential_pair": [1, 6, 7, 8, 10, 26, 31], "example_metadata_kei": [1, 7], "example_valu": [1, 7], "enabl": [1, 6, 7, 8, 9, 11, 26, 28, 31, 33, 34, 38], "modified_d": [1, 6, 7, 8, 28, 31], "2019": [1, 7], "12": [1, 7, 26, 28], "16t23": [1, 7], "16": [1, 7, 29], "11": [1, 7, 29, 38], "413299": [1, 7], "00": [1, 7], "modified_bi": [1, 6, 7, 8], "rlane": [1, 7, 27, 33], "com": [1, 7, 27, 28, 32, 33, 35, 36], "null": [1, 3, 6, 7, 8, 9], "header": [1, 3, 5, 26, 33], "statu": 1, "code": [1, 3, 9, 26, 29], "success": [1, 3, 7, 26], "403": [1, 3, 7], "forbidden": 1, "have": [1, 2, 3, 7, 9, 11, 25, 26, 28, 30, 32, 33, 34, 36, 37, 39], "develop": [1, 5, 7, 26, 27, 29, 32, 33], "account": [1, 3, 6, 7, 8, 25, 26, 29], "blind_credenti": [1, 2, 9], "xml": [1, 3, 7], "describ": [1, 3, 7, 25, 28], "attribut": [1, 3, 6, 7, 8, 9, 10, 25, 28], "receiv": [1, 3, 7, 25], "callback": [1, 3, 7], "idp": [1, 3, 7, 26, 28], "dual": [1, 7], "purpos": [1, 5, 6, 7, 26, 28, 31], "initi": [1, 3, 7], "singlelogout": [1, 3, 7], "redirect": [1, 3, 7, 26, 28], "don": [1, 7, 26, 28, 30, 33, 37], "t": [1, 7, 9, 25, 26, 28, 30, 31, 32, 33, 36, 37, 38, 39], "normal": [1, 7, 25], "hit": [1, 3, 7, 28], "sinc": [1, 7, 8, 26, 28, 33], "ani": [1, 2, 3, 6, 7, 9, 25, 26, 28, 30, 32, 33, 34, 36, 38, 39], "require_auth": [1, 3, 7, 33], "show": [1, 7, 25, 34, 39], "c5s0w08ywu4py3ez7eqf4qyyuit6ryykoydhjytti9pjpumu00": [1, 7], "bootstrap": [1, 2, 7, 26, 29], "themselv": [1, 7, 26, 28], "kms_auth_manage_gr": [1, 7, 28], "aws_account": [1, 7], "xsrf_cookie_nam": [1, 7, 28], "xsrf_cooki": [1, 7], "maintenance_mod": [1, 7, 26, 28, 34], "history_page_limit": [1, 7, 26], "500": [1, 7], "bodi": [1, 7, 26], "friendli": [1, 7, 31, 33, 37, 39], "dictionari": [1, 7, 8, 26], "A": [1, 3, 5, 6, 7, 9, 25, 26, 28, 30, 32, 37], "arbitrari": [1, 7], "kei": [1, 3, 5, 7, 8, 10, 11, 26, 29, 31, 33, 37, 39], "encrypt": [1, 5, 7, 10, 25, 26, 28, 29, 38, 39], "rest": [1, 7, 25, 26, 28, 29, 39], "custom": [1, 3, 7, 25, 26, 28], "per": [1, 7, 9, 28], "extens": [1, 7, 10, 26, 39], "boolean": [1, 2, 6, 7, 8, 9, 31], "whether": [1, 7, 26, 28], "example_credential_kei": [1, 7], "example_credential_valu": [1, 7], "400": [1, 7], "bad": 1, "invalid": [1, 7, 8, 10], "input": [1, 7, 8, 27, 28], "either": [1, 3, 7, 26, 27, 28, 32, 36], "wa": [1, 7, 26, 33], "correct": [1, 7, 33], "field": [1, 7, 8, 24, 26, 28], "limit": [1, 7, 9, 11, 26, 28, 33], "int": [1, 7, 10, 33], "item": [1, 7, 8, 9, 31], "each": [1, 7, 25, 28, 31, 33], "pagin": [1, 7], "depend": [1, 7, 26, 28, 32], "plugin": [1, 7, 26], "aw": [1, 7, 25, 26, 28, 33, 37], "example2": [1, 7], "begin": [1, 5, 7, 28], "certificate_chain": [1, 7, 8], "tag": [1, 6, 7, 8, 26], "hello": [1, 7, 10], "world": [1, 7, 10], "forc": [1, 7, 9, 10, 26, 34, 39], "bool": [1, 6, 7, 9, 11, 24, 25, 33], "run": [1, 3, 7, 9, 26, 27, 28, 29, 34, 37, 38], "valid": [1, 7, 8, 10, 26, 28, 33, 37, 39], "state": [1, 7, 26, 31], "404": [1, 7, 9], "Not": [1, 8], "found": [1, 7, 26, 27, 28, 35], "exist": [1, 7, 26, 28, 34, 39], "str": [1, 6, 7, 9, 10, 24], "stage": [1, 7, 27], "kty": [1, 7, 8], "rsa": [1, 3, 5, 7, 10, 28], "kid": [1, 7, 8, 10], "n": [1, 7, 8, 9, 28, 33], "123": [1, 7, 26], "e": [1, 3, 7, 8, 9, 32], "aqab": [1, 7], "alg": [1, 7, 8], "rs256": [1, 7, 10], "jwt": [1, 7, 10], "ey": [1, 7], "support": [1, 7, 25, 26, 27, 29, 33], "against": [1, 3, 7, 9, 26, 28], "canon": [1, 7], "san": [1, 3, 7, 10, 26, 28], "subject": [1, 3, 7, 10], "altern": [1, 3, 7, 10, 28], "multipl": [1, 7, 26, 27, 28, 32, 33], "time": [1, 7, 11, 26, 28], "length": [1, 7, 10, 28], "dai": [1, 7, 9, 10, 26, 28, 34], "longer": [1, 7, 26, 34], "than": [1, 5, 7, 10, 25, 26, 27, 28, 33, 34, 37, 39], "server": [1, 7, 26, 28, 29, 32, 33], "maximum": [1, 7, 26, 28, 33], "url": [1, 7, 27, 28], "csr": [1, 3, 7, 10, 26, 28], "unsbal": [1, 7], "decod": [1, 7], "miss": [1, 7, 8, 37], "between": [1, 7, 9, 29, 36], "2": [1, 7, 10, 25, 27, 28, 29, 32, 33], "One": [1, 7, 28, 33], "ad": [1, 7, 8, 25, 26, 31, 33], "remov": [1, 7, 26, 28, 32], "api_kei": [1, 7], "api_us": [1, 7], "api_certif": [1, 7], "example_kei": [1, 7], "wai": [1, 7, 26, 28, 30, 39], "rotat": [1, 6, 7, 26, 28, 33], "testus": [1, 7], "conflict": [1, 7, 26, 29, 39], "1234": [1, 7, 33], "example_us": [1, 7], "aaaa33335bf4f1cafe8e722d3860404": [1, 7], "test_kei": [1, 7], "test_valu": [1, 7], "metadata_onli": [1, 7, 8, 10, 26], "do": [1, 3, 7, 10, 26, 28, 32, 33, 37, 39], "respond": [1, 7], "decrypt": [1, 2, 5, 7, 10, 25, 26, 28, 31, 33, 37], "scope": [1, 2, 7, 26, 28, 33, 37], "being": [1, 3, 7, 25, 26, 27, 28, 37], "encrypt_gr": [1, 7], "decrypt_gr": [1, 7], "error": [2, 8, 28, 33], "userauth": 2, "lib": [2, 26, 33], "cryptolib": [2, 26], "model": [2, 9, 19, 20, 26, 29, 38], "non_null_unicode_set_attribut": 2, "rout": [2, 3, 19, 20, 26, 29], "ident": [2, 28], "static_fil": 2, "schema": [2, 29], "auto_build_schema": 2, "script": [2, 7, 26, 28, 34, 38], "migrat": [2, 26, 29], "migrate_bool": 2, "restor": [2, 29], "util": 2, "certificatemanag": 2, "ciphermanag": [2, 26], "credentialmanag": 2, "graphit": [2, 29], "iamrolemanag": 2, "jwkmanag": 2, "keymanag": [2, 33], "servicemanag": 2, "webhook": [2, 26], "dynamodb": [2, 9, 26, 29, 30], "mainten": [2, 26, 29, 38], "misc": 2, "create_app": 2, "class": [2, 3, 6, 8, 9, 10, 26], "encryptedset": 2, "secret_str": 2, "kms_url": [2, 28], "_bootstrap": 2, "secret": [2, 26, 29, 33, 37], "dict": [2, 3, 6, 8, 9, 10, 11, 24, 25, 26, 28, 31], "get_all_secret": 2, "get_secret": 2, "regist": 2, "lazi": 2, "setup": [2, 9, 26, 28, 33], "thing": [2, 39], "except": [2, 3, 6, 8, 9, 10, 33], "settingserror": 2, "bool_env": 2, "var_nam": 2, "variabl": [2, 3, 8, 26, 28, 32], "coerc": 2, "bash": [2, 26, 29], "export": [2, 26, 28, 32], "some_v": 2, "py": [2, 3, 26, 28, 33, 34, 38], "argument": [2, 8, 9, 10, 25, 26, 27, 28, 33, 34], "rule": 2, "non": [2, 32], "empti": [2, 9], "float_env": 2, "0": [2, 9, 27, 28, 29, 33], "float": 2, "cannot": [2, 8], "valueerror": 2, "rais": [2, 8, 33], "none": [2, 3, 4, 5, 6, 8, 9, 10, 21, 27, 33], "int_env": 2, "integ": [2, 8, 9, 31], "str_env": 2, "authenticationerror": 3, "notauthor": 3, "tokenversionerror": [3, 33], "userunknownerror": 3, "acl": [3, 26, 29], "deni": [3, 28], "must": [3, 9, 25, 26, 27, 28, 34, 38, 39], "log": [3, 9, 26, 28, 37], "acm_private_ca_domain_regex": 3, "server_nam": 3, "group": [3, 25, 28, 36], "regex": [3, 28, 39], "no_acl": [3, 11], "stub": 3, "d": [3, 25, 27, 28, 36], "repoint": 3, "perform": [3, 9, 26, 29], "abstractuserauthent": 3, "properti": [3, 6, 10, 26], "allowed_email_suffix": 3, "whitelist": 3, "suffix": 3, "load": [3, 5, 8, 11, 26, 28, 33], "config": [3, 4, 26, 27, 30, 33], "user_email_suffix": [3, 28], "allowed_email_whitelist": 3, "users_fil": [3, 26, 28], "yaml": [3, 26, 27, 28], "abstract": [3, 10, 26], "auth_typ": 3, "check_author": 3, "check_csrf_token": 3, "clear_sess": 3, "current_email": 3, "current_first_nam": 3, "current_last_nam": 3, "current_us": 3, "get_csrf_token": 3, "is_authent": 3, "is_expir": 3, "log_in": 3, "step": [3, 9, 33], "start": [3, 25, 29, 32, 33], "sso": 3, "process": [3, 10, 26, 28], "method": [3, 9, 30, 32], "flask": [3, 26, 28, 33, 37], "extern": [3, 4, 32], "handler": 3, "mai": [3, 8, 25, 26, 28, 32, 33, 34, 38], "handl": [3, 9, 25, 34], "separ": [3, 27, 28, 29], "regardless": 3, "set_current_us": 3, "session": [3, 4, 26, 29], "desir": [3, 32], "g": 3, "redirect_to_index": 3, "On": [3, 28], "failur": [3, 9, 28, 38], "abort": [3, 33], "log_out": 3, "slo": [3, 28], "redirect_to_goodby": 3, "passes_email_suffix": 3, "passes_email_whitelist": 3, "set_csrf_token": 3, "resp": 3, "first_nam": [3, 28], "last_nam": [3, 28], "set_expir": 3, "googleoauthauthent": 3, "googl": [3, 26, 29, 36], "headerauthent": 3, "pull": [3, 11, 29, 32], "assum": [3, 9, 26, 28, 30, 37], "behind": [3, 25, 28], "balanc": [3, 9, 28], "revers": 3, "proxi": 3, "simpli": [3, 5, 26, 33], "abl": [3, 26, 28, 33, 37], "make": [3, 9, 25, 26, 27, 28, 29, 30, 31, 34, 38, 39], "impli": [3, 26], "assert_head": 3, "assert": [3, 28], "contain": [3, 26, 32, 39], "appropri": [3, 9], "here": [3, 11, 25, 27, 28, 33, 34], "expir": [3, 26], "nulluserauthent": 3, "fake": [3, 28], "samlauthent": 3, "_current_saml_session_id": 3, "_current_user_nameid": 3, "name_id": 3, "_load_rsa_for_saml": 3, "password": [3, 5, 28, 30, 31], "privat": [3, 5, 10, 26, 28, 32, 37], "file": [3, 5, 26, 27, 28, 29, 32, 33, 34], "_load_x509_for_saml": 3, "x": [3, 5, 28, 33], "509": [3, 5, 28], "pem": [3, 5, 10, 28], "_render_saml_errors_json": 3, "onelogin": 3, "saml2": 3, "onelogin_saml2_auth": 3, "_render_saml_settings_dict": 3, "given": [3, 5, 9, 10, 11, 25, 26, 28, 37], "present": [3, 26], "current_app": 3, "render": 3, "suitabl": [3, 9], "_saml_auth": 3, "req_dict": 3, "instanti": 3, "option": [3, 6, 9, 10, 25, 26, 28, 32, 34, 39], "_saml_req_dict_from_request": 3, "flask_request": 3, "expect": [3, 11, 26], "consume_saml_assert": [3, 7], "after": [3, 26, 27, 28, 33, 38], "generate_metadata": 3, "direct": 3, "browser": [3, 28], "forward": [3, 26, 28], "along": [3, 5, 9, 26, 31, 33, 34, 39], "authnrequest": 3, "log_out_callback": 3, "clear_session_on_error": 3, "samlrespons": 3, "goodby": [3, 7], "login_redirect_url": 3, "return_to": 3, "init_user_auth_class": 3, "_get_kms_auth_data": 3, "_get_valid": 3, "account_for_key_alia": 3, "key_alia": [3, 10], "get_logged_in_us": 3, "retriev": [3, 37], "store": [3, 5, 6, 9, 25, 26, 28, 31, 32, 34, 37, 39], "cach": [3, 10, 26, 28, 31, 33], "redirect_to_logout_if_no_auth": 3, "f": [3, 11, 33], "decor": [3, 8, 33], "thei": [3, 9, 25, 26, 28, 33, 38], "require_csrf_token": 3, "require_logout_for_goodby": 3, "service_in_account": 3, "user_typ": [3, 27, 33], "get_boto_cli": 4, "region": [4, 6, 9, 25, 27, 28], "aws_access_key_id": [4, 6, 9, 28], "aws_secret_access_kei": [4, 6, 9, 28], "aws_session_token": [4, 6, 9], "endpoint_url": 4, "boto3": [4, 33], "connect": [4, 28, 37], "get_boto_resourc": 4, "boto": [4, 9], "get_boto_sess": 4, "_rsa_private_key_bare_base64": 5, "base64": [5, 26, 28, 33], "der": 5, "encod": [5, 6, 10, 26, 28], "footer": 5, "cryptographi": [5, 33, 37], "hazmat": 5, "primit": 5, "asymmetr": 5, "rsaprivatekei": 5, "_x509_certificate_bare_base64": 5, "x509": [5, 10, 28], "create_datakei": [5, 10], "encryption_context": [5, 10], "keyid": [5, 33], "datakei": [5, 10], "create_mock_datakei": 5, "mock": 5, "meant": [5, 9, 28, 37], "test": [5, 9, 25, 26, 29, 33], "version": [5, 10, 25, 26, 28, 33, 38], "unencrypt": [5, 25, 37], "anyth": [5, 25, 33, 37, 39], "caus": [5, 6, 9, 26], "rend": 5, "worthless": 5, "decrypt_datakei": [5, 10], "data_kei": [5, 6, 8, 10, 31], "decrypt_mock_datakei": 5, "load_private_key_pem": [5, 26], "load_private_key_pem_as_bare_base64": 5, "bare": 5, "load_x509_certificate_pem": 5, "load_x509_certificate_pem_as_bare_base64": 5, "blindcredenti": [6, 26], "hash_kei": [6, 9], "range_kei": [6, 9], "_user_instanti": [6, 9], "doesnotexist": [6, 9], "msg": [6, 9, 10], "meta": [6, 8, 9], "base_backoff_m": [6, 9], "25": [6, 9], "connect_timeout_second": [6, 9], "extra_head": [6, 9], "host": [6, 9, 28], "max_pool_connect": [6, 9], "100": [6, 9, 28], "10": [6, 9, 25, 27, 28, 29, 33], "max_retry_attempt": [6, 9], "3": [6, 9, 29, 33], "read_timeout_second": [6, 9], "east": [6, 9, 25, 27, 28, 33], "table_nam": [6, 9], "_attribut": [6, 9], "cipher_typ": [6, 8], "pynamodb": [6, 9, 26, 28, 38], "unicodeattribut": [6, 9], "cipher_vers": [6, 8], "numberattribut": 6, "nonnullunicodesetattribut": 6, "jsonattribut": 6, "data_typ": [6, 28], "document": [6, 7, 8, 25, 27, 28, 29, 32, 38], "booleanattribut": [6, 9, 26], "utcdatetimeattribut": 6, "_discrimin": [6, 9], "_dynamo_to_python_attr": [6, 9], "_hash_keynam": [6, 9], "_index": [6, 9], "index": [6, 7, 9, 28], "data_type_date_index": [6, 28], "datatypedateindex": 6, "unicod": [6, 9], "number": [6, 8, 9, 10, 26, 28, 34], "intern": [6, 9, 26], "equal": [6, 28], "other_cr": 6, "utc": [6, 11], "datetim": [6, 8, 11, 31, 33], "globalsecondaryindex": 6, "index_nam": 6, "alia": [6, 8, 25, 26, 28, 33], "project": [6, 28, 30, 37], "allproject": 6, "read_capacity_unit": 6, "write_capacity_unit": 6, "archivedatatypedateindex": 6, "credentialarch": 6, "credentialbas": 6, "binaryattribut": 6, "last_decrypted_d": [6, 26], "last_rotation_d": [6, 8, 26], "listattribut": 6, "_diff_dict": 6, "old": [6, 26, 33], "_get_decrypted_credential_pair": 6, "decrypted_credential_pair": 6, "exempt_from_rot": [6, 26], "certain": [6, 26], "exempt": 6, "classmethod": [6, 8], "from_archive_credenti": 6, "archive_credenti": [6, 7, 9, 10, 23, 34], "next_rotation_d": [6, 8, 26], "secur": [6, 11, 26, 28, 29, 37], "archive_d": 6, "from_credenti": [6, 8], "binari": [6, 31], "union": [6, 9, 24], "_t": [6, 9], "callabl": [6, 9], "default_for_new": [6, 9], "attr_nam": [6, 9], "unicodesetattribut": [6, 26], "_diff_list": 6, "other_servic": 6, "create_blind_credenti": [7, 25], "get_archive_blind_credential_list": 7, "get_archive_blind_credential_revis": 7, "get_blind_credenti": [7, 10, 25], "get_blind_credential_depend": 7, "get_blind_credential_list": 7, "revert_blind_credential_to_revis": 7, "update_blind_credenti": [7, 25], "get_ca": [7, 10], "reshead": 7, "statuscod": 7, "get_certif": 7, "get_certificate_from_csr": 7, "list_ca": [7, 10], "create_credenti": 7, "diff_credenti": 7, "generate_valu": 7, "get_archive_credential_list": 7, "get_archive_credential_revis": 7, "get_credenti": [7, 10], "get_credential_depend": 7, "get_credential_list": 7, "revert_credential_to_revis": 7, "update_credenti": 7, "get_client_config": 7, "get_user_info": 7, "get_public_jwk": 7, "get_token": 7, "dump_session_info": 7, "generate_saml_login_redirect": 7, "get_saml_metadata": 7, "saml_logout": 7, "diff_servic": 7, "ensure_gr": [7, 10], "get_archive_service_list": 7, "get_archive_service_revis": 7, "get_grant": [7, 10], "get_iam_roles_list": 7, "get_servic": [7, 26, 29], "get_service_list": 7, "map_service_credenti": 7, "revert_service_to_revis": 7, "compon": 7, "custom_imag": 7, "custom_modul": 7, "custom_styl": 7, "favicon": 7, "font": 7, "healthcheck": 7, "imag": [7, 29], "not_found": 7, "robot": 7, "static_proxi": 7, "autobuildschema": 8, "exclud": 8, "prefix": [8, 26], "strict": 8, "mani": [8, 9, 34], "context": [8, 25, 26, 28, 33], "load_onli": 8, "dump_onli": 8, "partial": 8, "strictschema": 8, "marshmallow": 8, "deseri": [8, 9], "In": [8, 26, 28, 30, 33, 38, 39], "order": [8, 26, 27], "offici": 8, "recommend": [8, 26, 34], "post_load": 8, "lead": [8, 26], "lot": [8, 25], "boilerpl": 8, "serv": [8, 28], "reduc": [8, 28], "To": [8, 25, 26, 28, 29, 30, 33, 34, 38, 39], "subclass": [8, 9], "assign": 8, "_class_to_load": 8, "member": 8, "instanc": [8, 26, 27, 28], "That": [8, 32], "construct": 8, "keyword": 8, "readthedoc": 8, "org": [8, 28], "en": 8, "latest": [8, 33], "quickstart": [8, 29], "html": [8, 28, 33], "noqa": 8, "e501": 8, "import": [8, 25, 26, 33, 39], "foo": 8, "__init__": 8, "self": [8, 26, 28], "bar": 8, "fooschema": 8, "print": 8, "__class__": 8, "__name__": 8, "_declared_field": 8, "_has_processor": 8, "build_object": 8, "opt": [8, 26], "schemaopt": 8, "mean": [8, 26], "blindcredentialrespons": 8, "from_blind_credenti": 8, "include_credential_kei": 8, "include_credential_pair": 8, "include_data_kei": 8, "blindcredentialresponseschema": 8, "allow_non": 8, "error_messag": 8, "validator_fail": 8, "invalid_utf8": 8, "utf": [8, 10], "8": [8, 10, 29], "too_larg": 8, "too": [8, 28], "larg": 8, "certificateauthoritiesrespons": 8, "from_ca": 8, "certificateauthoritiesresponseschema": 8, "nest": 8, "certificateauthorityrespons": 8, "certificateauthorityresponseschema": 8, "certificateexpandedresponseschema": 8, "certificaterespons": 8, "certificateresponseschema": 8, "credentialrespons": 8, "credentialresponseschema": 8, "credentialsrespons": 8, "credentialsresponseschema": 8, "encode_next_pag": 8, "sort_credenti": 8, "revisionsrespons": 8, "revisionsresponseschema": 8, "sort_revis": 8, "jwkslistrespons": 8, "jwkslistresponseschema": 8, "jwksrespons": 8, "jwksresponseschema": 8, "jwtrespons": 8, "jwtresponseschema": 8, "from_servic": 8, "include_credenti": 8, "include_blind_credenti": 8, "serviceexpandedresponseschema": 8, "servicerespons": 8, "from_service_expand": 8, "serviceresponseschema": 8, "servicesrespons": 8, "servicesresponseschema": 8, "sort_servic": 8, "archivecredenti": 9, "func": [9, 11], "command": [9, 27, 28, 32, 34], "perman": [9, 34], "tabl": [9, 26, 29], "option_list": 9, "flask_script": 9, "take": [9, 28, 33], "decryptsecretsbootstrap": 9, "_out": 9, "generatesecretsbootstrap": 9, "_in": 9, "main": 9, "generalcredentialmodel": 9, "newunicodesetattribut": 9, "generalservicemodel": 9, "migrateblindcredentialsetattribut": 9, "migrateservicesetattribut": 9, "setmixin": 9, "attr_typ": 9, "ss": 9, "element_deseri": 9, "element_seri": 9, "serial": [9, 26], "It": [9, 25, 26, 27, 28, 30, 32, 33, 34, 36, 37], "touch": [9, 28, 34], "alreadi": [9, 11, 26, 28, 34], "param": [9, 26], "becaus": [9, 25, 26, 28], "doesn": [9, 25, 26, 28, 33, 36, 39], "add": [9, 10, 26, 28, 33], "de": [9, 28], "is_old_unicode_set": 9, "genericcredenti": 9, "migratebooleanattribut": 9, "rcu": 9, "page_s": 9, "back_off": 9, "update_r": 9, "scan_without_rcu": 9, "_build_act": 9, "model_class": 9, "attribute_nam": 9, "build": [9, 29, 30], "_build_lba_filter_condit": 9, "filter": [9, 39], "condit": [9, 25, 33], "scan": 9, "rate_limited_scan": 9, "nativ": [9, 28], "_handle_update_except": 9, "migrate_boolean_attribut": [9, 38], "read_capacity_to_consume_per_second": 9, "allow_scan_without_rcu": 9, "mock_conditional_update_failur": 9, "number_of_secs_to_back_off": 9, "max_items_updated_per_second": 9, "github": [9, 28, 29, 32, 37], "Will": [9, 11], "rate": 9, "someth": [9, 26, 28, 33], "extrem": 9, "conserv": 9, "slow": 9, "provis": [9, 28], "write": [9, 26, 27, 28, 33, 38], "capac": 9, "well": [9, 26, 28, 30, 33], "pleas": [9, 26, 28, 30, 32, 35], "doc": [9, 26, 33, 38], "keep": [9, 26], "mind": 9, "read": [9, 25, 26, 27, 28, 29], "sure": 9, "calcul": [9, 26], "everi": [9, 26, 28], "vist": 9, "level": [9, 11, 25, 37], "info": [9, 28], "final": 9, "outcom": 9, "identifi": [9, 35], "how": [9, 26, 28, 32, 33, 38], "succe": 9, "For": [9, 10, 11, 26, 27, 28, 31], "had": [9, 26], "upon": 9, "fail": [9, 26, 28, 31, 33, 38], "due": [9, 26, 38], "concurr": [9, 26, 28], "anoth": [9, 10, 25, 33], "writer": 9, "suggest": [9, 37], "9": [9, 29], "successfulli": [9, 37], "ran": [9, 32], "until": [9, 38], "up": [9, 28, 30, 33, 39], "date": [9, 31, 37, 39], "relev": 9, "signifii": 9, "potenti": [9, 26, 35], "underli": [9, 26], "mechan": 9, "progress": [9, 32], "below": [9, 28, 38], "around": 9, "unit": [9, 15, 28, 30], "local": [9, 26, 29, 30], "express": 9, "guarante": 9, "trigger": 9, "jump": 9, "hoop": 9, "distinguish": 9, "size": [9, 26, 28, 37], "second": [9, 28, 33], "sleep": 9, "exceed": 9, "upper": 9, "number_of_items_in_need_of_upd": 9, "number_of_them_that_failed_due_to_conditional_upd": 9, "restorecredenti": 9, "primari": [9, 28, 29], "storag": [9, 28, 29, 34], "credential_exist": 9, "_all": 9, "save": [9, 26, 31], "createdynamot": 9, "dynamo": [9, 26], "managegr": 9, "revokegr": [9, 28], "cachedcertif": 10, "lock": [10, 28], "certificateauthor": [10, 24], "_get_cached_certificate_with_kei": 10, "cache_id": 10, "thread": 10, "wait": [10, 28], "popul": [10, 11], "decode_csr": 10, "pem_csr": 10, "encode_certif": 10, "cert": 10, "encode_csr": 10, "encode_kei": 10, "encode_san_dns_nam": 10, "dnsname": 10, "generate_csr": 10, "common": 10, "generate_kei": 10, "generate_self_signed_certif": 10, "sign": [10, 26, 28, 29], "generate_x509_nam": 10, "get_certificate_authority_certif": 10, "chain": [10, 26, 27], "arn": [10, 25, 26, 28, 33], "get_certificate_from_arn": 10, "certificate_arn": 10, "get_csr_common_nam": 10, "get_csr_san": 10, "subjust": 10, "issue_certif": 10, "acm": [10, 28], "issue_certificate_with_kei": 10, "certificateauthoritynotfounderror": 10, "certificatecach": 10, "cache_s": 10, "get_cache_id": 10, "uniqu": [10, 28, 39], "minumum": 10, "releas": [10, 26, 38], "set_respons": 10, "certificatecachenoop": 10, "certificatenotreadyerror": 10, "cipher": 10, "encrypted_text": 10, "decrypted_text": 10, "enc": [10, 28], "raw": [10, 27, 28], "ciphermanagererror": 10, "_credential_in_servic": 10, "_id": 10, "_delete_credenti": 10, "_save_credentials_to_arch": 10, "credentials_to_sav": 10, "check_credential_pair_valu": 10, "get_latest_blind_credential_revis": 10, "get_latest_credential_revis": 10, "get_revision_ids_for_credenti": 10, "lowercase_credential_pair": 10, "pair_key_conflicts_for_credenti": 10, "blind_credential_id": 10, "send_ev": 10, "_get_iam_rol": 10, "get_iam_rol": 10, "purg": [10, 26], "refresh_cach": 10, "_get_active_kid": 10, "_get_kei": 10, "_load_certificate_author": 10, "get_active_kei": 10, "tupl": 10, "get_jwk": 10, "algorithm": [10, 28], "get_jwt": 10, "payload": [10, 33], "expiration_second": 10, "3600": 10, "set_kei": 10, "private_kei": 10, "passphras": [10, 28], "jwtcach": 10, "abc": 10, "_abc_impl": 10, "_abc": 10, "_abc_data": 10, "set_jwt": 10, "localjwtcach": 10, "cache_kei": 10, "rediscach": 10, "servicecreategranterror": 10, "servicegetgranterror": 10, "_ensure_gr": 10, "_get_at_rest_kms_cli": 10, "_get_auth_kms_cli": 10, "_get_boto_config": 10, "_grants_exist": 10, "service_nam": [10, 28], "todo": 10, "orchestr": 10, "rather": [10, 25, 26, 27, 28, 33, 37], "get_key_id": 10, "grants_exist": 10, "get_latest_service_revis": 10, "get_service_map": 10, "get_services_for_blind_credenti": 10, "get_services_for_credenti": 10, "pair_key_conflicts_for_servic": 10, "send_service_mapping_graphite_ev": 10, "new_servic": 10, "old_servic": 10, "event_typ": 10, "create_dynamodb_t": 11, "decode_last_evaluated_kei": 11, "last_evaluated_kei": 11, "encode_last_evaluated_kei": 11, "check_maintenance_mod": 11, "in_maintenance_mod": 11, "dict_deep_upd": 11, "b": 11, "deep": 11, "merg": [11, 27], "place": [11, 25, 28], "overrid": [11, 27], "recurs": 11, "left": [11, 39], "hand": 11, "side": [11, 25, 26, 33], "right": [11, 32, 39], "get_boolean": 11, "val": [11, 31], "correspond": 11, "behav": 11, "helper": 11, "load_modul": 11, "module_path": 11, "ex": 11, "prevent_xss_decor": 11, "prevent": [11, 26], "xss": [11, 26], "attack": [11, 25, 29], "polici": [11, 26, 29, 37], "app": [11, 26, 28, 32, 33], "protect": [11, 26, 28], "mime": 11, "snif": 11, "referr": 11, "utcnow": [11, 33], "tzinfo": 11, "encrypted_settings_test": [15, 19], "encrypted_settings_mock": 15, "mocker": [15, 18, 20, 21, 22, 23, 24], "test_certif": 15, "test_certificate_author": [15, 24], "test_encrypted_kei": [15, 24], "test_jwk_payload": [15, 24], "test_jwk": [15, 24], "test_jwt": [15, 24], "test_key_pair": [15, 24], "submodul": [16, 17, 19], "authnz_test": [16, 17, 19, 20], "test_auth_failur": 18, "test_auth_redirect": 18, "test_auth_with_email_sess": 18, "test_auth_with_email_session_bad_prefix": 18, "test_auth_with_email_session_in_us": 18, "test_auth_with_email_session_not_in_us": 18, "test_header_csrf": 18, "test_invalid_kms_auth_token": 18, "test_no_auth": 18, "rbac_test": [19, 20], "credential_test": [19, 20], "service_test": [19, 20], "certificates_test": [19, 20], "credentials_test": [19, 20], "identity_test": [19, 20], "jwks_test": [19, 20], "services_test": [19, 20], "certificatemanager_test": [19, 20], "ciphermanager_test": [19, 20], "credentialmanager_test": [19, 20], "jwkmanager_test": [19, 20], "keymanager_test": [19, 20], "servicemanager_test": [19, 20], "test_bootstrap": 20, "mockerfixtur": [20, 21, 22, 23, 24], "test_bootstrap_filefail": 20, "test_get_regist": 20, "test_get_registered_default": 20, "test_regist": 20, "mock_email_suffix": 21, "mock_header_auth": 21, "test__get_kms_auth_data_from_auth": 21, "test__get_kms_auth_data_from_head": 21, "test_account_for_key_alia": 21, "test_get_logged_in_us": 21, "test_get_logged_in_user_from_sess": 21, "test_header_auth_will_extract_from_request": 21, "test_header_auth_will_log_in": 21, "test_redirect_to_logout_if_no_auth": 21, "test_require_auth": 21, "test_require_csrf_token": 21, "test_require_logout_for_goodby": 21, "test_service_in_account": 21, "test_user_is_servic": 21, "test_user_is_user_typ": 21, "test_default_acl": 21, "test_no_acl": 21, "test_credential_arch": 22, "test_diff": 22, "test_equ": 22, "test_exempt_from_rot": 22, "test_next_rotation_date_last_rotation_pres": 22, "test_next_rotation_date_never_rot": 22, "test_next_rotation_date_no_rotation_requir": 22, "test_not_equ": 22, "test_not_equals_different_tag": 22, "test_get_ca": 23, "test_get_certif": 23, "test_get_certificate_from_csr": 23, "test_list_ca": 23, "credential_list": 23, "test_create_credenti": 23, "test_diff_credenti": 23, "test_get_credenti": 23, "test_get_credential_list": 23, "test_revise_credenti": 23, "test_update_credenti": 23, "test_get_client_config": 23, "test_get_user_info": 23, "test_get_user_info_no_us": 23, "test_get_token_no_overrid": 23, "test_get_token_override_us": 23, "test_get_token_override_user_not_author": 23, "services_list": 23, "test_get_services_list": 23, "ca_object": 24, "test__get_cached_certificate_with_kei": 24, "test_certificate_cach": 24, "test_decode_csr": 24, "test_encode_certif": 24, "test_encode_csr": 24, "test_encode_kei": 24, "test_encode_san_dns_nam": 24, "test_generate_csr": 24, "test_generate_kei": 24, "test_generate_self_signed_certif": 24, "test_generate_x509_nam": 24, "test_get_certificate_authority_certif": 24, "test_get_certificate_from_arn_no_except": 24, "test_get_certificate_from_arn_with_except": 24, "test_get_csr_common_nam": 24, "test_get_csr_san": 24, "test_issue_certif": 24, "test_issue_certificate_with_kei": 24, "test_cipher_version_1": 24, "test_cipher_version_2": 24, "test_cipher_version_3": 24, "test_check_credential_pair_valu": 24, "test_get_latest_blind_credential_revis": 24, "test_get_latest_credential_revis": 24, "test_get_revision_ids_for_credenti": 24, "test_lowercase_credential_pair": 24, "helper_jwt_pars": 24, "jwt_str": 24, "test_get_jwk": 24, "test_get_jwks_not_found": 24, "test_get_jwt": 24, "test_get_jwt_caches_jwt": 24, "test_get_jwt_raises_no_key_id": 24, "test_get_jwt_with_ca": 24, "test_localcache_cache_kei": 24, "test_localcache_get_jwt": 24, "test_localcache_init": 24, "test_rediscache_get_jwt": 24, "test_rediscache_redis_error": 24, "mock_redi": 24, "test_set_kei": 24, "test_set_key_encrypt": 24, "test_create_datakey_mock": 24, "test_create_datakey_with_encrypt": 24, "test_decrypt_datakey_mock": 24, "test_decrypt_datakey_with_encrypt": 24, "test_get_key_id": 24, "test_get_key_id_cach": 24, "test_get_latest_service_revis": 24, "sensit": [25, 26, 39], "even": [25, 26, 36, 39], "breach": 25, "shouldn": [25, 28], "give": [25, 26, 28, 33, 37, 39], "With": 25, "plain": 25, "behalf": 25, "possibl": [25, 26, 27, 28, 30, 32, 33, 39], "difficult": [25, 39], "thought": 25, "go": [25, 26, 33], "multi": [25, 29], "plan": [25, 30], "good": [25, 37], "befor": [25, 26, 27, 30, 32, 38, 39], "basic": [25, 26, 33], "idea": 25, "enrypt": 25, "prior": [25, 26, 34], "sent": [25, 26, 33], "refer": 25, "necessari": [25, 26, 28, 30, 32, 33, 37, 38], "wish": [25, 30, 33, 39], "As": [25, 28], "ll": [25, 26, 28, 30, 32, 33, 35, 39], "our": [25, 28, 30], "product": [25, 26, 27, 28, 32, 33], "useast1": [25, 28], "uswest2": [25, 28], "though": [25, 26, 28, 38], "much": [25, 33], "easier": [25, 26, 27, 28, 30, 39], "reason": [25, 28, 33, 36], "why": 25, "control": [25, 26, 28, 29, 33, 37], "central": 25, "locat": [25, 26, 28, 32, 37], "first": [25, 26, 28, 30, 38], "let": [25, 26, 27, 33, 35, 39], "2012": [25, 28, 33], "17": [25, 28, 33], "statement": [25, 28, 33], "generaterandom": [25, 28, 33], "effect": [25, 28, 33], "12345": [25, 28, 33], "west": [25, 28], "multifactorauthpres": [25, 33], "abov": [25, 28, 39], "servicea": [25, 27, 33], "attach": [25, 28], "autoscal": 25, "stringequ": [25, 33], "encryptioncontext": [25, 33], "bit": [25, 33, 39], "instal": [25, 26, 29, 30, 38], "haven": 25, "yet": [25, 26], "mfa": 25, "api_public_kei": 25, "api_private_kei": 25, "abcd": 25, "ve": [25, 26, 34, 35, 38], "tell": [25, 28], "output": [25, 26, 28, 29], "web": [25, 28, 29, 31], "interfac": [25, 26, 28], "find": [25, 26, 28, 29, 33], "dd329c9174924a0a9bf8bf3e7fbdaef9": 25, "67890": 25, "fghij": 25, "creation": 25, "subcommand": [25, 27], "privileg": [25, 37], "notic": [25, 26, 33], "fix": 26, "enhanc": [26, 30], "api": [26, 28, 29, 34, 38], "upgrad": [26, 29], "docker": [26, 29, 30], "compos": [26, 30], "v2": [26, 33], "logo": 26, "css": [26, 28], "design": [26, 29, 34], "style": 26, "guid": [26, 28, 29, 33, 37], "color": 26, "consist": 26, "across": [26, 28, 33, 39], "higher": 26, "contrast": 26, "track": [26, 28, 30], "three": 26, "been": [26, 39], "categor": 26, "admin_priv": 26, "could": [26, 28, 33, 37], "choos": [26, 39], "singl": [26, 28, 33, 39], "might": 26, "fall": 26, "categori": 26, "explicitli": 26, "someon": 26, "highli": [26, 37], "vulner": [26, 29], "benefit": 26, "moment": 26, "last": [26, 28, 33, 34], "period": 26, "There": [26, 27, 28], "addit": [26, 28, 33, 35], "logic": 26, "its": [26, 27, 28, 30, 31, 33, 34, 38], "previou": 26, "live": [26, 33], "persist": [26, 28], "db": 26, "layer": 26, "env": [26, 27, 28, 32, 33], "maximum_rotation_dai": 26, "determin": 26, "amount": [26, 37], "peopl": 26, "rotation_days_config": 26, "just": [26, 32, 33, 36, 38], "where": [26, 28, 39], "repres": 26, "eg": 26, "30": 26, "financial_data": 26, "backward": [26, 38], "compat": [26, 38], "finer": 26, "decid": 26, "automat": [26, 27, 28], "human": [26, 39], "IN": [26, 28], "enable_save_last_decryption_tim": 26, "gunicorn": [26, 29, 32], "conf": 26, "structur": 26, "fulli": [26, 32, 38], "simplesamlphp": 26, "pki": 26, "unset": [26, 28], "now": [26, 32, 33, 39], "correctli": 26, "python3": 26, "stacktrac": 26, "saml_sp_key_fil": [26, 28], "act": [26, 37], "four": 26, "domain": [26, 28], "120": [26, 28], "section": [26, 28, 33, 38], "break": [26, 38], "slightli": [26, 28, 33], "incompat": 26, "nil": 26, "affect": 26, "offic": 26, "unoffici": 26, "deprec": [26, 31], "python2": [26, 33], "blind": [26, 29, 37, 38], "switch": 26, "standard": 26, "hook": 26, "relat": [26, 28], "open": [26, 28], "framework": 26, "effici": 26, "lru": 26, "frontend": [26, 29, 30], "backend": [26, 28], "refactor": 26, "previous": 26, "displai": [26, 39], "similarli": 26, "made": 26, "panel": [26, 39], "combin": 26, "toggl": 26, "futur": 26, "expand": 26, "trivial": 26, "hint": 26, "audit": 26, "work": [26, 28, 32, 33], "older": [26, 38, 39], "packag": [26, 32, 33], "auth_kei": [26, 27, 28, 33, 37], "user_auth_kei": [26, 28], "kms_master_kei": [26, 28], "alias": [26, 30, 33], "my": 26, "instead": [26, 39], "resolv": [26, 28], "report": [26, 29, 37], "few": [26, 28], "frozen": 26, "roll": 26, "dure": [26, 33], "seemingli": 26, "finish": 26, "onc": [26, 33, 38, 39], "pynamo": 26, "avoid": [26, 28, 39], "corrupt": [26, 37], "mutabl": 26, "case": [26, 38], "insent": 26, "sort": [26, 39], "memori": [26, 31], "restart": 26, "legacybooleanattribut": 26, "migrate_bool_attribut": 26, "immedi": 26, "convert": 26, "further": 26, "migrate_set_attribut": 26, "itself": [26, 33, 37], "warn": [26, 32], "downgrad": [26, 38], "concern": 26, "instruct": [26, 30, 32], "mode": [26, 29, 34, 38], "disabl": [26, 29, 33], "disallow": [26, 38], "while": 26, "maintenance_mode_touch_fil": [26, 28, 34], "angularj": [26, 28], "whitespac": 26, "trim": 26, "gevent": [26, 28, 32], "greenlet": 26, "cve": 26, "2016": 26, "5180": 26, "477": 26, "piptool": 26, "transit": 26, "most": [26, 27, 28, 33, 38], "notabl": 26, "forwarded_allow_ip": [26, 28], "newer": [26, 38, 39], "ineffici": 26, "appdir": 26, "1000252": 26, "docker_push": 26, "sh": 26, "ignore_conflict": [26, 28], "webhook_url": 26, "statsd": [26, 29], "depenc": 26, "semver": 26, "proper": [26, 28], "point": [26, 28, 34], "minor": 26, "major": 26, "bugfix": 26, "consid": [26, 28], "impact": 26, "xsrf": [26, 28], "cooki": [26, 28], "changet": 26, "he": 26, "move": 26, "pip": [26, 27, 29], "better": 26, "wsgi": [26, 28, 32], "insid": 26, "pypi": 26, "runnabl": 26, "invoc": 26, "k": [26, 28, 32], "split": [26, 33], "awai": 26, "repo": 26, "prepar": 26, "stabl": 26, "lyft": [26, 30, 32, 35, 36], "unreleas": 26, "branch": 26, "introduc": [26, 28], "properli": [26, 27, 28, 37], "verif": 26, "safeti": 26, "top": [26, 39], "wasn": 26, "pre": [26, 30], "increas": [26, 28], "discov": 26, "exfiltr": 26, "indefinit": 26, "abil": [26, 38], "went": 26, "loggedout": 26, "system": [26, 31], "libxml2": [26, 32], "dev": [26, 32], "libxmlsec1": [26, 32], "redi": [26, 28], "lifetim": [26, 29, 33, 37], "care": [26, 33], "taken": 26, "prefer": [26, 28], "opinion": 26, "formatt": [26, 27], "secrets_bootstrap": [26, 28], "dynamodb_create_t": [26, 28], "angular": 26, "ignor": [26, 27], "virtualenv": [27, 29], "venv": [27, 28, 32, 38], "sourc": [27, 28, 32, 38], "bin": [27, 28, 32, 38], "activ": [27, 28, 31, 32, 38], "auth_context": [27, 28, 33], "token_lifetim": 27, "token_vers": 27, "token_cache_fil": 27, "confidant_token": 27, "assume_rol": 27, "retri": [27, 28, 38], "backoff": 27, "profil": [27, 28], "default_confidant_token": 27, "staging_confidant_token": 27, "collect": 27, "full": [27, 28, 30, 37], "particular": 27, "part": [27, 28, 33, 38], "howev": [27, 33, 39], "directli": [27, 28, 33, 37], "reformatt": 27, "togeth": 27, "env_export": 27, "stdin": [27, 33], "stdout": 27, "primarili": 28, "prerequisit": 28, "cover": 28, "know": [28, 35], "differ": 28, "my_vari": 28, "my_valu": 28, "quot": 28, "everyth": 28, "minimum": 28, "aws_default_region": 28, "dynamodb_t": 28, "auto": [28, 30, 31, 39], "surfli": 28, "468": 28, "gevent_resolv": 28, "long": [28, 33], "csrf": 28, "session_secret": 28, "abvmja3zv6zwgjryto135hkdox6mw2kou7uaxihk8ztjvt8w5o": 28, "ip": [28, 37], "listen": 28, "port": 28, "80": 28, "trust": [28, 33, 37], "proto": 28, "flag": [28, 32], "visit": [28, 30], "consol": 28, "javascript": 28, "origin": 28, "uri": 28, "authomatic_salt": 28, "user_auth_modul": 28, "google_oauth_client_id": 28, "google_oauth_consumer_secret": 28, "123456789": 28, "abcdefghijklmnop": 28, "googleusercont": 28, "123456789abcdefghijklmnop": 28, "oauth2": 28, "h39bflcqlbryrfyijixkk0uf12rlzvgjgo9fqonttpxidaauyq": 28, "ac": 28, "entiti": 28, "sp": 28, "captur": 28, "root": 28, "saml_confidant_url_root": 28, "typic": 28, "saml_idp_entity_id": 28, "bind": 28, "saml_idp_signon_url": 28, "saml_idp_logout_url": 28, "saml_idp_cert": 28, "miicsdccahmgawibagijalw1z": 28, "rm2pg2ma0gcsqgsib3dqebbquameuxczajbgnv": 28, "baytakfvmrmweqydvqqiewptb21llvn0yxrlmsewhwydvqqkexhjbnrlcm5ldcbx": 28, "awrnaxrzifb0esbmdgqwhhcnmtcwmje1mtk0njaywhcnmjcwmje1mtk0njaywjbf": 28, "mqswcqydvqqgewjbvtetmbega1uecbmku29tzs1tdgf0ztehmb8ga1uechmysw50": 28, "zxjuzxqgv2lkz2l0cybqdhkgthrkmigfma0gcsqgsib3dqebaquaa4gnadcbiqkb": 28, "gqdvlwbwik9s9uqo0unt1ho0tzfpsq3mz0qns7mausbuwwqx7b8orjmzohsliwjc": 28, "0vlb14f8bqkjpcpmezrrg4am2h41xg2t": 28, "acbjh4w3suhzztscxuc1vuym4slbwbu": 28, "dtvapkpejdnqiyyqh4m3kmfqkzeb": 28, "cu1yekcdsxqujhkmqidaqabo4gnmigkmb0g": 28, "a1uddgqwbbt4hpgzanlydqzcbhe7xpb9zendbdb1bgnvhsmebjbsgbt4hpgzanli": 28, "dqzcbhe7xpb9zendbkfjpecwrtelmakga1uebhmcqvuxezarbgnvbagtclnvbwut": 28, "u3rhdguxitafbgnvbaotgeludgvybmv0ifdpzgdpdhmguhr5iex0ziijalw1z": 28, "rm": [28, 32], "2pg2mawga1udewqfmambaf8wdqyjkozihvcnaqefbqadgyeairaqpwuc7zx": 28, "qc7q": 28, "6xbyd": 28, "ndclivxoqopbnndguv25b1pzkycfeugbt": 28, "2ku7xo0aaxgfueq00juybg": 28, "r": [28, 32, 33], "616v3sruxi0r": 28, "xbuodtvez7visaxu2e3kydqncvryehq3dcffc4utgbpzrntxhrm": 28, "1djr81eyo8": 28, "xrebnrck5": 28, "dcj": 28, "u4": 28, "saml_idp_cert_fil": 28, "idp_cert": 28, "crt": 28, "ask": 28, "openssl": 28, "req": 28, "365": 28, "keyout": 28, "saml_sp_cert": 28, "miicsdccahmgawibagijaktihvfa9kabma0gcsqgsib3dqebbquameuxczajbgnv": 28, "awrnaxrzifb0esbmdgqwhhcnmtcwmje1mjiyodqzwhcnmtgwmje1mjiyodqzwjbf": 28, "gqdf4src8sxwhyb6al8uhgjeab6xjxynjfeqhd8u3kc1gs9syxdsid4tohyotwdk": 28, "c3doelbcum0xqvbwzx8xuptlr1pimzvux2kmloto0nvigga17xlujbcgd9uklrco": 28, "lizs8sawtlupdndlv7wnyygsragw9": 28, "h06szy2b7735thiqidaqabo4gnmigkmb0g": 28, "a1uddgqwbbqw3mpcpfpspif4pkleytfm3gp6bzb1bgnvhsmebjbsgbqw3mpcpfp": 28, "pif4pkleytfm3gp6b6fjpecwrtelmakga1uebhmcqvuxezarbgnvbagtclnvbwut": 28, "u3rhdguxitafbgnvbaotgeludgvybmv0ifdpzgdpdhmguhr5iex0ziijaktihvfa": 28, "9kabmawga1udewqfmambaf8wdqyjkozihvcnaqefbqadgyeai4fokax7zmkw9wbf": 28, "do1a1c8yxmperhtfnugjb3qinlqemxl": 28, "4p": 28, "ryztjr0up6iqdtpoq02mtj": 28, "er4ahc": 28, "fmgrm671fkctyu3vjqs33ixoogw": 28, "0f2xx": 28, "gwvhie8zc4vi": 28, "dfh30at": 28, "a6wjelxkz": 28, "crngxl5zn4uyc6t8g1rc544tbb8": 28, "saml_sp_cert_fil": 28, "sp_cert": 28, "sp_kei": 28, "saml_sp_kei": 28, "proc": 28, "4": [28, 29, 33], "dek": 28, "ede3": 28, "cbc": 28, "241900635d644ce6": 28, "rcuzgdpnt2zudmgokb2": 28, "3tbensut": 28, "dsi3srajcl6ivbfog9wuo4tvich0cczb5zi": 28, "u08b": 28, "zmuopm5qdefbfiipqs76sxhkuzsskreiijpi5fzkfkyckk5vv7elhui": 28, "b5u": 28, "f0s6mbxxvp1dug5lzzpohnfjvcanxocfpbgl6hj6sn0qklozrcc4whychsjmdxh": 28, "sc8efiwv94vk8esw": 28, "pwrsc": 28, "aq1hpw3shepmgv6ojudgplf136ztnstjulyghjhpx": 28, "nes9": 28, "pkgt": 28, "rfpb": 28, "kolxsglvujfswtxgz9h08x37rhyvgv8v9bs6ret62ogderofp": 28, "bsro3791dohyceywdt8oafaier3nd": 28, "il4rnsfkseqrm": 28, "eaubhjvjxqp64h5dlanc": 28, "uhzabucwuegoorzvqsg": 28, "uotcwyaxeyq": 28, "wjkcadfpi": 28, "scpk0gojtujzjzp3nl1vki": 28, "bmfdyjrz3qpklu7hkswh4g89h2nxggsvhttzzy3ihyqvxvjinascxpqo3qjno": 28, "z": 28, "qsis6z": 28, "zd": 28, "urtqmk2pr6rznqjjg74nl4wj8pmhrlj3li7ldym6q6gcmqugiz": 28, "4l": 28, "m1nlyellrq4frellvmxxa": 28, "z0fgqdxee2q8g4kbbdjpfczyo0kgqbnifnilx3sazi": 28, "b5fp": 28, "dxnu": 28, "zka1mks6u2j": 28, "srpddvpmjj9r0xdumrjodwdvl": 28, "b2jvfhlstmnuonzf": 28, "hbk": 28, "zw00mxyq37qv7x3jcdcruatehinxbdx3xmbpshghy6yyh5l4upkrxlv7yamg": 28, "uiql": 28, "ycdh79jivlf8jvkja3wdpetepbemzdjpdefimdswu73j": 28, "opmg": 28, "saml_sp_key_file_password": 28, "verysecurepassword": 28, "tweak": 28, "solv": 28, "www": 28, "w3": 28, "2001": 28, "04": 28, "xmldsig": 28, "sha256": 28, "2000": 28, "09": 28, "sha1": 28, "saml_security_sig_algo": 28, "signatur": 28, "saml_security_slo_resp_sign": 28, "messag": [28, 33, 34, 36], "saml_security_messages_sign": 28, "individu": 28, "saml_security_assertions_sign": 28, "veri": [28, 33], "least": [28, 37, 38], "saml_want_attribute_stat": 28, "saml_debug": 28, "pretend": 28, "weird": 28, "isn": [28, 31, 33], "respect": 28, "saml_fake_http": 28, "itsdanger": 28, "extend": 28, "again": 28, "hour": 28, "permanent_session_lifetim": 28, "43200": 28, "24": 28, "max_permanent_session_lifetim": 28, "86400": 28, "redis_url": 28, "localhost": [28, 30], "6381": 28, "session_cookie_nam": 28, "confidant_sess": 28, "occur": [28, 33, 38], "modifi": [28, 31, 34, 37], "stat": 28, "8125": 28, "statsd_host": 28, "mystatshost": 28, "statsd_port": 28, "graphite_event_url": 28, "graphite_usernam": 28, "mygraphiteus": 28, "graphite_password": 28, "mylongandsupersecuregraphitepassword": 28, "subset": 28, "60": [28, 33], "minut": [28, 33], "auth_token_max_lifetim": 28, "minifi": [28, 32], "dist": [28, 32], "directori": [28, 30, 32], "static": 28, "folder": 28, "static_fold": [28, 32], "portion": [28, 33], "focus": 28, "js": 28, "custom_frontend_directori": 28, "srv": [28, 32, 38], "use_auth": 28, "use_encrypt": 28, "sslifi": 28, "cd": [28, 32, 38], "generate_secrets_bootstrap": 28, "unencrypted_dict": 28, "encrypted_dict": 28, "cat": 28, "decrypt_secrets_bootstrap": 28, "cross": 28, "scoped_auth_kei": [28, 33], "sandbox": [28, 33], "less": 28, "masquerad": 28, "accept": [28, 30, 33], "kms_maximum_token_vers": 28, "high": 28, "kms_minimum_token_vers": 28, "comma": [28, 34], "kms_auth_user_typ": 28, "managen": 28, "manual": [28, 29], "expos": 28, "blind_kei": 28, "blindkei": 28, "blind_cipher_typ": 28, "fernet": [28, 33, 37], "blind_cipher_vers": 28, "blind_store_credential_kei": 28, "coupl": [28, 33], "explicit": 28, "runtim": 28, "aggress": 28, "enough": [28, 39], "aren": [28, 32, 38], "4096": 28, "total": 28, "greater": [28, 34], "latenc": 28, "likelyhood": 28, "ratelimit": 28, "kms_auth_token_cache_s": 28, "tune": 28, "pretti": [28, 33], "timeout": 28, "1s": 28, "fast": 28, "block": [28, 37], "network": [28, 29], "attempt": 28, "pileup": 28, "pynamo_connect_timeout_second": 28, "pynamo_read_timeout_second": 28, "recreat": 28, "larger": 28, "pool": 28, "worker": [28, 32], "pynamo_connection_pool_s": 28, "similar": 28, "kms_connection_timeout": 28, "kms_read_timeout": 28, "kms_max_pool_connect": 28, "alphanumer": [28, 39], "za": 28, "_": 28, "acm_private_ca": 28, "ca1": 28, "ca2": 28, "append": [28, 31], "uppercas": 28, "what": [28, 29, 33], "acm_private_ca_arn_ca1": 28, "acm_private_ca_arn_ca2": 28, "syntax": 28, "p": 28, "acm_private_ca_domain_regex_ca1": 28, "w": 28, "sha256withrsa": 28, "acm_private_ca_signing_algorithm_ca1": 28, "templat": 28, "pca": 28, "endentitycertif": 28, "acm_private_ca_template_arn_ca1": 28, "acm_private_ca_max_validity_days_ca1": 28, "No": 28, "acm_private_ca_csr_country_name_ca1": 28, "acm_private_ca_csr_state_or_province_name_ca1": 28, "california": 28, "acm_private_ca_csr_locality_name_ca1": 28, "francisco": 28, "acm_private_ca_csr_organization_name_ca1": 28, "inc": 28, "evalu": 28, "incur": 28, "cost": 28, "acm_private_ca_self_sign_ca1": 28, "2048": 28, "acm_private_ca_key_size_ca1": 28, "complet": [28, 39], "sake": 28, "expon": 28, "65537": 28, "acm_private_ca_key_public_exponent_size_ca1": 28, "off": 28, "1028": 28, "acm_private_ca_certificate_use_cache_ca1": 28, "acm_private_ca_certificate_cache_size_ca1": 28, "real": 28, "dynamodb_url": 28, "8080": 28, "special": [28, 34], "yourself": [28, 33], "administr": 28, "consolepolici": 28, "sid": 28, "princip": 28, "myadminus": 28, "revok": 28, "delet": [28, 34, 37, 39], "generatedatakei": 28, "reencrypt": 28, "describekei": 28, "listgrant": 28, "creategr": 28, "listrol": 28, "getrol": 28, "deletet": 28, "hash": 28, "rang": 28, "data_type_revision_index": 28, "low": [28, 36], "usag": [28, 29, 34], "cloudwatch": 28, "throughput": 28, "clone": 29, "vs": 29, "ssl": 29, "termin": 29, "metric": 29, "event": 29, "sidebar": 29, "reformat": 29, "hookpoint": 29, "threat": 29, "assumpt": [29, 32, 33], "achiev": 29, "compromis": 29, "comput": 29, "unauthent": 29, "who": 29, "observ": 29, "traffic": 29, "internet": 29, "filesystem": 29, "contribut": 29, "conduct": 29, "contributor": 29, "licens": 29, "agreement": 29, "cla": 29, "submit": 29, "At": 29, "permanantli": 29, "peform": 29, "changelog": 29, "6": 29, "5": 29, "7": [29, 33], "21": 29, "20": 29, "19": 29, "18": 29, "15": 29, "14": 29, "13": 29, "govern": 30, "particip": 30, "agre": 30, "abid": 30, "term": [30, 37], "bug": 30, "pr": 30, "try": [30, 33], "quicker": 30, "everyon": 30, "easili": 30, "reproduc": 30, "desktop": 30, "simplesamplephp": 30, "quick": [30, 33], "learn": [30, 37], "kill": 30, "ctrl": 30, "c": 30, "docker_build": 30, "easiest": [30, 32], "suit": 30, "minu": 30, "commit": 30, "target": 30, "down": 30, "docker_test": 30, "docker_test_unit": 30, "docker_test_integr": 30, "docker_test_frontend": 30, "lint": 30, "precommit": 30, "archive_servic": 31, "reflect": 31, "newest": 31, "stai": 31, "uuid4": 31, "increment": 31, "clear": 31, "text": 31, "master": [31, 32, 37], "kept": 31, "record": [31, 34], "plaintext": [31, 33], "checkout": 32, "deploi": 32, "readi": 32, "registri": 32, "ghcr": 32, "io": [32, 33, 37], "line": [32, 33], "git": 32, "still": [32, 34, 38], "ubuntu": 32, "debian": 32, "sudo": 32, "apt": 32, "y": [32, 33], "essenti": 32, "libffi": 32, "u": [32, 33], "deactiv": 32, "artifact": 32, "node_modul": 32, "txt": 32, "npm": 32, "nodej": 32, "legaci": 32, "core": 32, "gem": 32, "compass": 32, "grunt": 32, "my_config": 32, "mostli": 33, "crash": 33, "cours": 33, "leverag": 33, "familiar": 33, "amazon": 33, "developerguid": 33, "concept": [33, 39], "crypto": 33, "intro": 33, "crypto_authen": 33, "terminolog": 33, "not_aft": 33, "timedelta": 33, "not_befor": 33, "strftime": 33, "m": 33, "dt": 33, "h": 33, "sz": 33, "myservic": 33, "abcdefgh": 33, "5678": 33, "9abcd": 33, "ee72ac95ae8c": 33, "responsemetadata": 33, "httpstatuscod": 33, "requestid": 33, "3a48f2ad": 33, "072d": 33, "11e5": 33, "88fb": 33, "17df9ce1a01a": 33, "ciphertextblob": 33, "x999": 33, "x9e": 33, "yo": 33, "x92": 33, "x1dg": 33, "xbbz": 33, "x84": 33, "xdai": 33, "xbf": 33, "x14": 33, "x81": 33, "x8a": 33, "x1c": 33, "xf2": 33, "xf8z": 33, "x05": 33, "xed": 33, "xb2": 33, "x8d": 33, "x12": 33, "x8f": 33, "x01": 33, "x02": 33, "x00x": 33, "x00": 33, "x00f0d": 33, "x06": 33, "x86h": 33, "x86": 33, "xf7": 33, "x07": 33, "xa0w0u": 33, "x000p": 33, "x010": 33, "x1e": 33, "x01e": 33, "x03": 33, "x04": 33, "x11": 33, "x0c": 33, "xd3": 33, "x96": 33, "x91": 33, "x83": 33, "xd2l": 33, "xfb": 33, "xa6": 33, "xc2": 33, "x90": 33, "x10": 33, "x80": 33, "x97z": 33, "xd1": 33, "xbb": 33, "xb4_": 33, "xea": 33, "x1a": 33, "x85": 33, "x0e": 33, "x9b1": 33, "xfa0j": 33, "xca1": 33, "xc7": 33, "xc3": 33, "x8czt": 33, "xd4": 33, "x8fk": 33, "x08": 33, "xa8": 33, "xcd": 33, "xe5": 33, "x82": 33, "xb3": 33, "20150914t172347z": 33, "20150914t182347z": 33, "6450392b": 33, "87df": 33, "5345698b39e1": 33, "notmyservic": 33, "traceback": 33, "recent": 33, "home": 33, "site": 33, "botocor": 33, "249": 33, "_api_cal": 33, "clienterror": 33, "parsed_respons": 33, "operation_nam": 33, "invalidciphertextexcept": 33, "get_key_arn": 33, "describe_kei": 33, "master_key_id": 33, "keymetadata": 33, "_parse_usernam": 33, "username_arr": 33, "len": 33, "myuser": 33, "unsupport": 33, "decrypt_token": 33, "_usernam": 33, "b64decod": 33, "iam_rol": 33, "verifi": 33, "annoyingli": 33, "actual": 33, "key_arn": 33, "tokendecrypterror": 33, "thrown": 33, "time_format": 33, "strptime": 33, "within": 33, "window": 33, "wrap": 33, "401": 33, "And": 33, "serviceb": 33, "b64encod": 33, "almost": 33, "exactli": 33, "pattern": 33, "contraint": 33, "occasion": 33, "kb": 33, "smaller": 33, "4kb": 33, "perfectli": 33, "matter": [33, 36], "languag": 33, "thankfulli": 33, "straightforward": 33, "stringlik": 33, "mark": 33, "simplest": 33, "downsid": 33, "whichev": 33, "outsid": [33, 37], "lookup": 33, "admin": 34, "task": 34, "exit": 34, "mutual": 34, "exclus": 34, "dry": 34, "indic": 34, "dynamodb_table_arch": 34, "saniti": 34, "realis": 34, "restore_credenti": 34, "skip": 34, "confirm": 35, "acknowledg": 35, "posit": 35, "neg": 35, "mail": 36, "discuss": 36, "volum": 36, "announc": 36, "forum": 36, "irc": 36, "channel": 36, "freenod": 36, "gitter": 36, "feel": 36, "free": 36, "drop": 36, "chat": 36, "join": 36, "sync": 36, "written": [37, 38], "accomplish": 37, "variou": 37, "perspect": 37, "exhaust": 37, "faith": 37, "infect": 37, "malwar": 37, "tl": 37, "manner": 37, "passiv": 37, "approxim": 37, "vpn": 37, "remap": 37, "manipul": 37, "s3": 37, "steal": 37, "ae": 37, "usual": 38, "over": 38, "seri": 38, "ship": 38, "migrate_blind_cred_set_attribut": 38, "migrate_service_set_attribut": 38, "intermitt": 38, "those": 39, "ever": 39, "plu": 39, "click": 39, "bring": 39, "readabl": 39, "renam": 39, "un": 39, "confus": 39, "resours": 39, "select": 39, "word": 39, "explor": 39, "navig": 39}, "objects": {"": [[1, 0, 1, "get--v1-archive-credentials", "/v1/archive/credentials"], [1, 0, 1, "get--v1-archive-credentials-(id)", "/v1/archive/credentials/(id)"], [1, 0, 1, "get--v1-archive-services", "/v1/archive/services"], [1, 0, 1, "get--v1-archive-services-(id)", "/v1/archive/services/(id)"], [1, 0, 1, "get--v1-cas", "/v1/cas"], [1, 0, 1, "get--v1-cas-(ca)", "/v1/cas/(ca)"], [1, 1, 1, "post--v1-certificates-(ca)", "/v1/certificates/(ca)"], [1, 0, 1, "get--v1-certificates-(ca)-(cn)", "/v1/certificates/(ca)/(cn)"], [1, 0, 1, "get--v1-client_config", "/v1/client_config"], [1, 0, 1, "get--v1-credentials", "/v1/credentials"], [1, 1, 1, "post--v1-credentials", "/v1/credentials"], [1, 0, 1, "get--v1-credentials-(id)", "/v1/credentials/(id)"], [1, 2, 1, "put--v1-credentials-(id)", "/v1/credentials/(id)"], [1, 0, 1, "get--v1-credentials-(id)-(old_revision)-(new_revision)", "/v1/credentials/(id)/(old_revision)/(new_revision)"], [1, 2, 1, "put--v1-credentials-(id)-(to_revision)", "/v1/credentials/(id)/(to_revision)"], [1, 1, 1, "post--v1-credentials-(id)-archive", "/v1/credentials/(id)/archive"], [1, 0, 1, "get--v1-credentials-(id)-services", "/v1/credentials/(id)/services"], [1, 0, 1, "get--v1-grants-(id)", "/v1/grants/(id)"], [1, 2, 1, "put--v1-grants-(id)", "/v1/grants/(id)"], [1, 0, 1, "get--v1-jwks-public-(environment)", "/v1/jwks/public/(environment)"], [1, 0, 1, "get--v1-jwks-token", "/v1/jwks/token"], [1, 0, 1, "get--v1-jwks-token-(id)", "/v1/jwks/token/(id)"], [1, 0, 1, "get--v1-login", "/v1/login"], [1, 1, 1, "post--v1-login", "/v1/login"], [1, 0, 1, "get--v1-roles", "/v1/roles"], [1, 1, 1, "post--v1-saml-consume", "/v1/saml/consume"], [1, 0, 1, "get--v1-saml-debug", "/v1/saml/debug"], [1, 0, 1, "get--v1-saml-login", "/v1/saml/login"], [1, 0, 1, "get--v1-saml-logout", "/v1/saml/logout"], [1, 0, 1, "get--v1-saml-metadata", "/v1/saml/metadata"], [1, 0, 1, "get--v1-services", "/v1/services"], [1, 0, 1, "get--v1-services-(id)", "/v1/services/(id)"], [1, 2, 1, "put--v1-services-(id)", "/v1/services/(id)"], [1, 0, 1, "get--v1-services-(id)-(old_revision)-(new_revision)", "/v1/services/(id)/(old_revision)/(new_revision)"], [1, 2, 1, "put--v1-services-(id)-(to_revision)", "/v1/services/(id)/(to_revision)"], [1, 0, 1, "get--v1-user-email", "/v1/user/email"], [1, 1, 1, "post--v1-user-email", "/v1/user/email"], [1, 0, 1, "get--v1-value_generator", "/v1/value_generator"], [2, 3, 0, "-", "confidant"], [12, 3, 0, "-", "dev_wsgi"], [13, 3, 0, "-", "manage"], [15, 3, 0, "-", "tests"]], "confidant": [[2, 3, 0, "-", "app"], [3, 3, 0, "-", "authnz"], [4, 3, 0, "-", "clients"], [2, 3, 0, "-", "encrypted_settings"], [5, 3, 0, "-", "lib"], [6, 3, 0, "-", "models"], [7, 3, 0, "-", "routes"], [8, 3, 0, "-", "schema"], [9, 3, 0, "-", "scripts"], [10, 3, 0, "-", "services"], [2, 3, 0, "-", "settings"], [11, 3, 0, "-", "utils"], [2, 3, 0, "-", "wsgi"]], "confidant.app": [[2, 4, 1, "", "create_app"]], "confidant.authnz": [[3, 4, 1, "", "_get_kms_auth_data"], [3, 4, 1, "", "_get_validator"], [3, 4, 1, "", "account_for_key_alias"], [3, 3, 0, "-", "errors"], [3, 4, 1, "", "get_logged_in_user"], [3, 4, 1, "", "log_in"], [3, 3, 0, "-", "rbac"], [3, 4, 1, "", "redirect_to_logout_if_no_auth"], [3, 4, 1, "", "require_auth"], [3, 4, 1, "", "require_csrf_token"], [3, 4, 1, "", "require_logout_for_goodbye"], [3, 4, 1, "", "service_in_account"], [3, 4, 1, "", "user_is_service"], [3, 4, 1, "", "user_is_user_type"], [3, 3, 0, "-", "userauth"]], "confidant.authnz.errors": [[3, 5, 1, "", "AuthenticationError"], [3, 5, 1, "", "NotAuthorized"], [3, 5, 1, "", "TokenVersionError"], [3, 5, 1, "", "UserUnknownError"]], "confidant.authnz.rbac": [[3, 4, 1, "", "default_acl"], [3, 4, 1, "", "no_acl"]], "confidant.authnz.userauth": [[3, 6, 1, "", "AbstractUserAuthenticator"], [3, 6, 1, "", "GoogleOauthAuthenticator"], [3, 6, 1, "", "HeaderAuthenticator"], [3, 6, 1, "", "NullUserAuthenticator"], [3, 6, 1, "", "SamlAuthenticator"], [3, 4, 1, "", "init_user_auth_class"]], "confidant.authnz.userauth.AbstractUserAuthenticator": [[3, 7, 1, "", "allowed_email_suffix"], [3, 7, 1, "", "allowed_email_whitelist"], [3, 7, 1, "", "auth_type"], [3, 8, 1, "", "check_authorization"], [3, 8, 1, "", "check_csrf_token"], [3, 8, 1, "", "clear_session"], [3, 8, 1, "", "current_email"], [3, 8, 1, "", "current_first_name"], [3, 8, 1, "", "current_last_name"], [3, 8, 1, "", "current_user"], [3, 8, 1, "", "get_csrf_token"], [3, 8, 1, "", "is_authenticated"], [3, 8, 1, "", "is_expired"], [3, 8, 1, "", "log_in"], [3, 8, 1, "", "log_out"], [3, 8, 1, "", "passes_email_suffix"], [3, 8, 1, "", "passes_email_whitelist"], [3, 8, 1, "", "redirect_to_goodbye"], [3, 8, 1, "", "redirect_to_index"], [3, 8, 1, "", "set_csrf_token"], [3, 8, 1, "", "set_current_user"], [3, 8, 1, "", "set_expiration"]], "confidant.authnz.userauth.GoogleOauthAuthenticator": [[3, 7, 1, "", "auth_type"], [3, 8, 1, "", "log_in"]], "confidant.authnz.userauth.HeaderAuthenticator": [[3, 8, 1, "", "assert_headers"], [3, 7, 1, "", "auth_type"], [3, 8, 1, "", "check_authorization"], [3, 8, 1, "", "current_user"], [3, 8, 1, "", "is_authenticated"], [3, 8, 1, "", "is_expired"], [3, 8, 1, "", "log_in"]], "confidant.authnz.userauth.NullUserAuthenticator": [[3, 7, 1, "", "auth_type"], [3, 8, 1, "", "check_authorization"], [3, 8, 1, "", "current_user"], [3, 8, 1, "", "is_authenticated"], [3, 8, 1, "", "is_expired"], [3, 8, 1, "", "log_in"]], "confidant.authnz.userauth.SamlAuthenticator": [[3, 8, 1, "", "_current_saml_session_id"], [3, 8, 1, "", "_current_user_nameid"], [3, 8, 1, "", "_load_rsa_for_saml"], [3, 8, 1, "", "_load_x509_for_saml"], [3, 8, 1, "", "_render_saml_errors_json"], [3, 8, 1, "", "_render_saml_settings_dict"], [3, 8, 1, "", "_saml_auth"], [3, 8, 1, "", "_saml_req_dict_from_request"], [3, 7, 1, "", "auth_type"], [3, 8, 1, "", "consume_saml_assertion"], [3, 8, 1, "", "generate_metadata"], [3, 8, 1, "", "log_in"], [3, 8, 1, "", "log_out"], [3, 8, 1, "", "log_out_callback"], [3, 8, 1, "", "login_redirect_url"]], "confidant.clients": [[4, 4, 1, "", "get_boto_client"], [4, 4, 1, "", "get_boto_resource"], [4, 4, 1, "", "get_boto_session"]], "confidant.encrypted_settings": [[2, 6, 1, "", "EncryptedSettings"]], "confidant.encrypted_settings.EncryptedSettings": [[2, 8, 1, "", "_bootstrap"], [2, 8, 1, "", "get_all_secrets"], [2, 8, 1, "", "get_secret"], [2, 8, 1, "", "register"], [2, 8, 1, "", "registered"]], "confidant.lib": [[5, 3, 0, "-", "cryptolib"]], "confidant.lib.cryptolib": [[5, 4, 1, "", "_rsa_private_key_bare_base64"], [5, 4, 1, "", "_x509_certificate_bare_base64"], [5, 4, 1, "", "create_datakey"], [5, 4, 1, "", "create_mock_datakey"], [5, 4, 1, "", "decrypt_datakey"], [5, 4, 1, "", "decrypt_mock_datakey"], [5, 4, 1, "", "load_private_key_pem"], [5, 4, 1, "", "load_private_key_pem_as_bare_base64"], [5, 4, 1, "", "load_x509_certificate_pem"], [5, 4, 1, "", "load_x509_certificate_pem_as_bare_base64"]], "confidant.models": [[6, 3, 0, "-", "blind_credential"], [6, 3, 0, "-", "credential"], [6, 3, 0, "-", "non_null_unicode_set_attribute"], [6, 3, 0, "-", "service"]], "confidant.models.blind_credential": [[6, 6, 1, "", "BlindCredential"], [6, 6, 1, "", "DataTypeDateIndex"]], "confidant.models.blind_credential.BlindCredential": [[6, 5, 1, "", "DoesNotExist"], [6, 6, 1, "", "Meta"], [6, 9, 1, "", "_attributes"], [6, 9, 1, "", "_discriminator"], [6, 9, 1, "", "_dynamo_to_python_attrs"], [6, 9, 1, "", "_hash_keyname"], [6, 9, 1, "", "_indexes"], [6, 9, 1, "", "cipher_type"], [6, 9, 1, "", "cipher_version"], [6, 9, 1, "", "credential_keys"], [6, 9, 1, "", "credential_pairs"], [6, 9, 1, "", "data_key"], [6, 9, 1, "", "data_type"], [6, 9, 1, "", "data_type_date_index"], [6, 9, 1, "", "documentation"], [6, 9, 1, "", "enabled"], [6, 8, 1, "", "equals"], [6, 9, 1, "", "id"], [6, 9, 1, "", "metadata"], [6, 9, 1, "", "modified_by"], [6, 9, 1, "", "modified_date"], [6, 9, 1, "", "name"], [6, 9, 1, "", "revision"]], "confidant.models.blind_credential.BlindCredential.Meta": [[6, 9, 1, "", "aws_access_key_id"], [6, 9, 1, "", "aws_secret_access_key"], [6, 9, 1, "", "aws_session_token"], [6, 9, 1, "", "base_backoff_ms"], [6, 9, 1, "", "connect_timeout_seconds"], [6, 9, 1, "", "extra_headers"], [6, 9, 1, "", "host"], [6, 9, 1, "", "max_pool_connection"], [6, 9, 1, "", "max_pool_connections"], [6, 9, 1, "", "max_retry_attempts"], [6, 9, 1, "", "read_timeout_seconds"], [6, 9, 1, "", "region"], [6, 9, 1, "", "table_name"]], "confidant.models.blind_credential.DataTypeDateIndex": [[6, 6, 1, "", "Meta"], [6, 9, 1, "", "data_type"], [6, 9, 1, "", "modified_date"]], "confidant.models.blind_credential.DataTypeDateIndex.Meta": [[6, 9, 1, "", "attributes"], [6, 9, 1, "", "index_name"], [6, 9, 1, "", "model"], [6, 9, 1, "", "projection"], [6, 9, 1, "", "read_capacity_units"], [6, 9, 1, "", "write_capacity_units"]], "confidant.models.credential": [[6, 6, 1, "", "ArchiveDataTypeDateIndex"], [6, 6, 1, "", "Credential"], [6, 6, 1, "", "CredentialArchive"], [6, 6, 1, "", "CredentialBase"], [6, 6, 1, "", "DataTypeDateIndex"]], "confidant.models.credential.ArchiveDataTypeDateIndex": [[6, 6, 1, "", "Meta"], [6, 9, 1, "", "data_type"], [6, 9, 1, "", "modified_date"]], "confidant.models.credential.ArchiveDataTypeDateIndex.Meta": [[6, 9, 1, "", "attributes"], [6, 9, 1, "", "index_name"], [6, 9, 1, "", "model"], [6, 9, 1, "", "projection"], [6, 9, 1, "", "read_capacity_units"], [6, 9, 1, "", "write_capacity_units"]], "confidant.models.credential.Credential": [[6, 5, 1, "", "DoesNotExist"], [6, 6, 1, "", "Meta"], [6, 9, 1, "", "_attributes"], [6, 8, 1, "", "_diff_dict"], [6, 9, 1, "", "_discriminator"], [6, 9, 1, "", "_dynamo_to_python_attrs"], [6, 8, 1, "", "_get_decrypted_credential_pairs"], [6, 9, 1, "", "_hash_keyname"], [6, 9, 1, "", "_indexes"], [6, 7, 1, "", "credential_keys"], [6, 9, 1, "", "data_type_date_index"], [6, 7, 1, "", "decrypted_credential_pairs"], [6, 8, 1, "", "diff"], [6, 8, 1, "", "equals"], [6, 7, 1, "", "exempt_from_rotation"], [6, 8, 1, "", "from_archive_credential"], [6, 7, 1, "", "next_rotation_date"]], "confidant.models.credential.Credential.Meta": [[6, 9, 1, "", "aws_access_key_id"], [6, 9, 1, "", "aws_secret_access_key"], [6, 9, 1, "", "aws_session_token"], [6, 9, 1, "", "base_backoff_ms"], [6, 9, 1, "", "connect_timeout_seconds"], [6, 9, 1, "", "extra_headers"], [6, 9, 1, "", "host"], [6, 9, 1, "", "max_pool_connection"], [6, 9, 1, "", "max_pool_connections"], [6, 9, 1, "", "max_retry_attempts"], [6, 9, 1, "", "read_timeout_seconds"], [6, 9, 1, "", "region"], [6, 9, 1, "", "table_name"]], "confidant.models.credential.CredentialArchive": [[6, 5, 1, "", "DoesNotExist"], [6, 6, 1, "", "Meta"], [6, 9, 1, "", "_attributes"], [6, 9, 1, "", "_discriminator"], [6, 9, 1, "", "_dynamo_to_python_attrs"], [6, 9, 1, "", "_hash_keyname"], [6, 9, 1, "", "_indexes"], [6, 9, 1, "", "archive_date"], [6, 9, 1, "", "data_type_date_index"], [6, 8, 1, "", "from_credential"]], "confidant.models.credential.CredentialArchive.Meta": [[6, 9, 1, "", "aws_access_key_id"], [6, 9, 1, "", "aws_secret_access_key"], [6, 9, 1, "", "aws_session_token"], [6, 9, 1, "", "base_backoff_ms"], [6, 9, 1, "", "connect_timeout_seconds"], [6, 9, 1, "", "extra_headers"], [6, 9, 1, "", "host"], [6, 9, 1, "", "max_pool_connection"], [6, 9, 1, "", "max_pool_connections"], [6, 9, 1, "", "max_retry_attempts"], [6, 9, 1, "", "read_timeout_seconds"], [6, 9, 1, "", "region"], [6, 9, 1, "", "table_name"]], "confidant.models.credential.CredentialBase": [[6, 5, 1, "", "DoesNotExist"], [6, 9, 1, "", "_attributes"], [6, 9, 1, "", "_discriminator"], [6, 9, 1, "", "_dynamo_to_python_attrs"], [6, 9, 1, "", "_hash_keyname"], [6, 9, 1, "", "_indexes"], [6, 9, 1, "", "cipher_version"], [6, 9, 1, "", "credential_pairs"], [6, 9, 1, "", "data_key"], [6, 9, 1, "", "data_type"], [6, 9, 1, "", "documentation"], [6, 9, 1, "", "enabled"], [6, 9, 1, "", "id"], [6, 9, 1, "", "last_decrypted_date"], [6, 9, 1, "", "last_rotation_date"], [6, 9, 1, "", "metadata"], [6, 9, 1, "", "modified_by"], [6, 9, 1, "", "modified_date"], [6, 9, 1, "", "name"], [6, 9, 1, "", "revision"], [6, 9, 1, "", "tags"]], "confidant.models.credential.DataTypeDateIndex": [[6, 6, 1, "", "Meta"], [6, 9, 1, "", "data_type"], [6, 9, 1, "", "modified_date"]], "confidant.models.credential.DataTypeDateIndex.Meta": [[6, 9, 1, "", "attributes"], [6, 9, 1, "", "index_name"], [6, 9, 1, "", "model"], [6, 9, 1, "", "projection"], [6, 9, 1, "", "read_capacity_units"], [6, 9, 1, "", "write_capacity_units"]], "confidant.models.non_null_unicode_set_attribute": [[6, 6, 1, "", "NonNullUnicodeSetAttribute"]], "confidant.models.service": [[6, 6, 1, "", "DataTypeDateIndex"], [6, 6, 1, "", "Service"]], "confidant.models.service.DataTypeDateIndex": [[6, 6, 1, "", "Meta"], [6, 9, 1, "", "data_type"], [6, 9, 1, "", "modified_date"]], "confidant.models.service.DataTypeDateIndex.Meta": [[6, 9, 1, "", "attributes"], [6, 9, 1, "", "index_name"], [6, 9, 1, "", "model"], [6, 9, 1, "", "projection"], [6, 9, 1, "", "read_capacity_units"], [6, 9, 1, "", "write_capacity_units"]], "confidant.models.service.Service": [[6, 5, 1, "", "DoesNotExist"], [6, 6, 1, "", "Meta"], [6, 9, 1, "", "_attributes"], [6, 8, 1, "", "_diff_list"], [6, 9, 1, "", "_discriminator"], [6, 9, 1, "", "_dynamo_to_python_attrs"], [6, 9, 1, "", "_hash_keyname"], [6, 9, 1, "", "_indexes"], [6, 9, 1, "", "account"], [6, 9, 1, "", "blind_credentials"], [6, 9, 1, "", "credentials"], [6, 9, 1, "", "data_type"], [6, 9, 1, "", "data_type_date_index"], [6, 8, 1, "", "diff"], [6, 9, 1, "", "enabled"], [6, 8, 1, "", "equals"], [6, 9, 1, "", "id"], [6, 9, 1, "", "modified_by"], [6, 9, 1, "", "modified_date"], [6, 9, 1, "", "revision"]], "confidant.models.service.Service.Meta": [[6, 9, 1, "", "aws_access_key_id"], [6, 9, 1, "", "aws_secret_access_key"], [6, 9, 1, "", "aws_session_token"], [6, 9, 1, "", "base_backoff_ms"], [6, 9, 1, "", "connect_timeout_seconds"], [6, 9, 1, "", "extra_headers"], [6, 9, 1, "", "host"], [6, 9, 1, "", "max_pool_connection"], [6, 9, 1, "", "max_pool_connections"], [6, 9, 1, "", "max_retry_attempts"], [6, 9, 1, "", "read_timeout_seconds"], [6, 9, 1, "", "region"], [6, 9, 1, "", "table_name"]], "confidant.routes": [[7, 3, 0, "-", "blind_credentials"], [7, 3, 0, "-", "certificates"], [7, 3, 0, "-", "credentials"], [7, 3, 0, "-", "identity"], [7, 3, 0, "-", "jwks"], [7, 3, 0, "-", "saml"], [7, 3, 0, "-", "services"], [7, 3, 0, "-", "static_files"]], "confidant.routes.blind_credentials": [[7, 4, 1, "", "create_blind_credential"], [7, 4, 1, "", "get_archive_blind_credential_list"], [7, 4, 1, "", "get_archive_blind_credential_revisions"], [7, 4, 1, "", "get_blind_credential"], [7, 4, 1, "", "get_blind_credential_dependencies"], [7, 4, 1, "", "get_blind_credential_list"], [7, 4, 1, "", "revert_blind_credential_to_revision"], [7, 4, 1, "", "update_blind_credential"]], "confidant.routes.certificates": [[7, 4, 1, "", "get_ca"], [7, 4, 1, "", "get_certificate"], [7, 4, 1, "", "get_certificate_from_csr"], [7, 4, 1, "", "list_cas"]], "confidant.routes.credentials": [[7, 4, 1, "", "archive_credential"], [7, 4, 1, "", "create_credential"], [7, 4, 1, "", "diff_credential"], [7, 4, 1, "", "generate_value"], [7, 4, 1, "", "get_archive_credential_list"], [7, 4, 1, "", "get_archive_credential_revisions"], [7, 4, 1, "", "get_credential"], [7, 4, 1, "", "get_credential_dependencies"], [7, 4, 1, "", "get_credential_list"], [7, 4, 1, "", "revert_credential_to_revision"], [7, 4, 1, "", "update_credential"]], "confidant.routes.identity": [[7, 4, 1, "", "get_client_config"], [7, 4, 1, "", "get_user_info"], [7, 4, 1, "", "login"]], "confidant.routes.jwks": [[7, 4, 1, "", "get_public_jwks"], [7, 4, 1, "", "get_token"]], "confidant.routes.saml": [[7, 4, 1, "", "consume_saml_assertion"], [7, 4, 1, "", "dump_session_info"], [7, 4, 1, "", "generate_saml_login_redirect"], [7, 4, 1, "", "get_saml_metadata"], [7, 4, 1, "", "saml_logout"]], "confidant.routes.services": [[7, 4, 1, "", "diff_service"], [7, 4, 1, "", "ensure_grants"], [7, 4, 1, "", "get_archive_service_list"], [7, 4, 1, "", "get_archive_service_revisions"], [7, 4, 1, "", "get_grants"], [7, 4, 1, "", "get_iam_roles_list"], [7, 4, 1, "", "get_service"], [7, 4, 1, "", "get_service_list"], [7, 4, 1, "", "map_service_credentials"], [7, 4, 1, "", "revert_service_to_revision"]], "confidant.routes.static_files": [[7, 4, 1, "", "components"], [7, 4, 1, "", "custom_images"], [7, 4, 1, "", "custom_modules"], [7, 4, 1, "", "custom_styles"], [7, 4, 1, "", "favicon"], [7, 4, 1, "", "fonts"], [7, 4, 1, "", "goodbye"], [7, 4, 1, "", "healthcheck"], [7, 4, 1, "", "images"], [7, 4, 1, "", "index"], [7, 4, 1, "", "modules"], [7, 4, 1, "", "not_found"], [7, 4, 1, "", "robots"], [7, 4, 1, "", "scripts"], [7, 4, 1, "", "static_proxy"]], "confidant.schema": [[8, 3, 0, "-", "auto_build_schema"], [8, 3, 0, "-", "blind_credentials"], [8, 3, 0, "-", "certificates"], [8, 3, 0, "-", "credentials"], [8, 3, 0, "-", "jwks"], [8, 3, 0, "-", "services"]], "confidant.schema.auto_build_schema": [[8, 6, 1, "", "AutobuildSchema"], [8, 6, 1, "", "StrictSchema"]], "confidant.schema.auto_build_schema.AutobuildSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 8, 1, "", "build_object"], [8, 9, 1, "", "opts"]], "confidant.schema.auto_build_schema.StrictSchema": [[8, 6, 1, "", "Meta"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.auto_build_schema.StrictSchema.Meta": [[8, 9, 1, "", "strict"]], "confidant.schema.blind_credentials": [[8, 6, 1, "", "BlindCredentialResponse"], [8, 6, 1, "", "BlindCredentialResponseSchema"]], "confidant.schema.blind_credentials.BlindCredentialResponse": [[8, 8, 1, "", "from_blind_credential"]], "confidant.schema.blind_credentials.BlindCredentialResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.certificates": [[8, 6, 1, "", "CertificateAuthoritiesResponse"], [8, 6, 1, "", "CertificateAuthoritiesResponseSchema"], [8, 6, 1, "", "CertificateAuthorityResponse"], [8, 6, 1, "", "CertificateAuthorityResponseSchema"], [8, 6, 1, "", "CertificateExpandedResponseSchema"], [8, 6, 1, "", "CertificateResponse"], [8, 6, 1, "", "CertificateResponseSchema"]], "confidant.schema.certificates.CertificateAuthoritiesResponse": [[8, 8, 1, "", "from_cas"]], "confidant.schema.certificates.CertificateAuthoritiesResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.certificates.CertificateAuthorityResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.certificates.CertificateExpandedResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.certificates.CertificateResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.credentials": [[8, 6, 1, "", "CredentialResponse"], [8, 6, 1, "", "CredentialResponseSchema"], [8, 6, 1, "", "CredentialsResponse"], [8, 6, 1, "", "CredentialsResponseSchema"], [8, 6, 1, "", "RevisionsResponse"], [8, 6, 1, "", "RevisionsResponseSchema"]], "confidant.schema.credentials.CredentialResponse": [[8, 8, 1, "", "from_credential"]], "confidant.schema.credentials.CredentialResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.credentials.CredentialsResponse": [[8, 8, 1, "", "from_credentials"]], "confidant.schema.credentials.CredentialsResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 8, 1, "", "encode_next_page"], [8, 9, 1, "", "opts"], [8, 8, 1, "", "sort_credentials"]], "confidant.schema.credentials.RevisionsResponse": [[8, 8, 1, "", "from_credentials"]], "confidant.schema.credentials.RevisionsResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 8, 1, "", "encode_next_page"], [8, 9, 1, "", "opts"], [8, 8, 1, "", "sort_revisions"]], "confidant.schema.jwks": [[8, 6, 1, "", "JWKSListResponse"], [8, 6, 1, "", "JWKSListResponseSchema"], [8, 6, 1, "", "JWKSResponse"], [8, 6, 1, "", "JWKSResponseSchema"], [8, 6, 1, "", "JWTResponse"], [8, 6, 1, "", "JWTResponseSchema"]], "confidant.schema.jwks.JWKSListResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.jwks.JWKSResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.jwks.JWTResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.services": [[8, 6, 1, "", "RevisionsResponse"], [8, 6, 1, "", "RevisionsResponseSchema"], [8, 6, 1, "", "ServiceExpandedResponseSchema"], [8, 6, 1, "", "ServiceResponse"], [8, 6, 1, "", "ServiceResponseSchema"], [8, 6, 1, "", "ServicesResponse"], [8, 6, 1, "", "ServicesResponseSchema"]], "confidant.schema.services.RevisionsResponse": [[8, 8, 1, "", "from_services"]], "confidant.schema.services.RevisionsResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 8, 1, "", "encode_next_page"], [8, 9, 1, "", "opts"], [8, 8, 1, "", "sort_revisions"]], "confidant.schema.services.ServiceExpandedResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.services.ServiceResponse": [[8, 8, 1, "", "from_service"], [8, 8, 1, "", "from_service_expanded"]], "confidant.schema.services.ServiceResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.services.ServicesResponse": [[8, 8, 1, "", "from_services"]], "confidant.schema.services.ServicesResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 8, 1, "", "encode_next_page"], [8, 9, 1, "", "opts"], [8, 8, 1, "", "sort_services"]], "confidant.scripts": [[9, 3, 0, "-", "archive"], [9, 3, 0, "-", "bootstrap"], [9, 3, 0, "-", "manage"], [9, 3, 0, "-", "migrate"], [9, 3, 0, "-", "migrate_bool"], [9, 3, 0, "-", "restore"], [9, 3, 0, "-", "utils"]], "confidant.scripts.archive": [[9, 6, 1, "", "ArchiveCredentials"]], "confidant.scripts.archive.ArchiveCredentials": [[9, 9, 1, "", "option_list"], [9, 8, 1, "", "run"]], "confidant.scripts.bootstrap": [[9, 6, 1, "", "DecryptSecretsBootstrap"], [9, 6, 1, "", "GenerateSecretsBootstrap"]], "confidant.scripts.bootstrap.DecryptSecretsBootstrap": [[9, 9, 1, "", "option_list"], [9, 8, 1, "", "run"]], "confidant.scripts.bootstrap.GenerateSecretsBootstrap": [[9, 9, 1, "", "option_list"], [9, 8, 1, "", "run"]], "confidant.scripts.manage": [[9, 4, 1, "", "main"]], "confidant.scripts.migrate": [[9, 6, 1, "", "GeneralCredentialModel"], [9, 6, 1, "", "GeneralServiceModel"], [9, 6, 1, "", "MigrateBlindCredentialSetAttribute"], [9, 6, 1, "", "MigrateServiceSetAttribute"], [9, 6, 1, "", "NewUnicodeSetAttribute"], [9, 6, 1, "", "SetMixin"], [9, 4, 1, "", "is_old_unicode_set"]], "confidant.scripts.migrate.GeneralCredentialModel": [[9, 5, 1, "", "DoesNotExist"], [9, 6, 1, "", "Meta"], [9, 9, 1, "", "_attributes"], [9, 9, 1, "", "_discriminator"], [9, 9, 1, "", "_dynamo_to_python_attrs"], [9, 9, 1, "", "_hash_keyname"], [9, 9, 1, "", "_indexes"], [9, 9, 1, "", "credential_keys"], [9, 9, 1, "", "id"]], "confidant.scripts.migrate.GeneralServiceModel": [[9, 5, 1, "", "DoesNotExist"], [9, 6, 1, "", "Meta"], [9, 9, 1, "", "_attributes"], [9, 9, 1, "", "_discriminator"], [9, 9, 1, "", "_dynamo_to_python_attrs"], [9, 9, 1, "", "_hash_keyname"], [9, 9, 1, "", "_indexes"], [9, 9, 1, "", "blind_credentials"], [9, 9, 1, "", "credentials"], [9, 9, 1, "", "id"]], "confidant.scripts.migrate.MigrateBlindCredentialSetAttribute": [[9, 8, 1, "", "run"]], "confidant.scripts.migrate.MigrateServiceSetAttribute": [[9, 8, 1, "", "run"]], "confidant.scripts.migrate.NewUnicodeSetAttribute": [[9, 9, 1, "", "attr_type"], [9, 8, 1, "", "deserialize"], [9, 8, 1, "", "element_deserialize"], [9, 8, 1, "", "element_serialize"], [9, 9, 1, "", "null"], [9, 8, 1, "", "serialize"]], "confidant.scripts.migrate.SetMixin": [[9, 8, 1, "", "deserialize"], [9, 8, 1, "", "serialize"]], "confidant.scripts.migrate_bool": [[9, 6, 1, "", "GenericCredential"], [9, 6, 1, "", "MigrateBooleanAttribute"], [9, 4, 1, "", "_build_actions"], [9, 4, 1, "", "_build_lba_filter_condition"], [9, 4, 1, "", "_handle_update_exception"], [9, 4, 1, "", "migrate_boolean_attributes"]], "confidant.scripts.migrate_bool.GenericCredential": [[9, 5, 1, "", "DoesNotExist"], [9, 6, 1, "", "Meta"], [9, 9, 1, "", "_attributes"], [9, 9, 1, "", "_discriminator"], [9, 9, 1, "", "_dynamo_to_python_attrs"], [9, 9, 1, "", "_hash_keyname"], [9, 9, 1, "", "_indexes"], [9, 9, 1, "", "enabled"], [9, 9, 1, "", "id"]], "confidant.scripts.migrate_bool.GenericCredential.Meta": [[9, 9, 1, "", "aws_access_key_id"], [9, 9, 1, "", "aws_secret_access_key"], [9, 9, 1, "", "aws_session_token"], [9, 9, 1, "", "base_backoff_ms"], [9, 9, 1, "", "connect_timeout_seconds"], [9, 9, 1, "", "extra_headers"], [9, 9, 1, "", "host"], [9, 9, 1, "", "max_pool_connection"], [9, 9, 1, "", "max_pool_connections"], [9, 9, 1, "", "max_retry_attempts"], [9, 9, 1, "", "read_timeout_seconds"], [9, 9, 1, "", "region"], [9, 9, 1, "", "table_name"]], "confidant.scripts.migrate_bool.MigrateBooleanAttribute": [[9, 9, 1, "", "option_list"], [9, 8, 1, "", "run"]], "confidant.scripts.restore": [[9, 6, 1, "", "RestoreCredentials"]], "confidant.scripts.restore.RestoreCredentials": [[9, 8, 1, "", "credential_exists"], [9, 9, 1, "", "option_list"], [9, 8, 1, "", "restore"], [9, 8, 1, "", "run"], [9, 8, 1, "", "save"]], "confidant.scripts.utils": [[9, 6, 1, "", "CreateDynamoTables"], [9, 6, 1, "", "ManageGrants"], [9, 6, 1, "", "RevokeGrants"]], "confidant.scripts.utils.CreateDynamoTables": [[9, 8, 1, "", "run"]], "confidant.scripts.utils.ManageGrants": [[9, 8, 1, "", "run"]], "confidant.scripts.utils.RevokeGrants": [[9, 8, 1, "", "run"]], "confidant.services": [[10, 3, 0, "-", "certificatemanager"], [10, 3, 0, "-", "ciphermanager"], [10, 3, 0, "-", "credentialmanager"], [10, 3, 0, "-", "graphite"], [10, 3, 0, "-", "iamrolemanager"], [10, 3, 0, "-", "jwkmanager"], [10, 3, 0, "-", "keymanager"], [10, 3, 0, "-", "servicemanager"], [10, 3, 0, "-", "webhook"]], "confidant.services.certificatemanager": [[10, 6, 1, "", "CachedCertificate"], [10, 6, 1, "", "CertificateAuthority"], [10, 5, 1, "", "CertificateAuthorityNotFoundError"], [10, 6, 1, "", "CertificateCache"], [10, 6, 1, "", "CertificateCacheNoOp"], [10, 5, 1, "", "CertificateNotReadyError"], [10, 4, 1, "", "get_ca"], [10, 4, 1, "", "list_cas"]], "confidant.services.certificatemanager.CachedCertificate": [[10, 7, 1, "", "lock"], [10, 7, 1, "", "response"]], "confidant.services.certificatemanager.CertificateAuthority": [[10, 8, 1, "", "_get_cached_certificate_with_key"], [10, 8, 1, "", "decode_csr"], [10, 8, 1, "", "encode_certificate"], [10, 8, 1, "", "encode_csr"], [10, 8, 1, "", "encode_key"], [10, 8, 1, "", "encode_san_dns_names"], [10, 8, 1, "", "generate_csr"], [10, 8, 1, "", "generate_key"], [10, 8, 1, "", "generate_self_signed_certificate"], [10, 8, 1, "", "generate_x509_name"], [10, 8, 1, "", "get_certificate_authority_certificate"], [10, 8, 1, "", "get_certificate_from_arn"], [10, 8, 1, "", "get_csr_common_name"], [10, 8, 1, "", "get_csr_san"], [10, 8, 1, "", "issue_certificate"], [10, 8, 1, "", "issue_certificate_with_key"]], "confidant.services.certificatemanager.CertificateCache": [[10, 8, 1, "", "get"], [10, 8, 1, "", "get_cache_id"], [10, 8, 1, "", "lock"], [10, 8, 1, "", "release"], [10, 8, 1, "", "set_response"]], "confidant.services.certificatemanager.CertificateCacheNoOp": [[10, 8, 1, "", "get"], [10, 8, 1, "", "get_cache_id"], [10, 8, 1, "", "lock"], [10, 8, 1, "", "release"], [10, 8, 1, "", "set_response"]], "confidant.services.ciphermanager": [[10, 6, 1, "", "CipherManager"], [10, 5, 1, "", "CipherManagerError"]], "confidant.services.ciphermanager.CipherManager": [[10, 8, 1, "", "decrypt"], [10, 8, 1, "", "encrypt"]], "confidant.services.credentialmanager": [[10, 4, 1, "", "_credential_in_service"], [10, 4, 1, "", "_delete_credentials"], [10, 4, 1, "", "_save_credentials_to_archive"], [10, 4, 1, "", "archive_credentials"], [10, 4, 1, "", "check_credential_pair_values"], [10, 4, 1, "", "get_blind_credentials"], [10, 4, 1, "", "get_credentials"], [10, 4, 1, "", "get_latest_blind_credential_revision"], [10, 4, 1, "", "get_latest_credential_revision"], [10, 4, 1, "", "get_revision_ids_for_credential"], [10, 4, 1, "", "lowercase_credential_pairs"], [10, 4, 1, "", "pair_key_conflicts_for_credentials"]], "confidant.services.graphite": [[10, 4, 1, "", "send_event"]], "confidant.services.iamrolemanager": [[10, 4, 1, "", "_get_iam_roles"], [10, 4, 1, "", "get_iam_roles"], [10, 4, 1, "", "refresh_cache"]], "confidant.services.jwkmanager": [[10, 6, 1, "", "JWKManager"], [10, 6, 1, "", "JwtCache"], [10, 6, 1, "", "LocalJwtCache"], [10, 6, 1, "", "RedisCache"]], "confidant.services.jwkmanager.JWKManager": [[10, 8, 1, "", "_get_active_kids"], [10, 8, 1, "", "_get_key"], [10, 8, 1, "", "_load_certificate_authorities"], [10, 8, 1, "", "get_active_key"], [10, 8, 1, "", "get_jwks"], [10, 8, 1, "", "get_jwt"], [10, 8, 1, "", "set_key"]], "confidant.services.jwkmanager.JwtCache": [[10, 9, 1, "", "_abc_impl"], [10, 8, 1, "", "get_jwt"], [10, 8, 1, "", "set_jwt"]], "confidant.services.jwkmanager.LocalJwtCache": [[10, 9, 1, "", "_abc_impl"], [10, 8, 1, "", "cache_key"], [10, 8, 1, "", "get_jwt"], [10, 8, 1, "", "set_jwt"]], "confidant.services.jwkmanager.RedisCache": [[10, 9, 1, "", "_abc_impl"], [10, 8, 1, "", "cache_key"], [10, 8, 1, "", "get_jwt"], [10, 8, 1, "", "set_jwt"]], "confidant.services.keymanager": [[10, 5, 1, "", "ServiceCreateGrantError"], [10, 5, 1, "", "ServiceGetGrantError"], [10, 4, 1, "", "_ensure_grants"], [10, 4, 1, "", "_get_at_rest_kms_client"], [10, 4, 1, "", "_get_auth_kms_client"], [10, 4, 1, "", "_get_boto_config"], [10, 4, 1, "", "_grants_exist"], [10, 4, 1, "", "create_datakey"], [10, 4, 1, "", "decrypt_datakey"], [10, 4, 1, "", "ensure_grants"], [10, 4, 1, "", "get_grants"], [10, 4, 1, "", "get_key_id"], [10, 4, 1, "", "grants_exist"]], "confidant.services.servicemanager": [[10, 4, 1, "", "get_latest_service_revision"], [10, 4, 1, "", "get_service_map"], [10, 4, 1, "", "get_services_for_blind_credential"], [10, 4, 1, "", "get_services_for_credential"], [10, 4, 1, "", "pair_key_conflicts_for_services"], [10, 4, 1, "", "send_service_mapping_graphite_event"]], "confidant.services.webhook": [[10, 4, 1, "", "send_event"]], "confidant.settings": [[2, 5, 1, "", "SettingsError"], [2, 4, 1, "", "bool_env"], [2, 4, 1, "", "float_env"], [2, 4, 1, "", "get"], [2, 4, 1, "", "int_env"], [2, 4, 1, "", "str_env"]], "confidant.utils": [[11, 3, 0, "-", "dynamodb"], [11, 3, 0, "-", "maintenance"], [11, 3, 0, "-", "misc"]], "confidant.utils.dynamodb": [[11, 4, 1, "", "create_dynamodb_tables"], [11, 4, 1, "", "decode_last_evaluated_key"], [11, 4, 1, "", "encode_last_evaluated_key"]], "confidant.utils.maintenance": [[11, 4, 1, "", "check_maintenance_mode"], [11, 4, 1, "", "in_maintenance_mode"]], "confidant.utils.misc": [[11, 4, 1, "", "dict_deep_update"], [11, 4, 1, "", "get_boolean"], [11, 4, 1, "", "load_module"], [11, 4, 1, "", "prevent_xss_decorator"], [11, 4, 1, "", "utcnow"]], "tests": [[15, 3, 0, "-", "conftest"], [16, 3, 0, "-", "integration"], [19, 3, 0, "-", "unit"]], "tests.conftest": [[15, 4, 1, "", "encrypted_settings_mock"], [15, 4, 1, "", "test_certificate"], [15, 4, 1, "", "test_certificate_authorities"], [15, 4, 1, "", "test_encrypted_key"], [15, 4, 1, "", "test_jwk_payload"], [15, 4, 1, "", "test_jwks"], [15, 4, 1, "", "test_jwt"], [15, 4, 1, "", "test_key_pair"]], "tests.integration": [[17, 3, 0, "-", "confidant"]], "tests.integration.confidant": [[18, 3, 0, "-", "authnz"]], "tests.integration.confidant.authnz": [[18, 3, 0, "-", "authnz_test"]], "tests.integration.confidant.authnz.authnz_test": [[18, 4, 1, "", "test_auth_failure"], [18, 4, 1, "", "test_auth_redirect"], [18, 4, 1, "", "test_auth_with_email_session"], [18, 4, 1, "", "test_auth_with_email_session_bad_prefix"], [18, 4, 1, "", "test_auth_with_email_session_in_users"], [18, 4, 1, "", "test_auth_with_email_session_not_in_users"], [18, 4, 1, "", "test_header_csrf"], [18, 4, 1, "", "test_invalid_kms_auth_token"], [18, 4, 1, "", "test_no_auth"]], "tests.unit": [[20, 3, 0, "-", "confidant"]], "tests.unit.confidant": [[21, 3, 0, "-", "authnz"], [20, 3, 0, "-", "encrypted_settings_test"], [22, 3, 0, "-", "models"], [23, 3, 0, "-", "routes"], [24, 3, 0, "-", "services"]], "tests.unit.confidant.authnz": [[21, 3, 0, "-", "authnz_test"], [21, 3, 0, "-", "rbac_test"]], "tests.unit.confidant.authnz.authnz_test": [[21, 4, 1, "", "mock_email_suffix"], [21, 4, 1, "", "mock_header_auth"], [21, 4, 1, "", "test__get_kms_auth_data_from_auth"], [21, 4, 1, "", "test__get_kms_auth_data_from_headers"], [21, 4, 1, "", "test_account_for_key_alias"], [21, 4, 1, "", "test_get_logged_in_user"], [21, 4, 1, "", "test_get_logged_in_user_from_session"], [21, 4, 1, "", "test_header_auth_will_extract_from_request"], [21, 4, 1, "", "test_header_auth_will_log_in"], [21, 4, 1, "", "test_redirect_to_logout_if_no_auth"], [21, 4, 1, "", "test_require_auth"], [21, 4, 1, "", "test_require_csrf_token"], [21, 4, 1, "", "test_require_logout_for_goodbye"], [21, 4, 1, "", "test_service_in_account"], [21, 4, 1, "", "test_user_is_service"], [21, 4, 1, "", "test_user_is_user_type"]], "tests.unit.confidant.authnz.rbac_test": [[21, 4, 1, "", "test_default_acl"], [21, 4, 1, "", "test_no_acl"]], "tests.unit.confidant.encrypted_settings_test": [[20, 4, 1, "", "test_bootstrap"], [20, 4, 1, "", "test_bootstrap_filefail"], [20, 4, 1, "", "test_get_registered"], [20, 4, 1, "", "test_get_registered_default"], [20, 4, 1, "", "test_register"]], "tests.unit.confidant.models": [[22, 3, 0, "-", "credential_test"], [22, 3, 0, "-", "service_test"]], "tests.unit.confidant.models.credential_test": [[22, 4, 1, "", "test_credential_archive"], [22, 4, 1, "", "test_diff"], [22, 4, 1, "", "test_equals"], [22, 4, 1, "", "test_exempt_from_rotation"], [22, 4, 1, "", "test_next_rotation_date_last_rotation_present"], [22, 4, 1, "", "test_next_rotation_date_never_rotated"], [22, 4, 1, "", "test_next_rotation_date_no_rotation_required"], [22, 4, 1, "", "test_not_equals"], [22, 4, 1, "", "test_not_equals_different_tags"]], "tests.unit.confidant.models.service_test": [[22, 4, 1, "", "test_diff"], [22, 4, 1, "", "test_equals"], [22, 4, 1, "", "test_not_equals"]], "tests.unit.confidant.routes": [[23, 3, 0, "-", "certificates_test"], [23, 3, 0, "-", "credentials_test"], [23, 3, 0, "-", "identity_test"], [23, 3, 0, "-", "jwks_test"], [23, 3, 0, "-", "services_test"]], "tests.unit.confidant.routes.certificates_test": [[23, 4, 1, "", "test_get_ca"], [23, 4, 1, "", "test_get_certificate"], [23, 4, 1, "", "test_get_certificate_from_csr"], [23, 4, 1, "", "test_list_cas"]], "tests.unit.confidant.routes.credentials_test": [[23, 4, 1, "", "archive_credential"], [23, 4, 1, "", "credential"], [23, 4, 1, "", "credential_list"], [23, 4, 1, "", "test_create_credential"], [23, 4, 1, "", "test_diff_credential"], [23, 4, 1, "", "test_get_credential"], [23, 4, 1, "", "test_get_credential_list"], [23, 4, 1, "", "test_revise_credential"], [23, 4, 1, "", "test_update_credential"]], "tests.unit.confidant.routes.identity_test": [[23, 4, 1, "", "test_get_client_config"], [23, 4, 1, "", "test_get_user_info"], [23, 4, 1, "", "test_get_user_info_no_user"]], "tests.unit.confidant.routes.jwks_test": [[23, 4, 1, "", "test_get_token_no_override"], [23, 4, 1, "", "test_get_token_override_user"], [23, 4, 1, "", "test_get_token_override_user_not_authorized"]], "tests.unit.confidant.routes.services_test": [[23, 4, 1, "", "services_list"], [23, 4, 1, "", "test_get_services_list"]], "tests.unit.confidant.services": [[24, 3, 0, "-", "certificatemanager_test"], [24, 3, 0, "-", "ciphermanager_test"], [24, 3, 0, "-", "credentialmanager_test"], [24, 3, 0, "-", "jwkmanager_test"], [24, 3, 0, "-", "keymanager_test"], [24, 3, 0, "-", "servicemanager_test"]], "tests.unit.confidant.services.certificatemanager_test": [[24, 4, 1, "", "ca_object"], [24, 4, 1, "", "test__get_cached_certificate_with_key"], [24, 4, 1, "", "test_certificate_cache"], [24, 4, 1, "", "test_decode_csr"], [24, 4, 1, "", "test_encode_certificate"], [24, 4, 1, "", "test_encode_csr"], [24, 4, 1, "", "test_encode_key"], [24, 4, 1, "", "test_encode_san_dns_names"], [24, 4, 1, "", "test_generate_csr"], [24, 4, 1, "", "test_generate_key"], [24, 4, 1, "", "test_generate_self_signed_certificate"], [24, 4, 1, "", "test_generate_x509_name"], [24, 4, 1, "", "test_get_certificate_authority_certificate"], [24, 4, 1, "", "test_get_certificate_from_arn_no_exception"], [24, 4, 1, "", "test_get_certificate_from_arn_with_exception"], [24, 4, 1, "", "test_get_csr_common_name"], [24, 4, 1, "", "test_get_csr_san"], [24, 4, 1, "", "test_issue_certificate"], [24, 4, 1, "", "test_issue_certificate_with_key"]], "tests.unit.confidant.services.ciphermanager_test": [[24, 4, 1, "", "test_cipher_version_1"], [24, 4, 1, "", "test_cipher_version_2"], [24, 4, 1, "", "test_cipher_version_3"]], "tests.unit.confidant.services.credentialmanager_test": [[24, 4, 1, "", "test_check_credential_pair_values"], [24, 4, 1, "", "test_get_latest_blind_credential_revision"], [24, 4, 1, "", "test_get_latest_credential_revision"], [24, 4, 1, "", "test_get_revision_ids_for_credential"], [24, 4, 1, "", "test_lowercase_credential_pairs"]], "tests.unit.confidant.services.jwkmanager_test": [[24, 4, 1, "", "helper_jwt_parser"], [24, 4, 1, "", "test_get_jwks"], [24, 4, 1, "", "test_get_jwks_not_found"], [24, 4, 1, "", "test_get_jwt"], [24, 4, 1, "", "test_get_jwt_caches_jwt"], [24, 4, 1, "", "test_get_jwt_raises_no_key_id"], [24, 4, 1, "", "test_get_jwt_with_ca"], [24, 4, 1, "", "test_localcache_cache_key"], [24, 4, 1, "", "test_localcache_get_jwt"], [24, 4, 1, "", "test_localcache_init"], [24, 4, 1, "", "test_rediscache_get_jwt"], [24, 4, 1, "", "test_rediscache_redis_error"], [24, 4, 1, "", "test_set_key"], [24, 4, 1, "", "test_set_key_encrypted"]], "tests.unit.confidant.services.keymanager_test": [[24, 4, 1, "", "test_create_datakey_mocked"], [24, 4, 1, "", "test_create_datakey_with_encryption"], [24, 4, 1, "", "test_decrypt_datakey_mocked"], [24, 4, 1, "", "test_decrypt_datakey_with_encryption"], [24, 4, 1, "", "test_get_key_id"], [24, 4, 1, "", "test_get_key_id_cached"]], "tests.unit.confidant.services.servicemanager_test": [[24, 4, 1, "", "test_get_latest_service_revision"]]}, "objtypes": {"0": "http:get", "1": "http:post", "2": "http:put", "3": "py:module", "4": "py:function", "5": "py:exception", "6": "py:class", "7": "py:property", "8": "py:method", "9": "py:attribute"}, "objnames": {"0": ["http", "get", "HTTP get"], "1": ["http", "post", "HTTP post"], "2": ["http", "put", "HTTP put"], "3": ["py", "module", "Python module"], "4": ["py", "function", "Python function"], "5": ["py", "exception", "Python exception"], "6": ["py", "class", "Python class"], "7": ["py", "property", "Python property"], "8": ["py", "method", "Python method"], "9": ["py", "attribute", "Python attribute"]}, "titleterms": {"access": [0, 37], "control": 0, "acl": 0, "design": 0, "hookpoint": 0, "credenti": [0, 6, 7, 8, 28, 34, 39], "list": 0, "get": 0, "metadata": 0, "creat": [0, 25, 39], "updat": [0, 25], "revert": 0, "servic": [0, 6, 7, 8, 10, 24, 33, 37, 39], "api": 1, "rout": [1, 7, 23], "document": 1, "confid": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 17, 18, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 32, 37], "packag": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], "subpackag": [2, 15, 16, 17, 19, 20], "submodul": [2, 3, 5, 6, 7, 8, 9, 10, 11, 15, 18, 20, 21, 22, 23, 24], "app": 2, "modul": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], "encrypted_set": 2, "set": [2, 28], "wsgi": 2, "content": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], "authnz": [3, 18, 21], "error": 3, "rbac": 3, "userauth": 3, "client": [4, 25, 27, 28, 37], "lib": 5, "cryptolib": 5, "model": [6, 22, 31, 37], "blind_credenti": [6, 7, 8], "non_null_unicode_set_attribut": 6, "certif": [7, 8, 28], "ident": 7, "jwk": [7, 8], "saml": [7, 28], "static_fil": 7, "schema": [8, 31], "auto_build_schema": 8, "script": 9, "archiv": [9, 34], "bootstrap": [9, 28], "manag": [9, 13, 28, 39], "migrat": [9, 38], "migrate_bool": 9, "restor": [9, 34], "util": [9, 11], "certificatemanag": 10, "ciphermanag": 10, "credentialmanag": 10, "graphit": [10, 28], "iamrolemanag": 10, "jwkmanag": 10, "keymanag": 10, "servicemanag": 10, "webhook": 10, "dynamodb": [11, 28, 31, 34, 37], "mainten": [11, 28, 34], "misc": 11, "dev_wsgi": 12, "setup": 14, "test": [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 28, 30, 32], "conftest": 15, "integr": [16, 17, 18], "authnz_test": [18, 21], "unit": [19, 20, 21, 22, 23, 24], "encrypted_settings_test": 20, "rbac_test": 21, "credential_test": 22, "service_test": 22, "certificates_test": 23, "credentials_test": 23, "identity_test": 23, "jwks_test": 23, "services_test": 23, "certificatemanager_test": 24, "ciphermanager_test": 24, "credentialmanager_test": 24, "jwkmanager_test": 24, "keymanager_test": 24, "servicemanager_test": 24, "server": [25, 37], "blind": 25, "secret": [25, 28, 39], "what": [25, 37], "ar": 25, "km": [25, 28, 33], "kei": [25, 28], "iam": [25, 28, 33], "polici": [25, 28, 33], "exampl": 25, "us": [25, 27, 39], "changelog": 26, "6": 26, "2": [26, 38], "1": 26, "5": 26, "8": 26, "4": [26, 38], "0": [26, 38], "3": [26, 38], "11": 26, "10": 26, "9": 26, "7": 26, "21": 26, "20": 26, "19": 26, "16": 26, "18": 26, "15": 26, "14": 26, "13": 26, "instal": [27, 32], "configur": [27, 28, 33], "usag": 27, "reformat": 27, "get_servic": 27, "output": 27, "docker": [28, 32], "vs": 28, "bash": 28, "environ": 28, "gunicorn": 28, "ssl": 28, "termin": 28, "support": [28, 36], "googl": 28, "authent": [28, 33, 37], "user": [28, 33, 37], "session": 28, "disabl": [28, 34], "conflict": 28, "check": 28, "statsd": 28, "metric": 28, "send": 28, "event": 28, "restrict": 28, "auth": [28, 33], "token": 28, "lifetim": 28, "frontend": [28, 32], "develop": [28, 30], "s": [28, 37], "own": 28, "multi": [28, 33], "account": [28, 33], "end": 28, "grant": 28, "mode": 28, "perform": [28, 38], "author": 28, "local": [28, 37], "role": 28, "tabl": [28, 34], "basic": 29, "advanc": 29, "commun": 29, "contribut": 30, "code": 30, "conduct": 30, "sign": 30, "contributor": 30, "licens": 30, "agreement": 30, "cla": 30, "file": 30, "issu": 30, "github": 30, "submit": 30, "pull": 30, "request": 30, "guid": 30, "start": 30, "run": [30, 32], "data": [31, 33, 38], "At": 31, "rest": 31, "encrypt": [31, 33], "quickstart": 32, "To": 32, "build": 32, "imag": 32, "pip": 32, "make": 32, "virtualenv": 32, "requir": 32, "manual": 32, "clone": 32, "pass": 33, "between": 33, "permanantli": 34, "separ": 34, "back": 34, "primari": 34, "report": 35, "secur": 35, "vulner": [35, 37], "threat": 37, "web": 37, "assumpt": 37, "an": 37, "can": 37, "achiev": 37, "compromis": 37, "comput": 37, "unauthent": 37, "network": 37, "attack": 37, "who": 37, "observ": 37, "traffic": 37, "from": 37, "internet": 37, "through": 37, "filesystem": 37, "read": 37, "storag": 37, "upgrad": 38, "peform": 38, "map": 39, "resourc": 39, "view": 39, "find": 39, "sidebar": 39, "histori": 39}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["acls", "api", "autogen/confidant", "autogen/confidant.authnz", "autogen/confidant.clients", "autogen/confidant.lib", "autogen/confidant.models", "autogen/confidant.routes", "autogen/confidant.schema", "autogen/confidant.scripts", "autogen/confidant.services", "autogen/confidant.utils", "autogen/dev_wsgi", "autogen/manage", "autogen/setup", "autogen/tests", "autogen/tests.integration", "autogen/tests.integration.confidant", "autogen/tests.integration.confidant.authnz", "autogen/tests.unit", "autogen/tests.unit.confidant", "autogen/tests.unit.confidant.authnz", "autogen/tests.unit.confidant.models", "autogen/tests.unit.confidant.routes", "autogen/tests.unit.confidant.services", "blind_secrets", "changelog", "client", "configuration", "contents", "contributing", "data_schema", "install", "kms_auth", "maintenance", "security_reporting", "support", "threat_model", "upgrade", "using_confidant"], "filenames": ["acls.md", "api.rst", "autogen/confidant.rst", "autogen/confidant.authnz.rst", "autogen/confidant.clients.rst", "autogen/confidant.lib.rst", "autogen/confidant.models.rst", "autogen/confidant.routes.rst", "autogen/confidant.schema.rst", "autogen/confidant.scripts.rst", "autogen/confidant.services.rst", "autogen/confidant.utils.rst", "autogen/dev_wsgi.rst", "autogen/manage.rst", "autogen/setup.rst", "autogen/tests.rst", "autogen/tests.integration.rst", "autogen/tests.integration.confidant.rst", "autogen/tests.integration.confidant.authnz.rst", "autogen/tests.unit.rst", "autogen/tests.unit.confidant.rst", "autogen/tests.unit.confidant.authnz.rst", "autogen/tests.unit.confidant.models.rst", "autogen/tests.unit.confidant.routes.rst", "autogen/tests.unit.confidant.services.rst", "blind_secrets.md", "changelog.md", "client.md", "configuration.md", "contents.rst", "contributing.md", "data_schema.md", "install.md", "kms_auth.md", "maintenance.md", "security_reporting.md", "support.md", "threat_model.md", "upgrade.md", "using_confidant.md"], "titles": ["Access Controls (ACLs)", "API", "confidant package", "confidant.authnz package", "confidant.clients package", "confidant.lib package", "confidant.models package", "confidant.routes package", "confidant.schema package", "confidant.scripts package", "confidant.services package", "confidant.utils package", "dev_wsgi module", "manage module", "setup module", "tests package", "tests.integration package", "tests.integration.confidant package", "tests.integration.confidant.authnz package", "tests.unit package", "tests.unit.confidant package", "tests.unit.confidant.authnz package", "tests.unit.confidant.models package", "tests.unit.confidant.routes package", "tests.unit.confidant.services package", "Server-blinded secrets", "Changelog", "Using the Confidant client", "Configuration", "Confidant", "Contributing", "DynamoDB Data Schema", "Installation", "KMS authentication", "Maintenance", "Reporting security vulnerabilities", "Support", "Threat model", "Upgrading", "Managing secrets and mappings"], "terms": {"The": [0, 1, 2, 3, 5, 7, 9, 25, 26, 27, 28, 30, 31, 32, 33, 34, 37, 38, 39], "manag": [0, 2, 3, 25, 26, 29, 33, 34, 37, 38], "fine": [0, 25, 26], "grain": [0, 25, 26], "confid": [0, 1, 15, 16, 19, 26, 31, 33, 34, 35, 36, 38, 39], "rel": [0, 28], "simpl": [0, 8, 9, 39], "ar": [0, 1, 3, 7, 9, 26, 28, 29, 30, 31, 33, 36, 37, 38, 39], "call": [0, 1, 3, 5, 7, 8, 25, 26, 28, 31, 33], "whenev": [0, 26], "resourc": [0, 1, 3, 4, 25, 26, 28, 29, 33], "type": [0, 1, 3, 5, 7, 8, 9, 10, 11, 25, 26, 28, 31, 33, 39], "an": [0, 1, 2, 3, 5, 6, 7, 8, 9, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 38, 39], "end": [0, 1, 7, 25, 29, 34, 39], "user": [0, 1, 3, 7, 10, 25, 26, 27, 29, 31, 34, 36, 39], "look": [0, 5, 26, 27, 28, 32, 33], "like": [0, 3, 5, 25, 26, 27, 28, 33], "check": [0, 3, 11, 26, 29, 32, 33, 34], "acl_module_check": 0, "resource_typ": [0, 3], "action": [0, 3, 9, 25, 26, 28, 33, 37, 38], "resource_id": [0, 3], "id": [0, 1, 6, 7, 8, 9, 10, 25, 26, 28, 31, 33, 34], "some": [0, 1, 3, 7, 25, 26, 28, 34, 38], "includ": [0, 26, 28, 30, 32, 34], "extra": [0, 8, 33], "inform": [0, 1, 3, 7, 9, 10, 11, 26, 28, 31, 33], "via": [0, 26, 27, 28, 30, 32, 38], "kwarg": [0, 3, 33], "credential_id": [0, 9, 10], "combined_cred_id": 0, "These": [0, 26, 28, 38], "all": [0, 1, 3, 7, 9, 10, 11, 26, 27, 28, 30, 31, 33, 34, 37, 38, 39], "back": [0, 9, 26, 29, 30], "same": [0, 2, 26, 27, 28, 31, 33, 38, 39], "function": [0, 3, 8, 9, 11, 26, 28], "which": [0, 3, 9, 25, 26, 27, 28, 30, 33, 36, 37, 38, 39], "default": [0, 1, 2, 3, 6, 7, 8, 9, 11, 25, 26, 27, 28, 33, 34, 39], "def": [0, 8, 33], "default_acl": [0, 3, 26, 28], "arg": [0, 3, 26, 33], "alwai": [0, 3, 8, 28], "return": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 25, 26, 33], "true": [0, 1, 2, 3, 6, 7, 8, 9, 11, 25, 26, 28, 33], "enforc": 0, "restrict": [0, 25, 29], "also": [0, 1, 3, 7, 25, 26, 27, 28, 33, 34, 36, 39], "pass": [0, 3, 9, 25, 26, 27, 28, 29], "we": [0, 2, 3, 8, 9, 10, 11, 25, 26, 28, 30, 31, 32, 33, 35, 36, 38], "would": [0, 1, 7, 8, 9, 26, 28, 33, 37, 39], "resource_kwarg": 0, "authnz": [0, 1, 2, 7, 11, 16, 17, 19, 20, 26, 27, 28, 33], "user_is_user_typ": [0, 3], "elif": [0, 33], "doe": [0, 1, 7, 9, 11, 27, 33], "match": [0, 3, 11, 25, 26, 28, 31, 33, 39], "authent": [0, 1, 3, 7, 26, 29], "usernam": [0, 3, 28, 30, 33], "user_is_servic": [0, 3], "current": [0, 1, 3, 7, 11, 26, 28, 31, 34], "onli": [0, 1, 7, 8, 9, 26, 28, 30, 31, 37], "allow": [0, 1, 3, 9, 25, 26, 28, 33, 34, 37, 38, 39], "fals": [0, 1, 2, 6, 7, 8, 9, 10, 11, 26, 28], "els": [0, 33], "thi": [0, 1, 2, 3, 5, 7, 8, 9, 10, 25, 26, 28, 30, 32, 33, 34, 38, 39], "should": [0, 1, 3, 7, 9, 10, 25, 26, 28, 30, 31, 32, 33, 37, 39], "never": [0, 3, 28, 32, 34], "happen": 0, "paranoia": [0, 33], "win": 0, "out": [0, 9, 26, 27, 28, 32, 34], "defin": [0, 1, 3, 7, 26, 28, 31, 34, 37, 39], "acl_modul": [0, 3, 26], "set": [0, 1, 3, 7, 8, 9, 10, 11, 25, 26, 27, 29, 30, 31, 32, 33, 34, 38, 39], "rbac": [0, 1, 2, 11, 26], "format": [0, 1, 3, 5, 7, 8, 26, 27, 28, 33, 38], "python": [0, 3, 11, 26, 28, 32, 33, 34, 38], "path": [0, 3, 5, 7, 9, 26, 28, 38], "modul": [0, 26, 33], "function_in_modul": 0, "you": [0, 1, 3, 7, 8, 9, 25, 26, 27, 28, 30, 32, 33, 34, 35, 36, 38, 39], "can": [0, 1, 3, 6, 7, 25, 26, 27, 28, 29, 30, 32, 33, 34, 39], "us": [0, 1, 2, 3, 5, 6, 7, 8, 9, 26, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38], "implement": [0, 3, 9, 26, 33, 37], "approach": [0, 33], "integr": [0, 3, 15, 30], "your": [0, 1, 25, 26, 28, 30, 32, 33, 34, 35, 38], "own": [0, 26, 29, 33], "enviro": 0, "adjust": [0, 26, 28], "s": [0, 3, 11, 25, 26, 27, 29, 30, 32, 33, 34, 38, 39], "behavior": [0, 26], "need": [0, 1, 3, 6, 7, 9, 25, 26, 28, 30, 33, 34, 38], "when": [0, 3, 6, 9, 25, 26, 28, 30, 31, 32, 33, 35, 38, 39], "new": [0, 1, 6, 7, 25, 26, 28, 37, 38, 39], "rememb": 0, "two": [0, 1, 7, 11, 28, 33, 36, 38, 39], "By": [0, 8, 26, 27, 28, 34, 39], "through": [0, 1, 7, 9, 25, 26, 28, 29, 30, 34], "kmsauth": [0, 1, 26, 28], "wherea": 0, "come": [0, 27, 28, 34], "one": [0, 1, 7, 9, 26, 28, 36], "other": [0, 2, 5, 9, 26, 28, 33, 37, 38], "form": [0, 3, 26, 28, 31], "auth": [0, 3, 26, 29, 37], "intend": [0, 9, 26, 33], "ui": [0, 1, 26], "both": [0, 1, 7, 11, 26, 27, 28, 30, 39], "addition": [0, 28], "unless": [0, 25, 26, 28], "re": [0, 3, 9, 25, 26, 28, 30, 33], "featur": [0, 26, 28, 39], "follow": [0, 2, 27, 28, 30, 32, 33, 37, 38], "avail": [0, 26, 28, 30, 31, 32], "specif": [0, 26, 27, 28, 33], "pair": [0, 1, 7, 25, 26, 27, 28, 31, 37, 39], "appli": [0, 26, 33, 37], "provid": [0, 1, 3, 5, 7, 25, 26, 28, 33], "global": [0, 27, 28], "permiss": [0, 1, 7, 8, 26, 28], "so": [0, 11, 25, 26, 28, 30, 33, 34, 38, 39], "note": [0, 3, 9, 25, 27, 28, 32, 33, 37, 39], "probabl": [0, 3, 10, 28], "want": [0, 2, 8, 25, 26, 28, 30, 32, 33, 34, 38], "requir": [0, 1, 7, 8, 9, 25, 26, 27, 28, 29, 30, 38], "view": [0, 25, 26, 28, 29, 37], "edit": [0, 26], "folk": 0, "rollback": 0, "chang": [0, 9, 25, 26, 28, 30, 33, 34, 38, 39], "without": [0, 5, 26, 28, 32, 33], "them": [0, 9, 25, 26, 27, 28, 30, 32, 34, 37, 39], "data": [0, 1, 3, 5, 7, 8, 25, 26, 28, 29, 34, 37], "map": [0, 1, 7, 8, 9, 26, 28, 29, 33, 34, 37], "ha": [1, 2, 3, 25, 26, 28, 34, 37, 39], "programmat": 1, "access": [1, 3, 4, 7, 25, 26, 28, 29, 30, 33, 34], "from": [1, 3, 5, 6, 7, 8, 9, 10, 26, 27, 28, 29, 33, 34], "librari": [1, 26, 28, 33], "cli": [1, 27, 28, 32], "endpoint": [1, 3, 7, 26, 28], "saml": [1, 2, 3, 26, 29], "oauth": [1, 3, 26, 28], "etc": [1, 26, 27, 28, 33, 37], "base": [1, 2, 3, 6, 8, 9, 10, 26, 28, 33], "configur": [1, 3, 7, 9, 25, 26, 29, 30, 31, 32, 34, 37], "see": [1, 9, 26, 28, 30, 32, 38], "more": [1, 9, 25, 26, 28, 33, 39], "about": [1, 25, 26, 28, 32], "author": [1, 3, 7, 26, 29, 37], "oper": [1, 7, 33], "descript": [1, 30], "get": [1, 2, 3, 4, 7, 25, 26, 27, 28, 29, 32, 33], "v1": [1, 3, 7, 26, 28, 33], "metadata": [1, 3, 6, 7, 8, 26, 28, 29, 31, 37, 39], "post": [1, 3, 7, 26], "consum": [1, 3, 7, 28], "logout": [1, 3, 7, 26, 28], "login": [1, 3, 7, 26, 28], "debug": [1, 7, 26, 28], "credenti": [1, 2, 9, 10, 23, 25, 26, 27, 29, 31, 37, 38], "archiv": [1, 2, 7, 10, 29, 31], "jwk": [1, 2, 10, 24], "public": [1, 7], "environ": [1, 2, 7, 10, 26, 27, 29, 30, 32], "token": [1, 7, 8, 26, 29, 33, 37], "send": [1, 7, 26, 29, 35], "flow": [1, 7, 26, 28, 33], "certif": [1, 2, 3, 5, 26, 29], "ca": [1, 3, 7, 8, 10, 26, 28], "cn": [1, 3, 7, 26, 28], "issu": [1, 7, 9, 26, 28, 29, 35, 37], "list": [1, 3, 7, 8, 9, 10, 23, 26, 27, 28, 29, 31, 34, 36, 39], "detail": [1, 10, 26, 28, 30, 37], "client": [1, 2, 5, 7, 26, 29, 33], "client_config": [1, 7, 26, 28], "help": [1, 7, 9, 26, 27, 28, 30, 32, 34], "creat": [1, 5, 7, 8, 10, 26, 28, 29, 31, 33, 34, 37], "put": [1, 7, 26, 28, 32, 33, 34, 38], "to_revis": [1, 7], "revert": [1, 7, 26, 29, 39], "updat": [1, 7, 9, 11, 26, 28, 29, 31, 34], "diff": [1, 6, 7, 39], "old_revis": [1, 7], "new_revis": [1, 7], "revis": [1, 6, 7, 8, 10, 28, 31, 34, 37, 39], "histori": [1, 7, 26, 29], "servic": [1, 2, 3, 4, 19, 20, 23, 25, 26, 27, 28, 29, 30, 31, 34], "email": [1, 3, 7, 28, 35], "address": [1, 3, 28, 37], "associ": [1, 7, 28, 31, 33], "iam": [1, 7, 26, 29, 31, 34, 37, 39], "role": [1, 7, 10, 25, 29, 31, 33, 39], "km": [1, 2, 5, 10, 26, 29, 30, 31, 37], "grant": [1, 7, 10, 25, 26, 29, 33, 37], "ensur": [1, 7, 26, 28, 33, 38], "random": [1, 28], "valu": [1, 2, 3, 7, 8, 9, 10, 11, 25, 26, 28, 39], "value_gener": [1, 7], "randomli": [1, 7, 26, 28], "gener": [1, 3, 5, 7, 26, 28, 30, 31, 32, 33], "object": [1, 2, 3, 5, 6, 7, 8, 9, 10, 26, 38], "specifi": [1, 2, 7, 11, 27, 28, 32, 33], "exampl": [1, 2, 7, 8, 9, 26, 27, 28, 29, 33], "request": [1, 3, 7, 10, 26, 28, 29, 31, 33], "abcd12345bf4f1cafe8e722d3860404": [1, 7], "queri": [1, 7], "paramet": [1, 3, 5, 7, 9, 11], "next_pag": [1, 7, 8], "string": [1, 2, 3, 5, 7, 8, 9, 10, 11, 26, 28, 31], "If": [1, 2, 5, 7, 11, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 37, 38], "page": [1, 3, 7, 9, 26], "result": [1, 7, 8, 9, 26], "were": [1, 7, 9, 26], "fetch": [1, 7, 26, 31], "next": [1, 7, 25, 26, 39], "respons": [1, 3, 7, 26, 28, 33], "http": [1, 3, 7, 8, 27, 28, 30, 32, 33, 36, 37], "1": [1, 6, 7, 8, 9, 25, 27, 28, 29, 31, 33, 38], "200": [1, 7, 33], "ok": [1, 7], "content": [1, 25, 33], "applic": [1, 7, 11, 28], "json": [1, 3, 6, 7, 11, 25, 26, 27, 33], "name": [1, 2, 3, 6, 7, 8, 9, 25, 26, 28, 31, 33, 37, 39], "credential_kei": [1, 6, 7, 8, 9, 10], "credential_pair": [1, 6, 7, 8, 10, 26, 31], "example_metadata_kei": [1, 7], "example_valu": [1, 7], "enabl": [1, 6, 7, 8, 9, 11, 26, 28, 31, 33, 34, 38], "modified_d": [1, 6, 7, 8, 28, 31], "2019": [1, 7], "12": [1, 7, 26, 28], "16t23": [1, 7], "16": [1, 7, 29], "11": [1, 7, 29, 38], "413299": [1, 7], "00": [1, 7], "modified_bi": [1, 6, 7, 8], "rlane": [1, 7, 27, 33], "com": [1, 7, 27, 28, 32, 33, 35, 36], "null": [1, 3, 6, 7, 8, 9], "header": [1, 3, 5, 26, 33], "statu": 1, "code": [1, 3, 9, 26, 29], "success": [1, 3, 7, 26], "403": [1, 3, 7], "forbidden": 1, "have": [1, 2, 3, 7, 9, 11, 25, 26, 28, 30, 32, 33, 34, 36, 37, 39], "develop": [1, 5, 7, 26, 27, 29, 32, 33], "account": [1, 3, 6, 7, 8, 25, 26, 29], "blind_credenti": [1, 2, 9], "xml": [1, 3, 7], "describ": [1, 3, 7, 25, 28], "attribut": [1, 3, 6, 7, 8, 9, 25, 28], "receiv": [1, 3, 7, 25], "callback": [1, 3, 7], "idp": [1, 3, 7, 26, 28], "dual": [1, 7], "purpos": [1, 5, 6, 7, 26, 28, 31], "initi": [1, 3, 7], "singlelogout": [1, 3, 7], "redirect": [1, 3, 7, 26, 28], "don": [1, 7, 26, 28, 30, 33, 37], "t": [1, 7, 9, 25, 26, 28, 30, 31, 32, 33, 36, 37, 38, 39], "normal": [1, 7, 25], "hit": [1, 3, 7, 28], "sinc": [1, 7, 8, 26, 28, 33], "ani": [1, 2, 3, 6, 7, 9, 25, 26, 28, 30, 32, 33, 34, 36, 38, 39], "require_auth": [1, 3, 7, 33], "show": [1, 7, 25, 34, 39], "c5s0w08ywu4py3ez7eqf4qyyuit6ryykoydhjytti9pjpumu00": [1, 7], "bootstrap": [1, 2, 7, 26, 29], "themselv": [1, 7, 26, 28], "kms_auth_manage_gr": [1, 7, 28], "aws_account": [1, 7], "xsrf_cookie_nam": [1, 7, 28], "xsrf_cooki": [1, 7], "maintenance_mod": [1, 7, 26, 28, 34], "history_page_limit": [1, 7, 26], "500": [1, 7], "bodi": [1, 7, 26], "friendli": [1, 7, 31, 33, 37, 39], "dictionari": [1, 7, 8, 26], "A": [1, 3, 5, 6, 7, 9, 25, 26, 28, 30, 32, 37], "arbitrari": [1, 7], "kei": [1, 3, 5, 7, 8, 10, 11, 26, 29, 31, 33, 37, 39], "encrypt": [1, 5, 7, 10, 25, 26, 28, 29, 38, 39], "rest": [1, 7, 25, 26, 28, 29, 39], "custom": [1, 3, 7, 25, 26, 28], "per": [1, 7, 9, 28], "extens": [1, 7, 26, 39], "boolean": [1, 2, 6, 7, 8, 9, 31], "whether": [1, 7, 26, 28], "example_credential_kei": [1, 7], "example_credential_valu": [1, 7], "400": [1, 7], "bad": 1, "invalid": [1, 7, 8], "input": [1, 7, 8, 27, 28], "either": [1, 3, 7, 26, 27, 28, 32, 36], "wa": [1, 7, 26, 33], "correct": [1, 7, 33], "field": [1, 7, 8, 24, 26, 28], "limit": [1, 7, 9, 11, 26, 28, 33], "int": [1, 7, 10, 33], "item": [1, 7, 8, 9, 31], "each": [1, 7, 25, 28, 31, 33], "pagin": [1, 7], "depend": [1, 7, 26, 28, 32], "plugin": [1, 7, 26], "aw": [1, 7, 25, 26, 28, 33, 37], "example2": [1, 7], "begin": [1, 5, 7, 28], "certificate_chain": [1, 7, 8], "tag": [1, 6, 7, 8, 26], "hello": [1, 7, 10], "world": [1, 7, 10], "forc": [1, 7, 9, 10, 26, 34, 39], "bool": [1, 6, 7, 9, 11, 24, 25, 33], "run": [1, 3, 7, 9, 26, 27, 28, 29, 34, 37, 38], "valid": [1, 7, 8, 26, 28, 33, 37, 39], "state": [1, 7, 26, 31], "404": [1, 7, 9], "Not": [1, 8], "found": [1, 7, 26, 27, 28, 35], "exist": [1, 7, 26, 28, 34, 39], "str": [1, 6, 7, 9, 10, 24], "stage": [1, 7, 27], "kty": [1, 7, 8], "rsa": [1, 3, 5, 7, 28], "kid": [1, 7, 8, 10], "n": [1, 7, 8, 9, 28, 33], "123": [1, 7, 26], "e": [1, 3, 7, 8, 9, 32], "aqab": [1, 7], "alg": [1, 7, 8], "rs256": [1, 7, 10], "jwt": [1, 7, 10], "ey": [1, 7], "support": [1, 7, 25, 26, 27, 29, 33], "against": [1, 3, 7, 9, 26, 28], "canon": [1, 7], "san": [1, 3, 7, 26, 28], "subject": [1, 3, 7], "altern": [1, 3, 7, 28], "multipl": [1, 7, 26, 27, 28, 32, 33], "time": [1, 7, 11, 26, 28], "length": [1, 7, 28], "dai": [1, 7, 9, 26, 28, 34], "longer": [1, 7, 26, 34], "than": [1, 5, 7, 10, 25, 26, 27, 28, 33, 34, 37, 39], "server": [1, 7, 26, 28, 29, 32, 33], "maximum": [1, 7, 26, 28, 33], "url": [1, 7, 27, 28], "csr": [1, 3, 7, 26, 28], "unsbal": [1, 7], "decod": [1, 7], "miss": [1, 7, 8, 37], "between": [1, 7, 9, 29, 36], "2": [1, 7, 10, 25, 27, 28, 29, 32, 33], "One": [1, 7, 28, 33], "ad": [1, 7, 8, 25, 26, 31, 33], "remov": [1, 7, 26, 28, 32], "api_kei": [1, 7], "api_us": [1, 7], "api_certif": [1, 7], "example_kei": [1, 7], "wai": [1, 7, 26, 28, 30, 39], "rotat": [1, 6, 7, 26, 28, 33], "testus": [1, 7], "conflict": [1, 7, 26, 29, 39], "1234": [1, 7, 33], "example_us": [1, 7], "aaaa33335bf4f1cafe8e722d3860404": [1, 7], "test_kei": [1, 7], "test_valu": [1, 7], "metadata_onli": [1, 7, 8, 10, 26], "do": [1, 3, 7, 10, 26, 28, 32, 33, 37, 39], "respond": [1, 7], "decrypt": [1, 2, 5, 7, 10, 25, 26, 28, 31, 33, 37], "scope": [1, 2, 7, 26, 28, 33, 37], "being": [1, 3, 7, 25, 26, 27, 28, 37], "encrypt_gr": [1, 7], "decrypt_gr": [1, 7], "error": [2, 8, 28, 33], "userauth": 2, "lib": [2, 26, 33], "cryptolib": [2, 26], "model": [2, 9, 19, 20, 26, 29, 38], "non_null_unicode_set_attribut": 2, "rout": [2, 3, 19, 20, 26, 29], "ident": [2, 28], "static_fil": 2, "schema": [2, 29], "auto_build_schema": 2, "script": [2, 7, 26, 28, 34, 38], "migrat": [2, 26, 29], "migrate_bool": 2, "restor": [2, 29], "util": 2, "certificatemanag": 2, "ciphermanag": [2, 26], "credentialmanag": 2, "graphit": [2, 29], "iamrolemanag": 2, "jwkmanag": 2, "keymanag": [2, 33], "servicemanag": 2, "webhook": [2, 26], "dynamodb": [2, 9, 26, 29, 30], "mainten": [2, 26, 29, 38], "misc": 2, "create_app": 2, "class": [2, 3, 6, 8, 9, 10, 26], "encryptedset": 2, "secret_str": 2, "kms_url": [2, 28], "_bootstrap": 2, "secret": [2, 26, 29, 33, 37], "dict": [2, 3, 6, 8, 9, 10, 11, 24, 25, 26, 28, 31], "get_all_secret": 2, "get_secret": 2, "regist": 2, "lazi": 2, "setup": [2, 9, 26, 28, 33], "thing": [2, 39], "except": [2, 3, 6, 8, 9, 10, 33], "settingserror": 2, "bool_env": 2, "var_nam": 2, "variabl": [2, 3, 8, 26, 28, 32], "coerc": 2, "bash": [2, 26, 29], "export": [2, 26, 28, 32], "some_v": 2, "py": [2, 3, 26, 28, 33, 34, 38], "argument": [2, 8, 9, 25, 26, 27, 28, 33, 34], "rule": 2, "non": [2, 32], "empti": [2, 9], "float_env": 2, "0": [2, 9, 27, 28, 29, 33], "float": 2, "cannot": [2, 8], "valueerror": 2, "rais": [2, 8, 33], "none": [2, 3, 4, 5, 6, 8, 9, 10, 21, 27, 33], "int_env": 2, "integ": [2, 8, 9, 31], "str_env": 2, "authenticationerror": 3, "notauthor": 3, "tokenversionerror": [3, 33], "userunknownerror": 3, "acl": [3, 26, 29], "deni": [3, 28], "must": [3, 9, 25, 26, 27, 28, 34, 38, 39], "log": [3, 9, 26, 28, 37], "acm_private_ca_domain_regex": 3, "server_nam": 3, "group": [3, 25, 28, 36], "regex": [3, 28, 39], "no_acl": [3, 11], "stub": 3, "d": [3, 25, 27, 28, 36], "repoint": 3, "perform": [3, 9, 26, 29], "abstractuserauthent": 3, "properti": [3, 6, 26], "allowed_email_suffix": 3, "whitelist": 3, "suffix": 3, "load": [3, 5, 8, 11, 26, 28, 33], "config": [3, 4, 26, 27, 30, 33], "user_email_suffix": [3, 28], "allowed_email_whitelist": 3, "users_fil": [3, 26, 28], "yaml": [3, 26, 27, 28], "abstract": [3, 10, 26], "auth_typ": 3, "check_author": 3, "check_csrf_token": 3, "clear_sess": 3, "current_email": 3, "current_first_nam": 3, "current_last_nam": 3, "current_us": 3, "get_csrf_token": 3, "is_authent": 3, "is_expir": 3, "log_in": 3, "step": [3, 9, 33], "start": [3, 25, 29, 32, 33], "sso": 3, "process": [3, 26, 28], "method": [3, 9, 30, 32], "flask": [3, 26, 28, 33, 37], "extern": [3, 4, 32], "handler": 3, "mai": [3, 8, 25, 26, 28, 32, 33, 34, 38], "handl": [3, 9, 25, 34], "separ": [3, 27, 28, 29], "regardless": 3, "set_current_us": 3, "session": [3, 4, 26, 29], "desir": [3, 32], "g": 3, "redirect_to_index": 3, "On": [3, 28], "failur": [3, 9, 28, 38], "abort": [3, 33], "log_out": 3, "slo": [3, 28], "redirect_to_goodby": 3, "passes_email_suffix": 3, "passes_email_whitelist": 3, "set_csrf_token": 3, "resp": 3, "first_nam": [3, 28], "last_nam": [3, 28], "set_expir": 3, "googleoauthauthent": 3, "googl": [3, 26, 29, 36], "headerauthent": 3, "pull": [3, 11, 29, 32], "assum": [3, 9, 26, 28, 30, 37], "behind": [3, 25, 28], "balanc": [3, 9, 28], "revers": 3, "proxi": 3, "simpli": [3, 5, 26, 33], "abl": [3, 26, 28, 33, 37], "make": [3, 9, 25, 26, 27, 28, 29, 30, 31, 34, 38, 39], "impli": [3, 26], "assert_head": 3, "assert": [3, 28], "contain": [3, 26, 32, 39], "appropri": [3, 9], "here": [3, 11, 25, 27, 28, 33, 34], "expir": [3, 26], "nulluserauthent": 3, "fake": [3, 28], "samlauthent": 3, "_current_saml_session_id": 3, "_current_user_nameid": 3, "name_id": 3, "_load_rsa_for_saml": 3, "password": [3, 5, 28, 30, 31], "privat": [3, 5, 26, 28, 32, 37], "file": [3, 5, 26, 27, 28, 29, 32, 33, 34], "_load_x509_for_saml": 3, "x": [3, 5, 28, 33], "509": [3, 5, 28], "pem": [3, 5, 28], "_render_saml_errors_json": 3, "onelogin": 3, "saml2": 3, "onelogin_saml2_auth": 3, "_render_saml_settings_dict": 3, "given": [3, 5, 9, 10, 11, 25, 26, 28, 37], "present": [3, 26], "current_app": 3, "render": 3, "suitabl": [3, 9], "_saml_auth": 3, "req_dict": 3, "instanti": 3, "option": [3, 6, 9, 10, 25, 26, 28, 32, 34, 39], "_saml_req_dict_from_request": 3, "flask_request": 3, "expect": [3, 11, 26], "consume_saml_assert": [3, 7], "after": [3, 26, 27, 28, 33, 38], "generate_metadata": 3, "direct": 3, "browser": [3, 28], "forward": [3, 26, 28], "along": [3, 5, 9, 26, 31, 33, 34, 39], "authnrequest": 3, "log_out_callback": 3, "clear_session_on_error": 3, "samlrespons": 3, "goodby": [3, 7], "login_redirect_url": 3, "return_to": 3, "init_user_auth_class": 3, "_get_kms_auth_data": 3, "_get_valid": 3, "account_for_key_alia": 3, "key_alia": [3, 10], "get_logged_in_us": 3, "retriev": [3, 37], "store": [3, 5, 6, 9, 25, 26, 28, 31, 32, 34, 37, 39], "cach": [3, 26, 28, 31, 33], "redirect_to_logout_if_no_auth": 3, "f": [3, 11, 33], "decor": [3, 8, 33], "thei": [3, 9, 25, 26, 28, 33, 38], "require_csrf_token": 3, "require_logout_for_goodby": 3, "service_in_account": 3, "user_typ": [3, 27, 33], "get_boto_cli": 4, "region": [4, 6, 9, 25, 27, 28], "aws_access_key_id": [4, 6, 9, 28], "aws_secret_access_kei": [4, 6, 9, 28], "aws_session_token": [4, 6, 9], "endpoint_url": 4, "boto3": [4, 33], "connect": [4, 28, 37], "get_boto_resourc": 4, "boto": [4, 9], "get_boto_sess": 4, "_rsa_private_key_bare_base64": 5, "base64": [5, 26, 28, 33], "der": 5, "encod": [5, 6, 10, 26, 28], "footer": 5, "cryptographi": [5, 33, 37], "hazmat": 5, "primit": 5, "asymmetr": 5, "rsaprivatekei": 5, "_x509_certificate_bare_base64": 5, "x509": [5, 28], "create_datakei": [5, 10], "encryption_context": [5, 10], "keyid": [5, 33], "datakei": [5, 10], "create_mock_datakei": 5, "mock": 5, "meant": [5, 9, 28, 37], "test": [5, 9, 25, 26, 29, 33], "version": [5, 10, 25, 26, 28, 33, 38], "unencrypt": [5, 25, 37], "anyth": [5, 25, 33, 37, 39], "caus": [5, 6, 9, 26], "rend": 5, "worthless": 5, "decrypt_datakei": [5, 10], "data_kei": [5, 6, 8, 10, 31], "decrypt_mock_datakei": 5, "load_private_key_pem": [5, 26], "load_private_key_pem_as_bare_base64": 5, "bare": 5, "load_x509_certificate_pem": 5, "load_x509_certificate_pem_as_bare_base64": 5, "blindcredenti": [6, 26], "hash_kei": [6, 9], "range_kei": [6, 9], "_user_instanti": [6, 9], "doesnotexist": [6, 9], "msg": [6, 9, 10], "meta": [6, 8, 9], "base_backoff_m": [6, 9], "25": [6, 9], "connect_timeout_second": [6, 9], "extra_head": [6, 9], "host": [6, 9, 28], "max_pool_connect": [6, 9], "100": [6, 9, 28], "10": [6, 9, 25, 27, 28, 29, 33], "max_retry_attempt": [6, 9], "3": [6, 9, 29, 33], "read_timeout_second": [6, 9], "east": [6, 9, 25, 27, 28, 33], "table_nam": [6, 9], "_attribut": [6, 9], "cipher_typ": [6, 8], "pynamodb": [6, 9, 26, 28, 38], "unicodeattribut": [6, 9], "cipher_vers": [6, 8], "numberattribut": 6, "nonnullunicodesetattribut": 6, "jsonattribut": 6, "data_typ": [6, 28], "document": [6, 7, 8, 25, 27, 28, 29, 32, 38], "booleanattribut": [6, 9, 26], "utcdatetimeattribut": 6, "_discrimin": [6, 9], "_dynamo_to_python_attr": [6, 9], "_hash_keynam": [6, 9], "_index": [6, 9], "index": [6, 7, 9, 28], "data_type_date_index": [6, 28], "datatypedateindex": 6, "unicod": [6, 9], "number": [6, 8, 9, 26, 28, 34], "intern": [6, 9, 26], "equal": [6, 28], "other_cr": 6, "utc": [6, 11], "datetim": [6, 8, 11, 31, 33], "globalsecondaryindex": 6, "index_nam": 6, "alia": [6, 8, 25, 26, 28, 33], "project": [6, 28, 30, 37], "allproject": 6, "read_capacity_unit": 6, "write_capacity_unit": 6, "archivedatatypedateindex": 6, "credentialarch": 6, "credentialbas": 6, "binaryattribut": 6, "last_decrypted_d": [6, 26], "last_rotation_d": [6, 8, 26], "listattribut": 6, "_diff_dict": 6, "old": [6, 26, 33], "_get_decrypted_credential_pair": 6, "decrypted_credential_pair": 6, "exempt_from_rot": [6, 26], "certain": [6, 26], "exempt": 6, "classmethod": [6, 8], "from_archive_credenti": 6, "archive_credenti": [6, 7, 9, 10, 23, 34], "next_rotation_d": [6, 8, 26], "secur": [6, 11, 26, 28, 29, 37], "archive_d": 6, "from_credenti": [6, 8], "binari": [6, 31], "union": [6, 9, 24], "_t": [6, 9], "callabl": [6, 9], "default_for_new": [6, 9], "attr_nam": [6, 9], "unicodesetattribut": [6, 26], "_diff_list": 6, "other_servic": 6, "create_blind_credenti": [7, 25], "get_archive_blind_credential_list": 7, "get_archive_blind_credential_revis": 7, "get_blind_credenti": [7, 10, 25], "get_blind_credential_depend": 7, "get_blind_credential_list": 7, "revert_blind_credential_to_revis": 7, "update_blind_credenti": [7, 25], "get_ca": [7, 10], "reshead": 7, "statuscod": 7, "get_certif": 7, "get_certificate_from_csr": 7, "list_ca": [7, 10], "create_credenti": 7, "diff_credenti": 7, "generate_valu": 7, "get_archive_credential_list": 7, "get_archive_credential_revis": 7, "get_credenti": [7, 10], "get_credential_depend": 7, "get_credential_list": 7, "revert_credential_to_revis": 7, "update_credenti": 7, "get_client_config": 7, "get_user_info": 7, "get_public_jwk": 7, "get_token": 7, "dump_session_info": 7, "generate_saml_login_redirect": 7, "get_saml_metadata": 7, "saml_logout": 7, "diff_servic": 7, "ensure_gr": [7, 10], "get_archive_service_list": 7, "get_archive_service_revis": 7, "get_grant": [7, 10], "get_iam_roles_list": 7, "get_servic": [7, 26, 29], "get_service_list": 7, "map_service_credenti": 7, "revert_service_to_revis": 7, "compon": 7, "custom_imag": 7, "custom_modul": 7, "custom_styl": 7, "favicon": 7, "font": 7, "healthcheck": 7, "imag": [7, 29], "not_found": 7, "robot": 7, "static_proxi": 7, "autobuildschema": 8, "exclud": 8, "prefix": [8, 26], "strict": 8, "mani": [8, 9, 34], "context": [8, 25, 26, 28, 33], "load_onli": 8, "dump_onli": 8, "partial": 8, "strictschema": 8, "marshmallow": 8, "deseri": [8, 9], "In": [8, 26, 28, 30, 33, 38, 39], "order": [8, 26, 27], "offici": 8, "recommend": [8, 26, 34], "post_load": 8, "lead": [8, 26], "lot": [8, 25], "boilerpl": 8, "serv": [8, 28], "reduc": [8, 28], "To": [8, 25, 26, 28, 29, 30, 33, 34, 38, 39], "subclass": [8, 9], "assign": 8, "_class_to_load": 8, "member": 8, "instanc": [8, 26, 27, 28], "That": [8, 32], "construct": 8, "keyword": 8, "readthedoc": 8, "org": [8, 28], "en": 8, "latest": [8, 33], "quickstart": [8, 29], "html": [8, 28, 33], "noqa": 8, "e501": 8, "import": [8, 25, 26, 33, 39], "foo": 8, "__init__": 8, "self": [8, 26, 28], "bar": 8, "fooschema": 8, "print": 8, "__class__": 8, "__name__": 8, "_declared_field": 8, "_has_processor": 8, "build_object": 8, "opt": [8, 26], "schemaopt": 8, "mean": [8, 26], "blindcredentialrespons": 8, "from_blind_credenti": 8, "include_credential_kei": 8, "include_credential_pair": 8, "include_data_kei": 8, "blindcredentialresponseschema": 8, "allow_non": 8, "error_messag": 8, "validator_fail": 8, "invalid_utf8": 8, "utf": [8, 10], "8": [8, 10, 29], "too_larg": 8, "too": [8, 28], "larg": 8, "certificateauthoritiesrespons": 8, "from_ca": 8, "certificateauthoritiesresponseschema": 8, "nest": 8, "certificateauthorityrespons": 8, "certificateauthorityresponseschema": 8, "certificateexpandedresponseschema": 8, "certificaterespons": 8, "certificateresponseschema": 8, "credentialrespons": 8, "credentialresponseschema": 8, "credentialsrespons": 8, "credentialsresponseschema": 8, "encode_next_pag": 8, "sort_credenti": 8, "revisionsrespons": 8, "revisionsresponseschema": 8, "sort_revis": 8, "jwkslistrespons": 8, "jwkslistresponseschema": 8, "jwksrespons": 8, "jwksresponseschema": 8, "jwtrespons": 8, "jwtresponseschema": 8, "from_servic": 8, "include_credenti": 8, "include_blind_credenti": 8, "serviceexpandedresponseschema": 8, "servicerespons": 8, "from_service_expand": 8, "serviceresponseschema": 8, "servicesrespons": 8, "servicesresponseschema": 8, "sort_servic": 8, "archivecredenti": 9, "func": [9, 11], "command": [9, 27, 28, 32, 34], "perman": [9, 34], "tabl": [9, 26, 29], "option_list": 9, "flask_script": 9, "take": [9, 28, 33], "decryptsecretsbootstrap": 9, "_out": 9, "generatesecretsbootstrap": 9, "_in": 9, "main": 9, "generalcredentialmodel": 9, "newunicodesetattribut": 9, "generalservicemodel": 9, "migrateblindcredentialsetattribut": 9, "migrateservicesetattribut": 9, "setmixin": 9, "attr_typ": 9, "ss": 9, "element_deseri": 9, "element_seri": 9, "serial": [9, 26], "It": [9, 25, 26, 27, 28, 30, 32, 33, 34, 36, 37], "touch": [9, 28, 34], "alreadi": [9, 11, 26, 28, 34], "param": [9, 26], "becaus": [9, 25, 26, 28], "doesn": [9, 25, 26, 28, 33, 36, 39], "add": [9, 10, 26, 28, 33], "de": [9, 28], "is_old_unicode_set": 9, "genericcredenti": 9, "migratebooleanattribut": 9, "rcu": 9, "page_s": 9, "back_off": 9, "update_r": 9, "scan_without_rcu": 9, "_build_act": 9, "model_class": 9, "attribute_nam": 9, "build": [9, 29, 30], "_build_lba_filter_condit": 9, "filter": [9, 39], "condit": [9, 25, 33], "scan": 9, "rate_limited_scan": 9, "nativ": [9, 28], "_handle_update_except": 9, "migrate_boolean_attribut": [9, 38], "read_capacity_to_consume_per_second": 9, "allow_scan_without_rcu": 9, "mock_conditional_update_failur": 9, "number_of_secs_to_back_off": 9, "max_items_updated_per_second": 9, "github": [9, 28, 29, 32, 37], "Will": [9, 11], "rate": 9, "someth": [9, 26, 28, 33], "extrem": 9, "conserv": 9, "slow": 9, "provis": [9, 28], "write": [9, 26, 27, 28, 33, 38], "capac": 9, "well": [9, 26, 28, 30, 33], "pleas": [9, 26, 28, 30, 32, 35], "doc": [9, 26, 33, 38], "keep": [9, 26], "mind": 9, "read": [9, 25, 26, 27, 28, 29], "sure": 9, "calcul": [9, 26], "everi": [9, 26, 28], "vist": 9, "level": [9, 11, 25, 37], "info": [9, 28], "final": 9, "outcom": 9, "identifi": [9, 35], "how": [9, 26, 28, 32, 33, 38], "succe": 9, "For": [9, 10, 11, 26, 27, 28, 31], "had": [9, 26], "upon": 9, "fail": [9, 26, 28, 31, 33, 38], "due": [9, 26, 38], "concurr": [9, 26, 28], "anoth": [9, 25, 33], "writer": 9, "suggest": [9, 37], "9": [9, 29], "successfulli": [9, 37], "ran": [9, 32], "until": [9, 38], "up": [9, 28, 30, 33, 39], "date": [9, 31, 37, 39], "relev": 9, "signifii": 9, "potenti": [9, 26, 35], "underli": [9, 26], "mechan": 9, "progress": [9, 32], "below": [9, 28, 38], "around": 9, "unit": [9, 15, 28, 30], "local": [9, 26, 29, 30], "express": 9, "guarante": 9, "trigger": 9, "jump": 9, "hoop": 9, "distinguish": 9, "size": [9, 26, 28, 37], "second": [9, 28, 33], "sleep": 9, "exceed": 9, "upper": 9, "number_of_items_in_need_of_upd": 9, "number_of_them_that_failed_due_to_conditional_upd": 9, "restorecredenti": 9, "primari": [9, 28, 29], "storag": [9, 28, 29, 34], "credential_exist": 9, "_all": 9, "save": [9, 26, 31], "createdynamot": 9, "dynamo": [9, 26], "managegr": 9, "revokegr": [9, 28], "catyp": 10, "enum": 10, "aws_acm_pca": 10, "custom_ca": 10, "certificateauthor": 10, "cipher": 10, "encrypted_text": 10, "decrypted_text": 10, "enc": [10, 28], "raw": [10, 27, 28], "ciphermanagererror": 10, "_credential_in_servic": 10, "_id": 10, "_delete_credenti": 10, "_save_credentials_to_arch": 10, "credentials_to_sav": 10, "check_credential_pair_valu": 10, "get_latest_blind_credential_revis": 10, "get_latest_credential_revis": 10, "get_revision_ids_for_credenti": 10, "lowercase_credential_pair": 10, "pair_key_conflicts_for_credenti": 10, "blind_credential_id": 10, "send_ev": 10, "_get_iam_rol": 10, "get_iam_rol": 10, "purg": [10, 26], "refresh_cach": 10, "_get_active_kid": 10, "_get_kei": 10, "_load_certificate_author": 10, "get_active_kei": 10, "tupl": 10, "get_jwk": 10, "algorithm": [10, 28], "get_jwt": 10, "payload": [10, 33], "expiration_second": 10, "3600": 10, "set_kei": 10, "private_kei": 10, "passphras": [10, 28], "jwtcach": 10, "abc": 10, "_abc_impl": 10, "_abc": 10, "_abc_data": 10, "set_jwt": 10, "localjwtcach": 10, "cache_kei": 10, "rediscach": 10, "servicecreategranterror": 10, "servicegetgranterror": 10, "_ensure_gr": 10, "_get_at_rest_kms_cli": 10, "_get_auth_kms_cli": 10, "_get_boto_config": 10, "_grants_exist": 10, "service_nam": [10, 28], "todo": 10, "orchestr": 10, "rather": [10, 25, 26, 27, 28, 33, 37], "get_key_id": 10, "grants_exist": 10, "get_latest_service_revis": 10, "get_service_map": 10, "get_services_for_blind_credenti": 10, "get_services_for_credenti": 10, "pair_key_conflicts_for_servic": 10, "send_service_mapping_graphite_ev": 10, "new_servic": 10, "old_servic": 10, "event_typ": 10, "create_dynamodb_t": 11, "decode_last_evaluated_kei": 11, "last_evaluated_kei": 11, "encode_last_evaluated_kei": 11, "check_maintenance_mod": 11, "in_maintenance_mod": 11, "dict_deep_upd": 11, "b": 11, "deep": 11, "merg": [11, 27], "place": [11, 25, 28], "overrid": [11, 27], "recurs": 11, "left": [11, 39], "hand": 11, "side": [11, 25, 26, 33], "right": [11, 32, 39], "get_boolean": 11, "val": [11, 31], "correspond": 11, "behav": 11, "helper": 11, "load_modul": 11, "module_path": 11, "ex": 11, "prevent_xss_decor": 11, "prevent": [11, 26], "xss": [11, 26], "attack": [11, 25, 29], "polici": [11, 26, 29, 37], "app": [11, 26, 28, 32, 33], "protect": [11, 26, 28], "mime": 11, "snif": 11, "referr": 11, "utcnow": [11, 33], "tzinfo": 11, "popul": 11, "encrypted_settings_test": [15, 19], "encrypted_settings_mock": 15, "mocker": [15, 18, 20, 21, 22, 23, 24], "test_certif": 15, "test_certificate_author": [15, 24], "test_encrypted_kei": [15, 24], "test_jwk_payload": [15, 24], "test_jwk": [15, 24], "test_jwt": [15, 24], "test_key_pair": [15, 24], "submodul": [16, 17, 19], "authnz_test": [16, 17, 19, 20], "test_auth_failur": 18, "test_auth_redirect": 18, "test_auth_with_email_sess": 18, "test_auth_with_email_session_bad_prefix": 18, "test_auth_with_email_session_in_us": 18, "test_auth_with_email_session_not_in_us": 18, "test_header_csrf": 18, "test_invalid_kms_auth_token": 18, "test_no_auth": 18, "rbac_test": [19, 20], "credential_test": [19, 20], "service_test": [19, 20], "certificates_test": [19, 20], "credentials_test": [19, 20], "identity_test": [19, 20], "jwks_test": [19, 20], "services_test": [19, 20], "ciphermanager_test": [19, 20], "credentialmanager_test": [19, 20], "jwkmanager_test": [19, 20], "keymanager_test": [19, 20], "servicemanager_test": [19, 20], "test_bootstrap": 20, "mockerfixtur": [20, 21, 22, 23, 24], "test_bootstrap_filefail": 20, "test_get_regist": 20, "test_get_registered_default": 20, "test_regist": 20, "mock_email_suffix": 21, "mock_header_auth": 21, "test__get_kms_auth_data_from_auth": 21, "test__get_kms_auth_data_from_head": 21, "test_account_for_key_alia": 21, "test_get_logged_in_us": 21, "test_get_logged_in_user_from_sess": 21, "test_header_auth_will_extract_from_request": 21, "test_header_auth_will_log_in": 21, "test_redirect_to_logout_if_no_auth": 21, "test_require_auth": 21, "test_require_csrf_token": 21, "test_require_logout_for_goodby": 21, "test_service_in_account": 21, "test_user_is_servic": 21, "test_user_is_user_typ": 21, "test_default_acl": 21, "test_no_acl": 21, "test_credential_arch": 22, "test_diff": 22, "test_equ": 22, "test_exempt_from_rot": 22, "test_next_rotation_date_last_rotation_pres": 22, "test_next_rotation_date_never_rot": 22, "test_next_rotation_date_no_rotation_requir": 22, "test_not_equ": 22, "test_not_equals_different_tag": 22, "test_get_ca": 23, "test_get_certif": 23, "test_get_certificate_from_csr": 23, "test_list_ca": 23, "credential_list": 23, "test_create_credenti": 23, "test_diff_credenti": 23, "test_get_credenti": 23, "test_get_credential_list": 23, "test_revise_credenti": 23, "test_update_credenti": 23, "test_get_client_config": 23, "test_get_user_info": 23, "test_get_user_info_no_us": 23, "test_get_token_no_overrid": 23, "test_get_token_override_us": 23, "test_get_token_override_user_not_author": 23, "services_list": 23, "test_get_services_list": 23, "test_cipher_version_1": 24, "test_cipher_version_2": 24, "test_cipher_version_3": 24, "test_check_credential_pair_valu": 24, "test_get_latest_blind_credential_revis": 24, "test_get_latest_credential_revis": 24, "test_get_revision_ids_for_credenti": 24, "test_lowercase_credential_pair": 24, "helper_jwt_pars": 24, "jwt_str": 24, "test_get_jwk": 24, "test_get_jwks_not_found": 24, "test_get_jwt": 24, "test_get_jwt_caches_jwt": 24, "test_get_jwt_raises_no_key_id": 24, "test_get_jwt_with_ca": 24, "test_localcache_cache_kei": 24, "test_localcache_get_jwt": 24, "test_localcache_init": 24, "test_rediscache_get_jwt": 24, "test_rediscache_redis_error": 24, "mock_redi": 24, "test_set_kei": 24, "test_set_key_encrypt": 24, "test_create_datakey_mock": 24, "test_create_datakey_with_encrypt": 24, "test_decrypt_datakey_mock": 24, "test_decrypt_datakey_with_encrypt": 24, "test_get_key_id": 24, "test_get_key_id_cach": 24, "test_get_latest_service_revis": 24, "sensit": [25, 26, 39], "even": [25, 26, 36, 39], "breach": 25, "shouldn": [25, 28], "give": [25, 26, 28, 33, 37, 39], "With": 25, "plain": 25, "behalf": 25, "possibl": [25, 26, 27, 28, 30, 32, 33, 39], "difficult": [25, 39], "thought": 25, "go": [25, 26, 33], "multi": [25, 29], "plan": [25, 30], "good": [25, 37], "befor": [25, 26, 27, 30, 32, 38, 39], "basic": [25, 26, 33], "idea": 25, "enrypt": 25, "prior": [25, 26, 34], "sent": [25, 26, 33], "refer": 25, "necessari": [25, 26, 28, 30, 32, 33, 37, 38], "wish": [25, 30, 33, 39], "As": [25, 28], "ll": [25, 26, 28, 30, 32, 33, 35, 39], "our": [25, 28, 30], "product": [25, 26, 27, 28, 32, 33], "useast1": [25, 28], "uswest2": [25, 28], "though": [25, 26, 28, 38], "much": [25, 33], "easier": [25, 26, 27, 28, 30, 39], "reason": [25, 28, 33, 36], "why": 25, "control": [25, 26, 28, 29, 33, 37], "central": 25, "locat": [25, 26, 28, 32, 37], "first": [25, 26, 28, 30, 38], "let": [25, 26, 27, 33, 35, 39], "2012": [25, 28, 33], "17": [25, 28, 33], "statement": [25, 28, 33], "generaterandom": [25, 28, 33], "effect": [25, 28, 33], "arn": [25, 26, 28, 33], "12345": [25, 28, 33], "west": [25, 28], "multifactorauthpres": [25, 33], "abov": [25, 28, 39], "servicea": [25, 27, 33], "attach": [25, 28], "autoscal": 25, "stringequ": [25, 33], "encryptioncontext": [25, 33], "bit": [25, 33, 39], "instal": [25, 26, 29, 30, 38], "haven": 25, "yet": [25, 26], "mfa": 25, "api_public_kei": 25, "api_private_kei": 25, "abcd": 25, "ve": [25, 26, 34, 35, 38], "tell": [25, 28], "output": [25, 26, 28, 29], "web": [25, 28, 29, 31], "interfac": [25, 26, 28], "find": [25, 26, 28, 29, 33], "dd329c9174924a0a9bf8bf3e7fbdaef9": 25, "67890": 25, "fghij": 25, "creation": 25, "subcommand": [25, 27], "privileg": [25, 37], "notic": [25, 26, 33], "fix": 26, "enhanc": [26, 30], "api": [26, 28, 29, 34, 38], "upgrad": [26, 29], "docker": [26, 29, 30], "compos": [26, 30], "v2": [26, 33], "logo": 26, "css": [26, 28], "design": [26, 29, 34], "style": 26, "guid": [26, 28, 29, 33, 37], "color": 26, "consist": 26, "across": [26, 28, 33, 39], "higher": 26, "contrast": 26, "track": [26, 28, 30], "three": 26, "been": [26, 39], "categor": 26, "admin_priv": 26, "could": [26, 28, 33, 37], "choos": [26, 39], "singl": [26, 28, 33, 39], "might": 26, "fall": 26, "categori": 26, "explicitli": 26, "someon": 26, "highli": [26, 37], "vulner": [26, 29], "benefit": 26, "moment": 26, "last": [26, 28, 33, 34], "period": 26, "There": [26, 27, 28], "addit": [26, 28, 33, 35], "logic": 26, "its": [26, 27, 28, 30, 31, 33, 34, 38], "previou": 26, "live": [26, 33], "persist": [26, 28], "db": 26, "layer": 26, "env": [26, 27, 28, 32, 33], "maximum_rotation_dai": 26, "determin": 26, "amount": [26, 37], "peopl": 26, "rotation_days_config": 26, "just": [26, 32, 33, 36, 38], "where": [26, 28, 39], "repres": 26, "eg": 26, "30": 26, "financial_data": 26, "backward": [26, 38], "compat": [26, 38], "finer": 26, "decid": 26, "automat": [26, 27, 28], "human": [26, 39], "IN": [26, 28], "enable_save_last_decryption_tim": 26, "gunicorn": [26, 29, 32], "conf": 26, "structur": 26, "fulli": [26, 32, 38], "simplesamlphp": 26, "pki": 26, "sign": [26, 28, 29], "unset": [26, 28], "now": [26, 32, 33, 39], "correctli": 26, "releas": [26, 38], "python3": 26, "stacktrac": 26, "saml_sp_key_fil": [26, 28], "act": [26, 37], "four": 26, "domain": [26, 28], "120": [26, 28], "chain": [26, 27], "section": [26, 28, 33, 38], "break": [26, 38], "slightli": [26, 28, 33], "incompat": 26, "nil": 26, "affect": 26, "offic": 26, "unoffici": 26, "deprec": [26, 31], "python2": [26, 33], "blind": [26, 29, 37, 38], "switch": 26, "standard": 26, "hook": 26, "relat": [26, 28], "open": [26, 28], "framework": 26, "effici": 26, "lru": 26, "frontend": [26, 29, 30], "backend": [26, 28], "refactor": 26, "previous": 26, "displai": [26, 39], "similarli": 26, "made": 26, "panel": [26, 39], "combin": 26, "toggl": 26, "futur": 26, "expand": 26, "trivial": 26, "hint": 26, "audit": 26, "work": [26, 28, 32, 33], "older": [26, 38, 39], "packag": [26, 32, 33], "auth_kei": [26, 27, 28, 33, 37], "user_auth_kei": [26, 28], "kms_master_kei": [26, 28], "alias": [26, 30, 33], "my": 26, "instead": [26, 39], "resolv": [26, 28], "report": [26, 29, 37], "few": [26, 28], "frozen": 26, "roll": 26, "dure": [26, 33], "seemingli": 26, "finish": 26, "onc": [26, 33, 38, 39], "pynamo": 26, "avoid": [26, 28, 39], "corrupt": [26, 37], "mutabl": 26, "case": [26, 38], "insent": 26, "sort": [26, 39], "memori": [26, 31], "restart": 26, "legacybooleanattribut": 26, "migrate_bool_attribut": 26, "immedi": 26, "convert": 26, "further": 26, "migrate_set_attribut": 26, "itself": [26, 33, 37], "warn": [26, 32], "downgrad": [26, 38], "concern": 26, "instruct": [26, 30, 32], "mode": [26, 29, 34, 38], "disabl": [26, 29, 33], "disallow": [26, 38], "while": 26, "maintenance_mode_touch_fil": [26, 28, 34], "angularj": [26, 28], "whitespac": 26, "trim": 26, "gevent": [26, 28, 32], "greenlet": 26, "cve": 26, "2016": 26, "5180": 26, "477": 26, "piptool": 26, "transit": 26, "most": [26, 27, 28, 33, 38], "notabl": 26, "forwarded_allow_ip": [26, 28], "newer": [26, 38, 39], "ineffici": 26, "appdir": 26, "1000252": 26, "docker_push": 26, "sh": 26, "ignore_conflict": [26, 28], "webhook_url": 26, "statsd": [26, 29], "depenc": 26, "semver": 26, "proper": [26, 28], "point": [26, 28, 34], "minor": 26, "major": 26, "bugfix": 26, "consid": [26, 28], "impact": 26, "xsrf": [26, 28], "cooki": [26, 28], "changet": 26, "he": 26, "move": 26, "pip": [26, 27, 29], "better": 26, "wsgi": [26, 28, 32], "insid": 26, "pypi": 26, "runnabl": 26, "invoc": 26, "k": [26, 28, 32], "split": [26, 33], "awai": 26, "repo": 26, "prepar": 26, "stabl": 26, "lyft": [26, 30, 32, 35, 36], "unreleas": 26, "branch": 26, "introduc": [26, 28], "properli": [26, 27, 28, 37], "verif": 26, "safeti": 26, "top": [26, 39], "wasn": 26, "pre": [26, 30], "increas": [26, 28], "discov": 26, "exfiltr": 26, "indefinit": 26, "abil": [26, 38], "went": 26, "loggedout": 26, "system": [26, 31], "libxml2": [26, 32], "dev": [26, 32], "libxmlsec1": [26, 32], "redi": [26, 28], "lifetim": [26, 29, 33, 37], "care": [26, 33], "taken": 26, "prefer": [26, 28], "opinion": 26, "formatt": [26, 27], "secrets_bootstrap": [26, 28], "dynamodb_create_t": [26, 28], "angular": 26, "ignor": [26, 27], "virtualenv": [27, 29], "venv": [27, 28, 32, 38], "sourc": [27, 28, 32, 38], "bin": [27, 28, 32, 38], "activ": [27, 28, 31, 32, 38], "auth_context": [27, 28, 33], "token_lifetim": 27, "token_vers": 27, "token_cache_fil": 27, "confidant_token": 27, "assume_rol": 27, "retri": [27, 28, 38], "backoff": 27, "profil": [27, 28], "default_confidant_token": 27, "staging_confidant_token": 27, "collect": 27, "full": [27, 28, 30, 37], "particular": 27, "part": [27, 28, 33, 38], "howev": [27, 33, 39], "directli": [27, 28, 33, 37], "reformatt": 27, "togeth": 27, "env_export": 27, "stdin": [27, 33], "stdout": 27, "primarili": 28, "prerequisit": 28, "cover": 28, "know": [28, 35], "differ": 28, "my_vari": 28, "my_valu": 28, "quot": 28, "everyth": 28, "minimum": 28, "aws_default_region": 28, "dynamodb_t": 28, "auto": [28, 30, 31, 39], "surfli": 28, "468": 28, "gevent_resolv": 28, "long": [28, 33], "csrf": 28, "session_secret": 28, "abvmja3zv6zwgjryto135hkdox6mw2kou7uaxihk8ztjvt8w5o": 28, "ip": [28, 37], "listen": 28, "port": 28, "80": 28, "trust": [28, 33, 37], "proto": 28, "flag": [28, 32], "visit": [28, 30], "consol": 28, "javascript": 28, "origin": 28, "uri": 28, "authomatic_salt": 28, "user_auth_modul": 28, "google_oauth_client_id": 28, "google_oauth_consumer_secret": 28, "123456789": 28, "abcdefghijklmnop": 28, "googleusercont": 28, "123456789abcdefghijklmnop": 28, "oauth2": 28, "h39bflcqlbryrfyijixkk0uf12rlzvgjgo9fqonttpxidaauyq": 28, "ac": 28, "entiti": 28, "sp": 28, "captur": 28, "root": 28, "saml_confidant_url_root": 28, "typic": 28, "saml_idp_entity_id": 28, "bind": 28, "saml_idp_signon_url": 28, "saml_idp_logout_url": 28, "saml_idp_cert": 28, "miicsdccahmgawibagijalw1z": 28, "rm2pg2ma0gcsqgsib3dqebbquameuxczajbgnv": 28, "baytakfvmrmweqydvqqiewptb21llvn0yxrlmsewhwydvqqkexhjbnrlcm5ldcbx": 28, "awrnaxrzifb0esbmdgqwhhcnmtcwmje1mtk0njaywhcnmjcwmje1mtk0njaywjbf": 28, "mqswcqydvqqgewjbvtetmbega1uecbmku29tzs1tdgf0ztehmb8ga1uechmysw50": 28, "zxjuzxqgv2lkz2l0cybqdhkgthrkmigfma0gcsqgsib3dqebaquaa4gnadcbiqkb": 28, "gqdvlwbwik9s9uqo0unt1ho0tzfpsq3mz0qns7mausbuwwqx7b8orjmzohsliwjc": 28, "0vlb14f8bqkjpcpmezrrg4am2h41xg2t": 28, "acbjh4w3suhzztscxuc1vuym4slbwbu": 28, "dtvapkpejdnqiyyqh4m3kmfqkzeb": 28, "cu1yekcdsxqujhkmqidaqabo4gnmigkmb0g": 28, "a1uddgqwbbt4hpgzanlydqzcbhe7xpb9zendbdb1bgnvhsmebjbsgbt4hpgzanli": 28, "dqzcbhe7xpb9zendbkfjpecwrtelmakga1uebhmcqvuxezarbgnvbagtclnvbwut": 28, "u3rhdguxitafbgnvbaotgeludgvybmv0ifdpzgdpdhmguhr5iex0ziijalw1z": 28, "rm": [28, 32], "2pg2mawga1udewqfmambaf8wdqyjkozihvcnaqefbqadgyeairaqpwuc7zx": 28, "qc7q": 28, "6xbyd": 28, "ndclivxoqopbnndguv25b1pzkycfeugbt": 28, "2ku7xo0aaxgfueq00juybg": 28, "r": [28, 32, 33], "616v3sruxi0r": 28, "xbuodtvez7visaxu2e3kydqncvryehq3dcffc4utgbpzrntxhrm": 28, "1djr81eyo8": 28, "xrebnrck5": 28, "dcj": 28, "u4": 28, "saml_idp_cert_fil": 28, "idp_cert": 28, "crt": 28, "ask": 28, "openssl": 28, "req": 28, "365": 28, "keyout": 28, "saml_sp_cert": 28, "miicsdccahmgawibagijaktihvfa9kabma0gcsqgsib3dqebbquameuxczajbgnv": 28, "awrnaxrzifb0esbmdgqwhhcnmtcwmje1mjiyodqzwhcnmtgwmje1mjiyodqzwjbf": 28, "gqdf4src8sxwhyb6al8uhgjeab6xjxynjfeqhd8u3kc1gs9syxdsid4tohyotwdk": 28, "c3doelbcum0xqvbwzx8xuptlr1pimzvux2kmloto0nvigga17xlujbcgd9uklrco": 28, "lizs8sawtlupdndlv7wnyygsragw9": 28, "h06szy2b7735thiqidaqabo4gnmigkmb0g": 28, "a1uddgqwbbqw3mpcpfpspif4pkleytfm3gp6bzb1bgnvhsmebjbsgbqw3mpcpfp": 28, "pif4pkleytfm3gp6b6fjpecwrtelmakga1uebhmcqvuxezarbgnvbagtclnvbwut": 28, "u3rhdguxitafbgnvbaotgeludgvybmv0ifdpzgdpdhmguhr5iex0ziijaktihvfa": 28, "9kabmawga1udewqfmambaf8wdqyjkozihvcnaqefbqadgyeai4fokax7zmkw9wbf": 28, "do1a1c8yxmperhtfnugjb3qinlqemxl": 28, "4p": 28, "ryztjr0up6iqdtpoq02mtj": 28, "er4ahc": 28, "fmgrm671fkctyu3vjqs33ixoogw": 28, "0f2xx": 28, "gwvhie8zc4vi": 28, "dfh30at": 28, "a6wjelxkz": 28, "crngxl5zn4uyc6t8g1rc544tbb8": 28, "saml_sp_cert_fil": 28, "sp_cert": 28, "sp_kei": 28, "saml_sp_kei": 28, "proc": 28, "4": [28, 29, 33], "dek": 28, "ede3": 28, "cbc": 28, "241900635d644ce6": 28, "rcuzgdpnt2zudmgokb2": 28, "3tbensut": 28, "dsi3srajcl6ivbfog9wuo4tvich0cczb5zi": 28, "u08b": 28, "zmuopm5qdefbfiipqs76sxhkuzsskreiijpi5fzkfkyckk5vv7elhui": 28, "b5u": 28, "f0s6mbxxvp1dug5lzzpohnfjvcanxocfpbgl6hj6sn0qklozrcc4whychsjmdxh": 28, "sc8efiwv94vk8esw": 28, "pwrsc": 28, "aq1hpw3shepmgv6ojudgplf136ztnstjulyghjhpx": 28, "nes9": 28, "pkgt": 28, "rfpb": 28, "kolxsglvujfswtxgz9h08x37rhyvgv8v9bs6ret62ogderofp": 28, "bsro3791dohyceywdt8oafaier3nd": 28, "il4rnsfkseqrm": 28, "eaubhjvjxqp64h5dlanc": 28, "uhzabucwuegoorzvqsg": 28, "uotcwyaxeyq": 28, "wjkcadfpi": 28, "scpk0gojtujzjzp3nl1vki": 28, "bmfdyjrz3qpklu7hkswh4g89h2nxggsvhttzzy3ihyqvxvjinascxpqo3qjno": 28, "z": 28, "qsis6z": 28, "zd": 28, "urtqmk2pr6rznqjjg74nl4wj8pmhrlj3li7ldym6q6gcmqugiz": 28, "4l": 28, "m1nlyellrq4frellvmxxa": 28, "z0fgqdxee2q8g4kbbdjpfczyo0kgqbnifnilx3sazi": 28, "b5fp": 28, "dxnu": 28, "zka1mks6u2j": 28, "srpddvpmjj9r0xdumrjodwdvl": 28, "b2jvfhlstmnuonzf": 28, "hbk": 28, "zw00mxyq37qv7x3jcdcruatehinxbdx3xmbpshghy6yyh5l4upkrxlv7yamg": 28, "uiql": 28, "ycdh79jivlf8jvkja3wdpetepbemzdjpdefimdswu73j": 28, "opmg": 28, "saml_sp_key_file_password": 28, "verysecurepassword": 28, "tweak": 28, "solv": 28, "www": 28, "w3": 28, "2001": 28, "04": 28, "xmldsig": 28, "sha256": 28, "2000": 28, "09": 28, "sha1": 28, "saml_security_sig_algo": 28, "signatur": 28, "saml_security_slo_resp_sign": 28, "messag": [28, 33, 34, 36], "saml_security_messages_sign": 28, "individu": 28, "saml_security_assertions_sign": 28, "veri": [28, 33], "least": [28, 37, 38], "saml_want_attribute_stat": 28, "saml_debug": 28, "pretend": 28, "weird": 28, "isn": [28, 31, 33], "respect": 28, "saml_fake_http": 28, "itsdanger": 28, "extend": 28, "again": 28, "hour": 28, "permanent_session_lifetim": 28, "43200": 28, "24": 28, "max_permanent_session_lifetim": 28, "86400": 28, "redis_url": 28, "localhost": [28, 30], "6381": 28, "session_cookie_nam": 28, "confidant_sess": 28, "occur": [28, 33, 38], "modifi": [28, 31, 34, 37], "stat": 28, "8125": 28, "statsd_host": 28, "mystatshost": 28, "statsd_port": 28, "graphite_event_url": 28, "graphite_usernam": 28, "mygraphiteus": 28, "graphite_password": 28, "mylongandsupersecuregraphitepassword": 28, "subset": 28, "60": [28, 33], "minut": [28, 33], "auth_token_max_lifetim": 28, "minifi": [28, 32], "dist": [28, 32], "directori": [28, 30, 32], "static": 28, "folder": 28, "static_fold": [28, 32], "portion": [28, 33], "focus": 28, "js": 28, "custom_frontend_directori": 28, "srv": [28, 32, 38], "use_auth": 28, "use_encrypt": 28, "sslifi": 28, "cd": [28, 32, 38], "generate_secrets_bootstrap": 28, "unencrypted_dict": 28, "encrypted_dict": 28, "cat": 28, "decrypt_secrets_bootstrap": 28, "cross": 28, "scoped_auth_kei": [28, 33], "sandbox": [28, 33], "less": 28, "masquerad": 28, "accept": [28, 30, 33], "kms_maximum_token_vers": 28, "high": 28, "kms_minimum_token_vers": 28, "comma": [28, 34], "kms_auth_user_typ": 28, "managen": 28, "manual": [28, 29], "expos": 28, "blind_kei": 28, "blindkei": 28, "blind_cipher_typ": 28, "fernet": [28, 33, 37], "blind_cipher_vers": 28, "blind_store_credential_kei": 28, "coupl": [28, 33], "explicit": 28, "runtim": 28, "aggress": 28, "enough": [28, 39], "aren": [28, 32, 38], "4096": 28, "total": 28, "uniqu": [28, 39], "greater": [28, 34], "latenc": 28, "likelyhood": 28, "ratelimit": 28, "kms_auth_token_cache_s": 28, "tune": 28, "pretti": [28, 33], "timeout": 28, "1s": 28, "fast": 28, "wait": 28, "block": [28, 37], "network": [28, 29], "attempt": 28, "pileup": 28, "pynamo_connect_timeout_second": 28, "pynamo_read_timeout_second": 28, "recreat": 28, "larger": 28, "pool": 28, "worker": [28, 32], "pynamo_connection_pool_s": 28, "similar": 28, "kms_connection_timeout": 28, "kms_read_timeout": 28, "kms_max_pool_connect": 28, "acm": 28, "alphanumer": [28, 39], "za": 28, "_": 28, "acm_private_ca": 28, "ca1": 28, "ca2": 28, "append": [28, 31], "uppercas": 28, "what": [28, 29, 33], "acm_private_ca_arn_ca1": 28, "acm_private_ca_arn_ca2": 28, "syntax": 28, "p": 28, "acm_private_ca_domain_regex_ca1": 28, "w": 28, "sha256withrsa": 28, "acm_private_ca_signing_algorithm_ca1": 28, "templat": 28, "pca": 28, "endentitycertif": 28, "acm_private_ca_template_arn_ca1": 28, "acm_private_ca_max_validity_days_ca1": 28, "No": 28, "acm_private_ca_csr_country_name_ca1": 28, "acm_private_ca_csr_state_or_province_name_ca1": 28, "california": 28, "acm_private_ca_csr_locality_name_ca1": 28, "francisco": 28, "acm_private_ca_csr_organization_name_ca1": 28, "inc": 28, "evalu": 28, "incur": 28, "cost": 28, "acm_private_ca_self_sign_ca1": 28, "2048": 28, "acm_private_ca_key_size_ca1": 28, "complet": [28, 39], "sake": 28, "expon": 28, "65537": 28, "acm_private_ca_key_public_exponent_size_ca1": 28, "off": 28, "1028": 28, "acm_private_ca_certificate_use_cache_ca1": 28, "acm_private_ca_certificate_cache_size_ca1": 28, "real": 28, "dynamodb_url": 28, "8080": 28, "special": [28, 34], "lock": 28, "yourself": [28, 33], "administr": 28, "consolepolici": 28, "sid": 28, "princip": 28, "myadminus": 28, "revok": 28, "delet": [28, 34, 37, 39], "generatedatakei": 28, "reencrypt": 28, "describekei": 28, "listgrant": 28, "creategr": 28, "listrol": 28, "getrol": 28, "deletet": 28, "hash": 28, "rang": 28, "data_type_revision_index": 28, "low": [28, 36], "usag": [28, 29, 34], "cloudwatch": 28, "throughput": 28, "clone": 29, "vs": 29, "ssl": 29, "termin": 29, "metric": 29, "event": 29, "sidebar": 29, "reformat": 29, "hookpoint": 29, "threat": 29, "assumpt": [29, 32, 33], "achiev": 29, "compromis": 29, "comput": 29, "unauthent": 29, "who": 29, "observ": 29, "traffic": 29, "internet": 29, "filesystem": 29, "contribut": 29, "conduct": 29, "contributor": 29, "licens": 29, "agreement": 29, "cla": 29, "submit": 29, "At": 29, "permanantli": 29, "peform": 29, "changelog": 29, "6": 29, "5": 29, "7": [29, 33], "21": 29, "20": 29, "19": 29, "18": 29, "15": 29, "14": 29, "13": 29, "govern": 30, "particip": 30, "agre": 30, "abid": 30, "term": [30, 37], "bug": 30, "pr": 30, "try": [30, 33], "quicker": 30, "everyon": 30, "easili": 30, "reproduc": 30, "desktop": 30, "simplesamplephp": 30, "quick": [30, 33], "learn": [30, 37], "kill": 30, "ctrl": 30, "c": 30, "docker_build": 30, "easiest": [30, 32], "suit": 30, "minu": 30, "commit": 30, "target": 30, "down": 30, "docker_test": 30, "docker_test_unit": 30, "docker_test_integr": 30, "docker_test_frontend": 30, "lint": 30, "precommit": 30, "archive_servic": 31, "reflect": 31, "newest": 31, "stai": 31, "uuid4": 31, "increment": 31, "clear": 31, "text": 31, "master": [31, 32, 37], "kept": 31, "record": [31, 34], "plaintext": [31, 33], "checkout": 32, "deploi": 32, "readi": 32, "registri": 32, "ghcr": 32, "io": [32, 33, 37], "line": [32, 33], "git": 32, "still": [32, 34, 38], "ubuntu": 32, "debian": 32, "sudo": 32, "apt": 32, "y": [32, 33], "essenti": 32, "libffi": 32, "u": [32, 33], "deactiv": 32, "artifact": 32, "node_modul": 32, "txt": 32, "npm": 32, "nodej": 32, "legaci": 32, "core": 32, "gem": 32, "compass": 32, "grunt": 32, "my_config": 32, "mostli": 33, "crash": 33, "cours": 33, "leverag": 33, "familiar": 33, "amazon": 33, "developerguid": 33, "concept": [33, 39], "crypto": 33, "intro": 33, "crypto_authen": 33, "terminolog": 33, "not_aft": 33, "timedelta": 33, "not_befor": 33, "strftime": 33, "m": 33, "dt": 33, "h": 33, "sz": 33, "myservic": 33, "abcdefgh": 33, "5678": 33, "9abcd": 33, "ee72ac95ae8c": 33, "responsemetadata": 33, "httpstatuscod": 33, "requestid": 33, "3a48f2ad": 33, "072d": 33, "11e5": 33, "88fb": 33, "17df9ce1a01a": 33, "ciphertextblob": 33, "x999": 33, "x9e": 33, "yo": 33, "x92": 33, "x1dg": 33, "xbbz": 33, "x84": 33, "xdai": 33, "xbf": 33, "x14": 33, "x81": 33, "x8a": 33, "x1c": 33, "xf2": 33, "xf8z": 33, "x05": 33, "xed": 33, "xb2": 33, "x8d": 33, "x12": 33, "x8f": 33, "x01": 33, "x02": 33, "x00x": 33, "x00": 33, "x00f0d": 33, "x06": 33, "x86h": 33, "x86": 33, "xf7": 33, "x07": 33, "xa0w0u": 33, "x000p": 33, "x010": 33, "x1e": 33, "x01e": 33, "x03": 33, "x04": 33, "x11": 33, "x0c": 33, "xd3": 33, "x96": 33, "x91": 33, "x83": 33, "xd2l": 33, "xfb": 33, "xa6": 33, "xc2": 33, "x90": 33, "x10": 33, "x80": 33, "x97z": 33, "xd1": 33, "xbb": 33, "xb4_": 33, "xea": 33, "x1a": 33, "x85": 33, "x0e": 33, "x9b1": 33, "xfa0j": 33, "xca1": 33, "xc7": 33, "xc3": 33, "x8czt": 33, "xd4": 33, "x8fk": 33, "x08": 33, "xa8": 33, "xcd": 33, "xe5": 33, "x82": 33, "xb3": 33, "20150914t172347z": 33, "20150914t182347z": 33, "6450392b": 33, "87df": 33, "5345698b39e1": 33, "notmyservic": 33, "traceback": 33, "recent": 33, "home": 33, "site": 33, "botocor": 33, "249": 33, "_api_cal": 33, "clienterror": 33, "parsed_respons": 33, "operation_nam": 33, "invalidciphertextexcept": 33, "get_key_arn": 33, "describe_kei": 33, "master_key_id": 33, "keymetadata": 33, "_parse_usernam": 33, "username_arr": 33, "len": 33, "myuser": 33, "unsupport": 33, "decrypt_token": 33, "_usernam": 33, "b64decod": 33, "iam_rol": 33, "verifi": 33, "annoyingli": 33, "actual": 33, "key_arn": 33, "tokendecrypterror": 33, "thrown": 33, "time_format": 33, "strptime": 33, "within": 33, "window": 33, "wrap": 33, "401": 33, "And": 33, "serviceb": 33, "b64encod": 33, "almost": 33, "exactli": 33, "pattern": 33, "contraint": 33, "occasion": 33, "kb": 33, "smaller": 33, "4kb": 33, "perfectli": 33, "matter": [33, 36], "languag": 33, "thankfulli": 33, "straightforward": 33, "stringlik": 33, "mark": 33, "simplest": 33, "downsid": 33, "whichev": 33, "outsid": [33, 37], "lookup": 33, "admin": 34, "task": 34, "exit": 34, "mutual": 34, "exclus": 34, "dry": 34, "indic": 34, "dynamodb_table_arch": 34, "saniti": 34, "realis": 34, "restore_credenti": 34, "skip": 34, "confirm": 35, "acknowledg": 35, "posit": 35, "neg": 35, "mail": 36, "discuss": 36, "volum": 36, "announc": 36, "forum": 36, "irc": 36, "channel": 36, "freenod": 36, "gitter": 36, "feel": 36, "free": 36, "drop": 36, "chat": 36, "join": 36, "sync": 36, "written": [37, 38], "accomplish": 37, "variou": 37, "perspect": 37, "exhaust": 37, "faith": 37, "infect": 37, "malwar": 37, "tl": 37, "manner": 37, "passiv": 37, "approxim": 37, "vpn": 37, "remap": 37, "manipul": 37, "s3": 37, "steal": 37, "ae": 37, "usual": 38, "over": 38, "seri": 38, "ship": 38, "migrate_blind_cred_set_attribut": 38, "migrate_service_set_attribut": 38, "intermitt": 38, "those": 39, "ever": 39, "plu": 39, "click": 39, "bring": 39, "readabl": 39, "renam": 39, "un": 39, "confus": 39, "resours": 39, "select": 39, "word": 39, "explor": 39, "navig": 39}, "objects": {"": [[1, 0, 1, "get--v1-archive-credentials", "/v1/archive/credentials"], [1, 0, 1, "get--v1-archive-credentials-(id)", "/v1/archive/credentials/(id)"], [1, 0, 1, "get--v1-archive-services", "/v1/archive/services"], [1, 0, 1, "get--v1-archive-services-(id)", "/v1/archive/services/(id)"], [1, 0, 1, "get--v1-cas", "/v1/cas"], [1, 0, 1, "get--v1-cas-(ca)", "/v1/cas/(ca)"], [1, 1, 1, "post--v1-certificates-(ca)", "/v1/certificates/(ca)"], [1, 0, 1, "get--v1-certificates-(ca)-(cn)", "/v1/certificates/(ca)/(cn)"], [1, 0, 1, "get--v1-client_config", "/v1/client_config"], [1, 0, 1, "get--v1-credentials", "/v1/credentials"], [1, 1, 1, "post--v1-credentials", "/v1/credentials"], [1, 0, 1, "get--v1-credentials-(id)", "/v1/credentials/(id)"], [1, 2, 1, "put--v1-credentials-(id)", "/v1/credentials/(id)"], [1, 0, 1, "get--v1-credentials-(id)-(old_revision)-(new_revision)", "/v1/credentials/(id)/(old_revision)/(new_revision)"], [1, 2, 1, "put--v1-credentials-(id)-(to_revision)", "/v1/credentials/(id)/(to_revision)"], [1, 1, 1, "post--v1-credentials-(id)-archive", "/v1/credentials/(id)/archive"], [1, 0, 1, "get--v1-credentials-(id)-services", "/v1/credentials/(id)/services"], [1, 0, 1, "get--v1-grants-(id)", "/v1/grants/(id)"], [1, 2, 1, "put--v1-grants-(id)", "/v1/grants/(id)"], [1, 0, 1, "get--v1-jwks-public-(environment)", "/v1/jwks/public/(environment)"], [1, 0, 1, "get--v1-jwks-token", "/v1/jwks/token"], [1, 0, 1, "get--v1-jwks-token-(id)", "/v1/jwks/token/(id)"], [1, 0, 1, "get--v1-login", "/v1/login"], [1, 1, 1, "post--v1-login", "/v1/login"], [1, 0, 1, "get--v1-roles", "/v1/roles"], [1, 1, 1, "post--v1-saml-consume", "/v1/saml/consume"], [1, 0, 1, "get--v1-saml-debug", "/v1/saml/debug"], [1, 0, 1, "get--v1-saml-login", "/v1/saml/login"], [1, 0, 1, "get--v1-saml-logout", "/v1/saml/logout"], [1, 0, 1, "get--v1-saml-metadata", "/v1/saml/metadata"], [1, 0, 1, "get--v1-services", "/v1/services"], [1, 0, 1, "get--v1-services-(id)", "/v1/services/(id)"], [1, 2, 1, "put--v1-services-(id)", "/v1/services/(id)"], [1, 0, 1, "get--v1-services-(id)-(old_revision)-(new_revision)", "/v1/services/(id)/(old_revision)/(new_revision)"], [1, 2, 1, "put--v1-services-(id)-(to_revision)", "/v1/services/(id)/(to_revision)"], [1, 0, 1, "get--v1-user-email", "/v1/user/email"], [1, 1, 1, "post--v1-user-email", "/v1/user/email"], [1, 0, 1, "get--v1-value_generator", "/v1/value_generator"], [2, 3, 0, "-", "confidant"], [12, 3, 0, "-", "dev_wsgi"], [13, 3, 0, "-", "manage"], [15, 3, 0, "-", "tests"]], "confidant": [[2, 3, 0, "-", "app"], [3, 3, 0, "-", "authnz"], [4, 3, 0, "-", "clients"], [2, 3, 0, "-", "encrypted_settings"], [5, 3, 0, "-", "lib"], [6, 3, 0, "-", "models"], [7, 3, 0, "-", "routes"], [8, 3, 0, "-", "schema"], [9, 3, 0, "-", "scripts"], [10, 3, 0, "-", "services"], [2, 3, 0, "-", "settings"], [11, 3, 0, "-", "utils"], [2, 3, 0, "-", "wsgi"]], "confidant.app": [[2, 4, 1, "", "create_app"]], "confidant.authnz": [[3, 4, 1, "", "_get_kms_auth_data"], [3, 4, 1, "", "_get_validator"], [3, 4, 1, "", "account_for_key_alias"], [3, 3, 0, "-", "errors"], [3, 4, 1, "", "get_logged_in_user"], [3, 4, 1, "", "log_in"], [3, 3, 0, "-", "rbac"], [3, 4, 1, "", "redirect_to_logout_if_no_auth"], [3, 4, 1, "", "require_auth"], [3, 4, 1, "", "require_csrf_token"], [3, 4, 1, "", "require_logout_for_goodbye"], [3, 4, 1, "", "service_in_account"], [3, 4, 1, "", "user_is_service"], [3, 4, 1, "", "user_is_user_type"], [3, 3, 0, "-", "userauth"]], "confidant.authnz.errors": [[3, 5, 1, "", "AuthenticationError"], [3, 5, 1, "", "NotAuthorized"], [3, 5, 1, "", "TokenVersionError"], [3, 5, 1, "", "UserUnknownError"]], "confidant.authnz.rbac": [[3, 4, 1, "", "default_acl"], [3, 4, 1, "", "no_acl"]], "confidant.authnz.userauth": [[3, 6, 1, "", "AbstractUserAuthenticator"], [3, 6, 1, "", "GoogleOauthAuthenticator"], [3, 6, 1, "", "HeaderAuthenticator"], [3, 6, 1, "", "NullUserAuthenticator"], [3, 6, 1, "", "SamlAuthenticator"], [3, 4, 1, "", "init_user_auth_class"]], "confidant.authnz.userauth.AbstractUserAuthenticator": [[3, 7, 1, "", "allowed_email_suffix"], [3, 7, 1, "", "allowed_email_whitelist"], [3, 7, 1, "", "auth_type"], [3, 8, 1, "", "check_authorization"], [3, 8, 1, "", "check_csrf_token"], [3, 8, 1, "", "clear_session"], [3, 8, 1, "", "current_email"], [3, 8, 1, "", "current_first_name"], [3, 8, 1, "", "current_last_name"], [3, 8, 1, "", "current_user"], [3, 8, 1, "", "get_csrf_token"], [3, 8, 1, "", "is_authenticated"], [3, 8, 1, "", "is_expired"], [3, 8, 1, "", "log_in"], [3, 8, 1, "", "log_out"], [3, 8, 1, "", "passes_email_suffix"], [3, 8, 1, "", "passes_email_whitelist"], [3, 8, 1, "", "redirect_to_goodbye"], [3, 8, 1, "", "redirect_to_index"], [3, 8, 1, "", "set_csrf_token"], [3, 8, 1, "", "set_current_user"], [3, 8, 1, "", "set_expiration"]], "confidant.authnz.userauth.GoogleOauthAuthenticator": [[3, 7, 1, "", "auth_type"], [3, 8, 1, "", "log_in"]], "confidant.authnz.userauth.HeaderAuthenticator": [[3, 8, 1, "", "assert_headers"], [3, 7, 1, "", "auth_type"], [3, 8, 1, "", "check_authorization"], [3, 8, 1, "", "current_user"], [3, 8, 1, "", "is_authenticated"], [3, 8, 1, "", "is_expired"], [3, 8, 1, "", "log_in"]], "confidant.authnz.userauth.NullUserAuthenticator": [[3, 7, 1, "", "auth_type"], [3, 8, 1, "", "check_authorization"], [3, 8, 1, "", "current_user"], [3, 8, 1, "", "is_authenticated"], [3, 8, 1, "", "is_expired"], [3, 8, 1, "", "log_in"]], "confidant.authnz.userauth.SamlAuthenticator": [[3, 8, 1, "", "_current_saml_session_id"], [3, 8, 1, "", "_current_user_nameid"], [3, 8, 1, "", "_load_rsa_for_saml"], [3, 8, 1, "", "_load_x509_for_saml"], [3, 8, 1, "", "_render_saml_errors_json"], [3, 8, 1, "", "_render_saml_settings_dict"], [3, 8, 1, "", "_saml_auth"], [3, 8, 1, "", "_saml_req_dict_from_request"], [3, 7, 1, "", "auth_type"], [3, 8, 1, "", "consume_saml_assertion"], [3, 8, 1, "", "generate_metadata"], [3, 8, 1, "", "log_in"], [3, 8, 1, "", "log_out"], [3, 8, 1, "", "log_out_callback"], [3, 8, 1, "", "login_redirect_url"]], "confidant.clients": [[4, 4, 1, "", "get_boto_client"], [4, 4, 1, "", "get_boto_resource"], [4, 4, 1, "", "get_boto_session"]], "confidant.encrypted_settings": [[2, 6, 1, "", "EncryptedSettings"]], "confidant.encrypted_settings.EncryptedSettings": [[2, 8, 1, "", "_bootstrap"], [2, 8, 1, "", "get_all_secrets"], [2, 8, 1, "", "get_secret"], [2, 8, 1, "", "register"], [2, 8, 1, "", "registered"]], "confidant.lib": [[5, 3, 0, "-", "cryptolib"]], "confidant.lib.cryptolib": [[5, 4, 1, "", "_rsa_private_key_bare_base64"], [5, 4, 1, "", "_x509_certificate_bare_base64"], [5, 4, 1, "", "create_datakey"], [5, 4, 1, "", "create_mock_datakey"], [5, 4, 1, "", "decrypt_datakey"], [5, 4, 1, "", "decrypt_mock_datakey"], [5, 4, 1, "", "load_private_key_pem"], [5, 4, 1, "", "load_private_key_pem_as_bare_base64"], [5, 4, 1, "", "load_x509_certificate_pem"], [5, 4, 1, "", "load_x509_certificate_pem_as_bare_base64"]], "confidant.models": [[6, 3, 0, "-", "blind_credential"], [6, 3, 0, "-", "credential"], [6, 3, 0, "-", "non_null_unicode_set_attribute"], [6, 3, 0, "-", "service"]], "confidant.models.blind_credential": [[6, 6, 1, "", "BlindCredential"], [6, 6, 1, "", "DataTypeDateIndex"]], "confidant.models.blind_credential.BlindCredential": [[6, 5, 1, "", "DoesNotExist"], [6, 6, 1, "", "Meta"], [6, 9, 1, "", "_attributes"], [6, 9, 1, "", "_discriminator"], [6, 9, 1, "", "_dynamo_to_python_attrs"], [6, 9, 1, "", "_hash_keyname"], [6, 9, 1, "", "_indexes"], [6, 9, 1, "", "cipher_type"], [6, 9, 1, "", "cipher_version"], [6, 9, 1, "", "credential_keys"], [6, 9, 1, "", "credential_pairs"], [6, 9, 1, "", "data_key"], [6, 9, 1, "", "data_type"], [6, 9, 1, "", "data_type_date_index"], [6, 9, 1, "", "documentation"], [6, 9, 1, "", "enabled"], [6, 8, 1, "", "equals"], [6, 9, 1, "", "id"], [6, 9, 1, "", "metadata"], [6, 9, 1, "", "modified_by"], [6, 9, 1, "", "modified_date"], [6, 9, 1, "", "name"], [6, 9, 1, "", "revision"]], "confidant.models.blind_credential.BlindCredential.Meta": [[6, 9, 1, "", "aws_access_key_id"], [6, 9, 1, "", "aws_secret_access_key"], [6, 9, 1, "", "aws_session_token"], [6, 9, 1, "", "base_backoff_ms"], [6, 9, 1, "", "connect_timeout_seconds"], [6, 9, 1, "", "extra_headers"], [6, 9, 1, "", "host"], [6, 9, 1, "", "max_pool_connection"], [6, 9, 1, "", "max_pool_connections"], [6, 9, 1, "", "max_retry_attempts"], [6, 9, 1, "", "read_timeout_seconds"], [6, 9, 1, "", "region"], [6, 9, 1, "", "table_name"]], "confidant.models.blind_credential.DataTypeDateIndex": [[6, 6, 1, "", "Meta"], [6, 9, 1, "", "data_type"], [6, 9, 1, "", "modified_date"]], "confidant.models.blind_credential.DataTypeDateIndex.Meta": [[6, 9, 1, "", "attributes"], [6, 9, 1, "", "index_name"], [6, 9, 1, "", "model"], [6, 9, 1, "", "projection"], [6, 9, 1, "", "read_capacity_units"], [6, 9, 1, "", "write_capacity_units"]], "confidant.models.credential": [[6, 6, 1, "", "ArchiveDataTypeDateIndex"], [6, 6, 1, "", "Credential"], [6, 6, 1, "", "CredentialArchive"], [6, 6, 1, "", "CredentialBase"], [6, 6, 1, "", "DataTypeDateIndex"]], "confidant.models.credential.ArchiveDataTypeDateIndex": [[6, 6, 1, "", "Meta"], [6, 9, 1, "", "data_type"], [6, 9, 1, "", "modified_date"]], "confidant.models.credential.ArchiveDataTypeDateIndex.Meta": [[6, 9, 1, "", "attributes"], [6, 9, 1, "", "index_name"], [6, 9, 1, "", "model"], [6, 9, 1, "", "projection"], [6, 9, 1, "", "read_capacity_units"], [6, 9, 1, "", "write_capacity_units"]], "confidant.models.credential.Credential": [[6, 5, 1, "", "DoesNotExist"], [6, 6, 1, "", "Meta"], [6, 9, 1, "", "_attributes"], [6, 8, 1, "", "_diff_dict"], [6, 9, 1, "", "_discriminator"], [6, 9, 1, "", "_dynamo_to_python_attrs"], [6, 8, 1, "", "_get_decrypted_credential_pairs"], [6, 9, 1, "", "_hash_keyname"], [6, 9, 1, "", "_indexes"], [6, 7, 1, "", "credential_keys"], [6, 9, 1, "", "data_type_date_index"], [6, 7, 1, "", "decrypted_credential_pairs"], [6, 8, 1, "", "diff"], [6, 8, 1, "", "equals"], [6, 7, 1, "", "exempt_from_rotation"], [6, 8, 1, "", "from_archive_credential"], [6, 7, 1, "", "next_rotation_date"]], "confidant.models.credential.Credential.Meta": [[6, 9, 1, "", "aws_access_key_id"], [6, 9, 1, "", "aws_secret_access_key"], [6, 9, 1, "", "aws_session_token"], [6, 9, 1, "", "base_backoff_ms"], [6, 9, 1, "", "connect_timeout_seconds"], [6, 9, 1, "", "extra_headers"], [6, 9, 1, "", "host"], [6, 9, 1, "", "max_pool_connection"], [6, 9, 1, "", "max_pool_connections"], [6, 9, 1, "", "max_retry_attempts"], [6, 9, 1, "", "read_timeout_seconds"], [6, 9, 1, "", "region"], [6, 9, 1, "", "table_name"]], "confidant.models.credential.CredentialArchive": [[6, 5, 1, "", "DoesNotExist"], [6, 6, 1, "", "Meta"], [6, 9, 1, "", "_attributes"], [6, 9, 1, "", "_discriminator"], [6, 9, 1, "", "_dynamo_to_python_attrs"], [6, 9, 1, "", "_hash_keyname"], [6, 9, 1, "", "_indexes"], [6, 9, 1, "", "archive_date"], [6, 9, 1, "", "data_type_date_index"], [6, 8, 1, "", "from_credential"]], "confidant.models.credential.CredentialArchive.Meta": [[6, 9, 1, "", "aws_access_key_id"], [6, 9, 1, "", "aws_secret_access_key"], [6, 9, 1, "", "aws_session_token"], [6, 9, 1, "", "base_backoff_ms"], [6, 9, 1, "", "connect_timeout_seconds"], [6, 9, 1, "", "extra_headers"], [6, 9, 1, "", "host"], [6, 9, 1, "", "max_pool_connection"], [6, 9, 1, "", "max_pool_connections"], [6, 9, 1, "", "max_retry_attempts"], [6, 9, 1, "", "read_timeout_seconds"], [6, 9, 1, "", "region"], [6, 9, 1, "", "table_name"]], "confidant.models.credential.CredentialBase": [[6, 5, 1, "", "DoesNotExist"], [6, 9, 1, "", "_attributes"], [6, 9, 1, "", "_discriminator"], [6, 9, 1, "", "_dynamo_to_python_attrs"], [6, 9, 1, "", "_hash_keyname"], [6, 9, 1, "", "_indexes"], [6, 9, 1, "", "cipher_version"], [6, 9, 1, "", "credential_pairs"], [6, 9, 1, "", "data_key"], [6, 9, 1, "", "data_type"], [6, 9, 1, "", "documentation"], [6, 9, 1, "", "enabled"], [6, 9, 1, "", "id"], [6, 9, 1, "", "last_decrypted_date"], [6, 9, 1, "", "last_rotation_date"], [6, 9, 1, "", "metadata"], [6, 9, 1, "", "modified_by"], [6, 9, 1, "", "modified_date"], [6, 9, 1, "", "name"], [6, 9, 1, "", "revision"], [6, 9, 1, "", "tags"]], "confidant.models.credential.DataTypeDateIndex": [[6, 6, 1, "", "Meta"], [6, 9, 1, "", "data_type"], [6, 9, 1, "", "modified_date"]], "confidant.models.credential.DataTypeDateIndex.Meta": [[6, 9, 1, "", "attributes"], [6, 9, 1, "", "index_name"], [6, 9, 1, "", "model"], [6, 9, 1, "", "projection"], [6, 9, 1, "", "read_capacity_units"], [6, 9, 1, "", "write_capacity_units"]], "confidant.models.non_null_unicode_set_attribute": [[6, 6, 1, "", "NonNullUnicodeSetAttribute"]], "confidant.models.service": [[6, 6, 1, "", "DataTypeDateIndex"], [6, 6, 1, "", "Service"]], "confidant.models.service.DataTypeDateIndex": [[6, 6, 1, "", "Meta"], [6, 9, 1, "", "data_type"], [6, 9, 1, "", "modified_date"]], "confidant.models.service.DataTypeDateIndex.Meta": [[6, 9, 1, "", "attributes"], [6, 9, 1, "", "index_name"], [6, 9, 1, "", "model"], [6, 9, 1, "", "projection"], [6, 9, 1, "", "read_capacity_units"], [6, 9, 1, "", "write_capacity_units"]], "confidant.models.service.Service": [[6, 5, 1, "", "DoesNotExist"], [6, 6, 1, "", "Meta"], [6, 9, 1, "", "_attributes"], [6, 8, 1, "", "_diff_list"], [6, 9, 1, "", "_discriminator"], [6, 9, 1, "", "_dynamo_to_python_attrs"], [6, 9, 1, "", "_hash_keyname"], [6, 9, 1, "", "_indexes"], [6, 9, 1, "", "account"], [6, 9, 1, "", "blind_credentials"], [6, 9, 1, "", "credentials"], [6, 9, 1, "", "data_type"], [6, 9, 1, "", "data_type_date_index"], [6, 8, 1, "", "diff"], [6, 9, 1, "", "enabled"], [6, 8, 1, "", "equals"], [6, 9, 1, "", "id"], [6, 9, 1, "", "modified_by"], [6, 9, 1, "", "modified_date"], [6, 9, 1, "", "revision"]], "confidant.models.service.Service.Meta": [[6, 9, 1, "", "aws_access_key_id"], [6, 9, 1, "", "aws_secret_access_key"], [6, 9, 1, "", "aws_session_token"], [6, 9, 1, "", "base_backoff_ms"], [6, 9, 1, "", "connect_timeout_seconds"], [6, 9, 1, "", "extra_headers"], [6, 9, 1, "", "host"], [6, 9, 1, "", "max_pool_connection"], [6, 9, 1, "", "max_pool_connections"], [6, 9, 1, "", "max_retry_attempts"], [6, 9, 1, "", "read_timeout_seconds"], [6, 9, 1, "", "region"], [6, 9, 1, "", "table_name"]], "confidant.routes": [[7, 3, 0, "-", "blind_credentials"], [7, 3, 0, "-", "certificates"], [7, 3, 0, "-", "credentials"], [7, 3, 0, "-", "identity"], [7, 3, 0, "-", "jwks"], [7, 3, 0, "-", "saml"], [7, 3, 0, "-", "services"], [7, 3, 0, "-", "static_files"]], "confidant.routes.blind_credentials": [[7, 4, 1, "", "create_blind_credential"], [7, 4, 1, "", "get_archive_blind_credential_list"], [7, 4, 1, "", "get_archive_blind_credential_revisions"], [7, 4, 1, "", "get_blind_credential"], [7, 4, 1, "", "get_blind_credential_dependencies"], [7, 4, 1, "", "get_blind_credential_list"], [7, 4, 1, "", "revert_blind_credential_to_revision"], [7, 4, 1, "", "update_blind_credential"]], "confidant.routes.certificates": [[7, 4, 1, "", "get_ca"], [7, 4, 1, "", "get_certificate"], [7, 4, 1, "", "get_certificate_from_csr"], [7, 4, 1, "", "list_cas"]], "confidant.routes.credentials": [[7, 4, 1, "", "archive_credential"], [7, 4, 1, "", "create_credential"], [7, 4, 1, "", "diff_credential"], [7, 4, 1, "", "generate_value"], [7, 4, 1, "", "get_archive_credential_list"], [7, 4, 1, "", "get_archive_credential_revisions"], [7, 4, 1, "", "get_credential"], [7, 4, 1, "", "get_credential_dependencies"], [7, 4, 1, "", "get_credential_list"], [7, 4, 1, "", "revert_credential_to_revision"], [7, 4, 1, "", "update_credential"]], "confidant.routes.identity": [[7, 4, 1, "", "get_client_config"], [7, 4, 1, "", "get_user_info"], [7, 4, 1, "", "login"]], "confidant.routes.jwks": [[7, 4, 1, "", "get_public_jwks"], [7, 4, 1, "", "get_token"]], "confidant.routes.saml": [[7, 4, 1, "", "consume_saml_assertion"], [7, 4, 1, "", "dump_session_info"], [7, 4, 1, "", "generate_saml_login_redirect"], [7, 4, 1, "", "get_saml_metadata"], [7, 4, 1, "", "saml_logout"]], "confidant.routes.services": [[7, 4, 1, "", "diff_service"], [7, 4, 1, "", "ensure_grants"], [7, 4, 1, "", "get_archive_service_list"], [7, 4, 1, "", "get_archive_service_revisions"], [7, 4, 1, "", "get_grants"], [7, 4, 1, "", "get_iam_roles_list"], [7, 4, 1, "", "get_service"], [7, 4, 1, "", "get_service_list"], [7, 4, 1, "", "map_service_credentials"], [7, 4, 1, "", "revert_service_to_revision"]], "confidant.routes.static_files": [[7, 4, 1, "", "components"], [7, 4, 1, "", "custom_images"], [7, 4, 1, "", "custom_modules"], [7, 4, 1, "", "custom_styles"], [7, 4, 1, "", "favicon"], [7, 4, 1, "", "fonts"], [7, 4, 1, "", "goodbye"], [7, 4, 1, "", "healthcheck"], [7, 4, 1, "", "images"], [7, 4, 1, "", "index"], [7, 4, 1, "", "modules"], [7, 4, 1, "", "not_found"], [7, 4, 1, "", "robots"], [7, 4, 1, "", "scripts"], [7, 4, 1, "", "static_proxy"]], "confidant.schema": [[8, 3, 0, "-", "auto_build_schema"], [8, 3, 0, "-", "blind_credentials"], [8, 3, 0, "-", "certificates"], [8, 3, 0, "-", "credentials"], [8, 3, 0, "-", "jwks"], [8, 3, 0, "-", "services"]], "confidant.schema.auto_build_schema": [[8, 6, 1, "", "AutobuildSchema"], [8, 6, 1, "", "StrictSchema"]], "confidant.schema.auto_build_schema.AutobuildSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 8, 1, "", "build_object"], [8, 9, 1, "", "opts"]], "confidant.schema.auto_build_schema.StrictSchema": [[8, 6, 1, "", "Meta"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.auto_build_schema.StrictSchema.Meta": [[8, 9, 1, "", "strict"]], "confidant.schema.blind_credentials": [[8, 6, 1, "", "BlindCredentialResponse"], [8, 6, 1, "", "BlindCredentialResponseSchema"]], "confidant.schema.blind_credentials.BlindCredentialResponse": [[8, 8, 1, "", "from_blind_credential"]], "confidant.schema.blind_credentials.BlindCredentialResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.certificates": [[8, 6, 1, "", "CertificateAuthoritiesResponse"], [8, 6, 1, "", "CertificateAuthoritiesResponseSchema"], [8, 6, 1, "", "CertificateAuthorityResponse"], [8, 6, 1, "", "CertificateAuthorityResponseSchema"], [8, 6, 1, "", "CertificateExpandedResponseSchema"], [8, 6, 1, "", "CertificateResponse"], [8, 6, 1, "", "CertificateResponseSchema"]], "confidant.schema.certificates.CertificateAuthoritiesResponse": [[8, 8, 1, "", "from_cas"]], "confidant.schema.certificates.CertificateAuthoritiesResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.certificates.CertificateAuthorityResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.certificates.CertificateExpandedResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.certificates.CertificateResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.credentials": [[8, 6, 1, "", "CredentialResponse"], [8, 6, 1, "", "CredentialResponseSchema"], [8, 6, 1, "", "CredentialsResponse"], [8, 6, 1, "", "CredentialsResponseSchema"], [8, 6, 1, "", "RevisionsResponse"], [8, 6, 1, "", "RevisionsResponseSchema"]], "confidant.schema.credentials.CredentialResponse": [[8, 8, 1, "", "from_credential"]], "confidant.schema.credentials.CredentialResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.credentials.CredentialsResponse": [[8, 8, 1, "", "from_credentials"]], "confidant.schema.credentials.CredentialsResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 8, 1, "", "encode_next_page"], [8, 9, 1, "", "opts"], [8, 8, 1, "", "sort_credentials"]], "confidant.schema.credentials.RevisionsResponse": [[8, 8, 1, "", "from_credentials"]], "confidant.schema.credentials.RevisionsResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 8, 1, "", "encode_next_page"], [8, 9, 1, "", "opts"], [8, 8, 1, "", "sort_revisions"]], "confidant.schema.jwks": [[8, 6, 1, "", "JWKSListResponse"], [8, 6, 1, "", "JWKSListResponseSchema"], [8, 6, 1, "", "JWKSResponse"], [8, 6, 1, "", "JWKSResponseSchema"], [8, 6, 1, "", "JWTResponse"], [8, 6, 1, "", "JWTResponseSchema"]], "confidant.schema.jwks.JWKSListResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.jwks.JWKSResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.jwks.JWTResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.services": [[8, 6, 1, "", "RevisionsResponse"], [8, 6, 1, "", "RevisionsResponseSchema"], [8, 6, 1, "", "ServiceExpandedResponseSchema"], [8, 6, 1, "", "ServiceResponse"], [8, 6, 1, "", "ServiceResponseSchema"], [8, 6, 1, "", "ServicesResponse"], [8, 6, 1, "", "ServicesResponseSchema"]], "confidant.schema.services.RevisionsResponse": [[8, 8, 1, "", "from_services"]], "confidant.schema.services.RevisionsResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 8, 1, "", "encode_next_page"], [8, 9, 1, "", "opts"], [8, 8, 1, "", "sort_revisions"]], "confidant.schema.services.ServiceExpandedResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.services.ServiceResponse": [[8, 8, 1, "", "from_service"], [8, 8, 1, "", "from_service_expanded"]], "confidant.schema.services.ServiceResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 9, 1, "", "opts"]], "confidant.schema.services.ServicesResponse": [[8, 8, 1, "", "from_services"]], "confidant.schema.services.ServicesResponseSchema": [[8, 9, 1, "", "_class_to_load"], [8, 9, 1, "", "_declared_fields"], [8, 9, 1, "", "_has_processors"], [8, 8, 1, "", "encode_next_page"], [8, 9, 1, "", "opts"], [8, 8, 1, "", "sort_services"]], "confidant.scripts": [[9, 3, 0, "-", "archive"], [9, 3, 0, "-", "bootstrap"], [9, 3, 0, "-", "manage"], [9, 3, 0, "-", "migrate"], [9, 3, 0, "-", "migrate_bool"], [9, 3, 0, "-", "restore"], [9, 3, 0, "-", "utils"]], "confidant.scripts.archive": [[9, 6, 1, "", "ArchiveCredentials"]], "confidant.scripts.archive.ArchiveCredentials": [[9, 9, 1, "", "option_list"], [9, 8, 1, "", "run"]], "confidant.scripts.bootstrap": [[9, 6, 1, "", "DecryptSecretsBootstrap"], [9, 6, 1, "", "GenerateSecretsBootstrap"]], "confidant.scripts.bootstrap.DecryptSecretsBootstrap": [[9, 9, 1, "", "option_list"], [9, 8, 1, "", "run"]], "confidant.scripts.bootstrap.GenerateSecretsBootstrap": [[9, 9, 1, "", "option_list"], [9, 8, 1, "", "run"]], "confidant.scripts.manage": [[9, 4, 1, "", "main"]], "confidant.scripts.migrate": [[9, 6, 1, "", "GeneralCredentialModel"], [9, 6, 1, "", "GeneralServiceModel"], [9, 6, 1, "", "MigrateBlindCredentialSetAttribute"], [9, 6, 1, "", "MigrateServiceSetAttribute"], [9, 6, 1, "", "NewUnicodeSetAttribute"], [9, 6, 1, "", "SetMixin"], [9, 4, 1, "", "is_old_unicode_set"]], "confidant.scripts.migrate.GeneralCredentialModel": [[9, 5, 1, "", "DoesNotExist"], [9, 6, 1, "", "Meta"], [9, 9, 1, "", "_attributes"], [9, 9, 1, "", "_discriminator"], [9, 9, 1, "", "_dynamo_to_python_attrs"], [9, 9, 1, "", "_hash_keyname"], [9, 9, 1, "", "_indexes"], [9, 9, 1, "", "credential_keys"], [9, 9, 1, "", "id"]], "confidant.scripts.migrate.GeneralServiceModel": [[9, 5, 1, "", "DoesNotExist"], [9, 6, 1, "", "Meta"], [9, 9, 1, "", "_attributes"], [9, 9, 1, "", "_discriminator"], [9, 9, 1, "", "_dynamo_to_python_attrs"], [9, 9, 1, "", "_hash_keyname"], [9, 9, 1, "", "_indexes"], [9, 9, 1, "", "blind_credentials"], [9, 9, 1, "", "credentials"], [9, 9, 1, "", "id"]], "confidant.scripts.migrate.MigrateBlindCredentialSetAttribute": [[9, 8, 1, "", "run"]], "confidant.scripts.migrate.MigrateServiceSetAttribute": [[9, 8, 1, "", "run"]], "confidant.scripts.migrate.NewUnicodeSetAttribute": [[9, 9, 1, "", "attr_type"], [9, 8, 1, "", "deserialize"], [9, 8, 1, "", "element_deserialize"], [9, 8, 1, "", "element_serialize"], [9, 9, 1, "", "null"], [9, 8, 1, "", "serialize"]], "confidant.scripts.migrate.SetMixin": [[9, 8, 1, "", "deserialize"], [9, 8, 1, "", "serialize"]], "confidant.scripts.migrate_bool": [[9, 6, 1, "", "GenericCredential"], [9, 6, 1, "", "MigrateBooleanAttribute"], [9, 4, 1, "", "_build_actions"], [9, 4, 1, "", "_build_lba_filter_condition"], [9, 4, 1, "", "_handle_update_exception"], [9, 4, 1, "", "migrate_boolean_attributes"]], "confidant.scripts.migrate_bool.GenericCredential": [[9, 5, 1, "", "DoesNotExist"], [9, 6, 1, "", "Meta"], [9, 9, 1, "", "_attributes"], [9, 9, 1, "", "_discriminator"], [9, 9, 1, "", "_dynamo_to_python_attrs"], [9, 9, 1, "", "_hash_keyname"], [9, 9, 1, "", "_indexes"], [9, 9, 1, "", "enabled"], [9, 9, 1, "", "id"]], "confidant.scripts.migrate_bool.GenericCredential.Meta": [[9, 9, 1, "", "aws_access_key_id"], [9, 9, 1, "", "aws_secret_access_key"], [9, 9, 1, "", "aws_session_token"], [9, 9, 1, "", "base_backoff_ms"], [9, 9, 1, "", "connect_timeout_seconds"], [9, 9, 1, "", "extra_headers"], [9, 9, 1, "", "host"], [9, 9, 1, "", "max_pool_connection"], [9, 9, 1, "", "max_pool_connections"], [9, 9, 1, "", "max_retry_attempts"], [9, 9, 1, "", "read_timeout_seconds"], [9, 9, 1, "", "region"], [9, 9, 1, "", "table_name"]], "confidant.scripts.migrate_bool.MigrateBooleanAttribute": [[9, 9, 1, "", "option_list"], [9, 8, 1, "", "run"]], "confidant.scripts.restore": [[9, 6, 1, "", "RestoreCredentials"]], "confidant.scripts.restore.RestoreCredentials": [[9, 8, 1, "", "credential_exists"], [9, 9, 1, "", "option_list"], [9, 8, 1, "", "restore"], [9, 8, 1, "", "run"], [9, 8, 1, "", "save"]], "confidant.scripts.utils": [[9, 6, 1, "", "CreateDynamoTables"], [9, 6, 1, "", "ManageGrants"], [9, 6, 1, "", "RevokeGrants"]], "confidant.scripts.utils.CreateDynamoTables": [[9, 8, 1, "", "run"]], "confidant.scripts.utils.ManageGrants": [[9, 8, 1, "", "run"]], "confidant.scripts.utils.RevokeGrants": [[9, 8, 1, "", "run"]], "confidant.services": [[10, 3, 0, "-", "certificatemanager"], [10, 3, 0, "-", "ciphermanager"], [10, 3, 0, "-", "credentialmanager"], [10, 3, 0, "-", "graphite"], [10, 3, 0, "-", "iamrolemanager"], [10, 3, 0, "-", "jwkmanager"], [10, 3, 0, "-", "keymanager"], [10, 3, 0, "-", "servicemanager"], [10, 3, 0, "-", "webhook"]], "confidant.services.certificatemanager": [[10, 6, 1, "", "CAType"], [10, 4, 1, "", "get_ca"], [10, 4, 1, "", "list_cas"]], "confidant.services.certificatemanager.CAType": [[10, 9, 1, "", "AWS_ACM_PCA"], [10, 9, 1, "", "CUSTOM_CA"]], "confidant.services.ciphermanager": [[10, 6, 1, "", "CipherManager"], [10, 5, 1, "", "CipherManagerError"]], "confidant.services.ciphermanager.CipherManager": [[10, 8, 1, "", "decrypt"], [10, 8, 1, "", "encrypt"]], "confidant.services.credentialmanager": [[10, 4, 1, "", "_credential_in_service"], [10, 4, 1, "", "_delete_credentials"], [10, 4, 1, "", "_save_credentials_to_archive"], [10, 4, 1, "", "archive_credentials"], [10, 4, 1, "", "check_credential_pair_values"], [10, 4, 1, "", "get_blind_credentials"], [10, 4, 1, "", "get_credentials"], [10, 4, 1, "", "get_latest_blind_credential_revision"], [10, 4, 1, "", "get_latest_credential_revision"], [10, 4, 1, "", "get_revision_ids_for_credential"], [10, 4, 1, "", "lowercase_credential_pairs"], [10, 4, 1, "", "pair_key_conflicts_for_credentials"]], "confidant.services.graphite": [[10, 4, 1, "", "send_event"]], "confidant.services.iamrolemanager": [[10, 4, 1, "", "_get_iam_roles"], [10, 4, 1, "", "get_iam_roles"], [10, 4, 1, "", "refresh_cache"]], "confidant.services.jwkmanager": [[10, 6, 1, "", "JWKManager"], [10, 6, 1, "", "JwtCache"], [10, 6, 1, "", "LocalJwtCache"], [10, 6, 1, "", "RedisCache"]], "confidant.services.jwkmanager.JWKManager": [[10, 8, 1, "", "_get_active_kids"], [10, 8, 1, "", "_get_key"], [10, 8, 1, "", "_load_certificate_authorities"], [10, 8, 1, "", "get_active_key"], [10, 8, 1, "", "get_jwks"], [10, 8, 1, "", "get_jwt"], [10, 8, 1, "", "set_key"]], "confidant.services.jwkmanager.JwtCache": [[10, 9, 1, "", "_abc_impl"], [10, 8, 1, "", "get_jwt"], [10, 8, 1, "", "set_jwt"]], "confidant.services.jwkmanager.LocalJwtCache": [[10, 9, 1, "", "_abc_impl"], [10, 8, 1, "", "cache_key"], [10, 8, 1, "", "get_jwt"], [10, 8, 1, "", "set_jwt"]], "confidant.services.jwkmanager.RedisCache": [[10, 9, 1, "", "_abc_impl"], [10, 8, 1, "", "cache_key"], [10, 8, 1, "", "get_jwt"], [10, 8, 1, "", "set_jwt"]], "confidant.services.keymanager": [[10, 5, 1, "", "ServiceCreateGrantError"], [10, 5, 1, "", "ServiceGetGrantError"], [10, 4, 1, "", "_ensure_grants"], [10, 4, 1, "", "_get_at_rest_kms_client"], [10, 4, 1, "", "_get_auth_kms_client"], [10, 4, 1, "", "_get_boto_config"], [10, 4, 1, "", "_grants_exist"], [10, 4, 1, "", "create_datakey"], [10, 4, 1, "", "decrypt_datakey"], [10, 4, 1, "", "ensure_grants"], [10, 4, 1, "", "get_grants"], [10, 4, 1, "", "get_key_id"], [10, 4, 1, "", "grants_exist"]], "confidant.services.servicemanager": [[10, 4, 1, "", "get_latest_service_revision"], [10, 4, 1, "", "get_service_map"], [10, 4, 1, "", "get_services_for_blind_credential"], [10, 4, 1, "", "get_services_for_credential"], [10, 4, 1, "", "pair_key_conflicts_for_services"], [10, 4, 1, "", "send_service_mapping_graphite_event"]], "confidant.services.webhook": [[10, 4, 1, "", "send_event"]], "confidant.settings": [[2, 5, 1, "", "SettingsError"], [2, 4, 1, "", "bool_env"], [2, 4, 1, "", "float_env"], [2, 4, 1, "", "get"], [2, 4, 1, "", "int_env"], [2, 4, 1, "", "str_env"]], "confidant.utils": [[11, 3, 0, "-", "dynamodb"], [11, 3, 0, "-", "maintenance"], [11, 3, 0, "-", "misc"]], "confidant.utils.dynamodb": [[11, 4, 1, "", "create_dynamodb_tables"], [11, 4, 1, "", "decode_last_evaluated_key"], [11, 4, 1, "", "encode_last_evaluated_key"]], "confidant.utils.maintenance": [[11, 4, 1, "", "check_maintenance_mode"], [11, 4, 1, "", "in_maintenance_mode"]], "confidant.utils.misc": [[11, 4, 1, "", "dict_deep_update"], [11, 4, 1, "", "get_boolean"], [11, 4, 1, "", "load_module"], [11, 4, 1, "", "prevent_xss_decorator"], [11, 4, 1, "", "utcnow"]], "tests": [[15, 3, 0, "-", "conftest"], [16, 3, 0, "-", "integration"], [19, 3, 0, "-", "unit"]], "tests.conftest": [[15, 4, 1, "", "encrypted_settings_mock"], [15, 4, 1, "", "test_certificate"], [15, 4, 1, "", "test_certificate_authorities"], [15, 4, 1, "", "test_encrypted_key"], [15, 4, 1, "", "test_jwk_payload"], [15, 4, 1, "", "test_jwks"], [15, 4, 1, "", "test_jwt"], [15, 4, 1, "", "test_key_pair"]], "tests.integration": [[17, 3, 0, "-", "confidant"]], "tests.integration.confidant": [[18, 3, 0, "-", "authnz"]], "tests.integration.confidant.authnz": [[18, 3, 0, "-", "authnz_test"]], "tests.integration.confidant.authnz.authnz_test": [[18, 4, 1, "", "test_auth_failure"], [18, 4, 1, "", "test_auth_redirect"], [18, 4, 1, "", "test_auth_with_email_session"], [18, 4, 1, "", "test_auth_with_email_session_bad_prefix"], [18, 4, 1, "", "test_auth_with_email_session_in_users"], [18, 4, 1, "", "test_auth_with_email_session_not_in_users"], [18, 4, 1, "", "test_header_csrf"], [18, 4, 1, "", "test_invalid_kms_auth_token"], [18, 4, 1, "", "test_no_auth"]], "tests.unit": [[20, 3, 0, "-", "confidant"]], "tests.unit.confidant": [[21, 3, 0, "-", "authnz"], [20, 3, 0, "-", "encrypted_settings_test"], [22, 3, 0, "-", "models"], [23, 3, 0, "-", "routes"], [24, 3, 0, "-", "services"]], "tests.unit.confidant.authnz": [[21, 3, 0, "-", "authnz_test"], [21, 3, 0, "-", "rbac_test"]], "tests.unit.confidant.authnz.authnz_test": [[21, 4, 1, "", "mock_email_suffix"], [21, 4, 1, "", "mock_header_auth"], [21, 4, 1, "", "test__get_kms_auth_data_from_auth"], [21, 4, 1, "", "test__get_kms_auth_data_from_headers"], [21, 4, 1, "", "test_account_for_key_alias"], [21, 4, 1, "", "test_get_logged_in_user"], [21, 4, 1, "", "test_get_logged_in_user_from_session"], [21, 4, 1, "", "test_header_auth_will_extract_from_request"], [21, 4, 1, "", "test_header_auth_will_log_in"], [21, 4, 1, "", "test_redirect_to_logout_if_no_auth"], [21, 4, 1, "", "test_require_auth"], [21, 4, 1, "", "test_require_csrf_token"], [21, 4, 1, "", "test_require_logout_for_goodbye"], [21, 4, 1, "", "test_service_in_account"], [21, 4, 1, "", "test_user_is_service"], [21, 4, 1, "", "test_user_is_user_type"]], "tests.unit.confidant.authnz.rbac_test": [[21, 4, 1, "", "test_default_acl"], [21, 4, 1, "", "test_no_acl"]], "tests.unit.confidant.encrypted_settings_test": [[20, 4, 1, "", "test_bootstrap"], [20, 4, 1, "", "test_bootstrap_filefail"], [20, 4, 1, "", "test_get_registered"], [20, 4, 1, "", "test_get_registered_default"], [20, 4, 1, "", "test_register"]], "tests.unit.confidant.models": [[22, 3, 0, "-", "credential_test"], [22, 3, 0, "-", "service_test"]], "tests.unit.confidant.models.credential_test": [[22, 4, 1, "", "test_credential_archive"], [22, 4, 1, "", "test_diff"], [22, 4, 1, "", "test_equals"], [22, 4, 1, "", "test_exempt_from_rotation"], [22, 4, 1, "", "test_next_rotation_date_last_rotation_present"], [22, 4, 1, "", "test_next_rotation_date_never_rotated"], [22, 4, 1, "", "test_next_rotation_date_no_rotation_required"], [22, 4, 1, "", "test_not_equals"], [22, 4, 1, "", "test_not_equals_different_tags"]], "tests.unit.confidant.models.service_test": [[22, 4, 1, "", "test_diff"], [22, 4, 1, "", "test_equals"], [22, 4, 1, "", "test_not_equals"]], "tests.unit.confidant.routes": [[23, 3, 0, "-", "certificates_test"], [23, 3, 0, "-", "credentials_test"], [23, 3, 0, "-", "identity_test"], [23, 3, 0, "-", "jwks_test"], [23, 3, 0, "-", "services_test"]], "tests.unit.confidant.routes.certificates_test": [[23, 4, 1, "", "test_get_ca"], [23, 4, 1, "", "test_get_certificate"], [23, 4, 1, "", "test_get_certificate_from_csr"], [23, 4, 1, "", "test_list_cas"]], "tests.unit.confidant.routes.credentials_test": [[23, 4, 1, "", "archive_credential"], [23, 4, 1, "", "credential"], [23, 4, 1, "", "credential_list"], [23, 4, 1, "", "test_create_credential"], [23, 4, 1, "", "test_diff_credential"], [23, 4, 1, "", "test_get_credential"], [23, 4, 1, "", "test_get_credential_list"], [23, 4, 1, "", "test_revise_credential"], [23, 4, 1, "", "test_update_credential"]], "tests.unit.confidant.routes.identity_test": [[23, 4, 1, "", "test_get_client_config"], [23, 4, 1, "", "test_get_user_info"], [23, 4, 1, "", "test_get_user_info_no_user"]], "tests.unit.confidant.routes.jwks_test": [[23, 4, 1, "", "test_get_token_no_override"], [23, 4, 1, "", "test_get_token_override_user"], [23, 4, 1, "", "test_get_token_override_user_not_authorized"]], "tests.unit.confidant.routes.services_test": [[23, 4, 1, "", "services_list"], [23, 4, 1, "", "test_get_services_list"]], "tests.unit.confidant.services": [[24, 3, 0, "-", "ciphermanager_test"], [24, 3, 0, "-", "credentialmanager_test"], [24, 3, 0, "-", "jwkmanager_test"], [24, 3, 0, "-", "keymanager_test"], [24, 3, 0, "-", "servicemanager_test"]], "tests.unit.confidant.services.ciphermanager_test": [[24, 4, 1, "", "test_cipher_version_1"], [24, 4, 1, "", "test_cipher_version_2"], [24, 4, 1, "", "test_cipher_version_3"]], "tests.unit.confidant.services.credentialmanager_test": [[24, 4, 1, "", "test_check_credential_pair_values"], [24, 4, 1, "", "test_get_latest_blind_credential_revision"], [24, 4, 1, "", "test_get_latest_credential_revision"], [24, 4, 1, "", "test_get_revision_ids_for_credential"], [24, 4, 1, "", "test_lowercase_credential_pairs"]], "tests.unit.confidant.services.jwkmanager_test": [[24, 4, 1, "", "helper_jwt_parser"], [24, 4, 1, "", "test_get_jwks"], [24, 4, 1, "", "test_get_jwks_not_found"], [24, 4, 1, "", "test_get_jwt"], [24, 4, 1, "", "test_get_jwt_caches_jwt"], [24, 4, 1, "", "test_get_jwt_raises_no_key_id"], [24, 4, 1, "", "test_get_jwt_with_ca"], [24, 4, 1, "", "test_localcache_cache_key"], [24, 4, 1, "", "test_localcache_get_jwt"], [24, 4, 1, "", "test_localcache_init"], [24, 4, 1, "", "test_rediscache_get_jwt"], [24, 4, 1, "", "test_rediscache_redis_error"], [24, 4, 1, "", "test_set_key"], [24, 4, 1, "", "test_set_key_encrypted"]], "tests.unit.confidant.services.keymanager_test": [[24, 4, 1, "", "test_create_datakey_mocked"], [24, 4, 1, "", "test_create_datakey_with_encryption"], [24, 4, 1, "", "test_decrypt_datakey_mocked"], [24, 4, 1, "", "test_decrypt_datakey_with_encryption"], [24, 4, 1, "", "test_get_key_id"], [24, 4, 1, "", "test_get_key_id_cached"]], "tests.unit.confidant.services.servicemanager_test": [[24, 4, 1, "", "test_get_latest_service_revision"]]}, "objtypes": {"0": "http:get", "1": "http:post", "2": "http:put", "3": "py:module", "4": "py:function", "5": "py:exception", "6": "py:class", "7": "py:property", "8": "py:method", "9": "py:attribute"}, "objnames": {"0": ["http", "get", "HTTP get"], "1": ["http", "post", "HTTP post"], "2": ["http", "put", "HTTP put"], "3": ["py", "module", "Python module"], "4": ["py", "function", "Python function"], "5": ["py", "exception", "Python exception"], "6": ["py", "class", "Python class"], "7": ["py", "property", "Python property"], "8": ["py", "method", "Python method"], "9": ["py", "attribute", "Python attribute"]}, "titleterms": {"access": [0, 37], "control": 0, "acl": 0, "design": 0, "hookpoint": 0, "credenti": [0, 6, 7, 8, 28, 34, 39], "list": 0, "get": 0, "metadata": 0, "creat": [0, 25, 39], "updat": [0, 25], "revert": 0, "servic": [0, 6, 7, 8, 10, 24, 33, 37, 39], "api": 1, "rout": [1, 7, 23], "document": 1, "confid": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 17, 18, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 32, 37], "packag": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], "subpackag": [2, 15, 16, 17, 19, 20], "submodul": [2, 3, 5, 6, 7, 8, 9, 10, 11, 15, 18, 20, 21, 22, 23, 24], "app": 2, "modul": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], "encrypted_set": 2, "set": [2, 28], "wsgi": 2, "content": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], "authnz": [3, 18, 21], "error": 3, "rbac": 3, "userauth": 3, "client": [4, 25, 27, 28, 37], "lib": 5, "cryptolib": 5, "model": [6, 22, 31, 37], "blind_credenti": [6, 7, 8], "non_null_unicode_set_attribut": 6, "certif": [7, 8, 28], "ident": 7, "jwk": [7, 8], "saml": [7, 28], "static_fil": 7, "schema": [8, 31], "auto_build_schema": 8, "script": 9, "archiv": [9, 34], "bootstrap": [9, 28], "manag": [9, 13, 28, 39], "migrat": [9, 38], "migrate_bool": 9, "restor": [9, 34], "util": [9, 11], "certificatemanag": 10, "ciphermanag": 10, "credentialmanag": 10, "graphit": [10, 28], "iamrolemanag": 10, "jwkmanag": 10, "keymanag": 10, "servicemanag": 10, "webhook": 10, "dynamodb": [11, 28, 31, 34, 37], "mainten": [11, 28, 34], "misc": 11, "dev_wsgi": 12, "setup": 14, "test": [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 28, 30, 32], "conftest": 15, "integr": [16, 17, 18], "authnz_test": [18, 21], "unit": [19, 20, 21, 22, 23, 24], "encrypted_settings_test": 20, "rbac_test": 21, "credential_test": 22, "service_test": 22, "certificates_test": 23, "credentials_test": 23, "identity_test": 23, "jwks_test": 23, "services_test": 23, "ciphermanager_test": 24, "credentialmanager_test": 24, "jwkmanager_test": 24, "keymanager_test": 24, "servicemanager_test": 24, "server": [25, 37], "blind": 25, "secret": [25, 28, 39], "what": [25, 37], "ar": 25, "km": [25, 28, 33], "kei": [25, 28], "iam": [25, 28, 33], "polici": [25, 28, 33], "exampl": 25, "us": [25, 27, 39], "changelog": 26, "6": 26, "2": [26, 38], "1": 26, "5": 26, "8": 26, "4": [26, 38], "0": [26, 38], "3": [26, 38], "11": 26, "10": 26, "9": 26, "7": 26, "21": 26, "20": 26, "19": 26, "16": 26, "18": 26, "15": 26, "14": 26, "13": 26, "instal": [27, 32], "configur": [27, 28, 33], "usag": 27, "reformat": 27, "get_servic": 27, "output": 27, "docker": [28, 32], "vs": 28, "bash": 28, "environ": 28, "gunicorn": 28, "ssl": 28, "termin": 28, "support": [28, 36], "googl": 28, "authent": [28, 33, 37], "user": [28, 33, 37], "session": 28, "disabl": [28, 34], "conflict": 28, "check": 28, "statsd": 28, "metric": 28, "send": 28, "event": 28, "restrict": 28, "auth": [28, 33], "token": 28, "lifetim": 28, "frontend": [28, 32], "develop": [28, 30], "s": [28, 37], "own": 28, "multi": [28, 33], "account": [28, 33], "end": 28, "grant": 28, "mode": 28, "perform": [28, 38], "author": 28, "local": [28, 37], "role": 28, "tabl": [28, 34], "basic": 29, "advanc": 29, "commun": 29, "contribut": 30, "code": 30, "conduct": 30, "sign": 30, "contributor": 30, "licens": 30, "agreement": 30, "cla": 30, "file": 30, "issu": 30, "github": 30, "submit": 30, "pull": 30, "request": 30, "guid": 30, "start": 30, "run": [30, 32], "data": [31, 33, 38], "At": 31, "rest": 31, "encrypt": [31, 33], "quickstart": 32, "To": 32, "build": 32, "imag": 32, "pip": 32, "make": 32, "virtualenv": 32, "requir": 32, "manual": 32, "clone": 32, "pass": 33, "between": 33, "permanantli": 34, "separ": 34, "back": 34, "primari": 34, "report": 35, "secur": 35, "vulner": [35, 37], "threat": 37, "web": 37, "assumpt": 37, "an": 37, "can": 37, "achiev": 37, "compromis": 37, "comput": 37, "unauthent": 37, "network": 37, "attack": 37, "who": 37, "observ": 37, "traffic": 37, "from": 37, "internet": 37, "through": 37, "filesystem": 37, "read": 37, "storag": 37, "upgrad": 38, "peform": 38, "map": 39, "resourc": 39, "view": 39, "find": 39, "sidebar": 39, "histori": 39}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 56}}) \ No newline at end of file diff --git a/security_reporting.html b/security_reporting.html index 9e4a352b..1a2cdbb3 100644 --- a/security_reporting.html +++ b/security_reporting.html @@ -4,7 +4,7 @@ - Reporting security vulnerabilities — confidant 6.6.2-e682a6 documentation + Reporting security vulnerabilities — confidant 6.6.2-78f705 documentation @@ -36,7 +36,7 @@ confidant
      - 6.6.2-e682a6 + 6.6.2-78f705
      diff --git a/support.html b/support.html index b5ec8f54..b382e0cc 100644 --- a/support.html +++ b/support.html @@ -4,7 +4,7 @@ - Support — confidant 6.6.2-e682a6 documentation + Support — confidant 6.6.2-78f705 documentation @@ -37,7 +37,7 @@ confidant
      - 6.6.2-e682a6 + 6.6.2-78f705
      diff --git a/threat_model.html b/threat_model.html index e45a5a59..54fa7e1c 100644 --- a/threat_model.html +++ b/threat_model.html @@ -4,7 +4,7 @@ - Threat model — confidant 6.6.2-e682a6 documentation + Threat model — confidant 6.6.2-78f705 documentation @@ -37,7 +37,7 @@ confidant
      - 6.6.2-e682a6 + 6.6.2-78f705
      diff --git a/upgrade.html b/upgrade.html index 19bfee1e..566e7a82 100644 --- a/upgrade.html +++ b/upgrade.html @@ -4,7 +4,7 @@ - Upgrading — confidant 6.6.2-e682a6 documentation + Upgrading — confidant 6.6.2-78f705 documentation @@ -37,7 +37,7 @@ confidant
      - 6.6.2-e682a6 + 6.6.2-78f705
      diff --git a/using_confidant.html b/using_confidant.html index cbdbe789..07f7e572 100644 --- a/using_confidant.html +++ b/using_confidant.html @@ -4,7 +4,7 @@ - Managing secrets and mappings — confidant 6.6.2-e682a6 documentation + Managing secrets and mappings — confidant 6.6.2-78f705 documentation @@ -37,7 +37,7 @@ confidant
      - 6.6.2-e682a6 + 6.6.2-78f705