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

推荐订阅源

C
CXSECURITY Database RSS Feed - CXSecurity.com
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
Docker
博客园 - 叶小钗
Recent Announcements
Recent Announcements
人人都是产品经理
人人都是产品经理
云风的 BLOG
云风的 BLOG
Vercel News
Vercel News
Hugging Face - Blog
Hugging Face - Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
美团技术团队
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
F
Fortinet All Blogs
博客园 - 三生石上(FineUI控件)
Microsoft Security Blog
Microsoft Security Blog
H
Heimdal Security Blog
有赞技术团队
有赞技术团队
The Cloudflare Blog
S
Secure Thoughts
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
The Blog of Author Tim Ferriss
M
MIT News - Artificial intelligence
Google DeepMind News
Google DeepMind News
Schneier on Security
Schneier on Security
N
News and Events Feed by Topic
小众软件
小众软件
C
Cybersecurity and Infrastructure Security Agency CISA
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - Franky
T
Tenable Blog
The Last Watchdog
The Last Watchdog
腾讯CDC
量子位
Google DeepMind News
Google DeepMind News
Help Net Security
Help Net Security
雷峰网
雷峰网
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Cyberwarzone
Cyberwarzone
S
Securelist
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
D
Darknet – Hacking Tools, Hacker News & Cyber Security
I
InfoQ
Spread Privacy
Spread Privacy
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - 衡子

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