惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Commits to openclaw:main
Recent Commits to openclaw:main
SecWiki News
SecWiki News
Webroot Blog
Webroot Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
N
News and Events Feed by Topic
Recent Announcements
Recent Announcements
Help Net Security
Help Net Security
Jina AI
Jina AI
O
OpenAI News
雷峰网
雷峰网
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
博客园 - 三生石上(FineUI控件)
W
WeLiveSecurity
Schneier on Security
Schneier on Security
T
Threat Research - Cisco Blogs
IT之家
IT之家
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Vercel News
Vercel News
N
News and Events Feed by Topic
T
The Exploit Database - CXSecurity.com
爱范儿
爱范儿
Recorded Future
Recorded Future
Google Online Security Blog
Google Online Security Blog
TaoSecurity Blog
TaoSecurity Blog
美团技术团队
Engineering at Meta
Engineering at Meta
Security Latest
Security Latest
V
V2EX
T
Tailwind CSS Blog
P
Privacy & Cybersecurity Law Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Schneier on Security
B
Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 【当耐特】
PCI Perspectives
PCI Perspectives
GbyAI
GbyAI
I
Intezer
Spread Privacy
Spread Privacy
Security Archives - TechRepublic
Security Archives - TechRepublic
Cloudbric
Cloudbric
V
Visual Studio Blog
MongoDB | Blog
MongoDB | Blog
Forbes - Security
Forbes - Security
The Last Watchdog
The Last Watchdog
aimingoo的专栏
aimingoo的专栏
C
CERT Recently Published Vulnerability Notes
A
About on SuperTechFans
罗磊的独立博客

博客园 - 衡子

Ubuntu24.04更改SSH端口 记录安装过程 Azure CLI创建管理员用户 创建VMSS中的instance 创建不带公网IP的VM Azure LSv3系列VM 自动挂载NVMe本地磁盘 Azure AD访问Azure Storage Azure Linux VM使用Managed Identity获取Key-vault的Secret Azure AD SSO with Google Cloud Identity 通过VM SWAP OS DISK升级VM Azure Front Door添加自定义域名 VM间网络PPS和带宽测试 Azure获取access token的方法 VM间记录时延 Windows Terminal的一些配置 安装hping Azure解除不再使用Directory的关联 使用VSCode Remote Containers功能实现开发环境统一 Azure AKS容器网络详解
通过API获取Azure KeyVault Securet
衡子 · 2022-02-17 · via 博客园 - 衡子

在之前的文章中介绍了如何获取Azure的Access Token。本文将介绍,如何用获取的Access Token访问Azure的KeyVault的Secret。

一 创建Service Principal

通过Azure CLI创建全局Reader的用户,其中secret是创建SP时反显的PASSWORD,这个值只出现一次,创建完成后就不可见了:

name="whuser01"

sub_id=$(az account list --query "[?isDefault]" | jq -r .[].id)
az ad sp create-for-rbac -n $name --role reader --scopes /subscriptions/$sub_id

client_id=$(az ad sp list --display-name $name | jq -r .[].appId)
tenant_id=$(az ad sp list --display-name $name | jq -r .[].appOwnerOrganizationId)
obj_id=$(az ad sp list --display-name $name | jq -r .[].id)

secret="xxxx"

二 创建Azure KeyVault

1 创建Azure KeyVault

通过Azure Cli创建KeyVault服务

kvname="vhvk01"
rg="kv"
az_user=$(az account show -n dn-china-ats-weiheng | jq -r .user.name)
az_user_id=$(az ad user list --upn $az_user | jq -r .[].objectId)

az group create -n $rg -l eastasia

az keyvault create -n $kvname -g $rg -l eastasia --no-self-perms --enable-soft-delete false

2 设置用户权限

通过Azure CLI设置用户权限。这里采用的是Vault access policy的方式,当然也可以在创建KeyVault时,采用RBAC的方式。

az keyvault set-policy -n $kvname -g $rg --secret-permissions all --object-id $obj_id
az keyvault set-policy -n $kvname -g $rg --secret-permissions all --object-id $az_user_id

3 创建secret

az keyvault secret set -n $s_name --vault-name $kvname --value $s_value
s_id=$(az keyvault secret show -n test --vault-name $kvname | jq -r .id)

三 获取service principal的Access Token

1通过REST API获取Access Token

Access Token是通过call Azure的API实现的,这里需要注意的是,resource由于是keyvault,所以resource的参数需要定义成https://vault.azure.net

具体curl的命令如下:

curl -X POST -s \
  -d "grant_type=client_credentials" \
  -d "client_id=$client_id" \
  -d "client_secret=$secret" \
  -d "resource=https://vault.azure.net" \
  https://login.microsoftonline.com/$tenant_id/oauth2/token | jq -r .access_token > /tmp/token.txt
token=$(cat /tmp/token.txt)

2通过Azure CLI获取Token

当然可以通过Azure CLI获取Token,具体命令如下:

token=$(az account get-access-token --resource https://vault.azure.net | jq -r .accessToken)

四 用Access Token调用Azure KeyVault

在做好这些准备工作后,我们通过HTTP的REST API Call去获取KeyVault的secret内容。具体如下:

curl -s -X GET -H "Authorization: Bearer $token" $s_id?api-version=7.2 | jq -r .value

五 总结

本文通过如何获取Access Token,并通过对service principal的授权,实现通过Access Token对Azure KeyVault进行访问。