Azure密钥保管库数据平面的CLI客户端

azkv的Python项目详细描述


AzKV公司

Python 3.6+Code style: blackLicense: MIT

AzKV是Azure密钥保险库数据平面的CLI客户端,支持冗余保险库。它解决了高可靠性场景,在这种情况下,如果由于Azure区域范围的故障而导致密钥保险库不可用,则可以从部署在另一个未受影响区域的冗余密钥保管库中检索相同的数据。在

Linux和Windows有一个native Azure VM extension,可以获取证书和相应的密钥。它还执行定期检查,以查看证书是否已更改并需要更新。在

虽然这个本机扩展可以监视证书列表,但它们都是单独获取的。因此,如果证书或密钥保管库不可用,则不会针对其他保管库重试。如果在本地文件系统上更新了数据,则没有直接的挂接功能来运行shell命令。此扩展对不同的Linux发行版的支持也有限,不支持RHEL或{}。在

此时,AzKV解决了本机Azure VM扩展的这些限制。它允许从Azure密钥库获取PKCS12格式的blob,BASE64解码数据,从PKCS12包中提取证书和私钥,并以PEM格式在文件系统上保存/更新数据(如果检索到的内容与已保存的内容不同)。它还提供了更新后钩子功能,允许在成功更新时执行shell命令。更新后挂钩可用于在内容更新时重新启动使用证书/密钥的服务。在

虽然主要用于从密钥库中获取证书,但该工具的当前版本还可以用于获取密码等机密,并将其合并到服务器或应用程序配置中。在

入门

安装

AzKV通过Python Package Index作为azkv分布。运行以下命令:

  • 安装特定版本

    pip install "azkv==0.1"
  • 安装最新版本

    ^{pr2}$ 在
  • 升级至最新版本

    pip install --upgrade "azkv"
  • 安装性能和功能测试所需的可选开发依赖项,如pytest框架和插件

    pip install "azkv[test]"

配置

AzKV在以下位置查找YAML配置文件:

  • /etc/azkv/azkv.yaml
  • ~/.config/azkv/azkv.yaml
  • ~/.azkv/config/azkv.yaml
  • ~/.azkv.yaml

这是example configuration file

### AzKV Configuration Settings---azkv:# Toggle application level debug (does not toggle Cement framework debugging)# debug: false# Common credentials to be used for all vaults, unless some specific vaults# have `credentials` property defined that overrides the common one.credentials:# Type of Azure credentials to use for Key Vault access.# Possible values are:# * `EnvironmentVariables` -  uses `EnvironmentCredential` to pickup service principal or user#            credentials from environment variables.## * `SystemManagedIdentity` - uses `ManagedIdentityCredential` class configured for system-assigned#            managed identity.## * `UserManagedIdentity` - uses `ManagedIdentityCredential` class configured for user-assigned#            managed identity. Requires `client_id` or will be reduced to `SystemManagedIdentity`type:EnvironmentVariables# ClientID for the user-assigned managed identity; option required only for `type: UserManagedIdentity`# client_id: 2343556b-7153-470a-908a-b3837db7ec88# List of Azure Key Vaults to be referenced in AzKV operationskeyvaults:# Short name for a Key Vault (used in logs and CLI options)foo-prod-eastus:# URL for the Azure Key Vault API endpointurl:"https://foo-prod-eastus.vault.azure.net/"# Credentials specific to this Key Vault. Supersedes common credentials above.credentials:type:UserManagedIdentityclient_id:2343556b-7153-470a-908a-b3837db7ec88foo-prod-uksouth:url:"https://foo-prod-uksouth.vault.azure.net/"credentials:type:SystemManagedIdentityfoo-prod-ukwest:url:"https://foo-prod-ukwest.vault.azure.net/"# Logging configurationlog.colorlog:# Whether or not to colorize the log file.# colorize_file_log: false# Whether or not to colorize the console log.# colorize_console_log: true# Where the log file lives (no log file by default)# file: null# The level for which to log.  One of: info, warning, error, fatal, debug# level: INFO# Whether or not to log to console# to_console: true# Whether or not to rotate the log file when it reaches `max_bytes`# rotate: false# Max size in bytes that a log file can grow until it is rotated.# max_bytes: 512000# The maximun number of log files to maintain when rotating# max_files: 4

使用

要求

  • Python>;=3.6

使用

版本控制

我们使用Semantic Versioning Specification作为版本编号约定。在

发布历史记录

有关可用版本,请参阅tags on this repository。每个版本的具体更改记录在CHANGELOG.md中。在

另外,git commit消息的约定记录在CONTRIBUTING.md中。在

作者

致谢

  • 通过在文章、博客和论坛中分享他们的知识,向所有塑造这个项目设计的个人提供帽子提示。在

许可证

除非另有说明,否则所有作者(参见提交日志)都会在MIT License下发布他们的作品。有关详细信息,请参见LICENSE.md。在

贡献

有很多方法可以为这个项目做贡献。请随意:

  • 提交错误报告和功能请求
  • 概述、修复和扩展文档
  • 同行评审错误报告和请求请求
  • 实施新功能或修复错误

请参阅CONTRIBUTING.md以获取有关此项目使用的代码格式、linting和测试框架的详细信息。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spinner选定值未上载到firebase数据库   java如何通过bukkit中的配置添加消息?   java在SharedReference中保存列表的泛型类型   javascript Java小程序未定义   swt在Java中构建控制台应用程序   java OAuth同意屏幕没有突然显示,没有错误?   java webview选择文件安卓不工作   java Spring boot JPA如何从同一连接添加多个数据库?   java JDBC DB2驱动程序计时器线程处于阻塞状态   java我在vscode中运行flatter时看到一个错误在phone中运行应用程序somone能否帮助我plz   Java:生成JSON:如何避免生成不完整的JSON   java Date compareTo()方法始终返回1   当使用Junit runner运行测试时,java Spring自动连线失败   java Android/Sockets如何将信息从主UI线程发送到socket线程?   java Android内存声明全局变量   java如何在JBoss中拥有多个具有相同JNDI名称的数据源?   python在Java中嵌入CPython时,为什么会挂起?   java如何提供深度模拟对象?   java“find:smallint,expected:integer”Hibernate对informix数据库的验证在短时间内失败