用于管理、检索和存储机密的服务。
项目描述
Custodia
管理机密的工具。
查看我们的快速入门指南
Custodia是一个旨在为现代云应用程序定义API的项目,允许轻松存储和共享密码、令牌、证书以及任何其他机密,同时保持数据安全、可管理且可审计。
Custodia项目提供了明文和加密后端的示例实现,并计划很快提供将数据存储在外部数据存储(如Vault项目、OpenStack的Barbican、FreeIPA的Vault等)的驱动程序。
在未来的发展中,Custodia项目计划增强和丰富API,以提供访问更安全的处理私钥的方法,如HSM作为服务和其他类似的安全系统。
有关更多信息,请参阅Custodia文档:https://custodia.readthedocs.io
需求
运行时
configparser (Python 2.7)
cryptography
jwcrypto >= 0.2
requests
six
测试
pip
setuptools >= 18.0
tox >= 2.3.1
wheel
custodia.ipa依赖于几个二进制扩展和共享库,例如python-cryptography、python-gssapi、python-ldap和python-nss。对于测试和在虚拟环境中安装,需要一个C编译器和几个开发包。
Fedora
$ sudo dnf install python2 python-pip python-virtualenv python-devel \ gcc redhat-rpm-config krb5-workstation krb5-devel libffi-devel \ nss-devel openldap-devel cyrus-sasl-devel openssl-devel
Debian / Ubuntu
$ sudo apt-get update $ sudo apt-get install -y python2.7 python-pip python-virtualenv python-dev \ gcc krb5-user libkrb5-dev libffi-dev libnss3-dev libldap2-dev \ libsasl2-dev libssl-dev
API稳定性
一些API是临时的,未来可能会更改。
模块custodia.cli中的命令行界面。
脚本custodia-cli。
custodia.ipa插件
custodia.ipa — Custodia的IPA插件
警告 custodia.ipa 是一个技术预览版,具有临时 API。
custodia.ipa 是一组针对 Custodia 的插件集合。它提供了与 FreeIPA 的集成。 IPAVault 插件是访问 FreeIPA 保险库 的接口。机密信息被加密并存储在 Dogtag 的密钥恢复代理中。 IPACertRequest 插件可以根据需求创建私钥和签名证书。最后,IPAInterface 插件是一个辅助插件,它封装了 ipalib 和 GSSAPI 身份验证。
custodia.ipa 的要求
ipalib >= 4.5.0
ipaclient >= 4.5.0
Python 2.7(IPA 保险库对 Python 3 的支持不稳定。)
ipalib 和 ipaclient 不会被默认拉取和安装。这些软件包依赖于额外的操作系统软件包,用于 Kerberos/GSSAPI、LDAP 和 NSS 加密库。依赖项列在上述 测试 要求下。
$ pip install custodia[ipa]
custodia.ipa 需要一个 IPA 注册的主机和 Kerberos TGT 进行身份验证。建议使用密钥表文件或 GSS-Proxy 提供凭证。此外,IPAVault 依赖于密钥恢复代理服务(ipa-kra-install)。
示例配置
创建目录
$ sudo mkdir /etc/custodia /var/lib/custodia /var/log/custodia /var/run/custodia $ sudo chown USER:GROUP /var/lib/custodia /var/log/custodia /var/run/custodia $ sudo chmod 750 /var/lib/custodia /var/log/custodia
创建服务账户和密钥表
$ kinit admin $ ipa service-add custodia/$HOSTNAME $ ipa service-allow-create-keytab custodia/$HOSTNAME --users=admin $ mkdir -p /etc/custodia $ ipa-getkeytab -p custodia/$HOSTNAME -k /etc/custodia/ipa.keytab $ chown custodia:custodia /etc/custodia/ipa.keytab
IPA 证书请求插件需要额外的权限
$ ipa privilege-add \ --desc="Create and request service certs with Custodia" \ "Custodia Service Certs" $ ipa privilege-add-permission \ --permissions="Retrieve Certificates from the CA" \ --permissions="Request Certificate" \ --permissions="Revoke Certificate" \ --permissions="System: Modify Services" \ "Custodia Service Certs" # for add_principal=True $ ipa privilege-add-permission \ --permissions="System: Add Services" \ "Custodia Service Certs" $ ipa role-add \ --desc="Create and request service certs with Custodia" \ "Custodia Service Cert Adminstrator" $ ipa role-add-privilege \ --privileges="Custodia Service Certs" \ "Custodia Service Cert Adminstrator" $ ipa role-add-member \ --services="custodia/$HOSTNAME" \ "Custodia Service Cert Adminstrator"
创建 /etc/custodia/ipa.conf
# /etc/custodia/ipa.conf [global] debug = true makedirs = true [auth:ipa] handler = IPAInterface keytab = ${configdir}/${instance}.keytab ccache = FILE:${rundir}/ccache [auth:creds] handler = SimpleCredsAuth uid = root gid = root [authz:paths] handler = SimplePathAuthz paths = /. /secrets [store:vault] handler = IPAVault [store:cert] handler = IPACertRequest backing_store = vault [/] handler = Root [/secrets] handler = Secrets store = vault [/secrets/certs] handler = Secrets store = cert
创建 /etc/systemd/system/custodia@ipa.service.d/override.conf
在 Fedora 26 及更高版本上,Custodia 服务文件默认使用 Python 3。尽管 FreeIPA 4.5 支持 Python 3,但还不是稳定的。因此,需要使用 Python 2.7 运行 custodia.ipa 插件。您可以使用 systemctl edit custodia@py2.service 创建覆盖或手动复制文件。在后者的情况下,别忘了运行 systemctl daemon-reload。
[Service] ExecStart= ExecStart=/usr/sbin/custodia-2 --instance=%i /etc/custodia/%i.conf
运行 Custodia 服务器
$ systemctl start custodia@ipa.socket
IPA 证书请求
IPACertRequest 存储插件会动态生成或撤销证书。它使用后端存储来缓存证书和私钥。插件可以自动创建服务主体。然而,主机必须已经存在。《IPACertRequest》不会根据需求创建主机条目。
例如,GET /path/to/store/HTTP/client1.ipa.example 为服务 HTTP/client1.ipa.example 生成私钥和 CSR,DNS 主题备用名为 client1.ipa.example。然后 CSR 被转发到 IPA 并由 Dogtag 签名。生成的证书及其信任链与私钥一起作为 PEM 包返回。
$ export CUSTODIA_INSTANCE=ipa $ custodia-cli get /certs/HTTP/client1.ipa.example -----BEGIN RSA PRIVATE KEY----- ... -----END RSA PRIVATE KEY----- Issuer: organizationName=IPA.EXAMPLE, commonName=Certificate Authority Subject: organizationName=IPA.EXAMPLE, commonName=client1.ipa.example Serial Number: 22 Validity: Not Before: 2017-04-27 09:44:20 Not After: 2019-04-28 09:44:20 -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- Issuer: organizationName=IPA.EXAMPLE, commonName=Certificate Authority Issuer: organizationName=IPA.EXAMPLE, commonName=Certificate Authority Serial Number: 1 Validity: Not Before: 2017-04-26 08:24:11 Not After: 2037-04-26 08:24:11 -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
DELETE 请求从后端存储中删除证书/密钥对,并同时撤销证书。
尚未实现撤销或过期的证书的自动续订。
FreeIPA 4.4 支持
默认设置和权限已针对 FreeIPA >= 4.5 进行调整。对于 4.4,必须使用 chain=False 配置插件。还需要额外的权限 请求具有 SubjectAltName 的证书。
ipa privilege-add-permission \ --permissions="Request Certificate with SubjectAltName" \ "Custodia Service Certs"
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。
源代码分发
构建分发
custodia-0.6.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3ed56cfedf56f48967c26ffafd1a82d97a8b799ff1a404fc0e39ab063aac0c02 |
|
MD5 | dab82555e37608fc6fc49fdb487a2114 |
|
BLAKE2b-256 | 205c743fe2fb22279815688cd42eca1fdb1cb8d693c07a081a8909bd65e3cade |
custodia-0.6.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 081ba6dd8f07a87030f52c19ccd263171f76af5bb9c00be52e6d19c2c08d0b58 |
|
MD5 | f378a6fbae6d36f0609a98fe00581308 |
|
BLAKE2b-256 | 6d1b67126e6ad6336b5606c27f6575f62095238896aa7003511ed28582a46720 |