使用 python w/rest api 与 Azure Key Vault 交互

2024-01-15

我对使用最近发布的新服务在 Azure 中进行秘密管理非常感兴趣。我找到了一些示例指南,介绍了如何通过 powershell cmdlet 和 C# 与 Key Vault 进行交互,但是还没有找到太多关于开始使用其余 API 的信息。

我特别困惑的是 oauth2 w/ Active Directory 的处理。我已经编写了一个 oauth2 应用程序侦听器,使用 AD 实例构建了一个 Web 应用程序,现在可以生成一个“access_token”。不过,我非常不清楚如何继续进行下去,因为每当尝试使用我的 access_token 执行密钥保管库 API 调用时,我似乎总是收到 401 HTTP 响应代码。

任何关于将 azure key Vault 与 python 一起使用的指南/技巧将不胜感激!


在下面的代码运行之前,您需要执行以下一些步骤...希望我记住了一切!

  1. 您需要在 AD 中拥有一个至少具有访问权限的应用程序

    注意:无论如何,您都需要它来获取 CLIENT_ID 和 CLIENT_SECRET 然后运行:

    azure keyvault set-policy --vault-name 'VAULTNAME' --spn CLIENT_ID --perms-to-secrets '["get"]'

  2. 您还需要您的密钥的 ID,您可以使用以下命令通过 Azure CLI 获取该 ID:

    azure keyvault 秘密显示 [vault] [秘密]

    or

    azure keyvault Secret show -h # 如果不清楚

  3. 复制密钥(URL 中的最后一个参数)

然后,以下代码将允许您使用 oauth2 查询密钥保管库:

import json
import requests

AUTHORITY_HOST = "login.windows.net"
TENANT_ID      = < your tenant id >
CLIENT_ID      = < your client id >
CLIENT_SECRET  = < your client secret >
VAULT          = 'MyVault'

data = { "grant_type" : "client_credentials", 
        "client_id" : CLIENT_ID, 
        "client_secret" : CLIENT_SECRET, 
        "resource" : "https://vault.azure.net"
    }

secrets = [( "i_like_pie", "8a7680a2cf5e4d539494aa0ce265297" )]

headers = { "Content-Type" : "application/x-www-form-urlencoded" }

r = requests.post("https://login.windows.net/{}/oauth2/token".format(TENANT_ID), data=data, headers=headers)
access_token = r.json()['access_token']

for secret, secret_id in secrets.iteritems():

    headers = {"Authorization":"Bearer {}".format(access_token) }
    r = requests.get('https://{}.vault.azure.net/secrets/{}/{}?api-version=2015-06-01'.format(VAULT, secret, secret_id), headers=headers)

    print('##### {} #####'.format(secret))
    print(r.json())
    print('')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 python w/rest api 与 Azure Key Vault 交互 的相关文章

