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

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
Visual Studio Blog
I
InfoQ
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
D
Docker
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
宝玉的分享
宝玉的分享
量子位
D
DataBreaches.Net
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog
J
Java Code Geeks
T
Tailwind CSS Blog
S
Securelist
Cyberwarzone
Cyberwarzone
Scott Helme
Scott Helme
雷峰网
雷峰网
D
Darknet – Hacking Tools, Hacker News & Cyber Security
小众软件
小众软件
Cloudbric
Cloudbric
N
News and Events Feed by Topic
L
LangChain Blog
云风的 BLOG
云风的 BLOG
S
SegmentFault 最新的问题
L
LINUX DO - 热门话题
T
The Blog of Author Tim Ferriss
AWS News Blog
AWS News Blog
爱范儿
爱范儿
博客园 - 聂微东
Project Zero
Project Zero
V
Vulnerabilities – Threatpost
PCI Perspectives
PCI Perspectives
C
Cybersecurity and Infrastructure Security Agency CISA
博客园 - Franky
Y
Y Combinator Blog
P
Proofpoint News Feed
M
MIT News - Artificial intelligence
AI
AI
The Last Watchdog
The Last Watchdog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
C
CXSECURITY Database RSS Feed - CXSecurity.com
www.infosecurity-magazine.com
www.infosecurity-magazine.com
美团技术团队
Google Online Security Blog
Google Online Security Blog
Google DeepMind News
Google DeepMind News
MyScale Blog
MyScale Blog
T
Tor Project blog

博客园 - 衡子

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进行访问。