随机推荐

  • 为什么 checklistbox 没有数据源?如何绑定到值列表?

    我正在开发一个 Winform 我需要一个复选框 我将值存储在具有 List 属性的对象中 public static class Fields public static IList
  • 了解 Trace 在 C# 中的工作原理

    我想了解跟踪是如何工作的 我创建了一个简单的新网络项目 这是我可以使用的代码 Create a trace listener for the event log EventLogTraceListener myTraceListener n
  • 不同的RoutePrefix,相同的控制器名称

    我在使用命名空间和 RoutePrefix 将 web api 应用程序拆分为不同区域 不是 mvc 区域 时遇到问题 该应用程序使用 Owin Self Host 托管 在我的 Startup 类中我有以下内容 HttpConfigura
  • Clojure 热代码交换 uberjars/.classes

    我希望在项目更新之间进行热代码交换 但我还没有找到有关如何动态加载 class 文件的任何信息 更具体地说 我想要这样的东西 Make lein uberjar 获得some client 0 0 0 standalone jar 运行它j
  • 设置包未显示在 iPhone 设置中

    我尝试在 iPad 应用程序中添加 设置 捆绑包 但它随机显示在 iPad 设置菜单中 当我在调试模式 设备或模拟器 下运行时 它不会显示 当我在分发模式下构建然后在 iPad A 上部署应用程序时 它会显示 但不会在 iPad B 上显示
  • 如何使用 selenium 绕过 cloudflare [重复]

    这个问题在这里已经有答案了 我用 C 创建了一个 ChromeDriver 我只是用 CloudFlare 访问该网站 我手动解决了验证码 但它给了我一个新的验证码 不让我走 我尝试通过使用 ChromeDriver 的启动参数来使用解决方
  • Flutter 更改对话框背景颜色

    我正在使用dialogBackgroundColor属性仍然颜色没有改变 谁能告诉我如何更改对话框的背景颜色 您现在可以使用backgroundColor的财产AlertDialog改变颜色 AlertDialog backgroundCo
  • 如何读取 AndroidManifest.xml(二进制)文件?

    我正在尝试读取 AndroiadManifest xml 文件的内容 该文件似乎采用 DBase 3 数据文件 二进制格式 Java中有关于如何读取这个二进制文件的代码示例吗 我不需要写 只需阅读文本内容即可 第1步 首先您需要使用apkt
  • 更改 Angular ui-bootstrap 模板的文件夹位置

    我正在尝试将 ui bootstrap min js 与外部模板一起使用 我收到的错误是 http localhost 13132 Place template timepicker timepicker html 404 Not Foun
  • 验证 MPD 文件 - 使用 MPEG-DASH

    我刚刚开始使用 MPEG DASH 从客户端 遵循 c057623 ISO IEC 23009 1 2012 规范 有谁知道是否有公共库或开源来验证我收到的 MPD 文件 我处理xml没有问题 任何帮助将不胜感激 您可能想检查一下MPEG
  • 获取字符串中当前的纬度和经度

    我想得到latitude and longitude但有时network is available但我没有得到价值latitude and longitude 我在用我的位置监听器类和放置条件除了某些时间之外value没有得到 protec
  • db4o 和/或 Eloquera 数据库的真实体验

    我正在评估两个对象数据库 db4o http www db4o com http www db4o com 和 Eloquera 数据库 http eloquera com http eloquera com 对于即将到来的项目 我必须选择
  • 将请求转发到 Spring MVC 中的另一个控制器

    我想知道是否有一种方法可以将请求从一个控制器转发到另一个控制器 而无需实际更改浏览器中的 URL RequestMapping value myurl public ModelAndView handleMyURL if somecondi
  • 如何以表格形式相邻调用列表中的 2 个连续项目?

    基本上我有一个包含新闻标题的列表视图 第一个标题覆盖顶部 备用标题覆盖第二部分 第三个标题覆盖第三部分 第二个和第三个在列表中是连续的 第一个标题仍然是唯一的标题 列表 我以编程方式将其定义如下 public class NewsListA
  • 向 MKPointAnnotation 添加按钮?

    我只是写了几行代码 然后在尝试向注释点添加详细信息按钮时陷入困境 我不知道如何操作 有谁知道这是怎么做到的吗 下图显示了我想要实现的目标 谢谢 https i stack imgur com kK1Ox jpg https i stack
  • 谷歌浏览器添加了额外的div?

    大家好 我不知道你们怎么想 但我发现在 ubuntu 中 Google Chrome 在 HTML 的 body 底部添加了一个无用的 div 和 z index 1 我可以在任何网页上看到这一点 并且该 div 覆盖了整个页面 这使得 z
  • 在 vuejs 中的图像中包含 router-link 标签

    我可以将 router link 标签包装或封装在图像标签中吗 当我单击图像时 我希望它能够将我路由到所需的页面 是的 你可以 但情况恰恰相反 你需要用 router link 标签包裹你的图像
  • 在 Silverlight 导航应用程序的资源字典中解析故事板中的目标名称

    我有一个故事板 可以在导航上为椭圆设置动画 页面控件 只要我将 Storyboard 保留在 UserControl Resources 内 动画运行就没有问题 我将故事板移至资源词典中 使其可用于多个页面 我可以按预期访问 Storybo
  • C程序连接mysql

    我正在开发一个简单的 C 程序 它必须连接到我的数据库 然后执行查询 然后关闭连接 int main MYSQL conn conn mysql init NULL if conn NULL printf Error u s n mysql
  • 使用 python w/rest api 与 Azure Key Vault 交互

    我对使用最近发布的新服务在 Azure 中进行秘密管理非常感兴趣 我找到了一些示例指南 介绍了如何通过 powershell cmdlet 和 C 与 Key Vault 进行交互 但是还没有找到太多关于开始使用其余 API 的信息 我特别